* Add #ifdef WIN32 to make main.cpp compile on linux.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Sun, 10 Jun 2007 18:37:08 +0000 (20:37 +0200)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Sun, 10 Jun 2007 18:37:08 +0000 (20:37 +0200)
 * Do singleton pointer magic with long instead of int to make it work on linux64, should still work on windows as well.

ABM2/Engine/InputTask.h
ABM2/Engine/Kernel.h
ABM2/Engine/VideoUpdate.cpp
ABM2/Engine/VideoUpdate.h
ABM2/Engine/engine.h
ABM2/Engine/misc.h
ABM2/Engine/singleton.h
ABM2/Playground.h
ABM2/main.cpp

index e3363f6137fd0d791d33f76bc098587664135cf9..337cd55f9916f53876f603ea56423bc7f10c8d77 100755 (executable)
 #endif // _MSC_VER > 1000\r
 \r
 #include "engine.h"\r
+#ifdef WIN32\r
 #define DIRECTINPUT_VERSION 0x0800\r
 #include <dinput.h>\r
+#endif // WIN32\r
+\r
+\r
+#ifndef WIN32\r
+/* HACK to make this compile */\r
+#define BYTE unsigned char\r
+#endif // !WIN32\r
 \r
 class CInputTask : public ITask  \r
 {\r
@@ -50,9 +58,11 @@ public:
        //static bool inline mouseStillUp(int button)   { return (!curMouse(button))&&(!oldMouse(button)); }\r
 \r
        AUTO_SIZE;\r
+#ifdef WIN32\r
 private:\r
        LPDIRECTINPUT8 din;    // the pointer to our DirectInput interface\r
        LPDIRECTINPUTDEVICE8 dinkeyboard;    // the pointer to the keyboard device\r
+#endif\r
 };\r
 \r
 #endif // !defined(AFX_KEYBOARDTASK_H__4953EF06_7C18_4433_B590_47E045E43576__INCLUDED_)\r
index 667cf7cb2c6a055275d034d0a5cf8a63af5c24b0..3cd5bf389aa256d5fcc41dec8245c2ceac5ff35f 100755 (executable)
@@ -25,7 +25,11 @@ public:
 \r
        int Execute();\r
 \r
+#ifdef WIN32\r
        bool AddTask(CMMPointer<ITask> &t);\r
+#else\r
+       bool AddTask(CMMPointer<ITask> t);\r
+#endif\r
        void SuspendTask(CMMPointer<ITask> &t);\r
        void ResumeTask(CMMPointer<ITask> &t);\r
        void RemoveTask(CMMPointer<ITask> &t);\r
index 8499568c1e00ebbe9964c9b89e06481f6f0c98ea..9ff6db9219e0c8ae4f0ef2a9db14ec5c9161ad1c 100755 (executable)
@@ -7,6 +7,7 @@
 #include "VideoUpdate.h"\r
 \r
 // include the Direct3D Library file\r
+#ifdef WIN32\r
 #pragma comment (lib, "d3d9.lib")\r
 #pragma comment (lib, "d3dx9.lib")\r
 \r
@@ -113,3 +114,4 @@ void CVideoUpdate::Stop()
 {\r
 //     SDL_QuitSubSystem(SDL_INIT_VIDEO);\r
 }\r
+#endif // WIN32\r
index b8273c5eeff43d88ef163f6b147ed49da803da57..a859bd163b56c73ff0cd03171d9a5b520f2848df 100755 (executable)
@@ -9,12 +9,13 @@
 #pragma once\r
 #endif // _MSC_VER > 1000\r
 \r
+#ifdef WIN32\r
 #include <d3d9.h>\r
 #include <d3dx9.h>\r
 \r
 #include "engine.h"\r
 extern LPDIRECT3DDEVICE9 d3ddev;    // the pointer to the device class\r
-\r
+#endif // WIN32\r
 class CVideoUpdate : public ITask  \r
 {\r
 public:\r
@@ -28,10 +29,10 @@ public:
        bool Start();\r
        void Update();\r
        void Stop();\r
-\r
+#ifdef WIN32\r
 private:\r
        LPDIRECT3D9 d3d;    // the pointer to our Direct3D interface\r
+#endif //WIN32\r
 \r
 };\r
-\r
 #endif // !defined(AFX_VIDEOUPDATE_H__FB4B263B_4FA7_4700_BB70_EE5CB1768E83__INCLUDED_)\r
index cd685faa7d70b0cd90f6c24e8e7a302f529837bd..6a3ac35ac883b2d0d5c35a2c055207a86f1dff47 100755 (executable)
@@ -3,7 +3,6 @@
 \r
 #pragma warning ( disable : 4786 )\r
 \r
