diff --git a/source/Input.c b/source/Input.c index 021958f..80268b4 100755 --- a/source/Input.c +++ b/source/Input.c @@ -13,6 +13,8 @@ void tickKeys(Inputs *inputs, u32 held, u32 down){ toggleKey(&(inputs->k_right), held & localInputs.k_right.input, down & localInputs.k_right.input); toggleKey(&(inputs->k_pause), held & localInputs.k_pause.input, down & localInputs.k_pause.input); toggleKey(&(inputs->k_attack), held & localInputs.k_attack.input, down & localInputs.k_attack.input); + toggleKey(&(inputs->k_pickup), held & localInputs.k_pickup.input, down & localInputs.k_pickup.input); + toggleKey(&(inputs->k_use), held & localInputs.k_use.input, down & localInputs.k_use.input); toggleKey(&(inputs->k_menu), held & localInputs.k_menu.input, down & localInputs.k_menu.input); toggleKey(&(inputs->k_accept), held & localInputs.k_accept.input, down & localInputs.k_accept.input); toggleKey(&(inputs->k_decline), held & localInputs.k_decline.input, down & localInputs.k_decline.input); @@ -31,6 +33,8 @@ void resetKeys(Inputs *inputs) { toggleKey(&(inputs->k_right), false, false); toggleKey(&(inputs->k_pause), false, false); toggleKey(&(inputs->k_attack), false, false); + toggleKey(&(inputs->k_pickup), false, false); + toggleKey(&(inputs->k_use), false, false); toggleKey(&(inputs->k_menu), false, false); toggleKey(&(inputs->k_accept), false, false); toggleKey(&(inputs->k_decline), false, false); @@ -46,6 +50,8 @@ void resetClicked(Inputs *inputs) { inputs->k_right.clicked = false; inputs->k_pause.clicked = false; inputs->k_attack.clicked = false; + inputs->k_pickup.clicked = false; + inputs->k_use.clicked = false; inputs->k_menu.clicked = false; inputs->k_accept.clicked = false; inputs->k_decline.clicked = false; diff --git a/source/Input.h b/source/Input.h index f439a52..d88693c 100755 --- a/source/Input.h +++ b/source/Input.h @@ -15,6 +15,8 @@ typedef struct { Key k_left; Key k_right; Key k_attack; + Key k_pickup; + Key k_use; Key k_menu; Key k_pause; Key k_accept; diff --git a/source/Menu.c b/source/Menu.c index d150bbf..402beb3 100755 --- a/source/Menu.c +++ b/source/Menu.c @@ -16,7 +16,7 @@ int keys[] = { KEY_L,KEY_R,KEY_ZL,KEY_ZR, KEY_START,KEY_SELECT }; -int keyProp[12] = {[0 ... 11] = 0}; +int keyProp[14] = {[0 ... 13] = 0}; bool areYouSure = false; bool areYouSureSave = false; bool bindOpt = false; @@ -218,46 +218,49 @@ void doTouchButton(){ void switchGameBut(bool left, int buttonID){ int id; - for(id = 0; id < 7; ++id){ + for(id = 0; id < 13; ++id){ + if(id > 8 && id < 12) continue; if(keyProp[id] & buttonID){ keyProp[id] ^= buttonID; // Toggle buttonID bit if(left){ - int id2 = id -1; + int id2 = id - 1; + if (id2 == 11) id2 = 8; if (id2 < 0) return; keyProp[id2] ^= buttonID; } else { int id2 = id+1; - if (id2 > 6) return; + if (id2 == 9) id2 = 12; + if (id2 > 13) return; keyProp[id2] ^= buttonID; } return; } } - if(left) keyProp[6] ^= buttonID; + if(left) keyProp[13] ^= buttonID; else keyProp[0] ^= buttonID; } void switchMenuBut(bool left, int buttonID){ int id; - for(id = 0; id < 12; ++id){ - if(id > 3 && id < 7) continue; + for(id = 0; id < 13; ++id){ + if(id > 3 && id < 9) continue; if(keyProp[id] & buttonID){ keyProp[id] ^= buttonID; // Toggle buttonID bit if(left){ int id2 = id - 1; - if (id2 == 6) id2 = 3; + if (id2 == 8) id2 = 3; if (id2 < 0) return; keyProp[id2] ^= buttonID; } else { int id2 = id+1; - if (id2 == 4) id2 = 7; - if (id2 > 11) return; + if (id2 == 4) id2 = 9; + if (id2 > 13) return; keyProp[id2] ^= buttonID; } return; } } - if(left) keyProp[11] ^= buttonID; + if(left) keyProp[13] ^= buttonID; else keyProp[0] ^= buttonID; } @@ -274,6 +277,8 @@ s8 checkPropButtons(){ if(keyProp[9] == 0) return 9; if(keyProp[10] == 0) return 10; if(keyProp[11] == 0) return 11; + if(keyProp[12] == 0) return 12; + if(keyProp[13] == 0) return 13; return -1; } @@ -340,16 +345,18 @@ void tickMenu(int menu){ localInputs.k_left.input = keyProp[2]; localInputs.k_right.input = keyProp[3]; localInputs.k_attack.input = keyProp[4]; - localInputs.k_menu.input = keyProp[5]; - localInputs.k_pause.input = keyProp[6]; - localInputs.k_accept.input = keyProp[7]; - localInputs.k_decline.input = keyProp[8]; - localInputs.k_delete.input = keyProp[9]; - localInputs.k_menuNext.input = keyProp[10]; - localInputs.k_menuPrev.input = keyProp[11]; + localInputs.k_pickup.input = keyProp[5]; + localInputs.k_use.input = keyProp[6]; + localInputs.k_menu.input = keyProp[7]; + localInputs.k_pause.input = keyProp[8]; + localInputs.k_accept.input = keyProp[9]; + localInputs.k_decline.input = keyProp[10]; + localInputs.k_delete.input = keyProp[11]; + localInputs.k_menuNext.input = keyProp[12]; + localInputs.k_menuPrev.input = keyProp[13]; FILE *fs=fopen("btnSave.bin","wb"); - fwrite(keyProp,sizeof(int),12,fs); + fwrite(keyProp,sizeof(keyProp),1,fs); fclose(fs); currentSelection = 0; @@ -367,14 +374,16 @@ void tickMenu(int menu){ keyProp[1] = KEY_DDOWN | KEY_CPAD_DOWN | KEY_CSTICK_DOWN; keyProp[2] = KEY_DLEFT | KEY_CPAD_LEFT | KEY_CSTICK_LEFT; keyProp[3] = KEY_DRIGHT | KEY_CPAD_RIGHT | KEY_CSTICK_RIGHT; - keyProp[4] = KEY_A | KEY_B; - keyProp[5] = KEY_X | KEY_Y; - keyProp[6] = KEY_START; - keyProp[7] = KEY_A; - keyProp[8] = KEY_B; - keyProp[9] = KEY_X; - keyProp[10] = KEY_R | KEY_ZR; - keyProp[11] = KEY_L | KEY_ZL; + keyProp[4] = KEY_A; + keyProp[5] = KEY_B; + keyProp[6] = KEY_Y; + keyProp[7] = KEY_X ; + keyProp[8] = KEY_START; + keyProp[9] = KEY_A; + keyProp[10] = KEY_B; + keyProp[11] = KEY_X; + keyProp[12] = KEY_R | KEY_ZR; + keyProp[13] = KEY_L | KEY_ZL; bindOpt = false; errorBut = -1; break; @@ -524,13 +533,15 @@ void tickMenu(int menu){ keyProp[2] = localInputs.k_left.input; keyProp[3] = localInputs.k_right.input; keyProp[4] = localInputs.k_attack.input; - keyProp[5] = localInputs.k_menu.input; - keyProp[6] = localInputs.k_pause.input; - keyProp[7] = localInputs.k_accept.input; - keyProp[8] = localInputs.k_decline.input; - keyProp[9] = localInputs.k_delete.input; - keyProp[10] = localInputs.k_menuNext.input; - keyProp[11] = localInputs.k_menuPrev.input; + keyProp[5] = localInputs.k_pickup.input; + keyProp[6] = localInputs.k_use.input; + keyProp[7] = localInputs.k_menu.input; + keyProp[8] = localInputs.k_pause.input; + keyProp[9] = localInputs.k_accept.input; + keyProp[10] = localInputs.k_decline.input; + keyProp[11] = localInputs.k_delete.input; + keyProp[12] = localInputs.k_menuNext.input; + keyProp[13] = localInputs.k_menuPrev.input; left = true; selBut = false; bindOpt = false; @@ -716,8 +727,12 @@ char * getButtonFunctionGame(int key){ if(keyProp[2] & key) return "Move left"; if(keyProp[3] & key) return "Move right"; if(keyProp[4] & key) return "Attack"; - if(keyProp[5] & key) return "Toggle Menu"; - if(keyProp[6] & key) return "Pause"; + if(keyProp[5] & key) return "Pick up"; + if(keyProp[6] & key) return "Use"; + if(keyProp[7] & key) return "Toggle Menu"; + if(keyProp[8] & key) return "Pause"; + if(keyProp[12] & key) return "Next"; + if(keyProp[13] & key) return "Previous"; return "Nothing"; } char * getButtonFunctionMenu(int key){ @@ -725,11 +740,11 @@ char * getButtonFunctionMenu(int key){ if(keyProp[1] & key) return "Down"; if(keyProp[2] & key) return "Left"; if(keyProp[3] & key) return "Right"; - if(keyProp[7] & key) return "Accept"; - if(keyProp[8] & key) return "Decline"; - if(keyProp[9] & key) return "Delete"; - if(keyProp[10] & key) return "Next"; - if(keyProp[11] & key) return "Previous"; + if(keyProp[9] & key) return "Accept"; + if(keyProp[10] & key) return "Decline"; + if(keyProp[11] & key) return "Delete"; + if(keyProp[12] & key) return "Next"; + if(keyProp[13] & key) return "Previous"; return "Nothing"; } @@ -954,7 +969,7 @@ void renderMenu(int menu,int xscr,int yscr){ drawText("Press to return", 98, 190); renderButtonIcon(localInputs.k_decline.input & -localInputs.k_decline.input, 168, 188, 1); - if(errorBut >= 0 && errorBut < 12){ + if(errorBut >= 0 && errorBut < 14){ char errorText[30]; switch(errorBut){ case 0: sprintf(errorText, "Error: Missing 'Move up'"); break; @@ -962,13 +977,15 @@ void renderMenu(int menu,int xscr,int yscr){ case 2: sprintf(errorText, "Error: Missing 'Move right'"); break; case 3: sprintf(errorText, "Error: Missing 'Move left'"); break; case 4: sprintf(errorText, "Error: Missing 'Attack'"); break; - case 5: sprintf(errorText, "Error: Missing 'Toggle Menu'"); break; - case 6: sprintf(errorText, "Error: Missing 'Pause'"); break; - case 7: sprintf(errorText, "Error: Missing 'Accept'"); break; - case 8: sprintf(errorText, "Error: Missing 'Decline'"); break; - case 9: sprintf(errorText, "Error: Missing 'Delete'"); break; - case 10: sprintf(errorText, "Error: Missing 'Next'"); break; - case 11: sprintf(errorText, "Error: Missing 'Previous'"); break; + case 5: sprintf(errorText, "Error: Missing 'Pick up'"); break; + case 6: sprintf(errorText, "Error: Missing 'Use'"); break; + case 7: sprintf(errorText, "Error: Missing 'Toggle Menu'"); break; + case 8: sprintf(errorText, "Error: Missing 'Pause'"); break; + case 9: sprintf(errorText, "Error: Missing 'Accept'"); break; + case 10: sprintf(errorText, "Error: Missing 'Decline'"); break; + case 11: sprintf(errorText, "Error: Missing 'Delete'"); break; + case 12: sprintf(errorText, "Error: Missing 'Next'"); break; + case 13: sprintf(errorText, "Error: Missing 'Previous'"); break; } drawTextColor(errorText,(400 - (strlen(errorText) * 12))/2,50,0xFF0000FF); } diff --git a/source/PacketHandler.c b/source/PacketHandler.c index 7369b44..5322a31 100755 --- a/source/PacketHandler.c +++ b/source/PacketHandler.c @@ -233,6 +233,8 @@ size_t writeInputPacket(void *buffer, Inputs *inputs, u8 playerID, u32 turnNumbe buffer = writeBool(buffer, &size, inputs->k_left.down); buffer = writeBool(buffer, &size, inputs->k_left.clicked); buffer = writeBool(buffer, &size, inputs->k_right.down); buffer = writeBool(buffer, &size, inputs->k_right.clicked); buffer = writeBool(buffer, &size, inputs->k_attack.down); buffer = writeBool(buffer, &size, inputs->k_attack.clicked); + buffer = writeBool(buffer, &size, inputs->k_pickup.down); buffer = writeBool(buffer, &size, inputs->k_pickup.clicked); + buffer = writeBool(buffer, &size, inputs->k_use.down); buffer = writeBool(buffer, &size, inputs->k_use.clicked); buffer = writeBool(buffer, &size, inputs->k_menu.down); buffer = writeBool(buffer, &size, inputs->k_menu.clicked); buffer = writeBool(buffer, &size, inputs->k_pause.down); buffer = writeBool(buffer, &size, inputs->k_pause.clicked); buffer = writeBool(buffer, &size, inputs->k_accept.down); buffer = writeBool(buffer, &size, inputs->k_accept.clicked); @@ -260,6 +262,10 @@ bool readInputPacketData(void *buffer, size_t size, Inputs *inputs) { if(size<=0) return false; buffer = readBool(buffer, &size, &(inputs->k_attack.down)); buffer = readBool(buffer, &size, &(inputs->k_attack.clicked)); if(size<=0) return false; + buffer = readBool(buffer, &size, &(inputs->k_pickup.down)); buffer = readBool(buffer, &size, &(inputs->k_pickup.clicked)); + if(size<=0) return false; + buffer = readBool(buffer, &size, &(inputs->k_use.down)); buffer = readBool(buffer, &size, &(inputs->k_use.clicked)); + if(size<=0) return false; buffer = readBool(buffer, &size, &(inputs->k_menu.down)); buffer = readBool(buffer, &size, &(inputs->k_menu.clicked)); if(size<=0) return false; buffer = readBool(buffer, &size, &(inputs->k_pause.down)); buffer = readBool(buffer, &size, &(inputs->k_pause.clicked)); diff --git a/source/main.c b/source/main.c index 345ee41..a64e98e 100755 --- a/source/main.c +++ b/source/main.c @@ -163,8 +163,10 @@ int main() { localInputs.k_down.input = KEY_DDOWN | KEY_CPAD_DOWN | KEY_CSTICK_DOWN; localInputs.k_left.input = KEY_DLEFT | KEY_CPAD_LEFT | KEY_CSTICK_LEFT; localInputs.k_right.input = KEY_DRIGHT | KEY_CPAD_RIGHT | KEY_CSTICK_RIGHT; - localInputs.k_attack.input = KEY_A | KEY_B; - localInputs.k_menu.input = KEY_X | KEY_Y; + localInputs.k_attack.input = KEY_A; + localInputs.k_pickup.input = KEY_B; + localInputs.k_use.input = KEY_Y; + localInputs.k_menu.input = KEY_X ; localInputs.k_pause.input = KEY_START; localInputs.k_accept.input = KEY_A; localInputs.k_decline.input = KEY_B; @@ -179,6 +181,8 @@ int main() { fread(&(localInputs.k_left.input), sizeof(int), 1, file); fread(&(localInputs.k_right.input), sizeof(int), 1, file); fread(&(localInputs.k_attack.input), sizeof(int), 1, file); + fread(&(localInputs.k_pickup.input), sizeof(int), 1, file); + fread(&(localInputs.k_use.input), sizeof(int), 1, file); fread(&(localInputs.k_menu.input), sizeof(int), 1, file); fread(&(localInputs.k_pause.input), sizeof(int), 1, file); fread(&(localInputs.k_accept.input), sizeof(int), 1, file);