Пример #1
0
std::vector<std::string> Planet::AvailableFoci() const {
    std::vector<std::string> retval;
    TemporaryPtr<const Planet> this_planet = boost::dynamic_pointer_cast<const Planet>(TemporaryFromThis());
    if (!this_planet)
        return retval;
    ScriptingContext context(this_planet);
    if (const Species* species = GetSpecies(this_planet->SpeciesName())) {
        for (const FocusType& focus_type : species->Foci()) {
            if (const Condition::ConditionBase* location = focus_type.Location()) {
                if (location->Eval(context, this_planet))
                    retval.push_back(focus_type.Name());
            }
        }
    }

    return retval;
}
Пример #2
0
TemporaryPtr<UniverseObject> UniverseObject::Accept(const UniverseObjectVisitor& visitor) const
{ return visitor.Visit(boost::const_pointer_cast<UniverseObject>(TemporaryFromThis()));}
Пример #3
0
TemporaryPtr<UniverseObject> Planet::Accept(const UniverseObjectVisitor& visitor) const
{ return visitor.Visit(boost::const_pointer_cast<Planet>(boost::static_pointer_cast<const Planet>(TemporaryFromThis()))); }