etqw-sdk/base/script/vehicles/cockpits/trojan.script
2008-05-29 00:00:00 +00:00

77 lines
1.8 KiB
Text

/*
===============================================================================
vehicle_trojan_cockpit
===============================================================================
*/
object vehicle_trojan_cockpit : vehicle_basic_cockpit {
void preinit();
void destroy();
void OnEntered();
void AnimThread();
string turnLeftAnim;
string turnRightAnim;
string centerAnim;
}
void vehicle_trojan_cockpit::OnEntered() {
thread AnimThread();
}
void vehicle_trojan_cockpit::preinit() {
turnLeftAnim = getKey( "turn_left_anim" );
turnRightAnim = getKey( "turn_right_anim" );
centerAnim = getKey( "base_anim" );
}
void vehicle_trojan_cockpit::destroy() {
sys.killThread( "vehicle_trojan_cockpit::AnimThread" );
}
#define TROJAN_STEER_LEFT 0
#define TROJAN_STEER_RIGHT 1
#define TROJAN_STEER_CENTER 2
void vehicle_trojan_cockpit::AnimThread() {
sys.threadName( "vehicle_trojan_cockpit::AnimThread" );
sys.wait( playAnim( ANIMCHANNEL_ALL, "into" ) );
float steerState = TROJAN_STEER_CENTER;
while ( true ) {
entity driver = myVehicle.getDriver();
vector move;
if ( driver != $null_entity ) {
move = driver.getMove();
} else {
move = '0 0 0';
}
if ( move_y < 0 ) {
if ( steerState != TROJAN_STEER_LEFT ) {
playAnimBlended( ANIMCHANNEL_ALL, turnLeftAnim, 0.5f );
steerState = TROJAN_STEER_LEFT;
}
} else if ( move_y > 0 ) {
if ( steerState != TROJAN_STEER_RIGHT ) {
playAnimBlended( ANIMCHANNEL_ALL, turnRightAnim, 0.5f );
steerState = TROJAN_STEER_RIGHT;
}
} else {
if ( steerState != TROJAN_STEER_CENTER ) {
playAnimBlended( ANIMCHANNEL_ALL, centerAnim, 0.5f );
steerState = TROJAN_STEER_CENTER;
}
}
sys.waitFrame();
}
}