#pragma once #include #include #include #include #include #include #include #include #include "ForceBalance.h" #include "Scene.h" #include "Session.h" namespace kurator { class Battle : public Scene { public: using Callback = std::function; explicit Battle(std::shared_ptr _session); Battle(std::shared_ptr _session, campaign::Scenario scenario, Callback _report={}); virtual ~Battle(); void update() override; void draw() const override; void on_end(const sim::End& end); void on_hit(const sim::Hit& hit); void on_destroyed(const sim::Destroyed& event); void on_ship_left(const stats::ShipLeft& event); // duplicated? private: std::shared_ptr session; sim::State ctx; sim::System simulation_base; ForceBalance balance; stats::EventLog log; Callback report; }; } // namespace kurator