summaryrefslogtreecommitdiff
path: root/osframework/source/demos/Hun-garr/GameApp.h
diff options
context:
space:
mode:
Diffstat (limited to 'osframework/source/demos/Hun-garr/GameApp.h')
-rw-r--r--osframework/source/demos/Hun-garr/GameApp.h171
1 files changed, 171 insertions, 0 deletions
diff --git a/osframework/source/demos/Hun-garr/GameApp.h b/osframework/source/demos/Hun-garr/GameApp.h
new file mode 100644
index 0000000..66676d3
--- /dev/null
+++ b/osframework/source/demos/Hun-garr/GameApp.h
@@ -0,0 +1,171 @@
+#ifndef __GAMEAPP_H__
+#define __GAMEAPP_H__
+
+//////////////////////////////////////////////////////////////////////////
+// GameApp.h
+//
+// This is what drives the whole game. In here, you derive your class
+// from SexyAppBase and implement common game tasks, such as
+// responding to widgets (covered later), initializing and loading
+// resources, setting up the various game screens, etc.
+// All applications at minimum must have a class that derives from
+// SexyAppBase.
+//
+// The GameApp class is used to do such things as create the main
+// menu screen, create the main game class (where all drawing/updating/
+// interaction takes place), etc.
+//
+// IMPORTANT: Comments for topics covered in the previous demos will
+// be kept to a minimum and removed in most cases. You should read through
+// the previous demos to familiarize yourself with anything you don't
+// understand. All functions, variables, and concepts are explained
+// either in this demo, or in previous ones if they've already been covered.
+//////////////////////////////////////////////////////////////////////////
+
+#include "SexyAppFramework/SexyAppBase.h"
+
+
+namespace Sexy
+{
+
+ class Board;
+ class TitleScreen;
+
+class GameApp : public SexyAppBase
+{
+
+ private:
+
+ Board* mBoard;
+ TitleScreen* mTitleScreen;
+
+ // Because it's annoying to hear the sound of the planets hitting a wall too many
+ // times in a second, we'll limit how many can occur.
+ int mLastPlanetHitSoundTime;
+
+ public:
+
+ GameApp();
+ virtual ~GameApp();
+
+ //////////////////////////////////////////////////////////////////////////
+ // Function: Init
+ // Parameters: none
+ // Returns: none
+ //
+ // Purpose: Initializes the application. Sets the resolution, overrides
+ // any default settings, and if there is a loader/intro screen (not in this demo)
+ // creates it and displays it. The framework will then automatically
+ // call the LoadingThreadProc() method after this method returns.
+ //////////////////////////////////////////////////////////////////////////
+ virtual void Init();
+
+ //////////////////////////////////////////////////////////////////////////
+ // Function: LoadingThreadProc
+ // Parameters: none
+ // Returns: none
+ //
+ // Purpose: Loads all resources in a separate thread. If there is a
+ // loader/intro screen (not in this demo), would also update the
+ // loader progress indicator. When the function returns, the
+ // LoadingThreadCompleted() method is automatically called.
+ //////////////////////////////////////////////////////////////////////////
+ virtual void LoadingThreadProc();
+
+ //////////////////////////////////////////////////////////////////////////
+ // Function: LoadingThreadCompleted
+ // Parameters: none
+ // Returns: none
+ //
+ // Purpose: Called when LoadingThreadProc is complete and all resources
+ // have been loaded. It is in this function that you would then set up
+ // your main menu or similar screen. For this particular demo however,
+ // we will go straight to the main game class, "Board".
+ //////////////////////////////////////////////////////////////////////////
+ virtual void LoadingThreadCompleted();
+
+ //////////////////////////////////////////////////////////////////////////
+ // Function: TitleScreenIsFinished
+ // Parameters: none
+ // Returns: none
+ //
+ // Purpose: Called by the TitleScreen widget when it is about to close
+ // down, this indicates that we should now add the board widget and
+ // start the game.
+ //////////////////////////////////////////////////////////////////////////
+ void TitleScreenIsFinished();
+
+ //////////////////////////////////////////////////////////////////////////
+ // Function: NewDialog
+ // Parameters:
+ // theDialogId - Unique ID to give this dialog box
+ // isModal - If true, only itself and widgets above it receive
+ // input events.
+ // theDialogHeader - String to display in the header part of the dialog box
+ // theDialogLines - String to use for the body of the dialog. May use
+ // \n characters to indicate new lines.
+ // theDialogFooter - If the button mode is BUTTONS_FOOTER, this is the text
+ // to use for the button, otherwise ignored.
+ // theButtonMode - One of 3 settings: Dialog::BUTTONS_YES_NO creates two
+ // "Yes" "No" buttons, Dialog::BUTTONS_OK_CANCEL creates two
+ // "OK" "Cancel" buttons, Dialog::BUTTONS_FOOTER creates one
+ // button with the text from theDialogFooter.
+ //
+ // Returns: A new dialog pointer for use by SexyAppBase's DoDialog method.
+ //
+ // Purpose: SexyAppBase contains a convenience function, DoDialog, that relies on
+ // this overriden function. DoDialog calls NewDialog which instructs it how to make
+ // a dialog box. You should use DoDialog to create and add your dialog boxes.
+ // The reason for this function is to allow for customized dialog boxes and to avoid
+ // having to have a gigantic function with every possible parameter to pass to the Dialog's
+ // constructor.
+ //////////////////////////////////////////////////////////////////////////
+ virtual Dialog* NewDialog(int theDialogId, bool isModal, const std::string& theDialogHeader,
+ const std::string& theDialogLines, const std::string& theDialogFooter, int theButtonMode);
+
+ //////////////////////////////////////////////////////////////////////////
+ // Function: LostFocus
+ // Parameters: none
+ // Returns: none
+ //
+ // Purpose: Called when the game itself loses focus, such as the user switch
+ // to another application.
+ //////////////////////////////////////////////////////////////////////////
+ virtual void LostFocus(void);
+
+ //////////////////////////////////////////////////////////////////////////
+ // Function: GotFocus
+ // Parameters: none
+ // Returns: none
+ //
+ // Purpose: Called when the app regains focus after losing it.
+ //////////////////////////////////////////////////////////////////////////
+ virtual void GotFocus(void);
+
+ //////////////////////////////////////////////////////////////////////////
+ // Function: ButtonPress:
+ // Parameters:
+ // theId - ID of the button pressed
+ //
+ // Returns: none
+ //
+ // Purpose: Called when the button is pressed, but before the mouse is
+ // released (which would instead generate a ButtonDepress event).
+ //////////////////////////////////////////////////////////////////////////
+ virtual void ButtonPress(int theId);
+
+ //////////////////////////////////////////////////////////////////////////
+ // Function: PlaySample
+ // Parameters:
+ // theSoundNum - The sound ID to play
+ // Returns: none
+ //
+ // Purpose: Plays the sample at normal pitch with no panning.
+ //////////////////////////////////////////////////////////////////////////
+ virtual void PlaySample(int theSoundNum);
+};
+
+}
+
+
+#endif // __GAMEAPP_H__ \ No newline at end of file