Script:Files:script/vehicles/cockpits/icarus.script

From Mod Wiki
object vehicle_icarus_cockpit {
    void                preinit();
    void                init();
    void                destroy();

    void                Idle();

    void                OnCockpitSetup( entity v );

    entity                myVehicle;

    vector                offset;
};

void vehicle_icarus_cockpit::preinit() {
    offset            = getVectorKey( "offset" );

    hide();
}

void vehicle_icarus_cockpit::init() {
    // create the lights
    float i = 1;
    while ( 1 ) {
        string lightDefName = getKey( "light" + i );
        if ( lightDefName == "" ) {
            break;
        }

        vehicle_cockpit_light light = sys.spawnClient( lightDefName );
        if ( light != $null_entity ) {
            light.myVehicle = myVehicle;
            light.myCockpit = self;
        }
        i++;
    }

    setState( "Idle" );
}

void vehicle_icarus_cockpit::destroy() {
}

void vehicle_icarus_cockpit::Idle() {
    vector temp;

    boolean playingFireAnim;

    playCycle( ANIMCHANNEL_LEGS, "base" );

    while ( true ) {
        sys.waitFrame();

        entity driver = myVehicle.getDriver();
        if ( driver != $null_entity ) {
            temp = driver.getViewAngles();
            temp_x = 0;
            temp_z = 0;


            vector jointOrigin = myVehicle.getWorldOrigin();
            vector worldOffset = sys.rotateVecByAngles( offset, temp );
            setOrigin( jointOrigin + worldOffset );
            setAngles( temp );
            show();


            if ( driver.getButton( PK_ATTACK ) ) {
                if ( !playingFireAnim ) {
                    playingFireAnim = true;
                    playAnim( ANIMCHANNEL_LEGS, "fire" );
                }
            } else {
                if ( playingFireAnim ) {
                    playingFireAnim    = false;
                    playCycle( ANIMCHANNEL_LEGS, "base" );
                }
            }
        }
    }    
}

void vehicle_icarus_cockpit::OnCockpitSetup( entity v ) {
    myVehicle    = v;

    entity driver = myVehicle.getDriver();
    if ( driver != $null_entity ) {

        vector temp = driver.getViewAngles();
        temp_x = 0;
        temp_z = 0;


        vector jointOrigin = myVehicle.getWorldOrigin();
        vector worldOffset = sys.rotateVecByAngles( offset, temp );
        setOrigin( jointOrigin + worldOffset );
        setAngles( temp );
        show();
    }
}