1 #include "bassteroids.h"
2 #include <msp/game/root.h>
3 #include <msp/game/stage.h>
4 #include <msp/game/transform.h>
5 #include <msp/game/transformpropagator.h>
7 #include "damagedealer.h"
8 #include "gamecontroller.h"
10 #include "playercontroller.h"
15 BassteroidsResources::BassteroidsResources()
17 add_type<AsteroidSetup>().suffix(".roid.setup");
18 add_type<BulletSetup>().suffix(".bullet.setup");
19 add_type<ShipSetup>().suffix(".ship.setup");
23 Bassteroids::Bassteroids(int, char **):
24 event_observer(director.get_event_bus()),
25 game_stage(director.create_stage()),
26 pf_setup({ .size={ 80, 45 }}),
27 playfield(game_stage.get_root(), pf_setup),
28 cam_entity(game_stage.get_root(), Game::TransformValues()),
29 camera(cam_entity, resources.get<Game::CameraSetup>("main.camera.setup"))
31 game_stage.add_system<GameController>();
32 game_stage.add_system<Physics>();
33 game_stage.add_system<DamageDealer>();
34 game_stage.add_system<Game::TransformPropagator>();
35 player_controller = &game_stage.add_system<PlayerController>();
37 event_observer.observe<GameView::Events::PlayerArrived>([this](auto &e){ player_arrived(e); });
39 player_input.set_control_scheme_type<Controls>(GameView::PlayerInput::ONE_LOCAL_PLAYER);
41 director.activate_stage(game_stage);
44 void Bassteroids::player_arrived(const GameView::Events::PlayerArrived &event)
46 player_controller->set_controls(static_cast<Controls *>(&event.controls));