Level loading modularized. Levels auto-load/cache tilesets that are already loaded and shared between maps.
This commit is contained in:
parent
9247ecb528
commit
8d5d509c7c
@ -26,10 +26,9 @@ Crawler::Crawler()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Crawler::OnUserCreate(){
|
bool Crawler::OnUserCreate(){
|
||||||
TMXParser level1("assets/maps/Level1.tmx");
|
InitializeLevel("assets/maps/Level1.tmx",LEVEL1);
|
||||||
MAP_DATA[LEVEL1]=level1.GetData();
|
InitializeLevel("assets/maps/Level2.tmx",LEVEL2);
|
||||||
TMXParser level2("assets/maps/Level2.tmx");
|
InitializeLevel("assets/Campaigns/1_1.tmx",CAMPAIGN_1_1);
|
||||||
MAP_DATA[LEVEL2]=level2.GetData();
|
|
||||||
|
|
||||||
//Initialize Camera.
|
//Initialize Camera.
|
||||||
camera=Camera2D{WINDOW_SIZE};
|
camera=Camera2D{WINDOW_SIZE};
|
||||||
@ -796,6 +795,22 @@ void Crawler::SetupWorldShake(float duration){
|
|||||||
camera.SetTarget(worldShake);
|
camera.SetTarget(worldShake);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Crawler::InitializeLevel(std::string mapFile,MapName map){
|
||||||
|
TMXParser level(mapFile);
|
||||||
|
size_t slashMarker = mapFile.find_last_of('/');
|
||||||
|
std::string baseDir=mapFile.substr(0,slashMarker+1);
|
||||||
|
MAP_DATA[map]=level.GetData();
|
||||||
|
for(XMLTag&tag:MAP_DATA[map].TilesetData){
|
||||||
|
if(tag.tag=="tileset"&&MAP_TILESETS.find(tag.data["source"])==MAP_TILESETS.end()){
|
||||||
|
Renderable*r=new Renderable();
|
||||||
|
MAP_TILESETS[tag.data["source"]]=r;
|
||||||
|
r->Load(baseDir+tag.data["source"]);
|
||||||
|
std::cout<<"Missing tileset:"<<baseDir+tag.data["source"]<<". Loaded from source."<<std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
Crawler demo;
|
Crawler demo;
|
||||||
|
@ -21,6 +21,7 @@ class Crawler : public olc::PixelGameEngine
|
|||||||
GFX_Battlecry_Effect,GFX_Mana,GFX_SonicSlash;
|
GFX_Battlecry_Effect,GFX_Mana,GFX_SonicSlash;
|
||||||
std::vector<Effect>foregroundEffects,backgroundEffects;
|
std::vector<Effect>foregroundEffects,backgroundEffects;
|
||||||
std::map<MapName,Map>MAP_DATA;
|
std::map<MapName,Map>MAP_DATA;
|
||||||
|
std::map<std::string,Renderable*>MAP_TILESETS;
|
||||||
vf2d worldShake={};
|
vf2d worldShake={};
|
||||||
float worldShakeTime=0;
|
float worldShakeTime=0;
|
||||||
float lastWorldShakeAdjust=0;
|
float lastWorldShakeAdjust=0;
|
||||||
@ -36,6 +37,7 @@ public:
|
|||||||
bool OnUserCreate() override;
|
bool OnUserCreate() override;
|
||||||
bool OnUserUpdate(float fElapsedTime) override;
|
bool OnUserUpdate(float fElapsedTime) override;
|
||||||
void InitializeAnimations();
|
void InitializeAnimations();
|
||||||
|
void InitializeLevel(std::string mapFile,MapName map);
|
||||||
void HandleUserInput(float fElapsedTime);
|
void HandleUserInput(float fElapsedTime);
|
||||||
void UpdateCamera(float fElapsedTime);
|
void UpdateCamera(float fElapsedTime);
|
||||||
void UpdateEffects(float fElapsedTime);
|
void UpdateEffects(float fElapsedTime);
|
||||||
|
@ -2,4 +2,5 @@
|
|||||||
enum MapName{
|
enum MapName{
|
||||||
LEVEL1,
|
LEVEL1,
|
||||||
LEVEL2,
|
LEVEL2,
|
||||||
|
CAMPAIGN_1_1,
|
||||||
};
|
};
|
@ -2,7 +2,7 @@
|
|||||||
#define VERSION_MAJOR 0
|
#define VERSION_MAJOR 0
|
||||||
#define VERSION_MINOR 2
|
#define VERSION_MINOR 2
|
||||||
#define VERSION_PATCH 0
|
#define VERSION_PATCH 0
|
||||||
#define VERSION_BUILD 121
|
#define VERSION_BUILD 125
|
||||||
|
|
||||||
#define stringify(a) stringify_(a)
|
#define stringify(a) stringify_(a)
|
||||||
#define stringify_(a) #a
|
#define stringify_(a) #a
|
||||||
|
Loading…
x
Reference in New Issue
Block a user