diff -r 000000000000 -r b2e3aa63e96c src/kbdinput.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/kbdinput.c Thu Jul 17 22:03:19 2025 -0400 @@ -0,0 +1,203 @@ +/* +Copyright (c) 2023 MCL Software + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), +to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "kbdinput.h" + +bool keysHeldDown[128]; + +Uint8 performYesNo() +{ + if(keysHeldDown[28]) + { + return 1; + } + + else if(keysHeldDown[17]) + { + return 2; + } + + return 0; +} + +bool performMenuKeyActions() +{ + /*if(keysHeldDown[44]) + { + gameRunning = 1; + }*/ + + if(keysHeldDown[81]) + { + selectedMenuItem += selectedMenuItem < 3 ? 1 : -3; + } + + else if(keysHeldDown[82]) + { + selectedMenuItem -= selectedMenuItem > 0 ? 1 : -3; + } + + else if(keysHeldDown[40]) + { + if(selectedMenuItem == 0) + { + gameRunning = 1; + } + + else if(selectedMenuItem == 3) + { + return 0; + } + } + + return 1; +} + +bool performPlayerMovement() +{ + SDL_Point trans = {0, 0}; + /*for(int i = 0; i < 128; i++) + { + if(keysHeldDown[i] == 1) + { + printf("\n% is pressed", i); + } + }*/ + + if(!player.canMove) + { + return false; + } + + if(keysHeldDown[79]) + { + if(getObjectFromIdent(levelTiles[(player.x + 1) * LEVEL_WIDTH + player.y]).passable) + { + trans = getTransformation(1, 0); + offset.x -= TILE_WIDTH / 2; + offset.y -= TILE_HEIGHT / 4; + } + } + + else if(keysHeldDown[80]) + { + if(getObjectFromIdent(levelTiles[(player.x - 1) * LEVEL_WIDTH + player.y]).passable) + { + trans = getTransformation(-1, 0); + offset.y += TILE_HEIGHT / 4; + offset.x += TILE_WIDTH / 2; + } + } + + if(keysHeldDown[81]) + { + if(getObjectFromIdent(levelTiles[player.x * LEVEL_WIDTH + player.y + 1]).passable) + { + trans = (SDL_Point){trans.x + getTransformation(0, 1).x, trans.y + getTransformation(0, 1).y}; + offset.y -= TILE_HEIGHT / 4; + offset.x += TILE_WIDTH / 2; + } + } + + else if(keysHeldDown[82]) + { + if(getObjectFromIdent(levelTiles[player.x * LEVEL_WIDTH + player.y - 1]).passable) + { + trans = (SDL_Point){trans.x + getTransformation(0, -1).x, trans.y + getTransformation(0, -1).y}; + offset.y += TILE_HEIGHT / 4; + offset.x -= TILE_WIDTH / 2; + } + } + + // Cam movm't + if(keysHeldDown[7]) + { + offset.x -= TILE_WIDTH / 2; + offset.y -= TILE_HEIGHT / 4; + } + + else if(keysHeldDown[4]) + { + offset.y += TILE_HEIGHT / 4; + offset.x += TILE_WIDTH / 2; + } + + if(keysHeldDown[26]) + { + offset.y -= TILE_HEIGHT / 4; + offset.x += TILE_WIDTH / 2; + } + + else if(keysHeldDown[22]) + { + offset.y += TILE_HEIGHT / 4; + offset.x -= TILE_WIDTH / 2; + } + + // G - steal + if(keysHeldDown[10]) + { + if(getObjectFromIdent(levelTiles[player.x * LEVEL_WIDTH + player.y]).stealable) + { + stealItem(levelTiles[player.x * LEVEL_WIDTH + player.y]); + } + + return true; + } + + + player.x += trans.x; + player.y += trans.y; + + if(keysHeldDown[79] || keysHeldDown[80] || keysHeldDown[81] || keysHeldDown[82]) + { + return true; + } + return false; +} + + +void handleKeyboard(SDL_Event event) +{ + if(event.type == SDL_KEYDOWN) + { + keysHeldDown[event.key.keysym.scancode] = 1; + + + //printf("%i", event.key.keysym.scancode); + if(event.key.keysym.scancode == 9 && !event.key.repeat) + { + orientation += 1; + if(orientation == 4) + orientation = 0; + } + + if(event.key.keysym.scancode == 46 && !event.key.repeat) + { + zoomFactor += zoomFactor == -2 ? 3 : 1; + updateZoomFactor(); + } + + else if(event.key.keysym.scancode == 45 && !event.key.repeat) + { + zoomFactor -= zoomFactor == 1 ? 3 : 1; + updateZoomFactor(); + } + } + + else if(event.type == SDL_KEYUP) + { + keysHeldDown[event.key.keysym.scancode] = 0; + } +}