From: <be...@us...> - 2011-12-03 23:36:57
|
Revision: 606 http://freesynd.svn.sourceforge.net/freesynd/?rev=606&view=rev Author: benblan Date: 2011-12-03 23:36:50 +0000 (Sat, 03 Dec 2011) Log Message: ----------- fixed a bug on hiding/showing buttons changed a little bit the reload weapon behavior Modified Paths: -------------- freesynd/trunk/src/menus/mapmenu.cpp freesynd/trunk/src/menus/mapmenu.h freesynd/trunk/src/menus/menu.h freesynd/trunk/src/menus/researchmenu.cpp freesynd/trunk/src/menus/selectmenu.cpp freesynd/trunk/src/menus/selectmenu.h freesynd/trunk/src/menus/widget.cpp Modified: freesynd/trunk/src/menus/mapmenu.cpp =================================================================== --- freesynd/trunk/src/menus/mapmenu.cpp 2011-12-03 21:37:33 UTC (rev 605) +++ freesynd/trunk/src/menus/mapmenu.cpp 2011-12-03 23:36:50 UTC (rev 606) @@ -111,7 +111,7 @@ mapblk_data_(NULL), select_tick_count_(0) { // - addOption(17, 347, 128, 25, "#MAP_BRIEF_BUT", FontManager::SIZE_2, MENU_BRIEF); + briefButId_ = addOption(17, 347, 128, 25, "#MAP_BRIEF_BUT", FontManager::SIZE_2, MENU_BRIEF); addOption(500, 347, 128, 25, "#MENU_MAIN_BUT", FontManager::SIZE_2, MENU_MAIN); //txtCountryId_ = addStatic(268, 312, "", FontManager::SIZE_1, false); // Country name @@ -155,15 +155,15 @@ if (blk.status == BLK_FINISHED) { // A mission is finished // Brief is available only if replay mission cheat is set if (g_Session.canReplayMission()) { - showOption(KEY_F4); + getOption(briefButId_)->setVisible(true); } else { - hideOption(KEY_F4); + getOption(briefButId_)->setVisible(false); } } else if (blk.status == BLK_UNAVAIL) { // A mission is unavailable - hideOption(KEY_F4); + getOption(briefButId_)->setVisible(false); } else { // Brief is available because mission is either available or on rebellion - showOption(KEY_F4); + getOption(briefButId_)->setVisible(true); } // Update the country informations @@ -214,8 +214,8 @@ #endif getStatic(txtTaxValueId_)->setText(tmp); - showOption(KEY_MINUS); - showOption(KEY_PLUS); + getOption(decrTaxButId_)->setVisible(true); + getOption(incrTaxButId_)->setVisible(true); #ifdef WIN_SECURE sprintf_s(tmp, 100, "@ %d%%", tax); @@ -243,8 +243,8 @@ getStatic(txtTaxPctId_)->setText(""); } - hideOption(KEY_MINUS); - hideOption(KEY_PLUS); + getOption(decrTaxButId_)->setVisible(false); + getOption(incrTaxButId_)->setVisible(false); } //addDirtyRect(192, 310, 260, 70); Modified: freesynd/trunk/src/menus/mapmenu.h =================================================================== --- freesynd/trunk/src/menus/mapmenu.h 2011-12-03 21:37:33 UTC (rev 605) +++ freesynd/trunk/src/menus/mapmenu.h 2011-12-03 23:36:50 UTC (rev 606) @@ -86,6 +86,9 @@ int incrTaxButId_; /*! Id of the decrement tax percentage button.*/ int decrTaxButId_; + + /*! Id of the briefing button.*/ + int briefButId_; }; #endif Modified: freesynd/trunk/src/menus/menu.h =================================================================== --- freesynd/trunk/src/menus/menu.h 2011-12-03 21:37:33 UTC (rev 605) +++ freesynd/trunk/src/menus/menu.h 2011-12-03 23:36:50 UTC (rev 606) @@ -104,40 +104,6 @@ //! Adds a mapping between a Key and an Option void registerHotKey(Key key, int optId); - //! Hides the given button - /*! - * Search for the option mapped to the given key - * and disables its visible property. - * \param key The key associated to the option. - */ - void hideOption(Key key) { - if (hotKeys_.find(key) == hotKeys_.end()) - return; - - Option *opt = hotKeys_[key]; - - if (opt->isVisible()) { - opt->setVisible(false); - } - } - - //! Shows the given button - /*! - * Search for the option mapped to the given key - * and enables its visible property. - * \param key The key associated to the option. - */ - void showOption(Key key) { - if (hotKeys_.find(key) == hotKeys_.end()) - return; - - Option *opt = hotKeys_[key]; - - if (!opt->isVisible()) { - opt->setVisible(true); - } - } - void render(); //! Does common actions before leaving void leave(); Modified: freesynd/trunk/src/menus/researchmenu.cpp =================================================================== --- freesynd/trunk/src/menus/researchmenu.cpp 2011-12-03 21:37:33 UTC (rev 605) +++ freesynd/trunk/src/menus/researchmenu.cpp 2011-12-03 23:36:50 UTC (rev 606) @@ -355,13 +355,13 @@ std::pair<int, void *> * pPair = static_cast<std::pair<int, void *> *> (ctx); pSelectedMod_ = static_cast<Mod *> (pPair->second); hideDetailsList(); - showOption(KEY_F5); + getOption(cancelDescId_)->setVisible(true); } else if (actionId == pEquipsLBox_->getId()) { // Selection of an avalaible weapon std::pair<int, void *> * pPair = static_cast<std::pair<int, void *> *> (ctx); pSelectedWeapon_ = static_cast<Weapon *> (pPair->second); hideDetailsList(); - showOption(KEY_F5); + getOption(cancelDescId_)->setVisible(true); } else if (actionId == modsButId_) { if (tab_ != TAB_MODS) { Modified: freesynd/trunk/src/menus/selectmenu.cpp =================================================================== --- freesynd/trunk/src/menus/selectmenu.cpp 2011-12-03 21:37:33 UTC (rev 605) +++ freesynd/trunk/src/menus/selectmenu.cpp 2011-12-03 23:36:50 UTC (rev 606) @@ -74,7 +74,6 @@ txtAgentId_ = addStatic(158, 86, "", FontManager::SIZE_2, false); rnd_ = 0; - rld_cost_ = -1; } SelectMenu::~SelectMenu() @@ -268,7 +267,7 @@ getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney()); } -void SelectMenu::drawSelectedWeaponInfos(int x, int y, int rldCost) { +void SelectMenu::drawSelectedWeaponInfos(int x, int y) { char tmp[100]; getMenuFont(FontManager::SIZE_1)->drawText(x, y, pSelectedWeap_->getName(), false); @@ -294,10 +293,16 @@ y += 12; } - if (rldCost != -1) { - sprintf(tmp, "RELOAD :%d", rldCost); - getMenuFont(FontManager::SIZE_1)->drawText(x, y, tmp, false); - y += 12; + if (selectedWInstId_ > 0 ) { + WeaponInstance *wi = g_Session.teamMember(cur_agent_)->weapon(selectedWInstId_ - 1); + if (pSelectedWeap_->ammo() > wi->ammoRemaining()) { + int rldCost = (pSelectedWeap_->ammo() + - wi->ammoRemaining()) * pSelectedWeap_->ammoCost(); + + sprintf(tmp, "RELOAD :%d", rldCost); + getMenuFont(FontManager::SIZE_1)->drawText(x, y, tmp, false); + y += 12; + } } } @@ -413,7 +418,7 @@ g_Screen.scale2x(502, 318, sizeof(ldata), 1, ldata); menuSprites().drawSpriteXYZ(pSelectedWeap_->getBigIconId(), 502, 106, 0, false, true); - drawSelectedWeaponInfos(504, 194, rld_cost_); + drawSelectedWeaponInfos(504, 194); } else if (pSelectedMod_) { uint8 ldata[62]; @@ -436,7 +441,6 @@ pSelectedMod_ = NULL; rnd_ = 0; cur_agent_ = 0; - rld_cost_ = -1; sel_all_ = false; } @@ -515,6 +519,7 @@ } } + // Checks if the user clicked on item in the current agent inventory Agent *selected = g_Session.teamMember(cur_agent_); if (selected) { for (int j = 0; j < 2; j++) @@ -523,39 +528,44 @@ x >= 366 + i * 32 && x < 366 + i * 32 + 32 && y >= 308 + j * 32 && y < 308 + j * 32 + 32) { + // The user has actually selected a weapon from the inventory : + // 1/ selects the EQUIPS toggle button tab_ = TAB_EQUIPS; pSelectedMod_ = NULL; selectToggleAction(equipButId_); - selectedWInstId_ = i + j * 4 + 1; - pSelectedWeap_ = selected->weapon(selectedWInstId_ - 1)->getWeaponClass(); - addDirtyRect(500, 105, 125, 235); - if (rld_cost_ == -1) { - WeaponInstance *wi = selected->weapon(selectedWInstId_ -1); - if (pSelectedWeap_->ammo() > wi->ammoRemaining()) { - showOption(KEY_F10); - rld_cost_ = (pSelectedWeap_->ammo() - - wi->ammoRemaining()) * pSelectedWeap_->ammoCost(); - } else { - hideOption(KEY_F10); - rld_cost_ = -1; - } - } + // 2/ computes the id of the selected weapon and selects it + int newId = i + j * 4 + 1; - hideOption(KEY_F8); - showOption(KEY_F7); - showOption(KEY_F9); - pTeamLBox_->setVisible(false); - pModsLBox_->setVisible(false); - pWeaponsLBox_->setVisible(false); + if (newId != selectedWInstId_) { // Do something only if a different weapon is selected + selectedWInstId_ = newId; + WeaponInstance *wi = selected->weapon(selectedWInstId_ -1); + pSelectedWeap_ = wi->getWeaponClass(); + addDirtyRect(500, 105, 125, 235); + // 3/ see if reload button should be displayed + bool displayReload = pSelectedWeap_->ammo() > wi->ammoRemaining(); + getOption(reloadButId_)->setVisible(displayReload); + + // 4/ hides the purchase button for the sell button + getOption(purchaseButId_)->setVisible(false); + getOption(cancelButId_)->setVisible(true); + getOption(sellButId_)->setVisible(true); + pTeamLBox_->setVisible(false); + pModsLBox_->setVisible(false); + pWeaponsLBox_->setVisible(false); + } } } return false; } +/*! + * Hides the list of Mods or Weapon and shows the purchase and cancel buttons + * that appear on the detail panel. + */ void SelectMenu::showModWeaponPanel() { - showOption(KEY_F7); - showOption(KEY_F8); + getOption(purchaseButId_)->setVisible(true); + getOption(cancelButId_)->setVisible(true); if (tab_ == TAB_MODS) { pModsLBox_->setVisible(false); } else { @@ -568,7 +578,6 @@ pSelectedMod_ = NULL; pSelectedWeap_ = NULL; selectedWInstId_ = 0; - rld_cost_ = -1; getOption(cancelButId_)->setVisible(false); getOption(reloadButId_)->setVisible(false); getOption(purchaseButId_)->setVisible(false); @@ -647,11 +656,14 @@ } else if (actionId == reloadButId_) { Agent *selected = g_Session.teamMember(cur_agent_); WeaponInstance *wi = selected->weapon(selectedWInstId_ - 1); - if (g_Session.getMoney() >= rld_cost_) { - g_Session.setMoney(g_Session.getMoney() - rld_cost_); + int rldCost = (pSelectedWeap_->ammo() + - wi->ammoRemaining()) * pSelectedWeap_->ammoCost(); + + if (g_Session.getMoney() >= rldCost) { + g_Session.setMoney(g_Session.getMoney() - rldCost); wi->setAmmoRemaining(pSelectedWeap_->ammo()); - hideOption(KEY_F10); - rld_cost_ = -1; + getOption(reloadButId_)->setVisible(false); + getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney()); } } else if (actionId == purchaseButId_) { // Buying weapon @@ -663,6 +675,7 @@ && g_Session.getMoney() >= pSelectedWeap_->cost()) { g_Session.setMoney(g_Session.getMoney() - pSelectedWeap_->cost()); selected->addWeapon(pSelectedWeap_->createInstance()); + getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney()); } } } else { @@ -671,6 +684,7 @@ && g_Session.getMoney() >= pSelectedWeap_->cost()) { g_Session.setMoney(g_Session.getMoney() - pSelectedWeap_->cost()); selected->addWeapon(pSelectedWeap_->createInstance()); + getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney()); } } needRendering(); @@ -682,6 +696,7 @@ && g_Session.getMoney() >= pSelectedMod_->cost()) { selected->addMod(pSelectedMod_); g_Session.setMoney(g_Session.getMoney() - pSelectedMod_->cost()); + getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney()); } } } else { @@ -690,6 +705,7 @@ && g_Session.getMoney() >= pSelectedMod_->cost()) { selected->addMod(pSelectedMod_); g_Session.setMoney(g_Session.getMoney() - pSelectedMod_->cost()); + getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney()); } } showItemList(); @@ -700,6 +716,7 @@ Agent *selected = g_Session.teamMember(cur_agent_); WeaponInstance *pWi = selected->removeWeapon(selectedWInstId_ - 1); g_Session.setMoney(g_Session.getMoney() + pWi->getWeaponClass()->cost()); + getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney()); delete pWi; showItemList(); } Modified: freesynd/trunk/src/menus/selectmenu.h =================================================================== --- freesynd/trunk/src/menus/selectmenu.h 2011-12-03 21:37:33 UTC (rev 605) +++ freesynd/trunk/src/menus/selectmenu.h 2011-12-03 23:36:50 UTC (rev 606) @@ -51,7 +51,7 @@ //! Draws a focus around the selected agent picture void drawAgentSelector(int x, int y); void drawAgent(); - void drawSelectedWeaponInfos(int x, int y, int rldCost); + void drawSelectedWeaponInfos(int x, int y); void drawSelectedModInfos(int x, int y); void toggleAgent(int n); @@ -67,14 +67,13 @@ }; ETab tab_; + /*! Id of the currently selected agent.*/ int cur_agent_; /*! Counter to update the rnd_ field.*/ int tick_count_; /*! A counter used to draw the agent selector.*/ int rnd_; bool sel_all_; - // reload cost - int rld_cost_; /*! Selected weapon on the weapon list.*/ Weapon *pSelectedWeap_; /*! Selected weapon instance id on the current agent inventory.*/ Modified: freesynd/trunk/src/menus/widget.cpp =================================================================== --- freesynd/trunk/src/menus/widget.cpp 2011-12-03 21:37:33 UTC (rev 605) +++ freesynd/trunk/src/menus/widget.cpp 2011-12-03 23:36:50 UTC (rev 606) @@ -390,7 +390,7 @@ TeamListBox::TeamListBox(Menu *peer, int x, int y, int width, int height, MenuFont *pFont, bool visible) : ListBox(peer, x, y, width, height, pFont, visible) { - pTitle_ = new MenuText(x, y, width, "#SELECT_CRYO_TITLE", pFont, false); + pTitle_ = new MenuText(x, y, width, "#SELECT_CRYO_TITLE", pFont, true); lUnderline_ = pFont_->textWidth(pTitle_->getText().c_str(), false); xUnderline_ = (x + x + width) / 2 - lUnderline_ / 2; yUnderline_ = y + pFont_->textHeight(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |