Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

#ifndef __TITLE_SCREEN_H__
#define __TITLE_SCREEN_H__

#include "SexyAppFramework/Widget.h"
#include "SexyAppFramework/ButtonListener.h"

namespace Sexy
{

class GameApp;
class Graphics;
class WidgetManager;

// A new widget that we'll be learning about. It's explained in the .CPP code.
class HyperlinkWidget;


// If you forgot about the ButtonListener class, you should review Demo3.
// The hyperlink widget is essentially the same thing as a button widget,
// and emits the same messages that a button does. Thus, to act on its
// messages we derive from the ButtonListener class.
class TitleScreen : public Widget, public ButtonListener
{

private:

        GameApp*                        mApp;
        HyperlinkWidget*        mContinueLink;         

public:

        //////////////////////////////////////////////////////////////////////////
        //      Function: TitleScreen
        //      Parameters:
        //              theApp  - Pointer to the main application class
        //     
        //      Returns: none
        //////////////////////////////////////////////////////////////////////////
        TitleScreen(GameApp* pApp);

        virtual ~TitleScreen();

        //////////////////////////////////////////////////////////////////////////
        //      Function: Init
        //      Parameters: none
        //      Returns: none
        //
        //      Purpose: Called BEFORE the title screen is added to the widget manager
        //      by GameApp. This initializes some things like the images used for
        //      our hyperlink widget.
        //////////////////////////////////////////////////////////////////////////     
        void Init(void);

        //////////////////////////////////////////////////////////////////////////
        //      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 TitleScreen 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.
        //////////////////////////////////////////////////////////////////////////     
        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 TitleScreen 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.
        //////////////////////////////////////////////////////////////////////////
        void RemovedFromManager(WidgetManager* theWidgetManager);

        //////////////////////////////////////////////////////////////////////////
        //      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: 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 is where
        //      we'll do all our display routines for the loading screen.
        //////////////////////////////////////////////////////////////////////////
        void Draw(Graphics* g);

        //////////////////////////////////////////////////////////////////////////
        //      Function: LoadingComplete
        //      Parameters: none
        //      Returns: none
        //
        //      Purpose: Called manually by GameApp when we are done loading all
        //      resources, to let the title screen know that it should unhide and
        //      enable the continue link, so the user can start playing the game.
        //////////////////////////////////////////////////////////////////////////
        void LoadingComplete();
};

}

#endif //__TITLE_SCREEN_H__