Script:Files:script/maps/generic/towers.script

From Mod Wiki
// Island Beacons

#define BEACON_IDLE     1
#define BEACON_RAISE     2

object island_generator_beacon {
    void            preinit();
    void            init();
    void             vOnDeploy();
    void             RaiseAnim();
    void            syncFields();
    void            OnAnimStateChanged();
    float            AnimState( float state );
    float            currentAnimState;
    boolean            deployed;
}

void island_generator_beacon::preinit() {
}


void island_generator_beacon::init() {
}

void island_generator_beacon::vOnDeploy() {
    deployed = true;
    thread RaiseAnim();
}

void island_generator_beacon::syncFields() {
    syncBroadcast( "deployed" );
    syncCallback( "deployed", "vOnDeploy" );

    syncBroadcast( "currentAnimState" );
    syncCallback( "currentAnimState", "OnAnimStateChanged" );
}

float island_generator_beacon::AnimState( float state ) {
    currentAnimState = state;
    if( currentAnimState == BEACON_IDLE ) {
        return playAnim( ANIMCHANNEL_ALL, "raise" );
    }
    if( currentAnimState == BEACON_RAISE ) {
        return playCycle( ANIMCHANNEL_ALL, "idle_loop" );
    }
    return 0.f;
}

void island_generator_beacon::OnAnimStateChanged() {
    AnimState( currentAnimState );
}

void island_generator_beacon::RaiseAnim() {
    sys.wait( AnimState( BEACON_IDLE ));
    AnimState( BEACON_RAISE );
}