Blame |
Last modification |
View Log
| RSS feed
//////////////////////////////////////////////////////////////////////////
// DemoDialog.h
//
// This class demonstrates how to create a customized dialog box.
// Most games will want to use custom implementations of the dialog
// class if they want to go beyond the simple yes/no/ok ones.
//
// Basically, all we want to do is implement custom drawing and updating
// code, as well as do some little things when we get added/removed from
// the widget manager and handle button presses slightly differently.
//
// IMPORTANT: Make sure to read the comments in the .CPP file for the
// Dialog constructor as they contain important information.
//////////////////////////////////////////////////////////////////////////
#ifndef __DEMO_DIALOG_H__
#define __DEMO_DIALOG_H__
#include "SexyAppFramework/Dialog.h"
// This lets us receive slider events
#include "SexyAppFramework/SliderListener.h"
#include "SexyAppFramework/CheckboxListener.h"
namespace Sexy
{
class Graphics;
// We're going to use slider widgets to control audio volume
class Slider;
// This is the same as a normal button, but it automatically tiles
// the butotn image if we make the widget too large
class DialogButton;
class Checkbox;
class DemoDialog : public Dialog, public SliderListener, public CheckboxListener
{
protected:
Slider* mMusicVolumeSlider;
Slider* mSfxVolumeSlider;
DialogButton* mRandomBtn; // Click this for a random number
DialogButton* mClipBtn; // Click this to toggle clipping
public:
// Alright, fine, we'll use some constants for our widgets!
enum
{
MUSIC_SLIDER_ID,
SFX_SLIDER_ID,
RANDOM_BTN_ID,
CLIP_BTN_ID,
FS_CHECKBOX_ID,
HARDWARE_CHECKBOX_ID,
MESSAGE_BOX_ID,
DIALOG_ID
};
// For ease of accessing, we're going to make our checkboxes public,
// as the GameApp class will need to query their states as well as
// possibly alter the FSCheckbox's state.
Checkbox* m3DCheckbox; // Toggle 3D enhanced mode
Checkbox* mFSCheckbox; // Toggle fullscreen mode
public:
//////////////////////////////////////////////////////////////////////////
// Function: DemoDialog
// Parameters:
// theHeader - A string to use for the dialog box header
// theBody - A string to use for the body of the text. May use
// \n characters to denote new line.
//
// Returns: none
//
// Purpose: Creates a new dialog box. You can specify a custom header
// and content with the two parameters.
//////////////////////////////////////////////////////////////////////////
DemoDialog(std::string theHeader, std::string theBody);
virtual ~DemoDialog();
//////////////////////////////////////////////////////////////////////////
// Function: Draw
// Parameters:
// g - Graphics object used to draw all images and fonts to the screen.
//
// Returns: none
//
// Purpose: Called automatically by GameApp's WidgetManager, this function
// is the main method that is responsible for all graphical and textual
// displaying.
//////////////////////////////////////////////////////////////////////////
virtual void Draw(Graphics* g);
//////////////////////////////////////////////////////////////////////////
// Function: Update
// Parameters: none
// Returns: none
//
// Purpose: Called automatically by GameApp's WidgetManager, this method
// is GUARANTEED to be called 100 times per second (100FPS).
//////////////////////////////////////////////////////////////////////////
virtual void Update();
//////////////////////////////////////////////////////////////////////////
// Function: ButtonDepress
// Parameters:
// theId - Integer ID of the button that was clicked
//
// Returns: none
//
// Purpose: This method is called by the WidgetManager when a button widget
// is first pressed and THEN released. You can use ButtonPress if you want
// to know when the button is first pressed (before it is released).
// theId is the integer ID that was assigned to the button when it was
// first created.
//////////////////////////////////////////////////////////////////////////
virtual void ButtonDepress(int theId);
//////////////////////////////////////////////////////////////////////////
// Function: AddedToManager
// Parameters:
// theWidgetManager - Pointer to the main widget manager from
// GameApp.
//
// Returns: none
//
// Purpose: This function is automatically called by the widget manager
// which also passes a pointer to itself, when the Board class is
// added to its list of widgets. Every widget gets this function
// called when it is first added. It useful to use this function to
// set up any other widgets that the class might contain, such as buttons.
//////////////////////////////////////////////////////////////////////////
virtual void AddedToManager(WidgetManager* theWidgetManager);
//////////////////////////////////////////////////////////////////////////
// Function: RemovedFromManager
// Parameters:
// theWidgetManager - Pointer to the main widget manager from
// GameApp.
//
// Returns: none
//
// Purpose: This function is automatically called by the widget manager
// which also passes a pointer to itself, when the Board class is
// removed from its list of widgets. Every widget gets this function
// called when it is finally removed. It useful to use this function to
// also remove any widgets that were added and created in AddedToManager.
//////////////////////////////////////////////////////////////////////////
virtual void RemovedFromManager(WidgetManager* theWidgetManager);
//////////////////////////////////////////////////////////////////////////
// Function: Resize
// Parameters:
// theX - X coordinate to place the dialog at
// theY - Y coordinate to place the dialog at
// theWidth - Width of the dialog box
// theHeight - Height of the dialog box
//
// Returns: none
//
// Purpose: Resizes and places the dialog box. We'll also
// make sure to position any widgets appropriately based on the new
// dimensions.
//////////////////////////////////////////////////////////////////////////
virtual void Resize(int theX, int theY, int theWidth, int theHeight);
//////////////////////////////////////////////////////////////////////////
// Function: SliderVal
// Parameters:
// theId - ID of the slider object that generated this message
// theVal - The value of the slider, i.e. where the thumb image
// is located. Leftmost is 0, rightmost is mVal in the slider widget.
//
// Returns: none
//
// Purpose: Whenever the thumb image on a slider is moved, this event is
// generated. The value passed in ranges from 0 to the maximum value on
// the slider, which is set in the slider's mVal variable.
//////////////////////////////////////////////////////////////////////////
virtual void SliderVal(int theId, double theVal);
//////////////////////////////////////////////////////////////////////////
// Function: CheckboxChecked
// Parameters:
// theId - Integer ID of the checkbox widget sending this message
// checked - Boolean indicating if the widget is checked or not
//
// Returns: none
//
// Purpose: Whenever a checkbox widget is checked or unchecked, this
// method is called.
//////////////////////////////////////////////////////////////////////////
void CheckboxChecked(int theId, bool checked);
};
}
#endif