X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=examples%2Fbassteroids%2Fsource%2Fbassteroids.cpp;h=5e9d929dea217acd12bf87950919849ce3c0bbbc;hb=41a17ae9a2baa2cafacfc467acc87463d790c09b;hp=4ea600fce7543135d5643a63dbd2606acc11048f;hpb=391f1ab3c7ca52a9990f516f4cdd7094f60350df;p=libs%2Fgame.git diff --git a/examples/bassteroids/source/bassteroids.cpp b/examples/bassteroids/source/bassteroids.cpp index 4ea600f..5e9d929 100644 --- a/examples/bassteroids/source/bassteroids.cpp +++ b/examples/bassteroids/source/bassteroids.cpp @@ -3,22 +3,45 @@ #include #include #include +#include "controls.h" +#include "damagedealer.h" #include "gamecontroller.h" #include "physics.h" +#include "playercontroller.h" +#include "setups.h" using namespace Msp; +BassteroidsResources::BassteroidsResources() +{ + add_type().suffix(".roid.setup"); + add_type().suffix(".bullet.setup"); + add_type().suffix(".ship.setup"); +} + + Bassteroids::Bassteroids(int, char **): + event_observer(director.get_event_bus()), game_stage(director.create_stage()), pf_setup({ .size={ 80, 45 }}), playfield(game_stage.get_root(), pf_setup), - cam_setup({ .field_of_view_y=Geometry::Angle::zero(), .size={ 80, 45 }, .near_clip=-30, .far_clip=30, .sequence_name="space.seq" }), cam_entity(game_stage.get_root(), Game::TransformValues()), - camera(const_cast &>(cam_entity), cam_setup) + camera(cam_entity, resources.get("main.camera.setup")) { game_stage.add_system(); game_stage.add_system(); + game_stage.add_system(); game_stage.add_system(); + player_controller = &game_stage.add_system(); + + event_observer.observe([this](auto &e){ player_arrived(e); }); + + player_input.set_control_scheme_type(GameView::PlayerInput::ONE_LOCAL_PLAYER); director.activate_stage(game_stage); } + +void Bassteroids::player_arrived(const GameView::Events::PlayerArrived &event) +{ + player_controller->set_controls(static_cast(&event.controls)); +}