2010-04-02 04:33:32 +02:00
|
|
|
// ==============================================================
|
|
|
|
// This file is part of Glest (www.glest.org)
|
|
|
|
//
|
2011-12-14 08:40:48 +01:00
|
|
|
// Copyright (C) 2001-2008 Martiño Figueroa
|
2010-04-02 04:33:32 +02:00
|
|
|
//
|
|
|
|
// You can redistribute this code and/or modify it under
|
|
|
|
// the terms of the GNU General Public License as published
|
|
|
|
// by the Free Software Foundation; either version 2 of the
|
|
|
|
// License, or (at your option) any later version
|
|
|
|
// ==============================================================
|
|
|
|
|
|
|
|
#ifndef _GLEST_GAME_MAINMENU_H_
|
|
|
|
#define _GLEST_GAME_MAINMENU_H_
|
|
|
|
|
2012-04-20 03:04:05 +02:00
|
|
|
#ifdef WIN32
|
|
|
|
#include <winsock2.h>
|
|
|
|
#include <winsock.h>
|
|
|
|
#endif
|
|
|
|
|
2010-04-02 04:33:32 +02:00
|
|
|
#include "lang.h"
|
|
|
|
#include "console.h"
|
|
|
|
#include "vec.h"
|
|
|
|
#include "world.h"
|
|
|
|
#include "program.h"
|
|
|
|
#include "components.h"
|
|
|
|
#include "menu_background.h"
|
|
|
|
#include "game_settings.h"
|
2010-09-07 07:25:40 +02:00
|
|
|
#include "leak_dumper.h"
|
2010-04-02 04:33:32 +02:00
|
|
|
|
2012-05-19 10:40:49 +02:00
|
|
|
namespace Shared { namespace Graphics {
|
|
|
|
class VideoPlayer;
|
|
|
|
}}
|
|
|
|
|
2010-04-02 04:33:32 +02:00
|
|
|
namespace Glest{ namespace Game{
|
|
|
|
|
|
|
|
class MenuState;
|
|
|
|
|
|
|
|
// =====================================================
|
|
|
|
// class MainMenu
|
|
|
|
//
|
|
|
|
/// Main menu ProgramState
|
|
|
|
// =====================================================
|
|
|
|
|
2011-06-26 03:55:08 +02:00
|
|
|
class MainMenu: public ProgramState {
|
2010-04-23 01:18:04 +02:00
|
|
|
|
2010-04-02 04:33:32 +02:00
|
|
|
private:
|
2010-04-23 01:18:04 +02:00
|
|
|
static MenuState *oldstate;
|
2010-04-02 04:33:32 +02:00
|
|
|
//up
|
|
|
|
Program *program;
|
|
|
|
|
|
|
|
//shared
|
|
|
|
GameSettings gameSettings;
|
|
|
|
MenuBackground menuBackground;
|
2013-11-19 22:57:28 +01:00
|
|
|
::Shared::Graphics::VideoPlayer *menuBackgroundVideo;
|
2010-04-02 04:33:32 +02:00
|
|
|
|
|
|
|
MenuState *state;
|
|
|
|
|
|
|
|
//shared
|
|
|
|
int mouseX, mouseY;
|
|
|
|
int mouse2dAnim;
|
|
|
|
|
2012-06-09 04:59:46 +02:00
|
|
|
void initBackgroundVideo();
|
|
|
|
|
2010-04-02 04:33:32 +02:00
|
|
|
public:
|
|
|
|
MainMenu(Program *program);
|
|
|
|
~MainMenu();
|
|
|
|
|
|
|
|
MenuBackground *getMenuBackground() {return &menuBackground;}
|
2010-04-04 06:14:27 +02:00
|
|
|
const MenuBackground *getConstMenuBackground() const {return &menuBackground;}
|
2010-04-02 04:33:32 +02:00
|
|
|
|
|
|
|
virtual void render();
|
|
|
|
virtual void update();
|
|
|
|
virtual void init();
|
|
|
|
virtual void mouseMove(int x, int y, const MouseState *mouseState);
|
|
|
|
virtual void mouseDownLeft(int x, int y);
|
|
|
|
virtual void mouseDownRight(int x, int y);
|
2012-11-02 21:07:50 +01:00
|
|
|
virtual void mouseUpLeft(int x, int y);
|
2011-06-26 03:55:08 +02:00
|
|
|
virtual void keyDown(SDL_KeyboardEvent key);
|
|
|
|
virtual void keyUp(SDL_KeyboardEvent key);
|
|
|
|
virtual void keyPress(SDL_KeyboardEvent key);
|
2010-06-08 02:00:28 +02:00
|
|
|
|
2010-04-02 04:33:32 +02:00
|
|
|
void setState(MenuState *state);
|
2010-07-29 17:49:06 +02:00
|
|
|
virtual bool isInSpecialKeyCaptureEvent();
|
2010-09-12 07:05:08 +02:00
|
|
|
|
|
|
|
int getMouseX() const {return mouseX;}
|
|
|
|
int getMouseY() const {return mouseY;}
|
|
|
|
int getMouse2dAnim() const {return mouse2dAnim;}
|
2011-04-15 03:05:36 +02:00
|
|
|
virtual void consoleAddLine(string line);
|
2011-10-25 20:39:11 +02:00
|
|
|
virtual void reloadUI();
|
2010-04-02 04:33:32 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// ===============================
|
|
|
|
// class MenuState
|
|
|
|
// ===============================
|
|
|
|
|
|
|
|
class MenuState {
|
|
|
|
protected:
|
|
|
|
Program *program;
|
|
|
|
|
|
|
|
MainMenu *mainMenu;
|
|
|
|
Camera camera;
|
|
|
|
|
2010-09-09 23:07:39 +02:00
|
|
|
const char *containerName;
|
2011-04-15 03:05:36 +02:00
|
|
|
Console console;
|
2010-09-09 23:07:39 +02:00
|
|
|
|
2012-10-22 08:31:57 +02:00
|
|
|
//vector<int> textCharLength;
|
2012-09-21 05:41:10 +02:00
|
|
|
|
2012-07-26 08:27:00 +02:00
|
|
|
protected:
|
|
|
|
|
|
|
|
void setActiveInputLabel(GraphicLabel *newLabel, GraphicLabel **activeInputLabelPtr);
|
|
|
|
bool keyPressEditLabel(SDL_KeyboardEvent c, GraphicLabel **activeInputLabelPtr);
|
|
|
|
bool keyDownEditLabel(SDL_KeyboardEvent c, GraphicLabel **activeInputLabelPtr);
|
|
|
|
|
2010-04-02 04:33:32 +02:00
|
|
|
public:
|
|
|
|
MenuState(Program *program, MainMenu *mainMenu, const string &stateName);
|
2010-09-09 08:42:39 +02:00
|
|
|
virtual ~MenuState();
|
2010-04-02 04:33:32 +02:00
|
|
|
virtual void mouseClick(int x, int y, MouseButton mouseButton)=0;
|
2012-11-02 21:07:50 +01:00
|
|
|
virtual void mouseUp(int x, int y, const MouseButton mouseButton){};
|
2010-04-02 04:33:32 +02:00
|
|
|
virtual void mouseMove(int x, int y, const MouseState *mouseState)=0;
|
|
|
|
virtual void render()=0;
|
|
|
|
virtual void update(){};
|
2011-06-26 03:55:08 +02:00
|
|
|
virtual void keyDown(SDL_KeyboardEvent key){};
|
|
|
|
virtual void keyPress(SDL_KeyboardEvent c){};
|
|
|
|
virtual void keyUp(SDL_KeyboardEvent key){};
|
2010-04-02 04:33:32 +02:00
|
|
|
|
2011-09-24 09:46:56 +02:00
|
|
|
virtual bool isMasterserverMode() const {return false;}
|
2010-04-02 04:33:32 +02:00
|
|
|
const Camera *getCamera() const {return &camera;}
|
2010-07-29 17:49:06 +02:00
|
|
|
|
|
|
|
virtual bool isInSpecialKeyCaptureEvent() { return false; }
|
2011-04-15 03:05:36 +02:00
|
|
|
virtual void consoleAddLine(string line);
|
2011-11-04 00:38:43 +01:00
|
|
|
virtual void reloadUI();
|
2012-06-09 04:59:46 +02:00
|
|
|
|
|
|
|
virtual bool isVideoPlaying() { return false; };
|
2010-04-02 04:33:32 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
}}//end namespace
|
|
|
|
|
|
|
|
#endif
|