custom texttag, does this leak?

Discussion in 'JASS Zone' started by afisakov, May 11, 2017.

  1. afisakov

    afisakov You can change this now in User CP.

    Ratings:
    +38 / 0 / -0
    I tried my best to write this efficiently, but wanted to know
    1) does it leak somewhere
    2) is there a way to make it more efficient

    Code:
    function cconvert takes real percentage returns integer
    local integer result = R2I(percentage * 2.55)
    if (result < 0) then
       set result = 0
    elseif (result > 255) then
       set result = 255
    endif
    return result
    endfunction
    
    function CreateTextunit_sec_speed takes string s, unit u, real dur,real speed,real zOffset,real size,real red,real green,real blue,real transparency returns texttag
    set bj_lastCreatedTextTag=CreateTextTag()
    call SetTextTagText(bj_lastCreatedTextTag,s,size*0.0023)
    call SetTextTagPos(bj_lastCreatedTextTag,GetUnitX(u),GetUnitY(u),zOffset)
    call SetTextTagColor(bj_lastCreatedTextTag,cconvert(red),cconvert(green),cconvert(blue),cconvert(100.0-transparency))
    call SetTextTagPermanent(bj_lastCreatedTextTag,false)
    call SetTextTagVelocity(bj_lastCreatedTextTag,0,speed/1803.)
    call SetTextTagLifespan(bj_lastCreatedTextTag,dur)
    call SetTextTagFadepoint(bj_lastCreatedTextTag,dur-.5)
    return bj_lastCreatedTextTag
    endfunction
    
    function ...
    if p!=Player(0) then
       set g=goldmod(g,myha[pi])
       call CreateTextunit_sec_speed("|cffFFFF00+"+I2S(g)+"|r",GetTriggerUnit(),2.5,75,0,10,0,80,80,0)
       if GetLocalPlayer()==p then
       call SetTextTagVisibility(bj_lastCreatedTextTag,true)
       else
       call SetTextTagVisibility(bj_lastCreatedTextTag,false)
       endif
       call SetPlayerState(GetOwningPlayer(myha[pi]),PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(GetOwningPlayer(myha[pi]),PLAYER_STATE_RESOURCE_GOLD) + g )
    endif
    ... endfunction
     
  2. jonas

    jonas Well-Known Member

    Ratings:
    +42 / 4 / -0
    no
     
    • Useful Useful x 1
  3. MyPad

    MyPad Member

    Ratings:
    +0 / 0 / -0
    JASS:
    function cconvert takes real percentage returns integer
        local integer result = R2I(percentage * 2.55)
        if (result < 0) then
           set result = 0
        elseif (result > 255) then
           set result = 255
        endif
        return result
    endfunction
    
    function CreateTextunit_sec_speed takes string s, unit u, real dur,real speed,real zOffset,real size,real red,real green,real blue,real transparency returns texttag
        set bj_lastCreatedTextTag=CreateTextTag()
        call SetTextTagText(bj_lastCreatedTextTag,s,size*0.0023)
        call SetTextTagPos(bj_lastCreatedTextTag,GetUnitX(u),GetUnitY(u),zOffset)
        call SetTextTagColor(bj_lastCreatedTextTag,cconvert(red),cconvert(green),cconvert(blue),cconvert(100.0-transparency))
        call SetTextTagPermanent(bj_lastCreatedTextTag,false)
        call SetTextTagVelocity(bj_lastCreatedTextTag,0,speed/1803.)
        call SetTextTagLifespan(bj_lastCreatedTextTag,dur)
        call SetTextTagFadepoint(bj_lastCreatedTextTag,dur-.5)
        return bj_lastCreatedTextTag
    endfunction
    
    function ...
       if p!=Player(0) then
           set g=goldmod(g,myha[pi])
           call CreateTextunit_sec_speed("|cffFFFF00+"+I2S(g)+"|r",GetTriggerUnit(),2.5,75,0,10,0,80,80,0)
           if GetLocalPlayer()==p then
               call SetTextTagVisibility(bj_lastCreatedTextTag,true)
           else
               call SetTextTagVisibility(bj_lastCreatedTextTag,false)
           endif
           call SetPlayerState(GetOwningPlayer(myha[pi]),PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(GetOwningPlayer(myha[pi]),PLAYER_STATE_RESOURCE_GOLD) + g )
    endif
    ... endfunction


    This could be made more efficient by creating local text tags instead of global text tags and using the native
     
  4. jonas

    jonas Well-Known Member

    Ratings:
    +42 / 4 / -0
    It's equally efficient. If your map lags it won't be because of this.

     

Share This Page