Ajout du système de map ( pas fini )
This commit is contained in:
parent
07ae63f741
commit
955f805ff1
29
CEngine.hpp
29
CEngine.hpp
|
@ -32,6 +32,7 @@
|
|||
|
||||
//#define CE_ALL
|
||||
#define CE_BASIC
|
||||
#define CE_MAP
|
||||
//#define CE_RPG
|
||||
//#define CE_PLATEFORME
|
||||
//#define CE_NETWORK
|
||||
|
@ -41,8 +42,11 @@
|
|||
#define CE_RPG
|
||||
#define CE_PLATEFORME
|
||||
#define CE_NETWORK
|
||||
#define CE_MAP
|
||||
#endif
|
||||
|
||||
//*********Declaration**********//
|
||||
|
||||
#ifdef CE_BASIC
|
||||
|
||||
class Engine;
|
||||
|
@ -67,6 +71,12 @@
|
|||
double y;
|
||||
};
|
||||
|
||||
struct AABB
|
||||
{
|
||||
Vec2 min;
|
||||
Vec2 max;
|
||||
};
|
||||
|
||||
struct Body
|
||||
{
|
||||
Transform * transform;
|
||||
|
@ -75,7 +85,18 @@
|
|||
Vec2 acceleration;
|
||||
Vec2 force;
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CE_MAP
|
||||
|
||||
class Level;
|
||||
class World;
|
||||
|
||||
#endif
|
||||
|
||||
//********Include**********//
|
||||
|
||||
#ifdef CE_BASIC
|
||||
#include "include\Engine.hpp"
|
||||
#include "include\Object.hpp"
|
||||
|
||||
|
@ -88,4 +109,12 @@
|
|||
|
||||
#endif
|
||||
|
||||
#ifdef CE_MAP
|
||||
|
||||
#include "include\Map\World.hpp" //Les différents composant du décor du jeu
|
||||
#include "include\Map\Level.hpp"
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* CENGINE_HPP */
|
||||
|
|
|
@ -38,8 +38,19 @@
|
|||
void AppliedForce();
|
||||
void Draw();
|
||||
|
||||
AABB * GetScreen();
|
||||
void MoveScreen( int x ,int y);
|
||||
void MiddleScreen(int x , int y , bool fixe = true);
|
||||
|
||||
void UpdateRelativePosition();
|
||||
|
||||
#ifdef CE_MAP
|
||||
|
||||
World * GetWorld();
|
||||
void SetWorld( World * v);
|
||||
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
||||
bool execute;
|
||||
|
@ -50,7 +61,13 @@
|
|||
Object ** listeObject; //Tableau d'objet utilisé dans le cas ou il n'y a pas de map.
|
||||
int nbobject; //Nombre d'objet liés au moteur. nb = Nombre
|
||||
|
||||
AABB screen;
|
||||
|
||||
#ifdef CE_MAP
|
||||
|
||||
World * engineWorld;
|
||||
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
/* ************************************************************************** */
|
||||
/* _____ */
|
||||
/* Level.hpp | ___| _ ____ ___ */
|
||||
/* Project : C-Engine | |_ | | | __| / _ \ */
|
||||
/* | _| | | | |= | __/ */
|
||||
/* By: Fife <wasabifife@gmail.com> |_| |_| |_| \___| */
|
||||
/* */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef CENGINE_LEVEL_HPP
|
||||
#define CENGINE_LEVEL_HPP
|
||||
|
||||
#include "..\Rework\CEngine.hpp"
|
||||
|
||||
class Level
|
||||
{
|
||||
public:
|
||||
|
||||
Level();//Constructeur
|
||||
|
||||
void AffectWorld( World * v );
|
||||
World * GetWorld();
|
||||
|
||||
void SetMap( const unsigned char * userTileset , unsigned char * userMap , bool * userProperties, int userTileWidth , int userTileHeight , int userWorldWidth , int userWorldHeight);
|
||||
|
||||
int GetIdMap( int x, int y );
|
||||
void ReplaceIdMap( int x , int y, char v );
|
||||
|
||||
void DrawMap();
|
||||
|
||||
Object ** GetListeObject();
|
||||
int GetNbObject();
|
||||
|
||||
void AddObject( Object * v); //Ajout un objet au level
|
||||
bool DelObject( Object * v); //Supprime l'objet
|
||||
void DelAllObject(); //Supprime tout les objets
|
||||
|
||||
int tileWidth;
|
||||
int tileHeight;
|
||||
|
||||
int levelWidth;
|
||||
int levelHeight;
|
||||
|
||||
private:
|
||||
|
||||
World * worldLink;
|
||||
|
||||
unsigned char * map;
|
||||
|
||||
const unsigned char * tileset;
|
||||
bool * solid;
|
||||
|
||||
int tilegap;
|
||||
|
||||
int xscroll,yscroll;
|
||||
|
||||
Object ** listeObject;
|
||||
int nbObject;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,48 @@
|
|||
/* ************************************************************************** */
|
||||
/* _____ */
|
||||
/* World.hpp | ___| _ ____ ___ */
|
||||
/* Project : C-Engine | |_ | | | __| / _ \ */
|
||||
/* | _| | | | |= | __/ */
|
||||
/* By: Fife <wasabifife@gmail.com> |_| |_| |_| \___| */
|
||||
/* */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef CENGINE_WORLD_HPP
|
||||
#define CENGINE_WORLD_HPP
|
||||
|
||||
#include "..\Rework\CEngine.hpp"
|
||||
|
||||
class World
|
||||
{
|
||||
public:
|
||||
|
||||
World();//Constructeur
|
||||
|
||||
void AffectEngine(Engine * EV);
|
||||
Engine * GetEngine();
|
||||
|
||||
void SetLevel( Level ** userTabLevel , int userNbLevel);
|
||||
void SetLevel( Level * userLevel);
|
||||
|
||||
void DrawLevel();
|
||||
|
||||
Level * GetCurrentLevel();
|
||||
Level * GetLevel(int id);
|
||||
|
||||
void AddObject( Object * v, int level = -1); //Ajout un objet au level
|
||||
void DelObject( Object * v); //Supprime l'objet
|
||||
void DelAllObject(); //Supprime tout les objets
|
||||
|
||||
private:
|
||||
|
||||
Engine * engineLink;
|
||||
|
||||
Level ** tabLevel;
|
||||
int nbLevel;
|
||||
|
||||
int currentLevel;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
|
@ -67,11 +67,12 @@
|
|||
|
||||
void Render::SetIt(int v)
|
||||
{
|
||||
/*if(iterateur != v && (!TabAnim[iterateur].GetWaittheEnd() || TabAnim[iterateur].GetisEnd()))
|
||||
{*/
|
||||
if(iterateur != v /*&& (!TabAnim[iterateur].GetWaittheEnd() || TabAnim[iterateur].GetisEnd())*/)
|
||||
{
|
||||
iterateur = v;
|
||||
if( iterateur >= nb_anim) iterateur = 0;
|
||||
TabAnim[ iterateur].SetIt(0);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
int Render::GetIt()
|
||||
|
@ -136,11 +137,14 @@
|
|||
{
|
||||
if(TabAnim)
|
||||
{
|
||||
if( iterateur >= nb_anim) iterateur = 0;
|
||||
|
||||
if(!reverse)
|
||||
TabAnim[ iterateur].DrawAnim( Conteneur->GetTransform()->GetRelativeX() , 64 - Conteneur->GetTransform()->GetRelativeY() - GetSizeY() , direction);
|
||||
{
|
||||
TabAnim[ iterateur ].DrawAnim( Conteneur->GetTransform()->GetRelativeX() , 64 - Conteneur->GetTransform()->GetRelativeY() - GetSizeY() , direction);
|
||||
}
|
||||
else
|
||||
TabAnim[ iterateur].DrawReverseAnim( Conteneur->GetTransform()->GetRelativeX() , 64 - Conteneur->GetTransform()->GetRelativeY() - GetSizeY() , direction);
|
||||
{
|
||||
TabAnim[ iterateur].DrawReverseAnim( Conteneur->GetTransform()->GetRelativeX() , 64 - Conteneur->GetTransform()->GetRelativeY() - GetSizeY() , direction);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
165
src/Engine.cpp
165
src/Engine.cpp
|
@ -8,6 +8,20 @@
|
|||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
/*
|
||||
bool Engine::WaitOneSecond()
|
||||
{
|
||||
if(RTC_getTicks() - time > 128) // si il s'est écoulé une seconde complète
|
||||
{
|
||||
time = RTC_getTicks(); // et on se rappelle du nombre de ticks de la dernière seconde écoulée
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
#include "..\Rework\include\Engine.hpp"
|
||||
|
||||
Engine::Engine()
|
||||
|
@ -19,6 +33,17 @@
|
|||
|
||||
listeObject = NULL;
|
||||
nbobject = 0;
|
||||
|
||||
screen.min.x = 0;
|
||||
screen.min.y = 0;
|
||||
|
||||
screen.max.x = 128;
|
||||
screen.max.y = 64;
|
||||
|
||||
#ifdef CE_MAP
|
||||
engineWorld = NULL;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void Engine::StartGame()
|
||||
|
@ -77,6 +102,14 @@
|
|||
|
||||
void Engine::AddObject( Object * v)
|
||||
{
|
||||
#ifdef CE_MAP
|
||||
if(engineWorld)
|
||||
{
|
||||
engineWorld->AddObject(v);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
Object ** Tab = listeObject; //On créai un pointeur sur la liste actuelle d'objet
|
||||
|
||||
listeObject = (Object**) malloc( sizeof(Object *) * ( nbobject + 1 ) );//On alloue l'espace nécéssaire pour le nouveau tableau
|
||||
|
@ -94,6 +127,14 @@
|
|||
|
||||
void Engine::DelObject( Object * v)
|
||||
{
|
||||
#ifdef CE_MAP
|
||||
if(engineWorld)
|
||||
{
|
||||
engineWorld->DelObject(v);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
Object ** Tab = listeObject;
|
||||
int index = -1;
|
||||
|
||||
|
@ -120,6 +161,13 @@
|
|||
|
||||
void Engine::DelAllObject()
|
||||
{
|
||||
#ifdef CE_MAP
|
||||
if(engineWorld)
|
||||
{
|
||||
engineWorld->DelAllObject();
|
||||
}
|
||||
#endif
|
||||
|
||||
for(int i = 0 ; i < nbobject ; i++)
|
||||
delete listeObject[i];
|
||||
|
||||
|
@ -159,6 +207,30 @@
|
|||
|
||||
void Engine::Draw()
|
||||
{
|
||||
|
||||
#ifdef CE_MAP
|
||||
if(engineWorld)
|
||||
{
|
||||
engineWorld->GetCurrentLevel()->DrawMap();
|
||||
|
||||
for( int i = 0 ; i < engineWorld->GetCurrentLevel()->GetNbObject() ; i++ )
|
||||
{
|
||||
if( engineWorld->GetCurrentLevel()->GetListeObject()[i]->GetEnable())
|
||||
if(engineWorld->GetCurrentLevel()->GetListeObject()[i]->GetRender())
|
||||
engineWorld->GetCurrentLevel()->GetListeObject()[i]->GetRender()->DrawObject();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( int i = 0 ; i < nbobject ; i++ )
|
||||
{
|
||||
if( listeObject[i]->GetEnable())
|
||||
if(listeObject[i]->GetRender())
|
||||
listeObject[i]->GetRender()->DrawObject();
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
||||
for( int i = 0 ; i < nbobject ; i++ )
|
||||
{
|
||||
if( listeObject[i]->GetEnable())
|
||||
|
@ -166,31 +238,96 @@
|
|||
listeObject[i]->GetRender()->DrawObject();
|
||||
}
|
||||
|
||||
if(fps)
|
||||
PrintV(110,2,getFps());
|
||||
#endif
|
||||
|
||||
if(fps) PrintV(110,2,getFps());
|
||||
}
|
||||
|
||||
/*
|
||||
bool Engine::WaitOneSecond()
|
||||
AABB * Engine::GetScreen()
|
||||
{
|
||||
if(RTC_getTicks() - time > 128) // si il s'est écoulé une seconde complète
|
||||
{
|
||||
time = RTC_getTicks(); // et on se rappelle du nombre de ticks de la dernière seconde écoulée
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
return &screen;
|
||||
}
|
||||
*/
|
||||
|
||||
void Engine::MoveScreen(int x , int y)
|
||||
{
|
||||
screen.min.x = x;
|
||||
screen.max.x = x + 64;
|
||||
screen.min.y = y;
|
||||
screen.max.y = y + 128;
|
||||
}
|
||||
|
||||
void Engine::MiddleScreen(int x , int y , bool fixe)
|
||||
{
|
||||
screen.min.x = x - 32;
|
||||
screen.max.x = x + 32;
|
||||
screen.min.y = y - 64;
|
||||
screen.max.y = y + 64;
|
||||
|
||||
if(fixe)
|
||||
{
|
||||
if( screen.min.x < 0 )
|
||||
{
|
||||
screen.min.x = 0;
|
||||
screen.max.x = 128;
|
||||
}
|
||||
|
||||
if(screen.min.y < 0)
|
||||
{
|
||||
screen.min.y = 0;
|
||||
screen.max.y = 63;
|
||||
}
|
||||
|
||||
#ifdef CE_MAP
|
||||
if(engineWorld)
|
||||
{
|
||||
if(screen.max.x > engineWorld->GetCurrentLevel()->levelWidth * engineWorld->GetCurrentLevel()->tileWidth)
|
||||
{
|
||||
screen.max.x = engineWorld->GetCurrentLevel()->levelWidth * engineWorld->GetCurrentLevel()->tileWidth;
|
||||
screen.min.x = screen.max.x - 128;
|
||||
}
|
||||
|
||||
if(screen.max.y > engineWorld->GetCurrentLevel()->levelHeight * engineWorld->GetCurrentLevel()->tileHeight)
|
||||
{
|
||||
screen.max.y = engineWorld->GetCurrentLevel()->levelHeight * engineWorld->GetCurrentLevel()->tileHeight;
|
||||
screen.min.y = screen.max.y - 64;
|
||||
}
|
||||
}
|
||||
#endif // CE_MAP
|
||||
}
|
||||
}
|
||||
|
||||
void Engine::UpdateRelativePosition()
|
||||
{
|
||||
#ifdef CE_MAP
|
||||
if(engineWorld)
|
||||
{
|
||||
for( int i = 0 ; i < engineWorld->GetCurrentLevel()->GetNbObject() ; i++ )
|
||||
{
|
||||
if( engineWorld->GetCurrentLevel()->GetListeObject()[i]->GetEnable())
|
||||
engineWorld->GetCurrentLevel()->GetListeObject()[i]->GetTransform()->SetRelativeXY( engineWorld->GetCurrentLevel()->GetListeObject()[i]->GetTransform()->GetX() - screen.min.x , engineWorld->GetCurrentLevel()->GetListeObject()[i]->GetTransform()->GetY() - screen.min.y );
|
||||
}
|
||||
}
|
||||
#endif // CE_MAP
|
||||
|
||||
for( int i = 0 ; i < nbobject; i++ )
|
||||
{
|
||||
if(listeObject[i]->GetEnable())
|
||||
listeObject[i]->GetTransform()->SetRelativeXY( listeObject[i]->GetTransform()->GetX() , listeObject[i]->GetTransform()->GetY() );
|
||||
listeObject[i]->GetTransform()->SetRelativeXY( listeObject[i]->GetTransform()->GetX() - screen.min.x , listeObject[i]->GetTransform()->GetY() - screen.min.y );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef CE_MAP
|
||||
|
||||
World * Engine::GetWorld()
|
||||
{
|
||||
return engineWorld;
|
||||
}
|
||||
|
||||
void Engine::SetWorld( World * v)
|
||||
{
|
||||
engineWorld = v;
|
||||
engineWorld->AffectEngine(this);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,162 @@
|
|||
/* ************************************************************************** */
|
||||
/* _____ */
|
||||
/* Level.cpp | ___| _ ____ ___ */
|
||||
/* Project : C-Engine | |_ | | | __| / _ \ */
|
||||
/* | _| | | | |= | __/ */
|
||||
/* By: Fife <wasabifife@gmail.com> |_| |_| |_| \___| */
|
||||
/* */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "..\Rework\include\Map\Level.hpp"
|
||||
|
||||
Level::Level()
|
||||
{
|
||||
worldLink = NULL;
|
||||
listeObject = NULL;
|
||||
nbObject = 0;
|
||||
|
||||
tileset = NULL;
|
||||
map = NULL;
|
||||
solid = NULL;
|
||||
|
||||
tileHeight = 0;
|
||||
tileWidth = 0;
|
||||
tilegap = 0;
|
||||
|
||||
levelHeight = 0;
|
||||
levelWidth = 0;
|
||||
|
||||
xscroll = 0;
|
||||
yscroll = 0;
|
||||
}
|
||||
|
||||
void Level::AffectWorld( World * v )
|
||||
{
|
||||
worldLink = v;
|
||||
}
|
||||
|
||||
World * Level::GetWorld()
|
||||
{
|
||||
return worldLink;
|
||||
}
|
||||
|
||||
void Level::SetMap( const unsigned char * userTileset , unsigned char * userMap , bool * userProperties, int userTileWidth , int userTileHeight , int userWorldWidth , int userWorldHeight)
|
||||
{
|
||||
|
||||
tileset = userTileset;
|
||||
map = userMap;
|
||||
solid = userProperties;
|
||||
|
||||
tileWidth = userTileWidth;
|
||||
tileHeight = userTileHeight;
|
||||
|
||||
tilegap = userTileHeight / 8;
|
||||
if(userTileHeight % 8)tilegap++;
|
||||
|
||||
levelWidth = userWorldWidth;
|
||||
levelHeight = userWorldHeight;
|
||||
|
||||
}
|
||||
|
||||
int Level::GetIdMap( int x , int y )
|
||||
{
|
||||
return *(map + levelWidth * y + x);
|
||||
}
|
||||
|
||||
void Level::ReplaceIdMap( int x , int y , char v )
|
||||
{
|
||||
*(map + levelWidth * y + x) = v;
|
||||
}
|
||||
|
||||
void Level::DrawMap()
|
||||
{
|
||||
int minx,maxx,miny,maxy;
|
||||
|
||||
int dy = levelHeight * tileHeight - worldLink->GetEngine()->GetScreen()->max.y ;
|
||||
|
||||
minx = worldLink->GetEngine()->GetScreen()->min.x / tileWidth ;
|
||||
miny = dy / tileHeight ;
|
||||
|
||||
maxx = 128 / tileWidth + minx + 2;
|
||||
maxy = 64 / tileHeight + miny + 2;
|
||||
|
||||
xscroll = worldLink->GetEngine()->GetScreen()->min.x ;
|
||||
yscroll = dy % tileHeight;
|
||||
|
||||
for( int i = minx; i < maxx; i++)
|
||||
{
|
||||
for( int j = miny ; j < maxy; j++)
|
||||
{
|
||||
if (!(i < 0 || i >= levelWidth || j < 0 || j >= levelHeight))
|
||||
ML_bmp_or_cl( tileset + tileHeight * tilegap * GetIdMap(i,j), (i * tileWidth ) - xscroll , ((j - miny) * tileHeight) - yscroll, tileWidth , tileHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Object ** Level::GetListeObject()
|
||||
{
|
||||
return listeObject;
|
||||
}
|
||||
|
||||
int Level::GetNbObject()
|
||||
{
|
||||
return nbObject;
|
||||
}
|
||||
|
||||
void Level::AddObject( Object * v)
|
||||
{
|
||||
Object ** Tab = listeObject; //On créai un pointeur sur la liste actuelle d'objet
|
||||
|
||||
listeObject = (Object**) malloc( sizeof(Object *) * ( nbObject + 1 ) );//On alloue l'espace nécéssaire pour le nouveau tableau
|
||||
|
||||
for( int i = 0 ; i < nbObject ; i++ )//On copie les pointeurs
|
||||
listeObject[i] = Tab[i];
|
||||
|
||||
listeObject[ nbObject ] = v; //Et on rajoute l'objet
|
||||
v->AffectEngine(GetWorld()->GetEngine());
|
||||
|
||||
nbObject ++;
|
||||
|
||||
delete Tab;
|
||||
}
|
||||
|
||||
bool Level::DelObject( Object * v)
|
||||
{
|
||||
Object ** Tab = listeObject;
|
||||
int index = -1;
|
||||
|
||||
if(!Tab)return false;
|
||||
|
||||
for( int i = 0 ; i < nbObject ; i++ )
|
||||
if(Tab[i] == v )
|
||||
index = i ;
|
||||
|
||||
if(index == -1)return false;
|
||||
|
||||
listeObject = (Object**) malloc( sizeof(Object *) * ( nbObject - 1) );
|
||||
|
||||
for( int i = 0 ; i < index ; i++ )
|
||||
listeObject[ i ] = Tab[ i ];
|
||||
|
||||
for(int i = index + 1 ; i < nbObject ; i++ )
|
||||
listeObject[ i - 1] = Tab[ i ];
|
||||
|
||||
nbObject --;
|
||||
delete v;
|
||||
delete Tab;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Level::DelAllObject()
|
||||
{
|
||||
for(int i = 0 ; i < nbObject ; i++)
|
||||
delete listeObject[i];
|
||||
|
||||
delete listeObject;
|
||||
listeObject = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
/* ************************************************************************** */
|
||||
/* _____ */
|
||||
/* World.cpp | ___| _ ____ ___ */
|
||||
/* Project : C-Engine | |_ | | | __| / _ \ */
|
||||
/* | _| | | | |= | __/ */
|
||||
/* By: Fife <wasabifife@gmail.com> |_| |_| |_| \___| */
|
||||
/* */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "..\Rework\include\Map\World.hpp"
|
||||
|
||||
World::World()
|
||||
{
|
||||
tabLevel = NULL;
|
||||
nbLevel = 0;
|
||||
currentLevel = 0;
|
||||
engineLink = NULL;
|
||||
}
|
||||
|
||||
void World::AffectEngine(Engine * EV)
|
||||
{
|
||||
engineLink = EV;
|
||||
}
|
||||
|
||||
Engine * World::GetEngine()
|
||||
{
|
||||
return engineLink;
|
||||
}
|
||||
|
||||
void World::SetLevel( Level ** userTabLevel , int userNbLevel)
|
||||
{
|
||||
tabLevel = userTabLevel;
|
||||
nbLevel = userNbLevel;
|
||||
|
||||
for(int i = 0 ; i < nbLevel ; i++ )
|
||||
tabLevel[i]->AffectWorld(this);
|
||||
}
|
||||
|
||||
void World::SetLevel( Level * userLevel)
|
||||
{
|
||||
tabLevel = new Level*[1];
|
||||
tabLevel[0] = userLevel;
|
||||
|
||||
nbLevel = 1;
|
||||
|
||||
userLevel->AffectWorld(this);
|
||||
}
|
||||
|
||||
void World::DrawLevel()
|
||||
{
|
||||
if(tabLevel)tabLevel[currentLevel]->DrawMap();
|
||||
}
|
||||
|
||||
Level * World::GetCurrentLevel()
|
||||
{
|
||||
return tabLevel[currentLevel];
|
||||
}
|
||||
|
||||
Level * World::GetLevel(int id)
|
||||
{
|
||||
return tabLevel[id];
|
||||
}
|
||||
|
||||
void World::AddObject( Object * v, int level)
|
||||
{
|
||||
if(level < 0 && tabLevel)tabLevel[currentLevel]->AddObject(v);
|
||||
|
||||
if( level < nbLevel && level >= 0 && tabLevel)
|
||||
{
|
||||
tabLevel[level]->AddObject(v);
|
||||
}
|
||||
}
|
||||
|
||||
void World::DelObject( Object * v)
|
||||
{
|
||||
if(tabLevel)
|
||||
{
|
||||
if(!tabLevel[currentLevel]->DelObject(v))
|
||||
{
|
||||
for(int i = 0 ; i < nbLevel ; i++ )
|
||||
{
|
||||
if(tabLevel[i]->DelObject(v))return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void World::DelAllObject()
|
||||
{
|
||||
if(tabLevel)
|
||||
{
|
||||
for(int i = 0 ; i < nbLevel ; i++ )
|
||||
{
|
||||
tabLevel[i]->DelAllObject();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue