#endif // _MSC_VER > 1000\r
\r
#include "singleton.h"\r
+#include "SpriteManager.h"\r
\r
\r
class CClient;\r
void ResumeTask(const CMMPointer<ITask> &t);\r
void RemoveTask(const CMMPointer<ITask> &t);\r
void KillAllTasks();\r
-\r
+ \r
+ void setSpriteManager(CSpriteManager*) {this->sm = sm;}\r
+ CSpriteManager* getSpriteManager() {return this->sm;}\r
protected:\r
std::list< CMMPointer<ITask> > taskList;\r
std::list< CMMPointer<ITask> > pausedTaskList;\r
+ CSpriteManager *sm;\r
};\r
\r
class ITask : public IMMObject\r
\r
CVideoUpdate::CVideoUpdate()\r
{\r
+ assert(screenWidth && screenHeight && screenBPP);\r
+ this->g = new Graphics(scrWidth, scrHeight, 16, false);\r
}\r
\r
CVideoUpdate::~CVideoUpdate()\r
\r
bool CVideoUpdate::Start()\r
{\r
- assert(screenWidth && screenHeight && screenBPP);\r
/*\r
if(-1==SDL_InitSubSystem(SDL_INIT_VIDEO))\r
{\r
//hide the mouse cursor\r
SDL_ShowCursor(SDL_DISABLE);\r
*/\r
- this->g = new Graphics(scrWidth, scrHeight, 16, false);\r
if (this->g->createDisplay())\r
return false;\r
this->g->setCullingMode(AM_CULL_NONE);\r
this->g->setBackground(COLOUR_RGBA(127, 127, 127, 255));\r
-\r
- this->s = new Sprite("Data/POWBOMB.png", COLOUR_RGBA(0, 0, 255, 255), 64, 64, this->g);\r
+ \r
+ /* Start a first scene */\r
+ this->g->beginScene();\r
return true;\r
}\r
\r
void CVideoUpdate::Update()\r
{\r
- this->g->beginScene();\r
- this->s->blit(0, 0, 1.0, 1.0, 0, 0, COLOUR_RGBA(255, 255, 255, 255));\r
this->g->endScene();\r
+ this->g->beginScene();\r
}\r
\r
void CVideoUpdate::Stop()\r
{\r
+ /* End the last scene */\r
+ this->g->endScene();\r
delete this->g;\r
}\r
#pragma once\r
#endif // _MSC_VER > 1000\r
\r
-#ifdef WITH_SDL\r
#include <Amaltheia/Graphics.h>\r
#include <Amaltheia/Sprite.h>\r
\r
-#else // WITH_SDL\r
-#include <d3d9.h>\r
-#include <d3dx9.h>\r
-\r
-#include "engine.h"\r
-extern LPDIRECT3DDEVICE9 d3ddev; // the pointer to the device class\r
-#endif // WITH_SDL\r
\r
class CVideoUpdate : public ITask \r
{\r
bool Start();\r
void Update();\r
void Stop();\r
+\r
+ Graphics* getGraphics() { return this->g; }\r
private:\r
-#ifdef WITH_SDL\r
Graphics *g;\r
- Sprite *s;\r
-#else\r
- LPDIRECT3D9 d3d; // the pointer to our Direct3D interface\r
-#endif //WITH_SDL\r
\r
};\r
#endif // !defined(AFX_VIDEOUPDATE_H__FB4B263B_4FA7_4700_BB70_EE5CB1768E83__INCLUDED_)\r
Engine/mmanager.o Engine/Kernel.o Engine/ProfileLogHandler.o \
Engine/VideoUpdate.o Engine/GlobalTimer.o Engine/SoundTask.o \
Engine/profiler.o Playground.o Engine/InputTask.o \
- Amaltheia/Graphics.o Amaltheia/Sprite.o
+ Amaltheia/Graphics.o Amaltheia/Sprite.o Engine/SpriteManager.o
#include these in linking. Linking with -lftgl doesn't work for some stupid reason...
EXTRA_OBJS := /usr/lib/libftgl.a
\r
#include "Engine/engine.h"\r
#include "Engine/game.h"\r
+#include "Engine/SpriteManager.h"\r
#include "Playground.h"\r
#include "SchemeReader.h"\r
\r
#define SCREEN_WIDTH 640\r
#define SCREEN_HEIGHT 480\r
\r
+enum SpriteID {\r
+ SPR_NONE = 0,\r
+ SPR_FIELD,\r
+ SPR_SOLID,\r
+ SPR_BRICK,\r
+ SPR_BLANK,\r
+ SPR_PLAYER,\r
+};\r
+\r
+SpriteData defaultSprites[] = {\r
+ {SPR_FIELD, "FIELD0.png", 640, 480},\r
+ {SPR_BLANK, "FIELD0.png", 640, 480},\r
+ {SPR_NONE, NULL, 0, 0}\r
+};\r
+\r
#ifdef WIN32\r
HINSTANCE hInstance;\r
HWND hWnd;\r
globalTimer->priority=10;\r
CKernel::GetSingleton().AddTask(CMMPointer<ITask>(globalTimer));\r
\r
+ CSpriteManager *sm = new CSpriteManager(videoTask->getGraphics(), defaultSprites);\r
+ CKernel::GetSingleton().setSpriteManager(sm);\r
+\r
Playground game;\r
game.priority=100;\r
CKernel::GetSingleton().AddTask(CMMPointer<ITask>(&game));\r