summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README2
-rw-r--r--src/game.cpp84
-rw-r--r--src/gui/buy.cpp1
-rw-r--r--src/gui/char_server.cpp1
-rw-r--r--src/gui/npc.cpp1
-rw-r--r--src/gui/scrollarea.cpp21
-rw-r--r--src/gui/scrollarea.h6
-rw-r--r--src/gui/sell.cpp1
8 files changed, 73 insertions, 44 deletions
diff --git a/README b/README
index 6495c8c9..b101db7f 100644
--- a/README
+++ b/README
@@ -41,7 +41,7 @@ over NPC's feet to talk to them or over a monster to attack it. Other keys:
- F5 sit down / stand up
- F6 toggle debug pathfinding feature
- F7 play test sound
-- G pick up item
+- G or Z pick up item
- Enter focus chat window / send message
- Alt + K show skills
- Alt + S show stats
diff --git a/src/game.cpp b/src/game.cpp
index bc56578a..6aad95fd 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -321,53 +321,51 @@ void do_input()
}
}
- if (keysym.sym == SDLK_g && !chatWindow->isFocused())
+ if ((keysym.sym == SDLK_g || keysym.sym == SDLK_z) &&
+ !chatWindow->isFocused())
{
// Get the item code
- if (!chatWindow->isFocused())
+ used = true;
+ int id = 0;
+ id = find_floor_item_by_cor(player_node->x, player_node->y);
+ if (id != 0)
{
- 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);
+ }
+ 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);
}
}
} // End key down
diff --git a/src/gui/buy.cpp b/src/gui/buy.cpp
index 79f21227..d291650d 100644
--- a/src/gui/buy.cpp
+++ b/src/gui/buy.cpp
@@ -47,6 +47,7 @@ BuyDialog::BuyDialog():
itemDescLabel = new gcn::Label("Description:");
setContentSize(260, 198);
+ scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
scrollArea->setDimension(gcn::Rectangle(5, 5, 250, 110));
itemList->setDimension(gcn::Rectangle(5, 5, 238, 110));
slider->setDimension(gcn::Rectangle(5, 120, 200, 10));
diff --git a/src/gui/char_server.cpp b/src/gui/char_server.cpp
index a2bd352f..8674b6d4 100644
--- a/src/gui/char_server.cpp
+++ b/src/gui/char_server.cpp
@@ -50,6 +50,7 @@ ServerSelectDialog::ServerSelectDialog():
okButton->setPosition(
cancelButton->getX() - okButton->getWidth() - 5,
100 - okButton->getHeight() - 5);
+ scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
scrollArea->setDimension(gcn::Rectangle(
5, 5, 200 - 2 * 5,
100 - 3 * 5 - cancelButton->getHeight() -
diff --git a/src/gui/npc.cpp b/src/gui/npc.cpp
index 42d1151c..084f2f6a 100644
--- a/src/gui/npc.cpp
+++ b/src/gui/npc.cpp
@@ -37,6 +37,7 @@ NpcListDialog::NpcListDialog():
cancelButton = new Button("Cancel");
setContentSize(260, 175);
+ scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
scrollArea->setDimension(gcn::Rectangle(
5, 5, 250, 160 - okButton->getHeight()));
cancelButton->setPosition(
diff --git a/src/gui/scrollarea.cpp b/src/gui/scrollarea.cpp
index ad31ada8..319025a0 100644
--- a/src/gui/scrollarea.cpp
+++ b/src/gui/scrollarea.cpp
@@ -137,6 +137,27 @@ void ScrollArea::init()
instances++;
}
+void ScrollArea::logic()
+{
+ gcn::ScrollArea::logic();
+
+ // When no scrollbar in a certain direction, adapt content size to match
+ // the content dimension exactly.
+ if (mContent != NULL)
+ {
+ if (getHorizontalScrollPolicy() == gcn::ScrollArea::SHOW_NEVER)
+ {
+ mContent->setWidth(getContentDimension().width -
+ 2 * mContent->getBorderSize());
+ }
+ if (getVerticalScrollPolicy() == gcn::ScrollArea::SHOW_NEVER)
+ {
+ mContent->setHeight(getContentDimension().height -
+ 2 * mContent->getBorderSize());
+ }
+ }
+}
+
void ScrollArea::draw(gcn::Graphics *graphics)
{
checkPolicies();
diff --git a/src/gui/scrollarea.h b/src/gui/scrollarea.h
index e3e57ae2..66ec1542 100644
--- a/src/gui/scrollarea.h
+++ b/src/gui/scrollarea.h
@@ -51,6 +51,12 @@ class ScrollArea : public gcn::ScrollArea {
~ScrollArea();
/**
+ * Logic function optionally adapts width or height of contents. This
+ * depends on the scrollbar settings.
+ */
+ void logic();
+
+ /**
* Draws the scroll area.
*/
void draw(gcn::Graphics *graphics);
diff --git a/src/gui/sell.cpp b/src/gui/sell.cpp
index f2e1677f..95c4a2dc 100644
--- a/src/gui/sell.cpp
+++ b/src/gui/sell.cpp
@@ -45,6 +45,7 @@ SellDialog::SellDialog():
okButton->setEnabled(false);
setContentSize(260, 175);
+ scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
scrollArea->setDimension(gcn::Rectangle(5, 5, 250, 110));
itemList->setDimension(gcn::Rectangle(5, 5, 238, 110));
slider->setDimension(gcn::Rectangle(5, 120, 200, 10));