-\r
 #include <iostream>\r
 #include <ostream>\r
 #include <istream>\r
index 843c97f18e75fef8b4c99f1ab9a7e474143525a1..55b3f9964a00ec0194d740c0f8181565b61f6183 100755 (executable)
@@ -1,8 +1,11 @@
 #ifndef MISC_H_INCLUDED\r
 #define MISC_H_INCLUDED\r
 \r
-\r
-\r
+#ifndef WIN32\r
+/* HACK to get this to compile */\r
+#define max(a,b) (a>b?a:b)\r
+#define min(a,b) (a<b?a:b)\r
+#endif // !WIN32\r
 inline float clamp(float val, float minVal, float maxVal)\r
 {\r
        return min(max(val,minVal),maxVal);\r
index 2e3e6e2cfbea6e65cbb33abf9ef8ae6c01dda9cb..748414ad43f9ac475bea4c13f4737d5a4f815e91 100755 (executable)
@@ -11,8 +11,10 @@ class Singleton
                        assert(!ms_singleton);\r
                        //use a cunning trick to get the singleton pointing to the start of the whole, rather than\r
                        //the start of the Singleton part of the object\r
-                       int offset = (int)(T*)1 - (int)(Singleton <T>*)(T*)1;\r
-                       ms_singleton = (T*)((int)this + offset);\r
+                       // This used to say "int" instead of long, but that breaks\r
+                       // on 64 bit linux at least\r
+                       long offset = (long)(T*)1 - (long)(Singleton <T>*)(T*)1;\r
+                       ms_singleton = (T*)((long)this + offset);\r
                }\r
                ~Singleton()\r
                {\r
index 1c99ab4030b095164f1e8a079a20255c783e1ca2..bed17cccd2a23abd3f565e2b816a82d5a174ce56 100755 (executable)
@@ -33,19 +33,25 @@ public:
        int getFieldCenterX();\r
        int getFieldCenterY();\r
 private:\r
+#ifdef WIN32\r
        int x,y;\r
        LPDIRECT3DTEXTURE9 texture;\r
+#endif // WIN32\r
 };\r
 \r
 class Item\r
 {\r
 public:\r
+#ifdef WIN32\r
        Item(LPDIRECT3DTEXTURE9 t, int texnr, int subwidth, int subheight, int colnr, int rownr);\r
+#endif // WIN32\r
        ~Item();\r
        void Draw();\r
        int col, row, tex_num, subitem_height, subitem_width;\r
 private:\r
+#ifdef WIN32\r
        LPDIRECT3DTEXTURE9 texture;\r
+#endif // WIN32\r
 };\r
 \r
 class Playground : public ITask\r
@@ -56,6 +62,7 @@ public:
        void Stop();\r
        AUTO_SIZE;\r
 private:\r
+#ifdef WIN32\r
        LPDIRECT3DTEXTURE9 background;\r
        LPDIRECT3DTEXTURE9 foreground;\r
 \r
@@ -68,4 +75,5 @@ private:
        void move_left();\r
 \r
        DWORD old_counter;\r
+#endif // WIN32\r
 };\r
index 061cce287b80b62b7731f51d5ac2c27f1b077c21..7348a15fa1545965c41d68edc2beb71bdea65c6d 100755 (executable)
@@ -1,6 +1,15 @@
 // 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
+//#ifndef WIN32\r
+       /* HACKS */\r
+#define max(a,b) (a>b?a:b)\r
+#define min(a,b) (a<b?a:b)\r
+#define GetTickCount() 0\r
+//#endif // !WIN32\r
 \r
 #include "Engine/engine.h"\r
 #include "Engine/game.h"\r
 #define SCREEN_WIDTH  640\r
 #define SCREEN_HEIGHT 480\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
@@ -118,6 +127,7 @@ public:
        AUTO_SIZE;\r
 };\r
 \r
+#endif // WIN32\r
 void CApplication::Run(int argc, char *argv[])\r
 {\r
        //open logfiles\r
@@ -168,6 +178,7 @@ void CApplication::Run(int argc, char *argv[])
        delete CSettingsManager::GetSingletonPtr();\r
 }\r
 \r
+#ifdef WIN32\r
 \r
 // the entry point for any Windows program\r
 int WINAPI WinMain(HINSTANCE hInst,\r
@@ -215,7 +226,6 @@ int WINAPI WinMain(HINSTANCE hInst,
   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
@@ -230,3 +240,17 @@ LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara
 \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