1 #include "playerinput.h"
2 #include <msp/input/bindings.h>
6 namespace Msp::GameView {
8 PlayerInput::PlayerInput(Game::Director &director, Graphics::Window &wnd):
9 event_source(director.get_event_bus()),
13 kbm_hub.attach(keyboard);
14 kbm_hub.attach(mouse);
16 bindings = director.get_resources().get_all<Input::Bindings>();
19 void PlayerInput::init_players()
24 void PlayerInput::add_player(Input::Device &dev)
26 Player &player = players.emplace_back(&dev, scheme_factory());
27 for(Input::Bindings *b: bindings)
28 if(b->is_compatible(dev))
30 b->apply_to(*player.controls, dev);
33 event_source.emit<Events::PlayerArrived>(ref(*player.controls));
36 void PlayerInput::synthesize_initial_events(Game::EventObserver &observer)
38 for(const Player &p: players)
39 event_source.emit_to<Events::PlayerArrived>(observer, ref(*p.controls));
42 } // namespace Msp::GameView