/** * Initializes all the elements in the Craft Weapons window. * @param game Pointer to the core game. * @param base Pointer to the base to get info from. * @param craft ID of the selected craft. * @param weapon ID of the selected weapon. */ CraftWeaponsState::CraftWeaponsState(Base *base, size_t craft, size_t weapon) : _base(base), _craft(craft), _weapon(weapon) { _screen = false; // Create objects _window = new Window(this, 220, 160, 50, 20, POPUP_BOTH); _btnCancel = new TextButton(140, 16, 90, 156); _txtTitle = new Text(208, 17, 56, 28); _txtArmament = new Text(76, 9, 66, 52); _txtQuantity = new Text(50, 9, 140, 52); _txtAmmunition = new Text(68, 17, 200, 44); _lstWeapons = new TextList(188, 80, 58, 68); // Set palette setInterface("craftWeapons"); add(_window, "window", "craftWeapons"); add(_btnCancel, "button", "craftWeapons"); add(_txtTitle, "text", "craftWeapons"); add(_txtArmament, "text", "craftWeapons"); add(_txtQuantity, "text", "craftWeapons"); add(_txtAmmunition, "text", "craftWeapons"); add(_lstWeapons, "list", "craftWeapons"); centerAllSurfaces(); // Set up objects _window->setBackground(_game->getMod()->getSurface("BACK14.SCR")); _btnCancel->setText(tr("STR_CANCEL_UC")); _btnCancel->onMouseClick((ActionHandler)&CraftWeaponsState::btnCancelClick); _btnCancel->onKeyboardPress((ActionHandler)&CraftWeaponsState::btnCancelClick, Options::keyCancel); _txtTitle->setBig(); _txtTitle->setAlign(ALIGN_CENTER); _txtTitle->setText(tr("STR_SELECT_ARMAMENT")); _txtArmament->setText(tr("STR_ARMAMENT")); _txtQuantity->setText(tr("STR_QUANTITY_UC")); _txtAmmunition->setText(tr("STR_AMMUNITION_AVAILABLE")); _txtAmmunition->setWordWrap(true); _txtAmmunition->setVerticalAlign(ALIGN_BOTTOM); _lstWeapons->setColumns(3, 94, 50, 36); _lstWeapons->setSelectable(true); _lstWeapons->setBackground(_window); _lstWeapons->setMargin(8); _lstWeapons->addRow(1, tr("STR_NONE_UC").c_str()); _weapons.push_back(0); const std::vector<std::string> &weapons = _game->getMod()->getCraftWeaponsList(); for (std::vector<std::string>::const_iterator i = weapons.begin(); i != weapons.end(); ++i) { RuleCraftWeapon *w = _game->getMod()->getCraftWeapon(*i); if (_base->getStorageItems()->getItem(w->getLauncherItem()) > 0) { _weapons.push_back(w); std::ostringstream ss, ss2; ss << _base->getStorageItems()->getItem(w->getLauncherItem()); if (!w->getClipItem().empty()) { ss2 << _base->getStorageItems()->getItem(w->getClipItem()); } else { ss2 << tr("STR_NOT_AVAILABLE"); } _lstWeapons->addRow(3, tr(w->getType()).c_str(), ss.str().c_str(), ss2.str().c_str()); } } _lstWeapons->onMouseClick((ActionHandler)&CraftWeaponsState::lstWeaponsClick); }
/** * Initializes all the elements in the Craft Weapons window. * @param game Pointer to the core game. * @param base Pointer to the base to get info from. * @param craft ID of the selected craft. * @param weapon ID of the selected weapon. */ CraftWeaponsState::CraftWeaponsState(Game *game, Base *base, size_t craft, size_t weapon) : State(game), _base(base), _craft(craft), _weapon(weapon), _weapons() { _screen = false; // Create objects _window = new Window(this, 220, 160, 50, 20, POPUP_BOTH); _btnCancel = new TextButton(140, 16, 90, 156); _txtTitle = new Text(208, 17, 56, 28); _txtArmament = new Text(76, 9, 66, 52); _txtQuantity = new Text(50, 9, 140, 52); _txtAmmunition = new Text(68, 17, 200, 44); _lstWeapons = new TextList(188, 80, 58, 68); // Set palette _game->setPalette(_game->getResourcePack()->getPalette("BACKPALS.DAT")->getColors(Palette::blockOffset(4)), Palette::backPos, 16); add(_window); add(_btnCancel); add(_txtTitle); add(_txtArmament); add(_txtQuantity); add(_txtAmmunition); add(_lstWeapons); centerAllSurfaces(); // Set up objects _window->setColor(Palette::blockOffset(15)+6); _window->setBackground(_game->getResourcePack()->getSurface("BACK14.SCR")); _btnCancel->setColor(Palette::blockOffset(15)+6); _btnCancel->setText(tr("STR_CANCEL_UC")); _btnCancel->onMouseClick((ActionHandler)&CraftWeaponsState::btnCancelClick); _btnCancel->onKeyboardPress((ActionHandler)&CraftWeaponsState::btnCancelClick, (SDLKey)Options::getInt("keyCancel")); _txtTitle->setColor(Palette::blockOffset(15)+6); _txtTitle->setBig(); _txtTitle->setAlign(ALIGN_CENTER); _txtTitle->setText(tr("STR_SELECT_ARMAMENT")); _txtArmament->setColor(Palette::blockOffset(15)+6); _txtArmament->setText(tr("STR_ARMAMENT")); _txtQuantity->setColor(Palette::blockOffset(15)+6); _txtQuantity->setText(tr("STR_QUANTITY_UC")); _txtAmmunition->setColor(Palette::blockOffset(15)+6); _txtAmmunition->setText(tr("STR_AMMUNITION_AVAILABLE")); _txtAmmunition->setWordWrap(true); _lstWeapons->setColor(Palette::blockOffset(13)+10); _lstWeapons->setArrowColor(Palette::blockOffset(15)+6); _lstWeapons->setColumns(3, 94, 50, 36); _lstWeapons->setSelectable(true); _lstWeapons->setBackground(_window); _lstWeapons->setMargin(8); _lstWeapons->addRow(1, tr("STR_NONE_UC").c_str()); _weapons.push_back(0); const std::vector<std::string> &weapons = _game->getRuleset()->getCraftWeaponsList(); for (std::vector<std::string>::const_iterator i = weapons.begin(); i != weapons.end(); ++i) { RuleCraftWeapon *w = _game->getRuleset()->getCraftWeapon(*i); if (_base->getItems()->getItem(w->getLauncherItem()) > 0) { _weapons.push_back(w); std::wstringstream ss, ss2; ss << _base->getItems()->getItem(w->getLauncherItem()); if (w->getClipItem() != "") { ss2 << _base->getItems()->getItem(w->getClipItem()); } else { ss2 << tr("STR_NOT_AVAILABLE"); } _lstWeapons->addRow(3, tr(w->getType()).c_str(), ss.str().c_str(), ss2.str().c_str()); } } _lstWeapons->onMouseClick((ActionHandler)&CraftWeaponsState::lstWeaponsClick); }