Snippet AIDSZinc

Azlier

Old World Ghost
Reaction score
461
Yeah it's in case Zincies want to use AIDS structs.

Of course, requires AIDS.

JASS:
//! zinc
library AIDSZinc requires AIDS {

/*
AIDSZinc - by Azlier

Simply a Zinc AIDS struct. For you Zinc addicts.

Treated exactly like an AIDS struct, but must be implemented via
//! runtextmacro AIDSZinc()
instead of running the default AIDS textmacro.

How to import - 
    1) Import AIDS into your map.
    2) Create a new trigger named AIDSZinc.
    3) Convert the new trigger to Jass.
    4) Replace all the code inside with this.
*/


    //! textmacro AIDSZinc
        // This magic line makes default methods get called which do nothing
        // if the methods are otherwise undefined.
        private static delegate AIDS_DEFAULT AIDS_DELEGATE=0;
        
        //-----------------------------------------------------------------------
        // Gotta know whether or not to destroy on deallocation...
        private boolean AIDS_instanciated;
        
        //-----------------------------------------------------------------------
        static method operator[] (unit whichUnit) -> thistype {
            return GetUnitId(whichUnit);
        }
        
        method operator unit () -> unit {
            // Allows structVar.unit to return the unit.
            return GetIndexUnit(this);
        }
        
        //-----------------------------------------------------------------------
        method AIDS_addLock () {
            AIDS_AddLock(this);
        }
        method AIDS_removeLock () {
            AIDS_RemoveLock(this);
        }
        
        //-----------------------------------------------------------------------
        private static method AIDS_onEnter () -> boolean{
            // At this point, the unit might not have been assigned an index.
            if (thistype.AIDS_filter(AIDS_GetEnteringIndexUnit())) {
                // Flag it for destruction on deallocation.
                thistype(AIDS_GetIndexOfEnteringUnit()).AIDS_instanciated=true;
                // Can use inlining "Assigned" function now, as it must be assigned.
                thistype(AIDS_GetIndexOfEnteringUnitAllocated()).AIDS_onCreate();
            }
            
            return false;
        }
        
        private static method AIDS_onEnterAllocated () -> boolean {
            // At this point, the unit must have been assigned an index.
            if (thistype.AIDS_filter(AIDS_GetEnteringIndexUnit())) {
                // Flag it for destruction on deallocation. Slightly faster!
                thistype(AIDS_GetIndexOfEnteringUnitAllocated()).AIDS_instanciated=true;
                // Can use inlining "Assigned" function now, as it must be assigned.
                thistype(AIDS_GetIndexOfEnteringUnitAllocated()).AIDS_onCreate();
            }
            
            return false;
        }
        
        private static method AIDS_onDeallocate () -> boolean {
            if (thistype(AIDS_GetDecayingIndex()).AIDS_instanciated) {
                thistype(AIDS_GetDecayingIndex()).AIDS_onDestroy();
                // Unflag destruction on deallocation.
                thistype(AIDS_GetDecayingIndex()).AIDS_instanciated=false;
            }
            
            return false;
        }
        
        //-----------------------------------------------------------------------
        private static method onInit () {
            AIDS_RegisterOnEnter(Filter(function thistype.AIDS_onEnter));
            AIDS_RegisterOnEnterAllocated(Filter(function thistype.AIDS_onEnterAllocated));
            AIDS_RegisterOnDeallocate(Filter(function thistype.AIDS_onDeallocate));
            
            // Because I robbed you of your struct's onInit method.
            thistype.AIDS_onInit();
        }
    //! endtextmacro
}
//! endzinc
 

the Immortal

I know, I know...
Reaction score
51
sadsadsadsad!
SAD!

Had to recode the whole system I'm using from Zinc to vJASS just to use these d.mn AIDS structs. And that happened like a few hours ago, ynow? -.-

Jeeeez =/ that's unlucky!..
 

Azlier

Old World Ghost
Reaction score
461
>One day I'm making this a module anyway...

Finish soon! Always talk about cool stuff you're going to make and then you go and mess with bytecode or something instead...
 

SanKakU

Member
Reaction score
21
i don't understand the purpose of this resource. you say it's for zinc...if it's not a 'zinc version' of AIDS and it's just some code that makes you call different textmacro...i don't understand what the point of that is. did you forget to tell us something?
 

Azlier

Old World Ghost
Reaction score
461
You can't use the default AIDS textmacro in Zinc structs. This is simply an AIDS textmacro that does work in Zinc. Jesus4Lyf is going to support Zinc anyway, but for some reason he hasn't done it yet.
 

Ghan

Administrator - Servers are fun
Staff member
Reaction score
888
This is approved for now, but I suppose it will become deprecated as soon as Zinc is natively supported with AIDS.
 

SanKakU

Member
Reaction score
21
You can't use the default AIDS textmacro in Zinc structs. This is simply an AIDS textmacro that does work in Zinc. Jesus4Lyf is going to support Zinc anyway, but for some reason he hasn't done it yet.

zinc structs, huh? well ok, i guess that makes sense. can you link to some examples or post some sample code? i don't know much about zinc, to be honest. it seems pretty easy to understand, though.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top