Peoplemon  0.1.0
Peoplemon 3 game source documentation
PeoplemonMenu.hpp
Go to the documentation of this file.
1 #ifndef GAME_STATES_PEOPLEMONMENU_HPP
2 #define GAME_STATES_PEOPLEMONMENU_HPP
3 
4 #include <BLIB/Graphics.hpp>
5 #include <BLIB/Interfaces/Menu.hpp>
6 #include <BLIB/Resources.hpp>
10 #include <Game/States/State.hpp>
11 
12 namespace game
13 {
14 namespace state
15 {
22 : public State
23 , public bl::input::Listener {
24 public:
26 
36  static bl::engine::State::Ptr create(core::system::Systems& systems, Context ctx,
37  int outNow = -1, int* chosen = nullptr,
39 
41  virtual ~PeoplemonMenu() = default;
42 
46  virtual const char* name() const override;
47 
51  virtual void activate(bl::engine::Engine& engine) override;
52 
56  virtual void deactivate(bl::engine::Engine& engine) override;
57 
61  virtual void update(bl::engine::Engine&, float dt, float) override;
62 
63 private:
64  enum MenuState {
65  Browsing,
66  SelectingMove,
67  Moving,
68  ShowingMessage,
69  UsingItem,
70  UsingItemWaitView,
71  UsingItemWaitMessage,
72  WaitingForgetConfirm,
73  WaitingForgetChoice
74  };
75 
76  const Context context;
77  const int outNow;
78  int* chosenPeoplemon;
79  const core::item::Id useItem;
80 
81  MenuState state;
82  unsigned int mover1;
83  unsigned int mover2;
84  glm::vec2 moveVel;
85  glm::vec2 mover1Dest;
86  glm::vec2 mover2Dest;
87 
88  bl::rc::res::TextureRef backgroundTxtr;
89  bl::gfx::Sprite background;
90 
91  bl::menu::Menu menu;
92  core::input::MenuDriver inputDriver;
93  menu::PeoplemonButton::Ptr buttons[6];
94  bl::menu::ImageItem::Ptr backBut;
95 
96  bl::menu::Menu actionMenu;
97  bl::menu::Item* actionRoot;
98  bool actionOpen;
99 
100  PeoplemonMenu(core::system::Systems& systems, Context ctx, int outNow, int* chosen,
101  core::item::Id item);
102 
103  void connectButtons();
104  bool canCancel() const;
105  void setSelectable(unsigned int i);
106 
107  void selected(menu::PeoplemonButton* but);
108 
109  void chosen(); // store or battle switch
110  void showInfo();
111  void startMove();
112  void cleanupMove(bool completed);
113  void takeItem();
114  void resetAction();
115  void messageDone();
116  void closeActionMenu();
117  void confirmMoveDelete(const std::string& choice);
118  void delMove(const std::string& choice);
119 
120  virtual bool observe(const bl::input::Actor&, unsigned int activatedControl,
121  bl::input::DispatchType, bool eventTriggered) override;
122 };
123 
124 } // namespace state
125 } // namespace game
126 
127 #endif
bl::menu::TriggerDriver< Control::MoveUp, Control::MoveRight, Control::MoveDown, Control::MoveLeft, Control::Interact > MenuDriver
Helper typedef for Peoplemon specific menu driving.
Definition: MenuDriver.hpp:18
Id
Represents an item in its simplist form.
Definition: Id.hpp:24
Parent namespace for all functionality unique to the game.
Context
Represents where the menu is being opened from.
Owns all primary systems and a reference to the engine.
Definition: Systems.hpp:47
Menu item for peoplemon.
std::shared_ptr< PeoplemonButton > Ptr
Provides the menu for viewing and selecting Peoplemon.
virtual void activate(bl::engine::Engine &engine) override
Subscribes the menu to the engine event bus.
virtual const char * name() const override
Returns "PeoplemonMenu".
virtual ~PeoplemonMenu()=default
Cleans up all resources.
core::event::OpenPeoplemonMenu::Context Context
virtual void update(bl::engine::Engine &, float dt, float) override
Does nothing.
virtual void deactivate(bl::engine::Engine &engine) override
Unsubscribes the menu to the engine event bus.
static bl::engine::State::Ptr create(core::system::Systems &systems, Context ctx, int outNow=-1, int *chosen=nullptr, core::item::Id item=core::item::Id::None)
Creates a new PeoplemonMenu state.
Parent to all game states. Provides some commonly required data like core game systems.
Definition: State.hpp:29
core::system::Systems & systems
Definition: State.hpp:66