Structs

AdamGriffith

You can change this now in User CP.
Reaction score
69
Is their a way to check wether a struct array is in use? So I can reuse the empty ones.
 
Reaction score
456
By 'struct array' he probably means:
JASS:
struct Data
endstruct

globals
    Data array Data_ar
endglobals


And with 'in use' he means:
JASS:
function DiiDii...
    set Data_ar[x] = Data.create()
endfunction
 

Romek

Super Moderator
Reaction score
963
Do a Loop, checking if Data[loopinteger] is equal to null. If it is, then it's not in use and you can do w/e you want with it xD
 

T.s.e

Wish I was old and a little sentimental
Reaction score
133
Because structs are basically integers.
 

chobibo

Level 1 Crypt Lord
Reaction score
48
0 is not null. Also you don't need to do checks as long as you properly destroy your structs. Each struct already has it's own allocator and de-allocator, you just have to use them properly.
 

AdamGriffith

You can change this now in User CP.
Reaction score
69
Wow i'm so lost. xD

Say I have this:
JASS:
library test

struct teststruct
    real distance = 0.00
endstruct

globals
    private integer counter = 0
    private teststruct array data
endglobals

private function Test takes nothing returns nothing
//    ...
//    ...
//    ...
    call data[1].destroy()
endfunction

private function Actions takes nothing returns nothing
    local teststruct a
    set counter = counter + 1
    set data[counter] = teststruct.create()
    set a.distance = 2000.00
//    ...
//    ...
//    ...
endfunction

//===========================================================================
function InitTrig_Test takes nothing returns nothing
    set gg_trg_Test = CreateTrigger(  )
    call TriggerAddAction( gg_trg_Test, function Actions )
endfunction

endlibrary


So after some stuff data[1] gets destroyed.
Now how do I detect that it is empty so it can be re-useD?
 

AdamGriffith

You can change this now in User CP.
Reaction score
69
So does a destroyed struct automatically have 0 as it's value? Or do I have to set it that way?
 

AdamGriffith

You can change this now in User CP.
Reaction score
69
JASS:
library Initialization

struct InitializationData
    unit footy = null
endstruct

globals
    integer counter = 0
    InitializationData array data
endglobals

function Sorting takes nothing returns integer
    local integer i = 1
    local integer value = 0
    loop
        exitwhen i &gt; 1200 or data<i> == null
        set i = i + 1
    endloop
    set value = i
    return value
endfunction

function Trig_Initialization_Actions takes nothing returns nothing
    local InitializationData a
    set counter = Sorting()
    call DisplayTextToForce(GetPlayersAll(), I2S(counter))
    set data[counter] = InitializationData.create()
    set a = data[counter]
    call CreateNUnitsAtLoc( 1, &#039;hfoo&#039;, GetTriggerPlayer(), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING )
    set a.footy = GetLastCreatedUnit()
    call PolledWait(10.00)
    call RemoveUnit(a.footy)
    call a.destroy()
    set a = 0
endfunction

//===========================================================================
function InitTrig_Initialization takes nothing returns nothing
    set gg_trg_Initialization = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_Initialization, Player(0) )
    call TriggerAddAction( gg_trg_Initialization, function Trig_Initialization_Actions )
endfunction

endlibrary</i>


I have that, but it doesn't seem to re-used the structs.
If I let it create 5 units then wait for them to be destroyed, and then create some more, it starts from 6 =S
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top