Statistically-Unlikely-Games / Crimson-Rue

0 stars 0 forks source link

Add Diagonal Movement #50

Closed noeinan closed 5 years ago

noeinan commented 5 years ago

Add code to allow character to move diagonal up-left, diagonal up-right, diagonal down-left, and diagonal down-right

noeinan commented 5 years ago

Per PyTom, RenPy does not currently support K_LEFT + K_UP at the same time. Only keys that can register multiple keys are any key + shift/ctrl/alt

https://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=52537&p=499095&hilit=keybinding#p499095

noeinan commented 5 years ago

Used following code, unfortunately, shift + K_LEFT/RIGHT doesn't work for some reason... alt + K_LEFT/RIGHT works just fine.


        key "K_UP" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 0, -1), SetVariable("pc_dir", "back")]
        key "repeat_K_UP" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 0, -1), SetVariable("pc_dir", "back")]

        key "shift_K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, -1), SetVariable("pc_dir", "dback_left")]
        key "repeat_shift_K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, -1), SetVariable("pc_dir", "dback_left")]

        key "shift_K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, -1), SetVariable("pc_dir", "dback_right")]
        key "repeat_shift_K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, -1), SetVariable("pc_dir", "dback_right")]

        key "K_DOWN" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 0, 1), SetVariable("pc_dir", "front")]
        key "repeat_K_DOWN" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 0, 1), SetVariable("pc_dir", "front")]

        key "alt_K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, 1), SetVariable("pc_dir", "dfront_left")]
        key "repeat_alt_K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, 1), SetVariable("pc_dir", "dfront_left")]

        key "alt_K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, 1), SetVariable("pc_dir", "dfront_right")]
        key "repeat_alt_K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, 1), SetVariable("pc_dir", "dfront_right")]

        key "K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, 0), SetVariable("pc_dir", "left")]
        key "repeat_K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, 0), SetVariable("pc_dir", "left")]

        key "K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, 0), SetVariable("pc_dir", "right")]
        key "repeat_K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, 0), SetVariable("pc_dir", "right")]

        key "K_RETURN" action Function(pcInteracts)
noeinan commented 5 years ago

This is a bit onerous, but it works for now at least.

` key "K_UP" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 0, -1), SetVariable("pc_dir", "back")] key "repeat_K_UP" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 0, -1), SetVariable("pc_dir", "back")]

    key "alt_K_UP" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, -1), SetVariable("pc_dir", "dback_left")]
    key "repeat_alt_K_UP" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, -1), SetVariable("pc_dir", "dback_left")]

    key "alt_K_DOWN" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, -1), SetVariable("pc_dir", "dback_right")]
    key "repeat_alt_K_DOWN" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, -1), SetVariable("pc_dir", "dback_right")]

    key "K_DOWN" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 0, 1), SetVariable("pc_dir", "front")]
    key "repeat_K_DOWN" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 0, 1), SetVariable("pc_dir", "front")]

    key "alt_K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, 1), SetVariable("pc_dir", "dfront_left")]
    key "repeat_alt_K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, 1), SetVariable("pc_dir", "dfront_left")]

    key "alt_K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, 1), SetVariable("pc_dir", "dfront_right")]
    key "repeat_alt_K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, 1), SetVariable("pc_dir", "dfront_right")]

    key "K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, 0), SetVariable("pc_dir", "left")]
    key "repeat_K_LEFT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, -1, 0), SetVariable("pc_dir", "left")]

    key "K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, 0), SetVariable("pc_dir", "right")]
    key "repeat_K_RIGHT" action [Function(cMap.moveDenizen, pc_sprite.x, pc_sprite.y, 1, 0), SetVariable("pc_dir", "right")]

    key "K_RETURN" action Function(pcInteracts)

`