/** * Initializes all the elements in the Briefing screen. * @param game Pointer to the core game. * @param craft Pointer to the craft in the mission. * @param base Pointer to the base in the mission. */ BriefingState::BriefingState(Craft *craft, Base *base) { _screen = true; // Create objects _window = new Window(this, 320, 200, 0, 0); _btnOk = new TextButton(120, 18, 100, 164); _txtTitle = new Text(300, 32, 16, 24); _txtTarget = new Text(300, 17, 16, 40); _txtCraft = new Text(300, 17, 16, 56); _txtBriefing = new Text(274, 64, 16, 72); std::string mission = _game->getSavedGame()->getSavedBattle()->getMissionType(); AlienDeployment *deployment = _game->getRuleset()->getDeployment(mission); Ufo * ufo = 0; if (!deployment && craft) { ufo = dynamic_cast <Ufo*> (craft->getDestination()); if (ufo) // landing site or crash site. { deployment = _game->getRuleset()->getDeployment(ufo->getRules()->getType()); } } std::string title = mission; std::string desc = title + "_BRIEFING"; if (!deployment) // none defined - should never happen, but better safe than sorry i guess. { setPalette("PAL_GEOSCAPE", 0); _musicId = "GMDEFEND"; _window->setBackground(_game->getResourcePack()->getSurface("BACK16.SCR")); } else { BriefingData data = deployment->getBriefingData(); setPalette("PAL_GEOSCAPE", data.palette); _window->setBackground(_game->getResourcePack()->getSurface(data.background)); _txtCraft->setY(56 + data.textOffset); _txtBriefing->setY(72 + data.textOffset); _txtTarget->setVisible(data.showTarget); _txtCraft->setVisible(data.showCraft); _cutsceneId = data.cutscene; _musicId = data.music; if (!data.title.empty()) { title = data.title; } if (!data.desc.empty()) { desc = data.desc; } } add(_window, "window", "briefing"); add(_btnOk, "button", "briefing"); add(_txtTitle, "text", "briefing"); add(_txtTarget, "text", "briefing"); add(_txtCraft, "text", "briefing"); add(_txtBriefing, "text", "briefing"); centerAllSurfaces(); // Set up objects _btnOk->setText(tr("STR_OK")); _btnOk->onMouseClick((ActionHandler)&BriefingState::btnOkClick); _btnOk->onKeyboardPress((ActionHandler)&BriefingState::btnOkClick, Options::keyOk); _btnOk->onKeyboardPress((ActionHandler)&BriefingState::btnOkClick, Options::keyCancel); _txtTitle->setBig(); _txtTarget->setBig(); _txtCraft->setBig(); std::wstring s; if (craft) { if (craft->getDestination()) { _txtTarget->setText(craft->getDestination()->getName(_game->getLanguage())); } s = tr("STR_CRAFT_").arg(craft->getName(_game->getLanguage())); } else if (base) { s = tr("STR_BASE_UC_").arg(base->getName()); } _txtCraft->setText(s); _txtTitle->setText(tr(title)); _txtBriefing->setWordWrap(true); _txtBriefing->setText(tr(desc)); if (mission == "STR_BASE_DEFENSE") { // And make sure the base is unmarked. base->setRetaliationTarget(false); } }
/** * Initializes all the elements in the Briefing screen. * @param game Pointer to the core game. * @param craft Pointer to the craft in the mission. * @param base Pointer to the base in the mission. */ BriefingState::BriefingState(Craft *craft, Base *base) { _screen = true; // Create objects _window = new Window(this, 320, 200, 0, 0); _btnOk = new TextButton(120, 18, 100, 164); _txtTitle = new Text(300, 17, 16, 24); _txtTarget = new Text(300, 17, 16, 40); _txtCraft = new Text(300, 17, 16, 56); _txtBriefing = new Text(274, 64, 16, 72); std::string mission = _game->getSavedGame()->getSavedBattle()->getMissionType(); AlienDeployment *deployment = _game->getRuleset()->getDeployment(mission); if (!deployment) // landing site or crash site. { setPalette("PAL_GEOSCAPE", 0); _game->getResourcePack()->playMusic("GMDEFEND"); _window->setBackground(_game->getResourcePack()->getSurface("BACK16.SCR")); } else { BriefingData data = deployment->getBriefingData(); setPalette("PAL_GEOSCAPE", data.palette); _game->getResourcePack()->playMusic(data.music); _window->setBackground(_game->getResourcePack()->getSurface(data.background)); _txtCraft->setY(56 + data.textOffset); _txtBriefing->setY(72 + data.textOffset); _txtTarget->setVisible(data.showTarget); _txtCraft->setVisible(data.showCraft); } add(_window); add(_btnOk); add(_txtTitle); add(_txtTarget); add(_txtCraft); add(_txtBriefing); centerAllSurfaces(); // Set up objects _window->setColor(Palette::blockOffset(15)-1); _btnOk->setColor(Palette::blockOffset(8)+5); _btnOk->setText(tr("STR_OK")); _btnOk->onMouseClick((ActionHandler)&BriefingState::btnOkClick); _btnOk->onKeyboardPress((ActionHandler)&BriefingState::btnOkClick, Options::keyOk); _btnOk->onKeyboardPress((ActionHandler)&BriefingState::btnOkClick, Options::keyCancel); _txtTitle->setColor(Palette::blockOffset(8)+5); _txtTitle->setBig(); _txtTarget->setColor(Palette::blockOffset(8)+5); _txtTarget->setBig(); _txtCraft->setColor(Palette::blockOffset(8)+5); _txtCraft->setBig(); std::wstring s; if (craft) { if (craft->getDestination()) { _txtTarget->setText(craft->getDestination()->getName(_game->getLanguage())); } s = tr("STR_CRAFT_").arg(craft->getName(_game->getLanguage())); } else if (base) { s = tr("STR_BASE_UC_").arg(base->getName()); } _txtCraft->setText(s); _txtBriefing->setColor(Palette::blockOffset(8)+5); _txtBriefing->setWordWrap(true); _txtTitle->setText(tr(mission)); std::ostringstream briefingtext; briefingtext << mission.c_str() << "_BRIEFING"; _txtBriefing->setText(tr(briefingtext.str())); if (mission == "STR_BASE_DEFENSE") { // And make sure the base is unmarked. base->setRetaliationTarget(false); } }