/src/C4GraphicsSystem.h
https://bitbucket.org/randrian/openclonk2 · C Header · 125 lines · 95 code · 9 blank · 21 comment · 0 complexity · 0d3f255f40adf13be9665c1e5cf92cd1 MD5 · raw file
- /*
- * OpenClonk, http://www.openclonk.org
- *
- * Copyright (c) 1998-2000, 2008 Matthes Bender
- * Copyright (c) 2001, 2005, 2008 Sven Eberhardt
- * Copyright (c) 2005 G?nther Brammer
- * Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de
- *
- * Portions might be copyrighted by other authors who have contributed
- * to OpenClonk.
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- * See isc_license.txt for full license and disclaimer.
- *
- * "Clonk" is a registered trademark of Matthes Bender.
- * See clonk_trademark_license.txt for full license.
- */
- /* Operates viewports, message board and draws the game */
- #ifndef INC_C4GraphicsSystem
- #define INC_C4GraphicsSystem
- #include <C4FacetEx.h>
- #include <C4MessageBoard.h>
- #include <C4UpperBoard.h>
- #include <C4Video.h>
- #include <C4Shape.h>
- class C4Game;
- class C4LoaderScreen;
- extern C4Game Game;
- const float C4GFX_ZoomStep = 1.1040895f;
- class C4GraphicsSystem
- {
- public:
- C4GraphicsSystem();
- ~C4GraphicsSystem();
- C4MessageBoard MessageBoard;
- C4UpperBoard UpperBoard;
- int32_t iRedrawBackground;
- bool ShowHelp;
- bool ShowVertices;
- bool ShowAction;
- bool ShowCommand;
- bool ShowEntrance;
- bool ShowPathfinder;
- bool ShowNetstatus;
- bool ShowSolidMask;
- BYTE DarkColorTable[256];
- bool fSetPalette;
- uint32_t dwGamma[C4MaxGammaRamps*3]; // gamma ramps
- bool fSetGamma; // must gamma ramp be reassigned?
- C4Video Video;
- C4LoaderScreen *pLoaderScreen;
- void Default();
- void Clear();
- bool StartDrawing();
- void FinishDrawing();
- void Execute();
- void FlashMessage(const char *szMessage);
- void FlashMessageOnOff(const char *strWhat, bool fOn);
- void SetDarkColorTable();
- void DeactivateDebugOutput();
- void MouseMove(int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam, class C4Viewport *pVP); // pVP specified for console mode viewports only
- void SetMouseInGUI(bool fInGUI, bool fByMouse);
- void SortViewportsByPlayerControl();
- void ClearPointers(C4Object *pObj);
- //void UpdateMouse(HWND hwnd, int32_t iX, int32_t iY, int32_t iB);
- void RecalculateViewports();
- bool Init();
- bool InitLoaderScreen(const char *szLoaderSpec, bool fDrawBlackScreenFirst);
- void EnableLoaderDrawing(); // reset black screen loader flag
- bool SaveScreenshot(bool fSaveAll);
- bool DoSaveScreenshot(bool fSaveAll, const char *szFilename);
- bool SetPalette();
- bool CreateViewport(int32_t iPlayer, bool fSilent);
- bool CloseViewport(int32_t iPlayer, bool fSilent);
- int32_t GetAudibility(int32_t iX, int32_t iY, int32_t *iPan, int32_t iAudibilityRadius=0);
- int32_t GetViewportCount();
- C4Viewport* GetViewport(int32_t iPlayer);
- C4Viewport* GetFirstViewport() { return FirstViewport; }
- inline void InvalidateBg() { iRedrawBackground=2; }
- inline void OverwriteBg() { InvalidateBg(); }
- void SetGamma(DWORD dwClr1, DWORD dwClr2, DWORD dwClr3, int32_t iRampIndex); // set gamma ramp
- void ApplyGamma(); // apply gamma ramp to ddraw
- bool CloseViewport(C4Viewport * cvp);
- #ifdef _WIN32
- C4Viewport* GetViewport(HWND hwnd);
- BOOL RegisterViewportClass(HINSTANCE hInst);
- #endif
- protected:
- C4Viewport *FirstViewport;
- bool fViewportClassRegistered;
- C4Facet ViewportArea;
- C4RectList BackgroundAreas; // rectangles covering background without viewports in fullscreen
- char FlashMessageText[C4MaxTitle+1];
- int32_t FlashMessageTime,FlashMessageX,FlashMessageY;
- void DrawHelp();
- void DrawFlashMessage();
- void DrawHoldMessages();
- void DrawFullscreenBackground();
- void ClearFullscreenBackground();
- int32_t SeekLoaderScreens(C4Group &rFromGrp, const char *szWildcard, int32_t iLoaderCount, char *szDstName, C4Group **ppDestGrp);
- void MouseMoveToViewport(int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam);
- public:
- bool ToggleShowSolidMask();
- bool ToggleShowNetStatus();
- bool ToggleShowVertices();
- bool ToggleShowAction();
- bool ViewportNextPlayer();
- bool ToggleShowHelp();
- bool FreeScroll(C4Vec2D vScrollBy); // key callback: Scroll ownerless viewport by some offset
- bool ViewportZoomOut();
- bool ViewportZoomIn();
- };
- extern C4GraphicsSystem GraphicsSystem;
- #endif