1
0
mirror of https://github.com/blupi-games/planetblupi synced 2024-12-30 10:15:36 +01:00
planetblupi/event.h
Mathieu Schroeter f40b29f0ec Add a converter for demo play
It converts from Windows events to SDL events. Only
useful events are considered.
2017-02-02 07:49:52 +01:00

225 lines
4.6 KiB
C++

// Event.h
#pragma once
#include "jauge.h"
#include "menu.h"
class CMovie;
/////////////////////////////////////////////////////////////////////////////
typedef struct
{
UINT message;
int type;
int iconMenu[20];
int x, y;
int toolTips[20];
}
Button;
typedef struct
{
UINT phase;
char backName[20];
int bCDrom;
Button buttons[MAXBUTTON];
}
Phase;
typedef struct
{
short majRev;
short minRev;
short bSchool;
short bPrivate;
short world;
short skill;
short reserve1[99];
}
DemoHeader;
typedef struct
{
int time;
UINT message;
UINT wParam; // WPARAM
UINT lParam; // LPARAM
}
DemoEvent;
class CEvent
{
public:
CEvent();
~CEvent();
POINT GetMousePos();
void Create(HWND hWnd, CPixmap *pPixmap, CDecor *pDecor, CSound *pSound, CMovie *pMovie);
void SetFullScreen(bool bFullScreen);
void SetMouseType(int mouseType);
int GetWorld();
int GetPhysicalWorld();
int GetImageWorld();
bool IsHelpHide();
bool ChangePhase(UINT phase);
void MovieToStart();
UINT GetPhase();
void TryInsert();
void RestoreGame();
int GetButtonIndex(int button);
int GetState(int button);
void SetState(int button, int state);
bool GetEnable(int button);
void SetEnable(int button, bool bEnable);
bool GetHide(int button);
void SetHide(int button, bool bHide);
int GetMenu(int button);
void SetMenu(int button, int menu);
bool DrawButtons();
MouseSprites MousePosToSprite(POINT pos);
void MouseSprite(POINT pos);
void WaitMouse(bool bWait);
void HideMouse(bool bHide);
POINT GetLastMousePos();
bool TreatEvent(const SDL_Event *event);
bool TreatEventBase(const SDL_Event *event);
void DecorAutoShift(POINT pos);
bool StartMovie(char *pFilename);
void StopMovie();
bool IsMovie();
void Read(int message);
void Write(int message);
void SetSpeed(int speed);
int GetSpeed();
bool GetPause();
bool IsShift();
void DemoStep();
void IntroStep();
public:
static void PushUserEvent (int code);
protected:
void DrawTextCenter(int res, int x, int y, int font=0);
bool CreateButtons();
bool EventButtons(const SDL_Event &event, POINT pos);
bool MouseOnButton(POINT pos);
int SearchPhase(UINT phase);
void DecorShift(int dx, int dy);
bool PlayDown(POINT pos, const SDL_Event &event);
bool PlayMove(POINT pos, Uint16 mod);
bool PlayUp(POINT pos, Uint16 mod);
void ChangeButtons(int message);
void BuildFloor(POINT cel, int insIcon);
void BuildWater(POINT cel, int insIcon);
bool BuildDown(POINT pos, Uint16 mod, bool bMix=true);
bool BuildMove(POINT pos, Uint16 mod, const SDL_Event &event);
bool BuildUp(POINT pos);
void PrivateLibelle();
bool ReadLibelle(int world, bool bSchool, bool bHelp);
bool WriteInfo();
bool ReadInfo();
void DemoRecStart();
void DemoRecStop();
bool DemoPlayStart();
void DemoPlayStop();
static void WinToSDLEvent (UINT msg, WPARAM wParam, LPARAM lParam, SDL_Event &event);
void DemoRecEvent(UINT message, WPARAM wParam, LPARAM lParam);
protected:
int m_speed;
int m_exercice;
int m_mission;
int m_private;
int m_maxMission;
int m_phase;
int m_index;
bool m_bSchool;
bool m_bPrivate;
bool m_bAccessBuild;
bool m_bFullScreen;
int m_mouseType;
HWND m_hWnd;
CPixmap* m_pPixmap;
CDecor* m_pDecor;
CSound* m_pSound;
CMovie* m_pMovie;
char m_movieToStart[MAX_PATH];
int m_phaseAfterMovie;
CButton m_buttons[MAXBUTTON];
int m_lastFloor[MAXBUTTON];
int m_lastObject[MAXBUTTON];
int m_lastHome[MAXBUTTON];
bool m_bRunMovie;
bool m_bBuildModify;
CJauge m_jauges[2];
CMenu m_menu;
bool m_bMenu;
POINT m_menuPos;
int m_menuNb;
int m_menuButtons[MAXBUTTON];
int m_menuErrors[MAXBUTTON];
int m_menuPerso;
POINT m_menuCel;
POINT m_oldMousePos;
bool m_bMouseDown;
bool m_bHili;
int m_fileWorld[10];
int m_fileTime[10];
POINT m_posToolTips;
char m_textToolTips[50];
MouseSprites m_mouseSprite;
bool m_bFillMouse;
bool m_bWaitMouse;
bool m_bHideMouse;
int m_rankCheat;
int m_posCheat;
bool m_bMovie;
bool m_bSpeed;
bool m_bHelp;
bool m_bAllMissions;
bool m_bChangeCheat;
int m_scrollSpeed;
bool m_bPause;
bool m_bShift;
int m_shiftPhase;
POINT m_shiftVector;
POINT m_shiftOffset;
char m_libelle[1000];
int m_tryPhase;
int m_tryInsertCount;
POINT m_posInfoButton;
POINT m_posHelpButton;
bool m_bHiliInfoButton;
bool m_bHiliHelpButton;
bool m_bInfoHelp;
bool m_bDemoRec;
bool m_bDemoPlay;
DemoEvent* m_pDemoBuffer;
int m_demoTime;
size_t m_demoIndex;
size_t m_demoEnd;
int m_demoNumber;
Uint16 m_keymod;
POINT m_debugPos;
int m_introTime;
};
/////////////////////////////////////////////////////////////////////////////