From c84ed645f00d0b256599462e093b9b3f29e64710 Mon Sep 17 00:00:00 2001 From: Sam Mario Svensson Date: Fri, 24 Jan 2014 10:22:18 +0100 Subject: [PATCH] GameLogic - implementation of LevelLoader --- Code/Dokumentation/LevelLoader.uxf | 300 +++++++++++++------------- Code/Game/GameLogic/GameLogic.vcxproj | 4 + Code/Game/GameLogic/LevelLoader.cpp | 17 ++ Code/Game/GameLogic/LevelLoader.h | 29 +++ Code/Game/GameLogic/Loader.cpp | 18 ++ Code/Game/GameLogic/Loader.h | 28 +++ 6 files changed, 246 insertions(+), 150 deletions(-) create mode 100644 Code/Game/GameLogic/LevelLoader.cpp create mode 100644 Code/Game/GameLogic/LevelLoader.h create mode 100644 Code/Game/GameLogic/Loader.cpp create mode 100644 Code/Game/GameLogic/Loader.h diff --git a/Code/Dokumentation/LevelLoader.uxf b/Code/Dokumentation/LevelLoader.uxf index 723857bb..6cfb9c29 100644 --- a/Code/Dokumentation/LevelLoader.uxf +++ b/Code/Dokumentation/LevelLoader.uxf @@ -1,61 +1,6 @@ 8 - - com.umlet.element.Package - - 552 - 320 - 584 - 368 - - LevelLoader - - - - com.umlet.element.Class - - 440 - 88 - 128 - 40 - - GameLogic -<<Erik>> - - - - com.umlet.element.Relation - - 768 - 472 - 136 - 104 - - lt=<<<<- - 120;24;120;88;24;88 - - - com.umlet.element.Class - - 560 - 544 - 232 - 136 - - <<Interface>> -Parser --- -Functions: -vector<struct> Parse(); -- -Privates: -enum headerType; -const int FileHeaderSize; -const int FileVersion; - - - com.umlet.element.Class @@ -71,85 +16,39 @@ const int FileVersion; com.umlet.element.Relation - 640 + 840 208 - 40 + 88 168 - lt=<<. - 24;24;24;152 - - - com.umlet.element.Relation - - 384 - 176 - 256 - 56 - - lt=->>>> -m1=1..1 -m2=1..1 -<Knows about - 240;40;24;40 - - - com.umlet.element.Package - - 248 - 320 - 248 - 160 - - Defines - + lt=. +<Uses + 24;24;24;64;72;64;72;152 com.umlet.element.Class - 800 - 360 - 208 - 136 + 928 + 560 + 200 + 120 - <<Interface>> -Loader + Collection of functions +<<lots of functions>> -- -Functions: -wchar* LoadFile(string fileName); -Model* LoadModel(string modelName); -Model* LoadModel(int modelID); -- -Privates: +functions for creating the right structs com.umlet.element.Class - 328 - 208 - 80 - 24 + 440 + 88 + 128 + 40 - Defines - - - - com.umlet.element.Class - - 256 - 360 - 232 - 104 - - Defines.h -<<Header file>> --- -Enum ObjectType(static, dynamic, specials); -. -Struct static; -Struct dynamic; -Struct specials + GameLogic +<<Erik>> @@ -169,28 +68,32 @@ Uses> com.umlet.element.Class - 816 - 192 - 128 - 40 + 800 + 360 + 208 + 136 - Resource Loader -<<Dennis>><<Singleton> + <<Interface>> +Loader +-- +Functions: +wchar* LoadFile(string fileName); +//Model* LoadHitBoxes(string modelName); +//Model* LoadHitBoxes(int modelID); +- +Privates: - com.umlet.element.Class + com.umlet.element.Relation - 928 - 560 - 200 - 120 + 344 + 208 + 40 + 168 - Collection of functions -<<lots of functions>> --- -functions for creating the right structs - + lt=<<. + 24;24;24;152 com.umlet.element.Relation @@ -206,6 +109,61 @@ m2=1..1 Uses> 24;40;160;40 + + com.umlet.element.Class + + 816 + 192 + 128 + 40 + + Resource Loader +<<Dennis>><<Singleton> + + + + com.umlet.element.Relation + + 768 + 472 + 136 + 104 + + lt=<<<<- + 120;24;120;88;24;88 + + + com.umlet.element.Relation + + 384 + 176 + 256 + 56 + + lt=->>>> +m1=1..1 +m2=1..1 +<Knows about + 240;40;24;40 + + + com.umlet.element.Class + + 256 + 360 + 232 + 104 + + Defines.h +<<Header file>> +-- +Enum ObjectType(static, dynamic, specials); +. +Struct static; +Struct dynamic; +Struct specials + + com.umlet.element.Class @@ -229,7 +187,7 @@ Privates: com.umlet.element.Relation - 344 + 640 208 40 168 @@ -238,27 +196,26 @@ Privates: 24;24;24;152 - com.umlet.element.Relation + com.umlet.element.Class - 840 + 328 208 - 88 - 168 + 80 + 24 - lt=. -<Uses - 24;24;24;64;72;64;72;152 + Defines + - com.umlet.element.Relation + com.umlet.element.Package - 656 - 472 - 40 - 88 + 248 + 320 + 248 + 160 - lt=<<<<- - 24;72;24;24 + Defines + com.umlet.element.Relation @@ -274,4 +231,47 @@ m2=1..1 Uses> 24;40;80;40;120;40;120;144 + + com.umlet.element.Relation + + 656 + 472 + 40 + 88 + + lt=<<<<- + 24;72;24;24 + + + com.umlet.element.Class + + 560 + 544 + 232 + 136 + + <<Interface>> +Parser +-- +Functions: +vector<struct> Parse(); +- +Privates: +enum headerType; +const int FileHeaderSize; +const int FileVersion; + + + + + com.umlet.element.Package + + 552 + 320 + 584 + 368 + + LevelLoader + + diff --git a/Code/Game/GameLogic/GameLogic.vcxproj b/Code/Game/GameLogic/GameLogic.vcxproj index 6b66a9d5..bfa96d35 100644 --- a/Code/Game/GameLogic/GameLogic.vcxproj +++ b/Code/Game/GameLogic/GameLogic.vcxproj @@ -184,6 +184,8 @@ + + @@ -202,6 +204,8 @@ + + diff --git a/Code/Game/GameLogic/LevelLoader.cpp b/Code/Game/GameLogic/LevelLoader.cpp new file mode 100644 index 00000000..0e302d37 --- /dev/null +++ b/Code/Game/GameLogic/LevelLoader.cpp @@ -0,0 +1,17 @@ +////////////////////////////////// +// Created by Sam Svensson 2013 // +////////////////////////////////// + +#include "LevelLoader.h" +using namespace GameLogic; +using namespace GameLogic::LevelLoader; + +std::vector LevelLoader::LoadLevel(std::string fileName) +{ + Parser->parse(fileName); +} + +std::vector LevelLoader::LoadLevelHeader(std::string fileName) +{ + parser->parseHeader(fileName); +} \ No newline at end of file diff --git a/Code/Game/GameLogic/LevelLoader.h b/Code/Game/GameLogic/LevelLoader.h new file mode 100644 index 00000000..c33cd09b --- /dev/null +++ b/Code/Game/GameLogic/LevelLoader.h @@ -0,0 +1,29 @@ +////////////////////////////////// +// Created by Sam Svensson 2013 // +////////////////////////////////// + +#ifndef LEVELLOADER_H +#define LEVELLOADER_H + +#include +#include +#include "ObjectDefines.h" +#include "LevelParser.h" + +namespace GameLogic +{ + class LevelLoader + { + + public: + LevelLoader(){this->parser = new Parser()}; + ~LevelLoader(){}; + std::vector LoadLevel(std::string fileName); //loads the level and objects from file + std::vector LoadLevelHeader(std::string fileName); //just for fast access for the meta information about the level. + + private: + LevelParser parser; + }; +} + +#endif \ No newline at end of file diff --git a/Code/Game/GameLogic/Loader.cpp b/Code/Game/GameLogic/Loader.cpp new file mode 100644 index 00000000..3cc68c50 --- /dev/null +++ b/Code/Game/GameLogic/Loader.cpp @@ -0,0 +1,18 @@ +////////////////////////////////// +// Created by Sam Svensson 2013 // +////////////////////////////////// + +#include "Loader.h" + +using namespace GameLogic::LevelLoader; +using namespace Oyster::Resource; +using namespace std; + +char* Loader::LoadFile(std::string fileName) +{ + //convert from string to wstring + std::wstring temp(fileName.begin(), fileName.end()); + + //convert from wstring to wchar then loads the file + return OysterResource::LoadResource(temp.c_str(), Oyster::Resource::ResourceType::ResourceType_Byte_Raw, -1 , false); +} \ No newline at end of file diff --git a/Code/Game/GameLogic/Loader.h b/Code/Game/GameLogic/Loader.h new file mode 100644 index 00000000..0d0a662f --- /dev/null +++ b/Code/Game/GameLogic/Loader.h @@ -0,0 +1,28 @@ +////////////////////////////////// +// Created by Sam Svensson 2013 // +////////////////////////////////// + +#ifndef LOADER_H +#define LOADER_H + +#include "Resource\OysterResource.h" +#include + +namespace GameLogic +{ + namespace LevelLoader + { + class Loader + { + public: + Loader(){}; + ~Loader(){}; + char* LoadFile(std::string fileName); + + //TODO: + //Add functionality to load physicsObjects (hitboxes) + }; + } +} + +#endif; \ No newline at end of file