6 #include <BLIB/Util/Random.hpp>
18 std::unique_ptr<core::battle::Battle>&& battle) {
19 std::unique_ptr<intros::SequenceBase> seq;
21 seq = std::make_unique<intros::WildSequence>();
23 else { seq = std::make_unique<intros::TrainerSequence>(); }
25 systems, std::forward<std::unique_ptr<core::battle::Battle>>(battle), std::move(seq))};
29 std::unique_ptr<core::battle::Battle>&& battle,
30 std::unique_ptr<intros::SequenceBase>&& sequence)
31 :
State(systems,
bl::engine::StateMask::Menu)
32 , state(Substate::BattleIntro)
33 , battle(std::forward<std::unique_ptr<
core::battle::Battle>>(battle))
34 , sequence(std::forward<std::unique_ptr<intros::SequenceBase>>(sequence))
40 engine.inputSystem().getActor().addListener(*
this);
43 case Substate::Battling:
45 state = Substate::Evolving;
50 else { engine.popState(); }
52 case Substate::Evolving:
57 else { engine.popState(); }
59 case Substate::BattleIntro:
67 engine.inputSystem().getActor().removeListener(*
this);
72 if (sequence->finished()) {
73 state = Substate::Battling;
78 bool BattleWrapperState::observe(
const bl::input::Actor&,
unsigned int, bl::input::DispatchType,
83 void BattleWrapperState::incEvolveIndex() {
85 while (evolveIndex < team.size() && !team[evolveIndex].pendingEvolution()) { ++evolveIndex; }
88 void BattleWrapperState::startEvolve() {
90 ppl.pendingEvolution() =
false;
Core classes and functionality for both the editor and game.
Parent namespace for all functionality unique to the game.
std::vector< pplmn::OwnedPeoplemon > peoplemon
bool evolutionPending() const
Returns whether or not any peoplemon have a pending evolution.
player::State & state()
Returns the state of the player.
Owns all primary systems and a reference to the engine.
const bl::engine::Engine & engine() const
Const accessor for the Engine.
Player & player()
Returns the player system.
static bl::engine::State::Ptr create(core::system::Systems &systems, std::unique_ptr< core::battle::Battle > &&battle)
Creates a new BattleState.
Wrapper state that manages battle intro transitions as well as post-battle evolutions.
const char * name() const override
Returns "BattleWrapperState".
virtual void activate(bl::engine::Engine &engine) override
Initiates the battle transition or evolution if applicable, otherwise pops this state.
static bl::engine::State::Ptr create(core::system::Systems &systems, std::unique_ptr< core::battle::Battle > &&battle)
Creates a new BattleState.
virtual void deactivate(bl::engine::Engine &engine) override
Does nothing.
virtual void update(bl::engine::Engine &engine, float dt, float) override
Updates the intro sequence.
static bl::engine::State::Ptr create(core::system::Systems &systems, core::pplmn::OwnedPeoplemon &ppl)
Parent to all game states. Provides some commonly required data like core game systems.
core::system::Systems & systems