Added controlls pickup and use
This commit is contained in:
parent
52ab48ba55
commit
24460ee48c
5 changed files with 86 additions and 51 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
113
source/Menu.c
113
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;
|
||||
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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue