Skip to content

Commit

Permalink
Implemented shop gamepad code & added /gold command.
Browse files Browse the repository at this point in the history
  • Loading branch information
addictgamer committed Dec 31, 2016
1 parent 28005e4 commit f1e8356
Show file tree
Hide file tree
Showing 13 changed files with 478 additions and 151 deletions.
7 changes: 7 additions & 0 deletions src/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2088,6 +2088,9 @@ int main(int argc, char **argv) {
list_FreeAll(shopInv);
}
shopkeeper = 0;

//Clean up shopkeeper gamepad code here.
selectedShopSlot = -1;
}
attributespage=0;
if (openedChest[clientnum])
Expand Down Expand Up @@ -2167,7 +2170,11 @@ int main(int argc, char **argv) {
sendPacketSafe(net_sock, -1, net_packet, 0);
list_FreeAll(shopInv);
}

shopkeeper = 0;

//Clean up shopkeeper gamepad code here.
selectedShopSlot = -1;
}
if( shootmode==FALSE ) {
SDL_SetRelativeMouseMode(SDL_FALSE);
Expand Down
2 changes: 1 addition & 1 deletion src/game.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#define VERSION "v2.0.4"
#define GAME_CODE

#define MAX_FPS_LIMIT 60
#define MAX_FPS_LIMIT 60 //TODO: Make this configurable.

class Entity;

Expand Down
19 changes: 17 additions & 2 deletions src/interface/consolecommand.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,12 @@ void consoleCommand(char *command_str) {
} else if (strstr(command_str, "INJOY_MENU_DROP_ITEM")) {
joyimpulses[INJOY_MENU_DROP_ITEM] = atoi(&command_str[9]);
printlog("[GAMEPAD] Bound INJOY_MENU_DROP_ITEM: %d\n", atoi(&command_str[9]));
} else if (strstr(command_str, "INJOY_MENU_CYCLE_SHOP_LEFT")) {
joyimpulses[INJOY_MENU_CYCLE_SHOP_LEFT] = atoi(&command_str[9]);
printlog("[GAMEPAD] Bound INJOY_MENU_CYCLE_SHOP_LEFT: %d\n", atoi(&command_str[9]));
} else if (strstr(command_str, "INJOY_MENU_CYCLE_SHOP_RIGHT")) {
joyimpulses[INJOY_MENU_CYCLE_SHOP_RIGHT] = atoi(&command_str[9]);
printlog("[GAMEPAD] Bound INJOY_MENU_CYCLE_SHOP_RIGHT: %d\n", atoi(&command_str[9]));
}
else
{
Expand Down Expand Up @@ -816,8 +822,17 @@ void consoleCommand(char *command_str) {
{
gamepad_menuy_invert = true;
}
else
{
else if ( !strncmp(command_str, "/gold ", 5) ) {
if ( multiplayer != SINGLE ) {
messagePlayer(clientnum, language[299]);
} else {
int amount = atoi(&command_str[5]);
stats[clientnum]->GOLD += amount;
stats[clientnum]->GOLD = std::max(stats[clientnum]->GOLD, 0);

messagePlayer(clientnum, "Giving %d gold pieces.", amount);
}
} else {
messagePlayer(clientnum,language[305],command_str);
}
}
16 changes: 8 additions & 8 deletions src/interface/drawstatus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ void drawStatus() {
drawImageScaled(itemSprite(item), NULL, &pos);
if( stats[clientnum]->HP>0 ) {
if (!shootmode && mouseInBounds(pos.x, pos.x + hotbar_img->w, pos.y, pos.y + hotbar_img->h)) {
if( (mousestatus[SDL_BUTTON_LEFT] || (*inputPressed(joyimpulses[INJOY_MENU_LEFT_CLICK])) && !openedChest[clientnum]) && !selectedItem ) {
if( (mousestatus[SDL_BUTTON_LEFT] || (*inputPressed(joyimpulses[INJOY_MENU_LEFT_CLICK])) && !openedChest[clientnum] && gui_mode != (GUI_MODE_SHOP)) && !selectedItem ) {
toggleclick=FALSE;
if (keystatus[SDL_SCANCODE_LSHIFT] || keystatus[SDL_SCANCODE_RSHIFT]) {
hotbar[num].item = 0;
Expand All @@ -447,7 +447,7 @@ void drawStatus() {
}
hotbar[num].item = 0;

if ( *inputPressed(joyimpulses[INJOY_MENU_LEFT_CLICK]) && !openedChest[clientnum] ) {
if ( *inputPressed(joyimpulses[INJOY_MENU_LEFT_CLICK]) && !openedChest[clientnum] && gui_mode != (GUI_MODE_SHOP) ) {
*inputPressed(joyimpulses[INJOY_MENU_LEFT_CLICK]) = 0;
//itemSelectBehavior = BEHAVIOR_GAMEPAD;
toggleclick = true;
Expand All @@ -456,7 +456,7 @@ void drawStatus() {
}
}
}
if ( mousestatus[SDL_BUTTON_RIGHT] || (*inputPressed(joyimpulses[INJOY_MENU_USE]) && !openedChest[clientnum]) ) {
if ( mousestatus[SDL_BUTTON_RIGHT] || (*inputPressed(joyimpulses[INJOY_MENU_USE]) && !openedChest[clientnum]) && gui_mode != (GUI_MODE_SHOP) ) {
//Use the item if right clicked.
mousestatus[SDL_BUTTON_RIGHT] = 0;
*inputPressed(joyimpulses[INJOY_MENU_USE]) = 0;
Expand Down Expand Up @@ -666,28 +666,28 @@ void drawStatus() {

bool bumper_moved = false;
//Gamepad change hotbar selection.
if (*inputPressed(joyimpulses[INJOY_HOTBAR_NEXT]) && !itemMenuOpen && !openedChest[clientnum])
if (*inputPressed(joyimpulses[INJOY_HOTBAR_NEXT]) && !itemMenuOpen && !openedChest[clientnum] && gui_mode != (GUI_MODE_SHOP))
{
*inputPressed(joyimpulses[INJOY_HOTBAR_NEXT]) = 0;
selectHotbarSlot(current_hotbar + 1);
bumper_moved = true;
}
if (*inputPressed(joyimpulses[INJOY_HOTBAR_PREV]) && !itemMenuOpen && !openedChest[clientnum])
if (*inputPressed(joyimpulses[INJOY_HOTBAR_PREV]) && !itemMenuOpen && !openedChest[clientnum] && gui_mode != (GUI_MODE_SHOP))
{
*inputPressed(joyimpulses[INJOY_HOTBAR_PREV]) = 0;
selectHotbarSlot(current_hotbar - 1);
bumper_moved = true;
}

if (bumper_moved && !itemMenuOpen && !openedChest[clientnum])
if (bumper_moved && !itemMenuOpen && !openedChest[clientnum] && gui_mode != (GUI_MODE_SHOP))
{
pos.x = initial_position.x + (current_hotbar * hotbar_img->w) + (hotbar_img->w / 2);
pos.y = initial_position.y - (hotbar_img->h / 2);
SDL_WarpMouseInWindow(screen, pos.x, pos.y);
}

if ( !itemMenuOpen && !selectedItem && !openedChest[clientnum] ) {
if ( shootmode && *inputPressed(joyimpulses[INJOY_GAME_HOTBAR_ACTIVATE]) )
if ( !itemMenuOpen && !selectedItem && !openedChest[clientnum] && gui_mode != (GUI_MODE_SHOP) ) {
if ( shootmode && *inputPressed(joyimpulses[INJOY_GAME_HOTBAR_ACTIVATE] && gui_mode != (GUI_MODE_SHOP)) )
{
//Activate a hotbar slot if in-game.
*inputPressed(joyimpulses[INJOY_GAME_HOTBAR_ACTIVATE]) = 0;
Expand Down
98 changes: 52 additions & 46 deletions src/interface/interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,8 @@ void defaultImpulses()
joyimpulses[INJOY_MENU_LOAD_SAVE] = 304;
joyimpulses[INJOY_MENU_RANDOM_CHAR] = 304;
joyimpulses[INJOY_MENU_DROP_ITEM] = 302;
joyimpulses[INJOY_MENU_CYCLE_SHOP_LEFT] = 310;
joyimpulses[INJOY_MENU_CYCLE_SHOP_RIGHT] = 311;
}

void defaultConfig() {
Expand Down Expand Up @@ -435,6 +437,8 @@ void defaultConfig() {
consoleCommand("/joybind 301 INJOY_MENU_NEXT");
consoleCommand("/joybind 302 INJOY_MENU_CANCEL");
consoleCommand("/joybind 302 INJOY_MENU_DROP_ITEM");
consoleCommand("/joybind 310 INJOY_MENU_CYCLE_SHOP_LEFT");
consoleCommand("/joybind 311 INJOY_MENU_CYCLE_SHOP_RIGHT");
consoleCommand("/gamepad_deadzone 8000");
consoleCommand("/gamepad_trigger_deadzone 18000");
consoleCommand("/gamepad_leftx_sensitivity 1400");
Expand All @@ -447,6 +451,54 @@ void defaultConfig() {
return;
}

static char impulsenames[NUMIMPULSES][12] = {
"FORWARD",
"LEFT",
"BACK",
"RIGHT",
"TURNL",
"TURNR",
"UP",
"DOWN",
"CHAT",
"COMMAND",
"STATUS",
"SPELL_LIST",
"CAST_SPELL",
"DEFEND",
"ATTACK",
"USE"
};

static char joyimpulsenames[NUM_JOY_IMPULSES][30] = {
"STATUS",
"SPELL_LIST",
"GAME_CAST_SPELL",
"GAME_DEFEND",
"GAME_ATTACK",
"GAME_USE",
"PAUSE_MENU",
"MENU_LEFT_CLICK",
"DPAD_LEFT",
"DPAD_RIGHT",
"DPAD_UP",
"DPAD_DOWN",
"MENU_NEXT",
"HOTBAR_NEXT",
"HOTBAR_PREV",
"GAME_HOTBAR_ACTIVATE",
"MENU_CANCEL",
"MENU_USE",
"MENU_HOTBAR_CLEAR",
"MENU_REFRESH_LOBBY",
"MENU_LOAD_SAVE",
"MENU_RANDOM_CHAR",
"MENU_DROP_ITEM",
"MENU_CHEST_GRAB_ALL",
"MENU_CYCLE_SHOP_LEFT",
"MENU_CYCLE_SHOP_RIGHT"
};

/*-------------------------------------------------------------------------------

saveCommand
Expand Down Expand Up @@ -505,52 +557,6 @@ int loadConfig(char *filename) {
return 0;
}

static char impulsenames[NUMIMPULSES][12] = {
"FORWARD",
"LEFT",
"BACK",
"RIGHT",
"TURNL",
"TURNR",
"UP",
"DOWN",
"CHAT",
"COMMAND",
"STATUS",
"SPELL_LIST",
"CAST_SPELL",
"DEFEND",
"ATTACK",
"USE"
};

static char joyimpulsenames[NUM_JOY_IMPULSES][30] = {
"STATUS",
"SPELL_LIST",
"GAME_CAST_SPELL",
"GAME_DEFEND",
"GAME_ATTACK",
"GAME_USE",
"PAUSE_MENU",
"MENU_LEFT_CLICK",
"DPAD_LEFT",
"DPAD_RIGHT",
"DPAD_UP",
"DPAD_DOWN",
"MENU_NEXT",
"HOTBAR_NEXT",
"HOTBAR_PREV",
"GAME_HOTBAR_ACTIVATE",
"MENU_CANCEL",
"MENU_USE",
"MENU_HOTBAR_CLEAR",
"MENU_REFRESH_LOBBY",
"MENU_LOAD_SAVE",
"MENU_RANDOM_CHAR",
"MENU_DROP_ITEM",
"MENU_CHEST_GRAB_ALL"
};

/*-------------------------------------------------------------------------------

saveConfig
Expand Down
42 changes: 34 additions & 8 deletions src/interface/playerinventory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,16 @@ void select_inventory_slot(int x, int y)
int warpY = CHEST_INVENTORY_Y + (inventoryoptionChest_bmp->h / 2) + 16;
SDL_WarpMouseInWindow(screen, warpX, warpY);
}
} else if ( gui_mode == GUI_MODE_SHOP ) {
warpInv = false;

y = INVENTORY_SIZEY - 1; //Keeps the selected slot within the inventory, to warp back to later.

//Warp into shop inventory if shopkeep has any items.
if ( shopinvitems[0] ) {
selectedShopSlot = 0;
warpMouseToSelectedShopSlot();
}
}

if ( warpInv ) { //Wrap around to top.
Expand Down Expand Up @@ -476,16 +486,31 @@ void updatePlayerInventory() {

if (game_controller)
{
if ( selectedChestSlot < 0 && !itemMenuOpen && game_controller->handleInventoryMovement() )
if ( gui_mode == GUI_MODE_SHOP ) {
if ( *inputPressed(joyimpulses[INJOY_MENU_CYCLE_SHOP_LEFT]) ) {
*inputPressed(joyimpulses[INJOY_MENU_CYCLE_SHOP_LEFT]) = 0;
cycleShopCategories(-1);
}
if ( *inputPressed(joyimpulses[INJOY_MENU_CYCLE_SHOP_RIGHT]) ) {
*inputPressed(joyimpulses[INJOY_MENU_CYCLE_SHOP_RIGHT]) = 0;
cycleShopCategories(1);
}
}

if ( selectedChestSlot < 0 && selectedShopSlot < 0 && !itemMenuOpen && game_controller->handleInventoryMovement() )
{
if ( selectedChestSlot < 0) { //This second check prevents the extra mouse warp.
if ( selectedChestSlot < 0 && selectedShopSlot ) { //This second check prevents the extra mouse warp.
warpMouseToSelectedInventorySlot();
}
} else if ( !itemMenuOpen && game_controller->handleChestMovement() ) {
} else if ( selectedChestSlot >= 0 && !itemMenuOpen && game_controller->handleChestMovement() ) {
if ( selectedChestSlot < 0 ) {
//Move out of chest. Warp cursor back to selected inventory slot.
warpMouseToSelectedInventorySlot();
}
} else if ( selectedShopSlot >= 0 && !itemMenuOpen && game_controller->handleShopMovement() ) {
if ( selectedShopSlot < 0 ) {
warpMouseToSelectedInventorySlot();
}
}
}

Expand All @@ -501,9 +526,9 @@ void updatePlayerInventory() {
drawLine(pos.x,pos.y+y*INVENTORY_SLOTSIZE,pos.x+pos.w,pos.y+y*INVENTORY_SLOTSIZE,SDL_MapRGB(mainsurface->format,150,150,150),255);
}

if ( !itemMenuOpen && selectedChestSlot < 0 ) {
if ( !itemMenuOpen && selectedChestSlot < 0 && selectedShopSlot < 0 ) {
//Highlight (draw a gold border) currently selected inventory slot (for gamepad).
//Only if item menu is not open and no chest slots are selected.
//Only if item menu is not open, no chest slot is selected, and no shop slot is selected.
pos.w = INVENTORY_SLOTSIZE; pos.h = INVENTORY_SLOTSIZE;
for (x = 0; x < INVENTORY_SIZEX; ++x)
{
Expand Down Expand Up @@ -755,13 +780,13 @@ void updatePlayerInventory() {
if( stats[clientnum]->HP<=0 )
break;

if ( *inputPressed(joyimpulses[INJOY_MENU_DROP_ITEM]) && !itemMenuOpen && !selectedItem && selectedChestSlot < 0 ) {
if ( *inputPressed(joyimpulses[INJOY_MENU_DROP_ITEM]) && !itemMenuOpen && !selectedItem && selectedChestSlot < 0 && selectedShopSlot < 0 ) {
*inputPressed(joyimpulses[INJOY_MENU_DROP_ITEM]) = 0;
dropItem(item, clientnum);
}

// handle clicking
if( (mousestatus[SDL_BUTTON_LEFT] || (*inputPressed(joyimpulses[INJOY_MENU_LEFT_CLICK]) && selectedChestSlot < 0)) && !selectedItem && !itemMenuOpen ) {
if( (mousestatus[SDL_BUTTON_LEFT] || (*inputPressed(joyimpulses[INJOY_MENU_LEFT_CLICK]) && selectedChestSlot < 0 && selectedShopSlot < 0)) && !selectedItem && !itemMenuOpen ) {
if ( !(*inputPressed(joyimpulses[INJOY_MENU_LEFT_CLICK])) && (keystatus[SDL_SCANCODE_LSHIFT] || keystatus[SDL_SCANCODE_RSHIFT]) ) {
dropItem(item, clientnum); // Quick item drop
} else {
Expand All @@ -775,10 +800,11 @@ void updatePlayerInventory() {
*inputPressed(joyimpulses[INJOY_MENU_LEFT_CLICK]) = 0;
//itemSelectBehavior = BEHAVIOR_GAMEPAD;
toggleclick = true;
mousestatus[SDL_BUTTON_LEFT] = 0;
//TODO: Change the mouse cursor to THE HAND.
}
}
} else if( (mousestatus[SDL_BUTTON_RIGHT] || (*inputPressed(joyimpulses[INJOY_MENU_USE]) && selectedChestSlot < 0)) && !itemMenuOpen && !selectedItem ) {
} else if( (mousestatus[SDL_BUTTON_RIGHT] || (*inputPressed(joyimpulses[INJOY_MENU_USE]) && selectedChestSlot < 0 && selectedShopSlot < 0)) && !itemMenuOpen && !selectedItem ) {
if( (keystatus[SDL_SCANCODE_LSHIFT] || keystatus[SDL_SCANCODE_RSHIFT]) && !(*inputPressed(joyimpulses[INJOY_MENU_USE]) && selectedChestSlot < 0) ) {
// auto-appraise the item
identifygui_active = false;
Expand Down
Loading

0 comments on commit f1e8356

Please sign in to comment.