SpelunkyFan wiki

objects/oGamepad/step.gml

From spelunky.gmk, Spelunky Classic 1.1's source, © 2008, 2009 Derek Yu and Mossmouth, LLC, shown whole under the Spelunky User License v1.1b. Extracted by spelunky.ai's tools, an unofficial fan project, one file per script or event; the // ==== lines are the extractor's, naming each action of the event. Some scripts are others' work that Derek Yu credits in the source's readme.txt: Martin Piecyk's platform engine, ChevyRay's view scaling scripts and tsg1zzn's Super Sound System.

oGamepad's step event, 446 lines of GML.

// ==== action 0: lib 1 id 408: action_if(global.gamepadOn) ====// ==== action 1: lib 1 id 603: code ====startReleased = false;startPressed = false;if (start){    if (global.joyStartVal > 0)        start = joystick_check_button(joyid,global.joyStartVal);    else if (global.joyStartVal == -1)    {        if (joystick_zpos(joyid) > 0.1) start = true;        else start = false;    }    else if (global.joyStartVal == -2)    {        if (joystick_zpos(joyid) < -0.1) start = true;        else start = false;    }            if (not start) startReleased = true;}else{    if (global.joyStartVal > 0)        start = joystick_check_button(joyid,global.joyStartVal);    else if (global.joyStartVal == -1)    {        if (joystick_zpos(joyid) > 0.1) start = true;        else start = false;    }    else if (global.joyStartVal == -2)    {        if (joystick_zpos(joyid) < -0.1) start = true;        else start = false;    }        if (start) startPressed = true;}/////////////// LEFT/////////////leftReleased = false;leftPressed = false;if (left){    if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 270) or joystick_direction(joyid) == 100) left = true;    else left = false;    if (not left) leftReleased = true;}else{    if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 270) or joystick_direction(joyid) == 100) left = true;    else left = false;    if (left) leftPressed = true;}/////////////// RIGHT/////////////rightReleased = false;rightPressed = false;if (right){    if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 90) or joystick_direction(joyid) == 102) right = true;    else right = false;    if (not right) rightReleased = true;}else{    if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 90) or joystick_direction(joyid) == 102) right = true;    else right = false;    if (right) rightPressed = true;}/////////////// UP/////////////upReleased = false;upPressed = false;if (up){    if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 0) or joystick_direction(joyid) == 104) up = true;    else up = false;    if (not up) upReleased = true;}else{    if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 0) or joystick_direction(joyid) == 104) up = true;    else up = false;    if (up) upPressed = true;}/////////////// DOWN/////////////downReleased = false;downPressed = false;if (down){    if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 180) or joystick_direction(joyid) == 98) down = true;    else down = false;    if (not down) downReleased = true;}else{    if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 180) or joystick_direction(joyid) == 98) down = true;    else down = false;    if (down) downPressed = true;}/////////////// DIAGONAL/////////////if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 45) or joystick_direction(joyid) == 105){    right = true;    up = true;}if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 135) or joystick_direction(joyid) == 99){    right = true;    down = true;}if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 225) or joystick_direction(joyid) == 97){    left = true;    down = true;}if ((joystick_has_pov(joyid) == 1 and joystick_pov(joyid) == 315) or joystick_direction(joyid) == 103){    left = true;    up = true;}/////////////// JUMP/////////////jumpReleased = false;jumpPressed = false;if (jump){    if (global.joyJumpVal > 0)        jump = joystick_check_button(joyid,global.joyJumpVal);    else if (global.joyJumpVal == -1)    {        if (joystick_zpos(joyid) > 0.1) jump = true;        else jump = false;    }    else if (global.joyJumpVal == -2)    {        if (joystick_zpos(joyid) < -0.1) jump = true;        else jump = false;    }        if (not jump) jumpReleased = true;}else{    if (global.joyJumpVal > 0)        jump = joystick_check_button(joyid,global.joyJumpVal);    else if (global.joyJumpVal == -1)    {        if (joystick_zpos(joyid) > 0.1) jump = true;        else jump = false;    }    else if (global.joyJumpVal == -2)    {        if (joystick_zpos(joyid) < -0.1) jump = true;        else jump = false;    }        if (jump) jumpPressed = true;}/////////////// ATTACK/////////////attackReleased = false;attackPressed = false;if (attack){    if (global.joyAttackVal > 0)        attack = joystick_check_button(joyid,global.joyAttackVal);    else if (global.joyAttackVal == -1)    {        if (joystick_zpos(joyid) > 0.1) attack = true;        else attack = false;    }    else if (global.joyAttackVal == -2)    {        if (joystick_zpos(joyid) < -0.1) attack = true;        else attack = false;    }        if (not attack) attackReleased = true;}else{    if (global.joyAttackVal > 0)        attack = joystick_check_button(joyid,global.joyAttackVal);    else if (global.joyAttackVal == -1)    {        if (joystick_zpos(joyid) > 0.1) attack = true;        else attack = false;    }    else if (global.joyAttackVal == -2)    {        if (joystick_zpos(joyid) < -0.1) attack = true;        else attack = false;    }        if (attack) attackPressed = true;}////////////// ITEM////////////itemReleased = false;itemPressed = false;if (item){    if (global.joyItemVal > 0)        item = joystick_check_button(joyid,global.joyItemVal);    else if (global.joyItemVal == -1)    {        if (joystick_zpos(joyid) > 0.1) item = true;        else item = false;    }    else if (global.joyItemVal == -2)    {        if (joystick_zpos(joyid) < -0.1) item = true;        else item = false;    }        if (not item) itemReleased = true;}else{    if (global.joyItemVal > 0)        item = joystick_check_button(joyid,global.joyItemVal);    else if (global.joyItemVal == -1)    {        if (joystick_zpos(joyid) > 0.1) item = true;        else item = false;    }    else if (global.joyItemVal == -2)    {        if (joystick_zpos(joyid) < -0.1) item = true;        else item = false;    }        if (item) itemPressed = true;}////////////// RUN////////////if (global.joyRunVal > 0)    run = joystick_check_button(joyid,global.joyRunVal);else if (global.joyRunVal == -1){    if (joystick_zpos(joyid) > 0.1) run = true;    else run = false;}else if (global.joyRunVal == -2){    if (joystick_zpos(joyid) < -0.1) run = true;    else run = false;}////////////// BOMB////////////bombReleased = false;bombPressed = false;if (bomb){    if (global.joyBombVal > 0)        bomb = joystick_check_button(joyid,global.joyBombVal);    else if (global.joyBombVal == -1)    {        if (joystick_zpos(joyid) > 0.1) bomb = true;        else bomb = false;    }    else if (global.joyBombVal == -2)    {        if (joystick_zpos(joyid) < -0.1) bomb = true;        else bomb = false;    }        if (not bomb) bombReleased = true;}else{    if (global.joyBombVal > 0)        bomb = joystick_check_button(joyid,global.joyBombVal);    else if (global.joyBombVal == -1)    {        if (joystick_zpos(joyid) > 0.1) bomb = true;        else bomb = false;    }    else if (global.joyBombVal == -2)    {        if (joystick_zpos(joyid) < -0.1) bomb = true;        else bomb = false;    }        if (bomb) bombPressed = true;}////////////// ROPE////////////ropeReleased = false;ropePressed = false;if (rope){    if (global.joyRopeVal > 0)        rope = joystick_check_button(joyid,global.joyRopeVal);    else if (global.joyRopeVal == -1)    {        if (joystick_zpos(joyid) > 0.1) rope = true;        else rope = false;    }    else if (global.joyRopeVal == -2)    {        if (joystick_zpos(joyid) < -0.1) rope = true;        else rope = false;    }        if (not rope) ropeReleased = true;}else{    if (global.joyRopeVal > 0)        rope = joystick_check_button(joyid,global.joyRopeVal);    else if (global.joyRopeVal == -1)    {        if (joystick_zpos(joyid) > 0.1) rope = true;        else rope = false;    }    else if (global.joyRopeVal == -2)    {        if (joystick_zpos(joyid) < -0.1) rope = true;        else rope = false;    }        if (rope) ropePressed = true;}////////////// FLARE////////////flareReleased = false;flarePressed = false;if (flare){    if (global.joyFlareVal > 0)        flare = joystick_check_button(joyid,global.joyFlareVal);    else if (global.joyFlareVal == -1)    {        if (joystick_zpos(joyid) > 0.1) flare = true;        else flare = false;    }    else if (global.joyFlareVal == -2)    {        if (joystick_zpos(joyid) < -0.1) flare = true;        else flare = false;    }        if (not flare) flareReleased = true;}else{    if (global.joyFlareVal > 0)        flare = joystick_check_button(joyid,global.joyFlareVal);    else if (global.joyFlareVal == -1)    {        if (joystick_zpos(joyid) > 0.1) flare = true;        else flare = false;    }    else if (global.joyFlareVal == -2)    {        if (joystick_zpos(joyid) < -0.1) flare = true;        else flare = false;    }        if (flare) flarePressed = true;}////////////// PAY////////////payReleased = false;payPressed = false;if (pay){    if (global.joyPayVal > 0)        pay = joystick_check_button(joyid,global.joyPayVal);    else if (global.joyPayVal == -1)    {        if (joystick_zpos(joyid) > 0.1) pay = true;        else pay = false;    }    else if (global.joyPayVal == -2)    {        if (joystick_zpos(joyid) < -0.1) pay = true;        else pay = false;    }        if (not pay) payReleased = true;}else{   if (global.joyPayVal > 0)        pay = joystick_check_button(joyid,global.joyPayVal);    else if (global.joyPayVal == -1)    {        if (joystick_zpos(joyid) > 0.1) pay = true;        else pay = false;    }    else if (global.joyPayVal == -2)    {        if (joystick_zpos(joyid) < -0.1) pay = true;        else pay = false;    }        if (pay) payPressed = true;}