diff options
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | README | 3 | ||||
-rw-r--r-- | src/engine.cpp | 4 | ||||
-rw-r--r-- | src/game.cpp | 91 | ||||
-rw-r--r-- | src/gui/chat.cpp | 10 | ||||
-rw-r--r-- | src/gui/chat.h | 8 |
6 files changed, 73 insertions, 44 deletions
@@ -1,4 +1,5 @@ 0.0.11 (.... 2005) +- Fixed get item button and chatWindow: Enter (de)focuses chat window - Added walking with mouse by clicking where you want to go - Chat now appears in a window - More complete support for new map format (collision, compression) @@ -61,7 +61,8 @@ talk to them. Other keys: - F6 toggle debug pathfinding feature - F11 raise volume - F12 lower volume -- G get item +- G get item +- Enter focus chat window / send message - Alt + K show skills - Alt + S show stats - Alt + I show inventory diff --git a/src/engine.cpp b/src/engine.cpp index 0359e19f..1a60e6c3 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -184,8 +184,8 @@ Engine::Engine() screen->w - 5 - chargeDialog->getWidth(), screen->h - chargeDialog->getHeight() - 15); - // Give focus to chat window - chatWindow->requestFocus(); + // Do not focus any text field + gui->focusNone(); // Load the sprite sets ResourceManager *resman = ResourceManager::getInstance(); diff --git a/src/game.cpp b/src/game.cpp index c9d611bf..77bb83c3 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -175,6 +175,15 @@ void do_input() { SDL_keysym keysym = event.key.keysym; + if (keysym.sym == SDLK_RETURN) + { + if (!chatWindow->isFocused()) + { + chatWindow->requestFocus(); + used = true; + } + } + if ((keysym.sym == SDLK_F5) && action_time) { if (player_node->action == STAND) @@ -250,47 +259,50 @@ void do_input() if (keysym.sym == SDLK_g) { // Get the item code - - int id = 0; - id = find_floor_item_by_cor(player_node->x, player_node->y); - if (id != 0) + if (!chatWindow->isFocused()) { - WFIFOW(0) = net_w_value(0x009f); - WFIFOL(2) = net_l_value(id); - WFIFOSET(6); - } - else { - switch (player_node->direction) { - case NORTH: - id = find_floor_item_by_cor(player_node->x, player_node->y-1); - break; - case SOUTH: - id = find_floor_item_by_cor(player_node->x, player_node->y+1); - break; - case WEST: - id = find_floor_item_by_cor(player_node->x-1, player_node->y); - break; - case EAST: - id = find_floor_item_by_cor(player_node->x+1, player_node->y); - break; - case NW: - id = find_floor_item_by_cor(player_node->x-1, player_node->y-1); - break; - case NE: - id = find_floor_item_by_cor(player_node->x+1, player_node->y-1); - break; - case SW: - id = find_floor_item_by_cor(player_node->x-1, player_node->y+1); - break; - case SE: - id = find_floor_item_by_cor(player_node->x+1, player_node->y+1); - break; - default: - break; + used = true; + int id = 0; + id = find_floor_item_by_cor(player_node->x, player_node->y); + if (id != 0) + { + WFIFOW(0) = net_w_value(0x009f); + WFIFOL(2) = net_l_value(id); + WFIFOSET(6); + } + else { + switch (player_node->direction) { + case NORTH: + id = find_floor_item_by_cor(player_node->x, player_node->y-1); + break; + case SOUTH: + id = find_floor_item_by_cor(player_node->x, player_node->y+1); + break; + case WEST: + id = find_floor_item_by_cor(player_node->x-1, player_node->y); + break; + case EAST: + id = find_floor_item_by_cor(player_node->x+1, player_node->y); + break; + case NW: + id = find_floor_item_by_cor(player_node->x-1, player_node->y-1); + break; + case NE: + id = find_floor_item_by_cor(player_node->x+1, player_node->y-1); + break; + case SW: + id = find_floor_item_by_cor(player_node->x-1, player_node->y+1); + break; + case SE: + id = find_floor_item_by_cor(player_node->x+1, player_node->y+1); + break; + default: + break; + } + WFIFOW(0) = net_w_value(0x009f); + WFIFOL(2) = net_l_value(id); + WFIFOSET(6); } - WFIFOW(0) = net_w_value(0x009f); - WFIFOL(2) = net_l_value(id); - WFIFOSET(6); } } @@ -415,6 +427,7 @@ void do_input() player_node->direction = WEST; } else player_node->direction = WEST; + } else if (keys[SDLK_RIGHT] || keys[SDLK_KP6]) { diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 253fb3f4..45c87ee8 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -188,6 +188,8 @@ void ChatWindow::action(const std::string& eventId) chat_send(char_info[0].name, message.c_str()); chatInput->setText(""); } + gui->focusNone(); + } } @@ -197,6 +199,11 @@ void ChatWindow::requestFocus() chatInput->requestFocus(); } +bool ChatWindow::isFocused() +{ + return chatInput->hasFocus(); +} + char *ChatWindow::chat_send(std::string nick, std::string msg) { short packid = 0x008c; @@ -339,4 +346,5 @@ std::string ChatWindow::cut_string(std::string& value, unsigned int maximumLengt } return std::string(""); -}
\ No newline at end of file +} + diff --git a/src/gui/chat.h b/src/gui/chat.h index db2d9843..ad3d5e39 100644 --- a/src/gui/chat.h +++ b/src/gui/chat.h @@ -136,7 +136,12 @@ class ChatWindow : public Window, public gcn::ActionListener { * Request focus. */ void requestFocus(); - + + /** + * Checks wether ChatWindow is Focused or not + */ + bool isFocused(); + /* * Determines wether to send a command or an ordinary message, then * contructs packets & sends them @@ -196,3 +201,4 @@ class ChatWindow : public Window, public gcn::ActionListener { }; #endif + |