ArticleStateCraft::ArticleStateCraft(ArticleDefinitionCraft *defs) : ArticleState(defs->id) { RuleCraft *craft = _game->getMod()->getCraft(defs->id); // add screen elements _txtTitle = new Text(210, 32, 5, 24); // Set palette setPalette("PAL_UFOPAEDIA"); ArticleState::initLayout(); // add other elements add(_txtTitle); // Set up objects _game->getMod()->getSurface(defs->image_id)->blit(_bg); _btnOk->setColor(Palette::blockOffset(15)-1); _btnPrev->setColor(Palette::blockOffset(15)-1); _btnNext->setColor(Palette::blockOffset(15)-1); _txtTitle->setColor(Palette::blockOffset(14)+15); _txtTitle->setBig(); _txtTitle->setWordWrap(true); _txtTitle->setText(tr(defs->title)); _txtInfo = new Text(defs->rect_text.width, defs->rect_text.height, defs->rect_text.x, defs->rect_text.y); add(_txtInfo); _txtInfo->setColor(Palette::blockOffset(14)+15); _txtInfo->setWordWrap(true); _txtInfo->setText(tr(defs->text)); _txtStats = new Text(defs->rect_stats.width, defs->rect_stats.height, defs->rect_stats.x, defs->rect_stats.y); add(_txtStats); _txtStats->setColor(Palette::blockOffset(14)+15); _txtStats->setSecondaryColor(Palette::blockOffset(15)+4); std::wostringstream ss; ss << tr("STR_MAXIMUM_SPEED_UC").arg(Text::formatNumber(craft->getMaxSpeed())) << L'\n'; ss << tr("STR_ACCELERATION").arg(craft->getAcceleration()) << L'\n'; ss << tr("STR_FUEL_CAPACITY").arg(Text::formatNumber(craft->getMaxFuel())) << L'\n'; ss << tr("STR_WEAPON_PODS").arg(craft->getWeapons()) << L'\n'; ss << tr("STR_DAMAGE_CAPACITY_UC").arg(Text::formatNumber(craft->getMaxDamage())) << L'\n'; ss << tr("STR_CARGO_SPACE").arg(craft->getSoldiers()) << L'\n'; ss << tr("STR_HWP_CAPACITY").arg(craft->getVehicles()); _txtStats->setText(ss.str()); centerAllSurfaces(); }
ArticleStateCraft::ArticleStateCraft(Game *game, ArticleDefinitionCraft *defs, int palSwitch) : ArticleState(game, defs->id, palSwitch) { RuleCraft *craft = _game->getRuleset()->getCraft(defs->id); // add screen elements _txtTitle = new Text(155, 32, 5, 24); // Set palette _game->setPalette(_game->getResourcePack()->getPalette("PALETTES.DAT_3")->getColors()); ArticleState::initLayout(); // add other elements add(_txtTitle); // Set up objects _game->getResourcePack()->getSurface(defs->image_id)->blit(_bg); _btnOk->setColor(Palette::blockOffset(15)-1); _btnPrev->setColor(Palette::blockOffset(15)-1); _btnNext->setColor(Palette::blockOffset(15)-1); _txtTitle->setColor(Palette::blockOffset(14)+15); _txtTitle->setBig(); _txtTitle->setWordWrap(true); _txtTitle->setText(Ufopaedia::buildText(_game, defs->title)); _txtInfo = new Text(defs->rect_text.width, defs->rect_text.height, defs->rect_text.x, defs->rect_text.y); add(_txtInfo); _txtInfo->setColor(Palette::blockOffset(14)+15); _txtInfo->setWordWrap(true); _txtInfo->setText(Ufopaedia::buildText(_game, defs->text)); _txtStats = new Text(defs->rect_stats.width, defs->rect_stats.height, defs->rect_stats.x, defs->rect_stats.y); add(_txtStats); _txtStats->setColor(Palette::blockOffset(14)+15); _txtStats->setSecondaryColor(Palette::blockOffset(15)+4); std::wstringstream ss; ss << _game->getLanguage()->getString("STR_MAXIMUM_SPEED_UC") << L'\x01' << craft->getMaxSpeed() << L'\x01' << L'\n'; ss << _game->getLanguage()->getString("STR_ACCELERATION") << L'\x01' << craft->getAcceleration() << L'\x01' << L'\n'; ss << _game->getLanguage()->getString("STR_FUEL_CAPACITY") << L'\x01' << craft->getMaxFuel() << L'\x01' << L'\n'; ss << _game->getLanguage()->getString("STR_WEAPON_PODS") << L'\x01' << craft->getWeapons() << L'\x01' << L'\n'; ss << _game->getLanguage()->getString("STR_DAMAGE_CAPACITY_UC") << L'\x01' << craft->getMaxDamage() << L'\x01' << L'\n'; ss << _game->getLanguage()->getString("STR_CARGO_SPACE") << L'\x01' << craft->getSoldiers() << L'\x01' << L'\n'; ss << _game->getLanguage()->getString("STR_HWP_CAPACITY") << L'\x01' << craft->getVehicles(); _txtStats->setText(ss.str()); }
ArticleStateTFTDCraft::ArticleStateTFTDCraft(ArticleDefinitionTFTD *defs) : ArticleStateTFTD(defs) { RuleCraft *craft = _game->getRuleset()->getCraft(defs->id); _txtStats = new Text(126, 56, 192, 116); add(_txtStats); _txtStats->setColor(Palette::blockOffset(0)+2); _txtStats->setSecondaryColor(Palette::blockOffset(15)+4); std::wostringstream ss; ss << tr("STR_MAXIMUM_SPEED_UC").arg(Text::formatNumber(craft->getMaxSpeed())) << L'\n'; ss << tr("STR_ACCELERATION").arg(craft->getAcceleration()) << L'\n'; ss << tr("STR_FUEL_CAPACITY").arg(Text::formatNumber(craft->getMaxFuel())) << L'\n'; ss << tr("STR_WEAPON_PODS").arg(craft->getWeapons()) << L'\n'; ss << tr("STR_DAMAGE_CAPACITY_UC").arg(Text::formatNumber(craft->getMaxDamage())) << L'\n'; ss << tr("STR_CARGO_SPACE").arg(craft->getSoldiers()) << L'\n'; ss << tr("STR_HWP_CAPACITY").arg(craft->getVehicles()); _txtStats->setText(ss.str()); centerAllSurfaces(); }
/** * Initializes all the elements in the New Battle window. * @param game Pointer to the core game. */ NewBattleState::NewBattleState() : _craft(0) { // Create objects _window = new Window(this, 320, 200, 0, 0, POPUP_BOTH); _txtTitle = new Text(320, 17, 0, 9); _txtMapOptions = new Text(148, 9, 8, 68); _frameLeft = new Frame(148, 96, 8, 78); _txtAlienOptions = new Text(148, 9, 164, 68); _frameRight = new Frame(148, 96, 164, 78); _txtMission = new Text(100, 9, 8, 30); _cbxMission = new ComboBox(this, 214, 16, 98, 26); _txtCraft = new Text(100, 9, 8, 50); _cbxCraft = new ComboBox(this, 106, 16, 98, 46); _btnEquip = new TextButton(106, 16, 206, 46); _txtDarkness = new Text(120, 9, 22, 83); _slrDarkness = new Slider(120, 16, 22, 93); _txtTerrain = new Text(120, 9, 22, 113); _cbxTerrain = new ComboBox(this, 120, 16, 22, 123); _txtDepth = new Text(120, 9, 22, 143); _slrDepth = new Slider(120, 16, 22, 153); _txtDifficulty = new Text(120, 9, 178, 83); _cbxDifficulty = new ComboBox(this, 120, 16, 178, 93); _txtAlienRace = new Text(120, 9, 178, 113); _cbxAlienRace = new ComboBox(this, 120, 16, 178, 123); _txtAlienTech = new Text(120, 9, 178, 143); _slrAlienTech = new Slider(120, 16, 178, 153); _btnOk = new TextButton(100, 16, 8, 176); _btnCancel = new TextButton(100, 16, 110, 176); _btnRandom = new TextButton(100, 16, 212, 176); // Set palette setInterface("newBattleMenu"); add(_window, "window", "newBattleMenu"); add(_txtTitle, "heading", "newBattleMenu"); add(_txtMapOptions, "heading", "newBattleMenu"); add(_frameLeft, "frames", "newBattleMenu"); add(_txtAlienOptions, "heading", "newBattleMenu"); add(_frameRight, "frames", "newBattleMenu"); add(_txtMission, "text", "newBattleMenu"); add(_txtCraft, "text", "newBattleMenu"); add(_btnEquip, "button1", "newBattleMenu"); add(_txtDarkness, "text", "newBattleMenu"); add(_slrDarkness, "button1", "newBattleMenu"); add(_txtDepth, "text", "newBattleMenu"); add(_slrDepth, "button1", "newBattleMenu"); add(_txtTerrain, "text", "newBattleMenu"); add(_txtDifficulty, "text", "newBattleMenu"); add(_txtAlienRace, "text", "newBattleMenu"); add(_txtAlienTech, "text", "newBattleMenu"); add(_slrAlienTech, "button1", "newBattleMenu"); add(_btnOk, "button2", "newBattleMenu"); add(_btnCancel, "button2", "newBattleMenu"); add(_btnRandom, "button2", "newBattleMenu"); add(_cbxTerrain, "button1", "newBattleMenu"); add(_cbxAlienRace, "button1", "newBattleMenu"); add(_cbxDifficulty, "button1", "newBattleMenu"); add(_cbxCraft, "button1", "newBattleMenu"); add(_cbxMission, "button1", "newBattleMenu"); centerAllSurfaces(); // Set up objects _window->setBackground(_game->getMod()->getSurface("BACK01.SCR")); _txtTitle->setAlign(ALIGN_CENTER); _txtTitle->setBig(); _txtTitle->setText(tr("STR_MISSION_GENERATOR")); _txtMapOptions->setText(tr("STR_MAP_OPTIONS")); _frameLeft->setThickness(3); _txtAlienOptions->setText(tr("STR_ALIEN_OPTIONS")); _frameRight->setThickness(3); _txtMission->setText(tr("STR_MISSION")); _txtCraft->setText(tr("STR_CRAFT")); _txtDarkness->setText(tr("STR_MAP_DARKNESS")); _txtDepth->setText(tr("STR_MAP_DEPTH")); _txtTerrain->setText(tr("STR_MAP_TERRAIN")); _txtDifficulty->setText(tr("STR_DIFFICULTY")); _txtAlienRace->setText(tr("STR_ALIEN_RACE")); _txtAlienTech->setText(tr("STR_ALIEN_TECH_LEVEL")); _missionTypes = _game->getMod()->getDeploymentsList(); _cbxMission->setOptions(_missionTypes, true); _cbxMission->onChange((ActionHandler)&NewBattleState::cbxMissionChange); const std::vector<std::string> &crafts = _game->getMod()->getCraftsList(); for (std::vector<std::string>::const_iterator i = crafts.begin(); i != crafts.end(); ++i) { RuleCraft *rule = _game->getMod()->getCraft(*i); if (rule->getSoldiers() > 0) { _crafts.push_back(*i); } } _cbxCraft->setOptions(_crafts, true); _cbxCraft->onChange((ActionHandler)&NewBattleState::cbxCraftChange); _slrDarkness->setRange(0, 15); _slrDepth->setRange(1, 3); _cbxTerrain->onChange((ActionHandler)&NewBattleState::cbxTerrainChange); std::vector<std::string> difficulty; difficulty.push_back(tr("STR_1_BEGINNER")); difficulty.push_back(tr("STR_2_EXPERIENCED")); difficulty.push_back(tr("STR_3_VETERAN")); difficulty.push_back(tr("STR_4_GENIUS")); difficulty.push_back(tr("STR_5_SUPERHUMAN")); _cbxDifficulty->setOptions(difficulty); _alienRaces = _game->getMod()->getAlienRacesList(); for (std::vector<std::string>::iterator i = _alienRaces.begin(); i != _alienRaces.end();) { if ((*i).find("_UNDERWATER") != std::string::npos) { i = _alienRaces.erase(i); } else { ++i; } } _cbxAlienRace->setOptions(_alienRaces, true); _slrAlienTech->setRange(0, _game->getMod()->getAlienItemLevels().size()-1); _btnEquip->setText(tr("STR_EQUIP_CRAFT")); _btnEquip->onMouseClick((ActionHandler)&NewBattleState::btnEquipClick); _btnRandom->setText(tr("STR_RANDOMIZE")); _btnRandom->onMouseClick((ActionHandler)&NewBattleState::btnRandomClick); _btnOk->setText(tr("STR_OK")); _btnOk->onMouseClick((ActionHandler)&NewBattleState::btnOkClick); _btnOk->onKeyboardPress((ActionHandler)&NewBattleState::btnOkClick, Options::keyOk); _btnCancel->setText(tr("STR_CANCEL")); _btnCancel->onMouseClick((ActionHandler)&NewBattleState::btnCancelClick); _btnCancel->onKeyboardPress((ActionHandler)&NewBattleState::btnCancelClick, Options::keyCancel); load(); }