Crazy Eddie's GUI System  ${CEGUI_VERSION}
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
HUDDemo.h
1 /***********************************************************************
2 created: 11/8/2012
3 author: Lukas E Meindl
4 *************************************************************************/
5 /***************************************************************************
6 * Copyright (C) 2004 - 2012 Paul D Turner & The CEGUI Development Team
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining
9 * a copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be
17 * included in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25 * OTHER DEALINGS IN THE SOFTWARE.
26 ***************************************************************************/
27 #ifndef _First_Person_HUD_
28 #define _First_Person_HUD_
29 
30 #include "SampleBase.h"
31 
32 #include <vector>
33 
34 namespace CEGUI
35 {
36  class GUIContext;
37 }
38 
39 struct GamePlate;
40 
41 enum SelectedWeapon
42 {
43  SW_Spoon,
44  SW_Fork,
45  SW_Knife,
46 
47  SW_Count
48 };
49 
50 // Sample class
51 class HUDDemo : public Sample
52 {
53 public:
54  // method to initialse the samples windows and events.
55  virtual bool initialise(CEGUI::GUIContext* guiContext);
56 
57  void initGame();
58  void setupMouseCursor();
59  // method to perform any required cleanup operations.
60  virtual void deinitialise();
61 
62  virtual void onEnteringSample();
63 
64  virtual void update(float timeSinceLastUpdate);
65 
66  CEGUI::Window* spawnPlate();
67 
68  static const CEGUI::String s_imageNamePlate;
69  static const CEGUI::String s_imageNameBread;
70  static const CEGUI::String s_imageNamePoo;
71  static const CEGUI::String s_imageNamePrizza;
72  static const CEGUI::String s_imageNameSteak;
73  static const CEGUI::String s_imageNameVegPeople;
74  static const CEGUI::String s_imageNameVegFruits;
75 
76 
77 protected:
78  static const CEGUI::String& getRandomGameImage();
79 
80  void updateMouseCursor();
81  void updatePlates(float timeSinceLastUpdate);
82 
83  bool handlePlateWindowClicked(const CEGUI::EventArgs& args);
84  bool handleScorePopupAnimationEnded(const CEGUI::EventArgs& args);
85  bool handleWeaponLeftArrowClicked(const CEGUI::EventArgs& args);
86  bool handleWeaponRightArrowClicked(const CEGUI::EventArgs& args);
87  bool handleRestartButtonClicked(const CEGUI::EventArgs& args);
88 
89  void updateScoreWindow();
90  void createScorePopup(const CEGUI::Vector2<float>& mousePos, int points);
91 
92  void handleLivesChanged();
93 
94  void delayDestroyWindows();
95  void selectedWeapon(SelectedWeapon weapon);
96 
97  CEGUI::GUIContext* d_guiContext;
98  CEGUI::Window* d_root;
99  CEGUI::Window* d_rootIngame;
100  CEGUI::Window* d_rootGameOver;
101 
102  CEGUI::Window* d_mouseCursorWnd;
103 
104  int d_score;
105 
106  std::vector<GamePlate*> d_gamePlates;
107  std::vector<CEGUI::Window*> d_delayDestroyWindows;
108 
109  CEGUI::ProgressBar* d_lifeBar;
110  int d_lives;
111  SelectedWeapon d_selectedWeapon;
112 };
113 
114 #endif
Definition: cegui/include/CEGUI/GUIContext.h:68
Main namespace for Crazy Eddie's GUI Library.
Definition: cegui/include/CEGUI/Affector.h:42
Base class used as the argument to all subscribers Event object.
Definition: cegui/include/CEGUI/EventArgs.h:49
Base class for progress bars.
Definition: cegui/include/CEGUI/widgets/ProgressBar.h:49
An abstract base class providing common functionality and specifying the required interface for deriv...
Definition: cegui/include/CEGUI/Window.h:149
Definition: HUDemo.cpp:38
Definition: HUDDemo.h:51
String class used within the GUI system.
Definition: cegui/include/CEGUI/String.h:62
Definition: Sample.h:36