Skip to content

Commit 9502b63

Browse files
committed
fix up some stuff with ufo_BRIEFING thing
1 parent 79652c4 commit 9502b63

3 files changed

Lines changed: 22 additions & 12 deletions

File tree

‎src/Battlescape/BriefingState.cpp‎

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,14 @@ BriefingState::BriefingState(Craft *craft, Base *base)
6363

6464
std::string mission = _game->getSavedGame()->getSavedBattle()->getMissionType();
6565
AlienDeployment *deployment = _game->getRuleset()->getDeployment(mission);
66-
Ufo * ufo = dynamic_cast <Ufo*> (craft->getDestination());
67-
if (!deployment && ufo) // landing site or crash site.
66+
Ufo * ufo = 0;
67+
if (!deployment && craft)
6868
{
69+
ufo = dynamic_cast <Ufo*> (craft->getDestination());
70+
if (ufo) // landing site or crash site.
71+
{
6972
deployment = _game->getRuleset()->getDeployment(ufo->getRules()->getType());
73+
}
7074
}
7175

7276
if (!deployment) // none defined - should never happen, but better safe than sorry i guess.
@@ -138,17 +142,11 @@ BriefingState::BriefingState(Craft *craft, Base *base)
138142
_txtBriefing->setText(tr(briefingtext.str()));
139143

140144
// if this UFO has a specific briefing, use that instead
141-
if (ufo)
145+
if (ufo && ufo->getRules()->getBriefingString() != "")
142146
{
143147
briefingtext.str("");
144-
briefingtext << ufo->getRules()->getType() << "_BRIEFING";
145-
// this is not a great check, if the string isn't defined
146-
// for the selected language, it will revert to the default
147-
// briefing text instead. this will make it harder to notice missing strings in mods.
148-
if (tr(briefingtext.str()).asUTF8() != briefingtext.str())
149-
{
150-
_txtBriefing->setText(tr(briefingtext.str()));
151-
}
148+
briefingtext << ufo->getRules()->getBriefingString();
149+
_txtBriefing->setText(tr(briefingtext.str()));
152150
}
153151

154152
if (mission == "STR_BASE_DEFENSE")

‎src/Ruleset/RuleUfo.cpp‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ void RuleUfo::load(const YAML::Node &node, Ruleset *ruleset)
5959
_reload = node["reload"].as<int>(_reload);
6060
_breakOffTime = node["breakOffTime"].as<int>(_breakOffTime);
6161
_sightRange = node["sightRange"].as<int>(_sightRange);
62+
_briefingString = node["briefingString"].as<std::string>(_briefingString);
6263
if (const YAML::Node &terrain = node["battlescapeTerrainData"])
6364
{
6465
RuleTerrain *rule = new RuleTerrain(terrain["name"].as<std::string>());
@@ -241,4 +242,13 @@ int RuleUfo::getSightRange() const
241242
{
242243
return _sightRange;
243244
}
245+
246+
/**
247+
* Gets the UFO's custom briefing string
248+
* @return The string name.
249+
*/
250+
std::string RuleUfo::getBriefingString() const
251+
{
252+
return _briefingString;
253+
}
244254
}

‎src/Ruleset/RuleUfo.h‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class RuleUfo
4141
int _sprite, _marker;
4242
int _damageMax, _speedMax, _accel, _power, _range, _score, _reload, _breakOffTime, _sightRange;
4343
RuleTerrain *_battlescapeTerrainData;
44-
std::string _modSprite;
44+
std::string _modSprite, _breifingString;
4545
public:
4646
/// Creates a blank UFO ruleset.
4747
RuleUfo(const std::string &type);
@@ -81,6 +81,8 @@ class RuleUfo
8181
std::string getModSprite() const;
8282
/// Gets the UFO's radar range.
8383
int getSightRange() const;
84+
/// gets the name of the briefing string.
85+
std::string getBriefingString() const;
8486
};
8587

8688
}

0 commit comments

Comments
 (0)