diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | src/beingmanager.cpp | 13 | ||||
-rw-r--r-- | src/engine.cpp | 26 | ||||
-rw-r--r-- | src/game.cpp | 40 | ||||
-rw-r--r-- | src/gui/char_select.cpp | 4 | ||||
-rw-r--r-- | src/gui/char_server.cpp | 3 | ||||
-rw-r--r-- | src/gui/confirm_dialog.cpp | 3 | ||||
-rw-r--r-- | src/gui/confirm_dialog.h | 2 | ||||
-rw-r--r-- | src/gui/login.cpp | 1 | ||||
-rw-r--r-- | src/gui/ok_dialog.cpp | 3 | ||||
-rw-r--r-- | src/gui/ok_dialog.h | 2 | ||||
-rw-r--r-- | src/gui/register.cpp | 4 | ||||
-rw-r--r-- | src/gui/window.cpp | 3 | ||||
-rw-r--r-- | src/gui/window.h | 3 | ||||
-rw-r--r-- | src/localplayer.cpp | 4 | ||||
-rw-r--r-- | src/net/beinghandler.cpp | 23 | ||||
-rw-r--r-- | src/net/npchandler.cpp | 8 | ||||
-rw-r--r-- | src/net/playerhandler.cpp | 20 | ||||
-rw-r--r-- | src/npc.cpp | 14 | ||||
-rw-r--r-- | src/npc.h | 7 | ||||
-rw-r--r-- | src/player.cpp | 3 |
21 files changed, 111 insertions, 81 deletions
@@ -4,6 +4,12 @@ src/resources/soundeffect.cpp, src/resources/resourcemanager.cpp: Don't try to play empty strings as sounds, and don't return a SoundEffect instance when Mix_Chunk loading failed. + * src/beingmanager.cpp, src/npc.cpp, src/npc.h: Show NPC names. + * src/game.cpp, src/gui/char_server.cpp, src/gui/window.cpp, + src/gui/login.cpp, src/gui/char_select.cpp, src/gui/ok_dialog.cpp, + src/gui/confirm_dialog.cpp, src/gui/ok_dialog.h, src/gui/window.h, + src/gui/confirm_dialog.h, src/gui/register.cpp: Windows now default + to invisible, since this seems the most common case. 2006-12-02 Philipp Sehmisch <tmw@crushnet.org> diff --git a/src/beingmanager.cpp b/src/beingmanager.cpp index eea8c419..d3ac88f2 100644 --- a/src/beingmanager.cpp +++ b/src/beingmanager.cpp @@ -72,12 +72,7 @@ Being* BeingManager::createBeing(Uint32 id, Uint16 job) Being *being; if (job < 10) - { being = new Player(id, job, mMap); - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x0094); - outMsg.writeInt32(id);//readLong(2)); - } else if (job >= 100 & job < 200) being = new NPC(id, job, mMap, mNetwork); else if (job >= 1000 && job < 1200) @@ -85,6 +80,14 @@ Being* BeingManager::createBeing(Uint32 id, Uint16 job) else being = new Being(id, job, mMap); + // Player or NPC + if (job < 200) + { + MessageOut outMsg(mNetwork); + outMsg.writeInt16(0x0094); + outMsg.writeInt32(id);//readLong(2)); + } + mBeings.push_back(being); return being; diff --git a/src/engine.cpp b/src/engine.cpp index a6177b30..2b2f168a 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -163,7 +163,7 @@ void Engine::draw(Graphics *graphics) lastTick = tick_time; } - // calculate viewpoint + // Calculate viewpoint int midTileX = graphics->getWidth() / 32 / 2; int midTileY = graphics->getHeight() / 32 / 2; @@ -174,9 +174,9 @@ void Engine::draw(Graphics *graphics) scrollRadius = (int)config.getValue("ScrollRadius", 32); if (scrollLaziness < 1) - scrollLaziness = 1; //avoids division by zero + scrollLaziness = 1; // Avoids division by zero - //apply lazy scrolling + // Apply lazy scrolling while (lastTick < tick_time) { if (player_x > view_x + scrollRadius) @@ -198,7 +198,7 @@ void Engine::draw(Graphics *graphics) lastTick++; } - //auto center when player is off screen + // Auto center when player is off screen if ( player_x - view_x > graphics->getWidth() / 2 || view_x - player_x > graphics->getWidth() / 2 || view_y - player_y > graphics->getHeight() / 2 @@ -224,19 +224,19 @@ void Engine::draw(Graphics *graphics) } } - camera_x = int(view_x + 16) / 32; - camera_y = int(view_y + 16) / 32; + camera_x = (int) (view_x + 16) / 32; + camera_y = (int) (view_y + 16) / 32; // Draw tiles and sprites if (mCurrentMap != NULL) { - mCurrentMap->draw(graphics, (int)view_x, (int)view_y, 0); - mCurrentMap->draw(graphics, (int)view_x, (int)view_y, 1); - mCurrentMap->draw(graphics, (int)view_x, (int)view_y, 2); + mCurrentMap->draw(graphics, (int) view_x, (int) view_y, 0); + mCurrentMap->draw(graphics, (int) view_x, (int) view_y, 1); + mCurrentMap->draw(graphics, (int) view_x, (int) view_y, 2); mCurrentMap->drawOverlay( graphics, view_x, view_y, - (int)config.getValue("OverlayDetail", 2) + (int) config.getValue("OverlayDetail", 2) ); } @@ -272,9 +272,9 @@ void Engine::draw(Graphics *graphics) Beings &beings = beingManager->getAll(); for (BeingIterator i = beings.begin(); i != beings.end(); i++) { - (*i)->drawSpeech(graphics, -(int)view_x, -(int)view_y); - (*i)->drawName(graphics, -(int)view_x, -(int)view_y); - (*i)->drawEmotion(graphics, -(int)view_x, -(int)view_y); + (*i)->drawSpeech(graphics, -(int) view_x, -(int) view_y); + (*i)->drawName(graphics, -(int) view_x, -(int) view_y); + (*i)->drawEmotion(graphics, -(int) view_x, -(int) view_y); } // Draw target marker if needed diff --git a/src/game.cpp b/src/game.cpp index 6bc37365..a241e8bb 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -43,7 +43,7 @@ #include "gui/buy.h" #include "gui/buysell.h" -#include "gui/chargedialog.h" +//#include "gui/chargedialog.h" #include "gui/chat.h" #include "gui/confirm_dialog.h" #include "gui/equipmentwindow.h" @@ -107,7 +107,7 @@ SkillDialog *skillDialog; Setup* setupWindow; Minimap *minimap; EquipmentWindow *equipmentWindow; -ChargeDialog *chargeDialog; +//ChargeDialog *chargeDialog; TradeWindow *tradeWindow; //BuddyWindow *buddyWindow; HelpWindow *helpWindow; @@ -183,47 +183,23 @@ void createGuiWindows(Network *network) setupWindow = new Setup(); minimap = new Minimap(); equipmentWindow = new EquipmentWindow(player_node->mEquipment.get()); - chargeDialog = new ChargeDialog(); + //chargeDialog = new ChargeDialog(); tradeWindow = new TradeWindow(network); //buddyWindow = new BuddyWindow(); helpWindow = new HelpWindow(); debugWindow = new DebugWindow(); // Initialize window positions - int screenW = graphics->getWidth(); - int screenH = graphics->getHeight(); + //chargeDialog->setPosition( + // graphics->getWidth() - 5 - chargeDialog->getWidth(), + // graphics->getHeight() - chargeDialog->getHeight() - 15); - chargeDialog->setPosition( - screenW - 5 - chargeDialog->getWidth(), - screenH - chargeDialog->getHeight() - 15); - - /*buddyWindow->setPosition(10, - minimap->getHeight() + 30);*/ + //buddyWindow->setPosition(10, minimap->getHeight() + 30); // Set initial window visibility -// chatWindow->setSticky(true); -// miniStatusWindow->setSticky(true); -// menuWindow->setSticky(true); - chatWindow->setVisible(true); miniStatusWindow->setVisible(true); - statusWindow->setVisible(false); menuWindow->setVisible(true); - buyDialog->setVisible(false); - sellDialog->setVisible(false); - buySellDialog->setVisible(false); - inventoryWindow->setVisible(false); - npcTextDialog->setVisible(false); - npcListDialog->setVisible(false); - skillDialog->setVisible(false); - //newSkillWindow->setVisible(false); - setupWindow->setVisible(false); - equipmentWindow->setVisible(false); - chargeDialog->setVisible(false); - tradeWindow->setVisible(false); - //buddyWindow->setVisible(false); - helpWindow->setVisible(false); - debugWindow->setVisible(false); } /** @@ -245,7 +221,7 @@ void destroyGuiWindows() delete setupWindow; delete minimap; delete equipmentWindow; - delete chargeDialog; + //delete chargeDialog; //delete newSkillWindow; delete tradeWindow; //delete buddyWindow; diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index fa4c0241..d91019e3 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -121,8 +121,9 @@ CharSelectDialog::CharSelectDialog(Network *network, add(mJobLevelLabel); add(mMoneyLabel); - mSelectButton->requestFocus(); setLocationRelativeTo(getParent()); + setVisible(true); + mSelectButton->requestFocus(); updatePlayerInfo(); } @@ -309,6 +310,7 @@ CharCreateDialog::CharCreateDialog(Window *parent, int slot, Network *network, add(mCancelButton); setLocationRelativeTo(getParent()); + setVisible(true); } void CharCreateDialog::action(const std::string& eventId, gcn::Widget* widget) diff --git a/src/gui/char_server.cpp b/src/gui/char_server.cpp index 87ed9c17..302caf62 100644 --- a/src/gui/char_server.cpp +++ b/src/gui/char_server.cpp @@ -87,8 +87,9 @@ ServerSelectDialog::ServerSelectDialog(LoginData *loginData): mServerList->setSelected(1); } - mOkButton->requestFocus(); setLocationRelativeTo(getParent()); + setVisible(true); + mOkButton->requestFocus(); } ServerSelectDialog::~ServerSelectDialog() diff --git a/src/gui/confirm_dialog.cpp b/src/gui/confirm_dialog.cpp index 3bd15589..5a70544f 100644 --- a/src/gui/confirm_dialog.cpp +++ b/src/gui/confirm_dialog.cpp @@ -61,10 +61,11 @@ ConfirmDialog::ConfirmDialog(const std::string &title, const std::string &msg, setLocationRelativeTo(getParent()); getParent()->moveToTop(this); } + setVisible(true); yesButton->requestFocus(); } -void ConfirmDialog::action(const std::string& eventId, gcn::Widget* widget) +void ConfirmDialog::action(const std::string &eventId, gcn::Widget *widget) { // Proxy button events to our listeners ActionListenerIterator i; diff --git a/src/gui/confirm_dialog.h b/src/gui/confirm_dialog.h index 1c206b03..771ecc36 100644 --- a/src/gui/confirm_dialog.h +++ b/src/gui/confirm_dialog.h @@ -47,7 +47,7 @@ class ConfirmDialog : public Window, public gcn::ActionListener { /** * Called when receiving actions from the widgets. */ - void action(const std::string& eventId, gcn::Widget* widget); + void action(const std::string &eventId, gcn::Widget *widget); }; #endif diff --git a/src/gui/login.cpp b/src/gui/login.cpp index 675de078..97814360 100644 --- a/src/gui/login.cpp +++ b/src/gui/login.cpp @@ -112,6 +112,7 @@ LoginDialog::LoginDialog(LoginData *loginData): add(mRegisterButton); setLocationRelativeTo(getParent()); + setVisible(true); if (mUserField->getText().empty()) { mUserField->requestFocus(); diff --git a/src/gui/ok_dialog.cpp b/src/gui/ok_dialog.cpp index e527339e..4f9623d7 100644 --- a/src/gui/ok_dialog.cpp +++ b/src/gui/ok_dialog.cpp @@ -51,10 +51,11 @@ OkDialog::OkDialog(const std::string &title, const std::string &msg, add(okButton); setLocationRelativeTo(getParent()); + setVisible(true); okButton->requestFocus(); } -void OkDialog::action(const std::string& eventId, gcn::Widget* widget) +void OkDialog::action(const std::string &eventId, gcn::Widget *widget) { // Proxy button events to our listeners ActionListenerIterator i; diff --git a/src/gui/ok_dialog.h b/src/gui/ok_dialog.h index 06f703cc..8ae08955 100644 --- a/src/gui/ok_dialog.h +++ b/src/gui/ok_dialog.h @@ -46,7 +46,7 @@ class OkDialog : public Window, public gcn::ActionListener { /** * Called when receiving actions from the widgets. */ - void action(const std::string& eventId, gcn::Widget* widget); + void action(const std::string &eventId, gcn::Widget *widget); }; #endif diff --git a/src/gui/register.cpp b/src/gui/register.cpp index 1c1f0a26..458452eb 100644 --- a/src/gui/register.cpp +++ b/src/gui/register.cpp @@ -83,7 +83,8 @@ RegisterDialog::RegisterDialog(LoginData *loginData): mFemaleButton->setPosition(width - mFemaleButton->getWidth() - 10, mConfirmField->getY() + mConfirmField->getHeight() + 7); - mMaleButton->setPosition(mFemaleButton->getX() - mMaleButton->getWidth() - 5, + mMaleButton->setPosition( + mFemaleButton->getX() - mMaleButton->getWidth() - 5, mFemaleButton->getY()); mRegisterButton->setPosition(5, height - mRegisterButton->getHeight() - 5); @@ -104,6 +105,7 @@ RegisterDialog::RegisterDialog(LoginData *loginData): add(mCancelButton); setLocationRelativeTo(getParent()); + setVisible(true); mUserField->requestFocus(); mUserField->setCaretPosition(mUserField->getText().length()); diff --git a/src/gui/window.cpp b/src/gui/window.cpp index fe23c775..51386eed 100644 --- a/src/gui/window.cpp +++ b/src/gui/window.cpp @@ -115,6 +115,9 @@ Window::Window(const std::string& caption, bool modal, Window *parent): { requestModalFocus(); } + + // Windows are invisible by default + setVisible(false); } Window::~Window() diff --git a/src/gui/window.h b/src/gui/window.h index 51c876e3..158035c0 100644 --- a/src/gui/window.h +++ b/src/gui/window.h @@ -36,7 +36,8 @@ class WindowContainer; /** - * A window. This window can be dragged around and has a title bar. + * A window. This window can be dragged around and has a title bar. Windows are + * invisible by default. * * \ingroup GUI */ diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 46348efc..d5484ac3 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -223,10 +223,8 @@ void LocalPlayer::walk(unsigned char dir) } else if (dir) { - // Update the player direction to where he wants to walk - // Warning: Not communicated to the server yet - // If the being can't move, just change direction + // TODO: Communicate this to the server (waiting on tmwserv) setDirection(dir); } } diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index 5a1ed1e5..3fe3059d 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -107,7 +107,8 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->mJob = job; dstBeing->setHairStyle(msg->readInt16()); dstBeing->setWeapon(msg->readInt16()); - dstBeing->setVisibleEquipment(Being::BOTTOMCLOTHES_SPRITE, msg->readInt16()); // head bottom + dstBeing->setVisibleEquipment( + Being::BOTTOMCLOTHES_SPRITE, msg->readInt16()); if (msg->getId() == SMSG_BEING_MOVE) { @@ -115,8 +116,9 @@ void BeingHandler::handleMessage(MessageIn *msg) } msg->readInt16(); // shield - dstBeing->setVisibleEquipment(Being::HAT_SPRITE, msg->readInt16()); // head top - dstBeing->setVisibleEquipment(Being::TOPCLOTHES_SPRITE, msg->readInt16()); // head mid + dstBeing->setVisibleEquipment(Being::HAT_SPRITE, msg->readInt16()); + dstBeing->setVisibleEquipment( + Being::TOPCLOTHES_SPRITE, msg->readInt16()); dstBeing->setHairColor(msg->readInt16()); msg->readInt16(); // unknown msg->readInt16(); // head dir @@ -255,13 +257,19 @@ void BeingHandler::handleMessage(MessageIn *msg) switch (msg->readInt8()) { case 3: - dstBeing->setVisibleEquipment(Being::BOTTOMCLOTHES_SPRITE, msg->readInt8()); + dstBeing->setVisibleEquipment( + Being::BOTTOMCLOTHES_SPRITE, + msg->readInt8()); break; case 4: - dstBeing->setVisibleEquipment(Being::HAT_SPRITE, msg->readInt8()); + dstBeing->setVisibleEquipment( + Being::HAT_SPRITE, + msg->readInt8()); break; case 5: - dstBeing->setVisibleEquipment(Being::TOPCLOTHES_SPRITE, msg->readInt8()); + dstBeing->setVisibleEquipment( + Being::TOPCLOTHES_SPRITE, + msg->readInt8()); break; } break; @@ -322,7 +330,8 @@ void BeingHandler::handleMessage(MessageIn *msg) msg->readInt16(); // manner msg->readInt8(); // karma dstBeing->setSex(1 - msg->readInt8()); // sex - dstBeing->setVisibleEquipment(Being::BOTTOMCLOTHES_SPRITE, headBottom); + dstBeing->setVisibleEquipment( + Being::BOTTOMCLOTHES_SPRITE, headBottom); dstBeing->setVisibleEquipment(Being::HAT_SPRITE, headTop); dstBeing->setVisibleEquipment(Being::TOPCLOTHES_SPRITE, headMid); diff --git a/src/net/npchandler.cpp b/src/net/npchandler.cpp index a803710e..da21b2a5 100644 --- a/src/net/npchandler.cpp +++ b/src/net/npchandler.cpp @@ -49,18 +49,22 @@ NPCHandler::NPCHandler() void NPCHandler::handleMessage(MessageIn *msg) { + int id; + switch (msg->getId()) { case SMSG_NPC_CHOICE: msg->readInt16(); // length - current_npc = dynamic_cast<NPC*>(beingManager->findBeing(msg->readInt32())); + id = msg->readInt32(); + current_npc = dynamic_cast<NPC*>(beingManager->findBeing(id)); npcListDialog->parseItems(msg->readString(msg->getLength() - 8)); npcListDialog->setVisible(true); break; case SMSG_NPC_MESSAGE: msg->readInt16(); // length - current_npc = dynamic_cast<NPC*>(beingManager->findBeing(msg->readInt32())); + id = msg->readInt32(); + current_npc = dynamic_cast<NPC*>(beingManager->findBeing(id)); npcTextDialog->addText(msg->readString(msg->getLength() - 8)); npcListDialog->setVisible(false); npcTextDialog->setVisible(true); diff --git a/src/net/playerhandler.cpp b/src/net/playerhandler.cpp index 3786cd0b..e83bcce8 100644 --- a/src/net/playerhandler.cpp +++ b/src/net/playerhandler.cpp @@ -46,7 +46,10 @@ OkDialog *deathNotice = NULL; namespace { struct WeightListener : public gcn::ActionListener { - void action(const std::string& eventId, gcn::Widget* widget) { weightNotice = NULL; } + void action(const std::string &eventId, gcn::Widget *widget) + { + weightNotice = NULL; + } } weightListener; } @@ -55,8 +58,10 @@ namespace { */ // TODO Move somewhere else namespace { - struct DeathListener : public gcn::ActionListener { - void action(const std::string& eventId, gcn::Widget* widget) { + struct DeathListener : public gcn::ActionListener + { + void action(const std::string &eventId, gcn::Widget *widget) + { player_node->revive(); deathNotice = NULL; } @@ -137,10 +142,11 @@ void PlayerHandler::handleMessage(MessageIn *msg) player_node->mMaxWeight / 2) { weightNotice = new OkDialog("Message", - "You are carrying more then half your " - "weight. You are unable to regain " - "health."); - weightNotice->addActionListener(&weightListener); + "You are carrying more then half " + "your weight. You are unable to " + "regain health."); + weightNotice->addActionListener( + &weightListener); } player_node->mTotalWeight = value; break; diff --git a/src/npc.cpp b/src/npc.cpp index d2e3f93f..a961420f 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -24,10 +24,13 @@ #include "npc.h" #include "animatedsprite.h" +#include "graphics.h" #include "net/messageout.h" #include "net/protocol.h" +#include "gui/gui.h" + class Spriteset; extern Spriteset *npcset; @@ -47,6 +50,17 @@ NPC::getType() const } void +NPC::drawName(Graphics *graphics, Sint32 offsetX, Sint32 offsetY) +{ + int px = mPx + offsetX; + int py = mPy + offsetY; + + graphics->setFont(speechFont); + graphics->setColor(gcn::Color(200, 200, 255)); + graphics->drawText(mName, px + 15, py + 30, gcn::Graphics::CENTER); +} + +void NPC::talk() { MessageOut outMsg(mNetwork); @@ -27,13 +27,18 @@ #include "being.h" class Network; +class Graphics; class NPC : public Being { public: NPC(Uint32 id, Uint16 job, Map *map, Network *network); - virtual Type getType() const; + virtual Type + getType() const; + + virtual void + drawName(Graphics *graphics, Sint32 offsetX, Sint32 offsetY); void talk(); void nextDialog(); diff --git a/src/player.cpp b/src/player.cpp index a543b345..b9076260 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -36,9 +36,6 @@ Player::Player(Uint32 id, Uint16 job, Map *map): Being(id, job, map) { - // Load the weapon sprite. - // When there are more different weapons this should be moved to the - // setWeapon Method. setWeapon(0); } |