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