Menu

xwing.code

Alexandre Hardy
#HAT
#7  0  1
#6  15 2
#5  4  3
var speed;
var speed_setting;
var base;
global zero_throttle;
global one_third_throttle;
global two_third_throttle;
global full_throttle;
global speed_diff;
global lazer_recharge;
global shield_recharge;
global lazer_direct;
global shield_direct;
global shield_select;
global weapon;
global sfoils;
global firing_set;
var shield_position;
var old_shield_position;
var sfoil_position;
var old_sfoil_position;

var lookdir;
global oldlookdir;
global looking;

if ((firstscan == 1) || (js1.b[25])) {
    speed = 0;
    zero_throttle = 0;
    one_third_throttle = 0;
    two_third_throttle = 0;
    full_throttle = 0;
    speed_diff = 0;

    lookdir = 0;
    oldlookdir = 0;
    looking = 0;

    lazer_recharge = 0;
    shield_recharge = 0;
    lazer_direct = 0;
    shield_direct = 0;
    shield_select = 0;
    shield_position = 0;
    old_shield_position = 0;
    sfoil_position = 0;
    old_sfoil_position = 0;

    weapon = 0;
    firing_set = 0;
}

# throttle control
speed_setting = (js1.a[2] + 32767) / 2000;

if (speed_setting > 32) 
    speed_setting = 32; 
if (speed_setting < 0)
    speed_setting = 0;
speed_setting = 32 - speed_setting;

if (speed != speed_setting) {
    base = speed;
    if (speed_setting == 0) {
        zero_throttle = 1;
        full_throttle = 0;
        one_third_throttle = 0;
        two_third_throttle = 0;
        base = 0;
        speed_diff = 0;
    }
    else if (speed_setting == 32) {
        full_throttle = 1;
        zero_throttle = 0;
        one_third_throttle = 0;
        two_third_throttle = 0;
        base = 32;
        speed_diff = 0;
    }
    if ((speed < 11) && (speed_setting >= 11)) {
        one_third_throttle = 1;
        zero_throttle = 0;
        full_throttle = 0;
        two_third_throttle = 0;
        base = 11;
        speed_diff = 0;
    }
    if ((speed < 21) && (speed_setting >= 21)) {
        two_third_throttle = 1;
        zero_throttle = 0;
        full_throttle = 0;
        one_third_throttle = 0;
        base = 21;
        speed_diff = 0;
    }
    if ((speed_setting < 21) && (speed >= 21)) {
        two_third_throttle = 1;
        zero_throttle = 0;
        full_throttle = 0;
        one_third_throttle = 0;
        base = 21;
        speed_diff = 0;
    }
    if ((speed_setting < 11) && (speed >= 11)) {
        one_third_throttle = 1;
        zero_throttle = 0;
        full_throttle = 0;
        two_third_throttle = 0;
        base = 11;
        speed_diff = 0;
    }
    speed_diff = speed_diff + (speed_setting - base);
    speed = speed_setting;
}

if (zero_throttle) {
    thread kbd {
        press("\");
        delay(1);
        release("\");
        delay(1);
        zero_throttle = 0;
    }
}

if (one_third_throttle) {
    thread kbd {
        press("[");
        delay(1);
        release("[");
        delay(1);
        one_third_throttle = 0;
    }
}

if (two_third_throttle) {
    thread kbd {
        press("]");
        delay(1);
        release("]");
        delay(1);
        two_third_throttle = 0;
    }
}

if (full_throttle) {
    thread kbd {
        #press("a");
        press("backspace");
        delay(1);
        #release("a");
        release("backspace");
        delay(1);
        full_throttle = 0;
    }
}

if (speed_diff > 0) {
    thread kbd {
        press("equal");
        delay(1);
        release("equal");
        delay(1);
        speed_diff = speed_diff - 1;
    }
}

if (speed_diff < 0) {
    thread kbd {
        press("minus");
        delay(1);
        release("minus");
        delay(1);
        speed_diff = speed_diff + 1;
    }
}

# looking around

if (js0.b[10] && js0.b[11])
    lookdir = 9;
else if (js0.b[10] && js0.b[13])
    lookdir = 7;
else if (js0.b[12] && js0.b[11])
    lookdir = 3;
else if (js0.b[12] && js0.b[13])
    lookdir = 1;
else if (js0.b[10])
    lookdir = 8;
else if (js0.b[12])
    lookdir = 2;
else if (js0.b[11])
    lookdir = 6;
else if (js0.b[13])
    lookdir = 4;
else
    lookdir = 8;

if ((oldlookdir != lookdir) && (!looking)) {
    looking = lookdir;
}
if (looking) {
    thread kbd {
        if (looking == 1) press("kp1");
        else if (looking == 2) press("kp2");
        else if (looking == 3) press("kp3");
        else if (looking == 4) press("kp4");
        else if (looking == 5) press("kp5");
        else if (looking == 6) press("kp6");
        else if (looking == 7) press("kp7");
        else if (looking == 8) press("kp8");
        else if (looking == 9) press("kp9");
        delay(1);
        if (looking == 1) release("kp1");
        else if (looking == 2) release("kp2");
        else if (looking == 3) release("kp3");
        else if (looking == 4) release("kp4");
        else if (looking == 5) release("kp5");
        else if (looking == 6) release("kp6");
        else if (looking == 7) release("kp7");
        else if (looking == 8) release("kp8");
        else if (looking == 9) release("kp9");
        delay(1);
        oldlookdir = looking;
        looking = 0;
    }
}

if (js1.b[10]) {
    lazer_recharge = 1;
}

if (js1.b[11]) {
    shield_recharge = 1;
}

if (js0.b[6]) {
    lazer_direct = 1;
}

if (js0.b[8]) {
    shield_direct = 1;
}

if (js0.b[18]) {
    weapon = 1;
}

old_shield_position = shield_position;
if (js1.b[26]) {
    shield_position = 2;
} else if (js1.b[27]) {
    shield_position = 1;
} else {
    shield_position = 0;
}

if (shield_position > old_shield_position) {
    shield_select = shield_select + (shield_position - old_shield_position);
}

if (shield_position < old_shield_position) {
    shield_select = shield_select + (shield_position + 3 - old_shield_position);
}

if (js0.b[2]) {
    firing_set = 1;
}
if (lazer_recharge) {
    thread kbd {
        press("f9");
        delay(1);
        release("f9");
        wait(!js1.b[10]);
        lazer_recharge = 0;
    }
}

if (shield_recharge) {
    thread kbd {
        press("f10");
        delay(1);
        release("f10");
        wait(!js1.b[11]);
        shield_recharge = 0;
    }
}

if (shield_select) {
    thread kbd {
        press("s");
        delay(1);
        release("s");
        delay(1);
        shield_select = shield_select - 1;
    }
}

if (lazer_direct) {
    thread kbd {
        press(";");
        delay(1);
        release(";");
        delay(1);
        wait(!js0.b[6]);
        lazer_direct = 0;
    }
}

if (shield_direct) {
    thread kbd {
        press("'");
        delay(1);
        release("'");
        delay(1);
        wait(!js0.b[8]);
        shield_direct = 0;
    }
}

if (weapon) {
    thread kbd {
        press("w");
        delay(1);
        release("w");
        wait(!js0.b[18]);
        weapon = 0;
    }
}

if (firing_set) {
    thread kbd {
        press("x");
        delay(1);
        release("x");
        wait(!js0.b[2]);
        firing_set = 0;
    }
}