/** * Hides item info. * @param action Pointer to an action. */ void InventoryState::invMouseOut(Action *) { _txtItem->setText(L""); _txtAmmo->setText(L""); _selAmmo->clear(); _updateTemplateButtons(!_tu); }
/** * Initializes all the elements in the Inventory screen. * @param game Pointer to the core game. * @param tu Does Inventory use up Time Units? * @param parent Pointer to parent Battlescape. */ InventoryState::InventoryState(bool tu, BattlescapeState *parent) : _tu(tu), _parent(parent) { _battleGame = _game->getSavedGame()->getSavedBattle(); if (Options::maximizeInfoScreens) { Options::baseXResolution = Screen::ORIGINAL_WIDTH; Options::baseYResolution = Screen::ORIGINAL_HEIGHT; _game->getScreen()->resetDisplay(false); } else if (!_battleGame->getTileEngine()) { Screen::updateScale(Options::battlescapeScale, Options::battlescapeScale, Options::baseXBattlescape, Options::baseYBattlescape, true); _game->getScreen()->resetDisplay(false); } // Create objects _bg = new Surface(1280, 800, 0, 0); _soldier = new Surface(121, 215, 109, 85); _rank = new Surface(26, 23, 5, 5); //added for the rank icon _txtName = new Text(400, 17, 40, 10); _txtItem = new Text(160, 15, 8, 310); _txtAmmo = new Text(80, 24, 8, 432); _btnPrev = new BattlescapeButton(23, 22, 1159, 5); _btnOk = new BattlescapeButton(35, 22, 1184, 5); _btnNext = new BattlescapeButton(23, 22, 1222, 5); _btnUnload = new BattlescapeButton(32, 25, 8, 365); _btnGround = new BattlescapeButton(32, 15, 1134, 442); _btnCreateTemplate = new BattlescapeButton(32, 22, _templateBtnX, _createTemplateBtnY); _btnApplyTemplate = new BattlescapeButton(32, 22, _templateBtnX, _applyTemplateBtnY); _selAmmo = new Surface(RuleInventory::HAND_W * RuleInventory::SLOT_W, RuleInventory::HAND_H * RuleInventory::SLOT_H, 60, 350); _inv = new Inventory(_game, 1280, 800, 0, 0, _parent == 0); _txtRank = new Text(100, 14, 40, 38); // added _txtMissions = new Text(100, 14, 145, 38); // added _txtKills = new Text(100, 14, 250, 38); // added _txtStatus = new Text(100, 14, 355, 38); // added _txtCraft = new Text(150, 14, 460, 38); // added _txtArmor = new Text(150, 14, 565, 38); // added // Set palette setPalette("PAL_BATTLESCAPE"); add(_bg); // Set up objects _game->getMod()->getSurface("HDTAC01.PNG")->blit(_bg); add(_soldier); add(_rank, "rank", "inventory", _bg); add(_txtName, "textName", "inventory", _bg); add(_txtItem, "textItem", "inventory", _bg); add(_txtAmmo, "textAmmo", "inventory", _bg); add(_btnOk, "buttonOK", "inventory", _bg); add(_btnPrev, "buttonPrev", "inventory", _bg); add(_btnNext, "buttonNext", "inventory", _bg); add(_btnUnload, "buttonUnload", "inventory", _bg); add(_btnGround, "buttonGround", "inventory", _bg); add(_btnCreateTemplate, "buttonCreate", "inventory", _bg); add(_btnApplyTemplate, "buttonApply", "inventory", _bg); add(_selAmmo); add(_inv); // Objects for information under name field add(_txtRank); add(_txtCraft); add(_txtMissions); add(_txtKills); add(_txtStatus); add(_txtArmor); _txtName->setColor(Palette::blockOffset(4)); _txtName->setBig(); _txtName->setHighContrast(true); _txtItem->setHighContrast(true); _txtAmmo->setColor(Palette::blockOffset(4)); _txtAmmo->setSecondaryColor(Palette::blockOffset(1)); _txtAmmo->setAlign(ALIGN_LEFT); _txtAmmo->setHighContrast(true); _txtName->setBig(); _txtName->setHighContrast(true); _txtItem->setHighContrast(true); _txtAmmo->setAlign(ALIGN_CENTER); _txtAmmo->setHighContrast(true); _btnOk->onMouseClick((ActionHandler)&InventoryState::btnOkClick); _btnOk->onKeyboardPress((ActionHandler)&InventoryState::btnOkClick, Options::keyCancel); _btnOk->onKeyboardPress((ActionHandler)&InventoryState::btnOkClick, Options::keyBattleInventory); _btnOk->setTooltip("STR_OK"); _btnOk->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnOk->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnPrev->onMouseClick((ActionHandler)&InventoryState::btnPrevClick); _btnPrev->onKeyboardPress((ActionHandler)&InventoryState::btnPrevClick, Options::keyBattlePrevUnit); _btnPrev->setTooltip("STR_PREVIOUS_UNIT"); _btnPrev->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnPrev->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnNext->onMouseClick((ActionHandler)&InventoryState::btnNextClick); _btnNext->onKeyboardPress((ActionHandler)&InventoryState::btnNextClick, Options::keyBattleNextUnit); _btnNext->setTooltip("STR_NEXT_UNIT"); _btnNext->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnNext->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnUnload->onMouseClick((ActionHandler)&InventoryState::btnUnloadClick); _btnUnload->setTooltip("STR_UNLOAD_WEAPON"); _btnUnload->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnUnload->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnGround->onMouseClick((ActionHandler)&InventoryState::btnGroundClick); _btnGround->setTooltip("STR_SCROLL_RIGHT"); _btnGround->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnGround->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnCreateTemplate->onMouseClick((ActionHandler)&InventoryState::btnCreateTemplateClick); _btnCreateTemplate->onKeyboardPress((ActionHandler)&InventoryState::btnCreateTemplateClick, Options::keyInvCreateTemplate); _btnCreateTemplate->setTooltip("STR_CREATE_INVENTORY_TEMPLATE"); _btnCreateTemplate->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnCreateTemplate->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnApplyTemplate->onMouseClick((ActionHandler)&InventoryState::btnApplyTemplateClick); _btnApplyTemplate->onKeyboardPress((ActionHandler)&InventoryState::btnApplyTemplateClick, Options::keyInvApplyTemplate); _btnApplyTemplate->onKeyboardPress((ActionHandler)&InventoryState::onClearInventory, Options::keyInvClear); _btnApplyTemplate->setTooltip("STR_APPLY_INVENTORY_TEMPLATE"); _btnApplyTemplate->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnApplyTemplate->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); Uint8 color = _game->getMod()->getInterface("stats")->getElement("text")->color; Uint8 color2 = _game->getMod()->getInterface("stats")->getElement("text")->color2; // only use copy/paste buttons in setup (i.e. non-tu) mode if (_tu) { _btnCreateTemplate->setVisible(false); _btnApplyTemplate->setVisible(false); } else { _updateTemplateButtons(true); } _inv->draw(); _inv->setTuMode(_tu); _inv->setSelectedUnit(_game->getSavedGame()->getSavedBattle()->getSelectedUnit()); _inv->onMouseClick((ActionHandler)&InventoryState::invClick, 0); _inv->onMouseOver((ActionHandler)&InventoryState::invMouseOver); _inv->onMouseOut((ActionHandler)&InventoryState::invMouseOut); _currentTooltip = ""; //Setup object for the top row labels of stats _txtRank->setColor(color); _txtRank->setSecondaryColor(color2); _txtRank->setHighContrast(true); _txtCraft->setColor(color); _txtCraft->setSecondaryColor(color2); _txtCraft->setHighContrast(true); _txtMissions->setColor(color); _txtMissions->setSecondaryColor(color2); _txtMissions->setHighContrast(true); _txtKills->setColor(color); _txtKills->setSecondaryColor(color2); _txtKills->setHighContrast(true); _txtStatus->setColor(color); _txtStatus->setSecondaryColor(color2); _txtStatus->setHighContrast(true); _txtArmor->setColor(color); _txtArmor->setSecondaryColor(color2); _txtArmor->setHighContrast(true); }
/** * Shows item info. * @param action Pointer to an action. */ void InventoryState::invMouseOver(Action *) { if (_inv->getSelectedItem() != 0) { return; } BattleItem *item = _inv->getMouseOverItem(); if (item != 0) { if (item->getUnit() && item->getUnit()->getStatus() == STATUS_UNCONSCIOUS) { _txtItem->setText(item->getUnit()->getName(_game->getLanguage())); } else { if (_game->getSavedGame()->isResearched(item->getRules()->getRequirements())) { _txtItem->setText(tr(item->getRules()->getName())); } else { _txtItem->setText(tr("STR_ALIEN_ARTIFACT")); } } std::wstring s; if (item->getAmmoItem() != 0 && item->needsAmmo()) { s = tr("STR_AMMO_ROUNDS_LEFT").arg(item->getAmmoItem()->getAmmoQuantity()); SDL_Rect r; r.x = 0; r.y = 0; r.w = RuleInventory::HAND_W * RuleInventory::SLOT_W; r.h = RuleInventory::HAND_H * RuleInventory::SLOT_H; _selAmmo->drawRect(&r, _game->getMod()->getInterface("inventory")->getElement("grid")->color); r.x++; r.y++; r.w -= 2; r.h -= 2; _selAmmo->drawRect(&r, Palette::blockOffset(0)+15); item->getAmmoItem()->getRules()->drawHandSprite(_game->getMod()->getSurfaceSet("BIGOBS.PCK"), _selAmmo); _updateTemplateButtons(false); } else { _selAmmo->clear(); _updateTemplateButtons(!_tu); } if (item->getAmmoQuantity() != 0 && item->needsAmmo()) { s = tr("STR_AMMO_ROUNDS_LEFT").arg(item->getAmmoQuantity()); } else if (item->getRules()->getBattleType() == BT_MEDIKIT) { s = tr("STR_MEDI_KIT_QUANTITIES_LEFT").arg(item->getPainKillerQuantity()).arg(item->getStimulantQuantity()).arg(item->getHealQuantity()); } _txtAmmo->setText(s); } else { if (_currentTooltip.empty()) { _txtItem->setText(L""); } _txtAmmo->setText(L""); _selAmmo->clear(); _updateTemplateButtons(!_tu); } }
/** * Initializes all the elements in the Inventory screen. * @param game Pointer to the core game. * @param tu Does Inventory use up Time Units? * @param parent Pointer to parent Battlescape. */ InventoryState::InventoryState(bool tu, BattlescapeState *parent) : _tu(tu), _parent(parent) { _battleGame = _game->getSavedGame()->getSavedBattle(); if (Options::maximizeInfoScreens) { Options::baseXResolution = Screen::ORIGINAL_WIDTH; Options::baseYResolution = Screen::ORIGINAL_HEIGHT; _game->getScreen()->resetDisplay(false); } else if (!_battleGame->getTileEngine()) { Screen::updateScale(Options::battlescapeScale, Options::battlescapeScale, Options::baseXBattlescape, Options::baseYBattlescape, true); _game->getScreen()->resetDisplay(false); } // Create objects _bg = new Surface(320, 200, 0, 0); _soldier = new Surface(320, 200, 0, 0); _txtName = new Text(210, 17, 28, 6); _txtTus = new Text(40, 9, 245, 24); _txtWeight = new Text(70, 9, 245, 24); _txtFAcc = new Text(50, 9, 245, 32); _txtReact = new Text(50, 9, 245, 40); _txtPSkill = new Text(50, 9, 245, 48); _txtPStr = new Text(50, 9, 245, 56); _txtItem = new Text(160, 9, 128, 140); _txtAmmo = new Text(66, 24, 254, 64); _btnOk = new BattlescapeButton(35, 22, 237, 1); _btnPrev = new BattlescapeButton(23, 22, 273, 1); _btnNext = new BattlescapeButton(23, 22, 297, 1); _btnUnload = new BattlescapeButton(32, 25, 288, 32); _btnGround = new BattlescapeButton(32, 15, 289, 137); _btnRank = new BattlescapeButton(26, 23, 0, 0); _btnCreateTemplate = new BattlescapeButton(32, 22, _templateBtnX, _createTemplateBtnY); _btnApplyTemplate = new BattlescapeButton(32, 22, _templateBtnX, _applyTemplateBtnY); _selAmmo = new Surface(RuleInventory::HAND_W * RuleInventory::SLOT_W, RuleInventory::HAND_H * RuleInventory::SLOT_H, 272, 88); _inv = new Inventory(_game, 320, 200, 0, 0, _parent == 0); // Set palette setPalette("PAL_BATTLESCAPE"); add(_bg); // Set up objects _game->getMod()->getSurface("TAC01.SCR")->blit(_bg); add(_soldier); add(_txtName, "textName", "inventory", _bg); add(_txtTus, "textTUs", "inventory", _bg); add(_txtWeight, "textWeight", "inventory", _bg); add(_txtFAcc, "textFiring", "inventory", _bg); add(_txtReact, "textReaction", "inventory", _bg); add(_txtPSkill, "textPsiSkill", "inventory", _bg); add(_txtPStr, "textPsiStrength", "inventory", _bg); add(_txtItem, "textItem", "inventory", _bg); add(_txtAmmo, "textAmmo", "inventory", _bg); add(_btnOk, "buttonOK", "inventory", _bg); add(_btnPrev, "buttonPrev", "inventory", _bg); add(_btnNext, "buttonNext", "inventory", _bg); add(_btnUnload, "buttonUnload", "inventory", _bg); add(_btnGround, "buttonGround", "inventory", _bg); add(_btnRank, "rank", "inventory", _bg); add(_btnCreateTemplate, "buttonCreate", "inventory", _bg); add(_btnApplyTemplate, "buttonApply", "inventory", _bg); add(_selAmmo); add(_inv); // move the TU display down to make room for the weight display if (Options::showMoreStatsInInventoryView) { _txtTus->setY(_txtTus->getY() + 8); } centerAllSurfaces(); _txtName->setBig(); _txtName->setHighContrast(true); _txtTus->setHighContrast(true); _txtWeight->setHighContrast(true); _txtFAcc->setHighContrast(true); _txtReact->setHighContrast(true); _txtPSkill->setHighContrast(true); _txtPStr->setHighContrast(true); _txtItem->setHighContrast(true); _txtAmmo->setAlign(ALIGN_CENTER); _txtAmmo->setHighContrast(true); _btnOk->onMouseClick((ActionHandler)&InventoryState::btnOkClick); _btnOk->onKeyboardPress((ActionHandler)&InventoryState::btnOkClick, Options::keyCancel); _btnOk->onKeyboardPress((ActionHandler)&InventoryState::btnOkClick, Options::keyBattleInventory); _btnOk->setTooltip("STR_OK"); _btnOk->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnOk->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnPrev->onMouseClick((ActionHandler)&InventoryState::btnPrevClick); _btnPrev->onKeyboardPress((ActionHandler)&InventoryState::btnPrevClick, Options::keyBattlePrevUnit); _btnPrev->setTooltip("STR_PREVIOUS_UNIT"); _btnPrev->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnPrev->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnNext->onMouseClick((ActionHandler)&InventoryState::btnNextClick); _btnNext->onKeyboardPress((ActionHandler)&InventoryState::btnNextClick, Options::keyBattleNextUnit); _btnNext->setTooltip("STR_NEXT_UNIT"); _btnNext->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnNext->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnUnload->onMouseClick((ActionHandler)&InventoryState::btnUnloadClick); _btnUnload->setTooltip("STR_UNLOAD_WEAPON"); _btnUnload->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnUnload->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnGround->onMouseClick((ActionHandler)&InventoryState::btnGroundClick); _btnGround->setTooltip("STR_SCROLL_RIGHT"); _btnGround->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnGround->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnRank->onMouseClick((ActionHandler)&InventoryState::btnRankClick); _btnRank->setTooltip("STR_UNIT_STATS"); _btnRank->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnRank->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnCreateTemplate->onMouseClick((ActionHandler)&InventoryState::btnCreateTemplateClick); _btnCreateTemplate->onKeyboardPress((ActionHandler)&InventoryState::btnCreateTemplateClick, Options::keyInvCreateTemplate); _btnCreateTemplate->setTooltip("STR_CREATE_INVENTORY_TEMPLATE"); _btnCreateTemplate->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnCreateTemplate->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); _btnApplyTemplate->onMouseClick((ActionHandler)&InventoryState::btnApplyTemplateClick); _btnApplyTemplate->onKeyboardPress((ActionHandler)&InventoryState::btnApplyTemplateClick, Options::keyInvApplyTemplate); _btnApplyTemplate->onKeyboardPress((ActionHandler)&InventoryState::onClearInventory, Options::keyInvClear); _btnApplyTemplate->onKeyboardPress((ActionHandler)&InventoryState::onAutoequip, Options::keyInvAutoEquip); _btnApplyTemplate->setTooltip("STR_APPLY_INVENTORY_TEMPLATE"); _btnApplyTemplate->onMouseIn((ActionHandler)&InventoryState::txtTooltipIn); _btnApplyTemplate->onMouseOut((ActionHandler)&InventoryState::txtTooltipOut); // only use copy/paste buttons in setup (i.e. non-tu) mode if (_tu) { _btnCreateTemplate->setVisible(false); _btnApplyTemplate->setVisible(false); } else { _updateTemplateButtons(true); } _inv->draw(); _inv->setTuMode(_tu); _inv->setSelectedUnit(_game->getSavedGame()->getSavedBattle()->getSelectedUnit()); _inv->onMouseClick((ActionHandler)&InventoryState::invClick, 0); _inv->onMouseOver((ActionHandler)&InventoryState::invMouseOver); _inv->onMouseOut((ActionHandler)&InventoryState::invMouseOut); _txtTus->setVisible(_tu); _txtWeight->setVisible(Options::showMoreStatsInInventoryView); _txtFAcc->setVisible(Options::showMoreStatsInInventoryView && !_tu); _txtReact->setVisible(Options::showMoreStatsInInventoryView && !_tu); _txtPSkill->setVisible(Options::showMoreStatsInInventoryView && !_tu); _txtPStr->setVisible(Options::showMoreStatsInInventoryView && !_tu); }