// include the basic windows header files and the Direct3D header file\r
+#ifdef WIN32\r
#include <windows.h>\r
#include <windowsx.h>\r
+#endif\r
\r
#include "Engine/engine.h"\r
#include "Engine/game.h"\r
+#include "Engine/SpriteManager.h"\r
#include "Playground.h"\r
-#include "Schemereader.h"\r
+#include "SchemeReader.h"\r
\r
// define the screen resolution and keyboard macros\r
#define SCREEN_WIDTH 640\r
#define SCREEN_HEIGHT 480\r
\r
+SpriteData defaultSprites[] = {\r
+ {SPR_FIELD, "Data/FIELD0.png", SCREEN_WIDTH, SCREEN_HEIGHT},\r
+ {SPR_TILE, "Data/Tiles0.png", FIELD_UNIT_WIDTH, FIELD_UNIT_HEIGHT},\r
+ {SPR_PLAYER, "Data/POWBOMB.png", FIELD_UNIT_WIDTH, FIELD_UNIT_HEIGHT},\r
+ {SPR_NONE, NULL, 0, 0}\r
+};\r
+\r
+#ifdef WIN32\r
HINSTANCE hInstance;\r
HWND hWnd;\r
\r
// the WindowProc function prototype\r
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
\r
-\r
class CPongTask : public ITask\r
{\r
public:\r
AUTO_SIZE;\r
};\r
\r
+#endif // WIN32\r
void CApplication::Run(int argc, char *argv[])\r
{\r
//open logfiles\r
\r
//create a couple of singletons\r
new CSettingsManager();\r
- new CKernel();\r
+ CKernel *kernel = new CKernel();\r
\r
//parse the 'settings.eng' file\r
CSettingsManager::GetSingleton().ParseFile("settings.esf");\r
for(int i=1;i<argc;i++)\r
CSettingsManager::GetSingleton().ParseSetting(std::string(argv[i]));\r
\r
- videoTask = new CVideoUpdate();\r
+ videoTask = new CVideoUpdate(kernel);\r
videoTask->priority=10000;\r
- CKernel::GetSingleton().AddTask(CMMPointer<ITask>(videoTask));\r
+ kernel->AddTask(CMMPointer<ITask>(videoTask));\r
\r
- inputTask = new CInputTask();\r
+ inputTask = new CInputTask(kernel);\r
inputTask->priority=20;\r
- CKernel::GetSingleton().AddTask(CMMPointer<ITask>(inputTask));\r
+ kernel->AddTask(CMMPointer<ITask>(inputTask));\r
\r
- soundTask = new CSoundTask();\r
+ soundTask = new CSoundTask(kernel);\r
soundTask->priority=50;\r
- CKernel::GetSingleton().AddTask(CMMPointer<ITask>(soundTask));\r
+ kernel->AddTask(CMMPointer<ITask>(soundTask));\r
\r
- globalTimer=new CGlobalTimer();\r
+ globalTimer=new CGlobalTimer(kernel);\r
globalTimer->priority=10;\r
- CKernel::GetSingleton().AddTask(CMMPointer<ITask>(globalTimer));\r
+ kernel->AddTask(CMMPointer<ITask>(globalTimer));\r
\r
- Playground game;\r
+ CSpriteManager *sm = new CSpriteManager(videoTask->getGraphics(), defaultSprites);\r
+ kernel->setSpriteManager(sm);\r
+\r
+ Playground game(kernel);\r
game.priority=100;\r
- CKernel::GetSingleton().AddTask(CMMPointer<ITask>(&game));\r
+ kernel->AddTask(CMMPointer<ITask>(&game));\r
+\r
\r
//set up the profiler with an output handler\r
CProfileLogHandler profileLogHandler;\r
CProfileSample::outputHandler=&profileLogHandler;\r
\r
//main game loop\r
- CKernel::GetSingleton().Execute();\r
+ kernel->Execute();\r
\r
//clean up singletons\r
- delete CKernel::GetSingletonPtr();\r
+ delete kernel;\r
delete CSettingsManager::GetSingletonPtr();\r
}\r
\r
+#ifdef WIN32\r
\r
// the entry point for any Windows program\r
int WINAPI WinMain(HINSTANCE hInst,\r
return 0;\r
}\r
\r
-\r
// this is the main message handler for the program\r
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
\r
return DefWindowProc (hWnd, message, wParam, lParam);\r
}\r
+#else // WIN32\r
+int main(int argc, char *argv[])\r
+{\r
+ new CApplication();\r
+ CApplication::GetSingleton().Run(argc,argv);\r
+ delete CApplication::GetSingletonPtr();\r
+\r
+ //clean up any remaining unreleased objects\r
+ IMMObject::CollectRemainingObjects(true);\r
+\r
+ return 0;\r
+}\r
+#endif //WIN32\r
+\r