use const for readonly strings and set some functions to static
[blender.git] / source / gameengine / GamePlayer / common / GPC_Engine.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file GPC_Engine.h
29  *  \ingroup player
30  */
31
32 #ifndef __GPC_ENGINE_H
33 #define __GPC_ENGINE_H
34
35 #include "GPC_Canvas.h"
36 #include "GPC_System.h"
37
38 class GPC_KeyboardDevice;
39 class GPC_MouseDevice;
40
41 class RAS_IRenderTools;
42 class KetsjiPortal;
43 class KX_ISceneConverter;
44 class NG_LoopBackNetworkDeviceInterface;
45 class GPC_RawImage;
46
47
48 class GPC_Engine
49 {
50 //protected:
51 public:
52         /** Engine construction state. */
53         bool m_initialized;
54         /** Engine state. */
55         bool m_running;
56         /** loading state, ie a file is requested and is being loaded. Different
57          *  from initialized and/or running */
58         bool m_loading;
59
60         bool m_customLoadingAnimation;
61
62         /** Last file download progress measurement. */
63         float m_previousProgress;
64
65         /** The game engine's system abstraction. */
66         GPC_System* m_system;
67         /** The game engine's keyboard abstraction. */
68         GPC_KeyboardDevice* m_keyboarddev;
69         /** The game engine's mouse abstraction. */
70         GPC_MouseDevice* m_mousedev;
71         /** The game engine's canvas abstraction. */
72         GPC_Canvas* m_canvas;
73         /** The game engine's platform dependent render tools. */
74         RAS_IRenderTools* m_rendertools;
75         /** The portal used to start the engine. */
76         KetsjiPortal* m_portal;
77         /** Converts Blender data files. */
78         KX_ISceneConverter* m_sceneconverter;
79         /** Network interface. */
80         NG_LoopBackNetworkDeviceInterface* m_networkdev;
81         
82         struct ScrArea *m_curarea;  // for future use, not used yet
83
84         char *m_customLoadingAnimationURL;
85         int m_foregroundColor;
86         int m_backgroundColor;
87         int m_frameRate;
88
89         GPC_RawImage *m_BlenderLogo;
90         GPC_Canvas::TBannerId m_BlenderLogoId;
91         GPC_RawImage *m_Blender3DLogo;
92         GPC_Canvas::TBannerId m_Blender3DLogoId;
93 #if 0
94         GPC_RawImage *m_NaNLogo;
95         GPC_Canvas::TBannerId m_NaNLogoId;
96 #endif
97
98 public:
99         GPC_Engine(char *customLoadingAnimation,
100                         int foregroundColor, int backgroundColor, int frameRate);
101         virtual ~GPC_Engine();
102         // Initialize() functions are not put here since they have
103         // different prototypes for Unix and Windows
104         void StartLoadingAnimation();
105         bool Start(const char *filename);  // file-on-disk starter
106         bool Start(unsigned char *blenderDataBuffer,
107                    unsigned int blenderDataBufferSize);  // file-in-memory starter
108
109         void Stop();
110         virtual void Exit();
111
112         bool Initialized(void) {return m_initialized;}
113         bool Loading(void) {return m_loading;}
114         bool Running(void) const {return m_running;}
115
116         virtual float DetermineProgress(void);  // will be platform dependant
117         void UpdateLoadingAnimation(void);
118
119 private:
120         bool StartKetsji(void);
121
122 };
123
124 #endif  // __GPC_ENGINE_H
125