diff --git a/Bin/Level.txt b/Bin/Level.txt
new file mode 100644
index 00000000..d86dd3db
Binary files /dev/null and b/Bin/Level.txt differ
diff --git a/Bin/map b/Bin/map
new file mode 100644
index 00000000..a578cc32
Binary files /dev/null and b/Bin/map differ
diff --git a/Bin/map.txt b/Bin/map.txt
new file mode 100644
index 00000000..e5c751fb
Binary files /dev/null and b/Bin/map.txt differ
diff --git a/Code/Dokumentation/LevelLoader.uxf b/Code/Dokumentation/LevelLoader.uxf
index 723857bb..b5cef8f0 100644
--- a/Code/Dokumentation/LevelLoader.uxf
+++ b/Code/Dokumentation/LevelLoader.uxf
@@ -2,21 +2,67 @@
8
- com.umlet.element.Package
+ com.umlet.element.Relation
- 552
- 320
- 584
- 368
+ 632
+ 232
+ 88
+ 176
- LevelLoader
+ lt=.
+<Uses
+ 24;24;24;64;72;64;72;160
+
+
+ com.umlet.element.Relation
+
+ 136
+ 232
+ 40
+ 168
+
+ lt=<<.
+ 24;24;24;152
+
+
+ com.umlet.element.Relation
+
+ 448
+ 496
+ 40
+ 88
+
+ lt=<<<<-
+ 24;72;24;24
+
+
+ com.umlet.element.Relation
+
+ 432
+ 232
+ 40
+ 168
+
+ lt=<<.
+ 24;24;24;152
+
+
+ com.umlet.element.Class
+
+ 608
+ 216
+ 128
+ 40
+
+ Resource Loader
+<<Dennis>><<Singleton>
com.umlet.element.Class
- 440
- 88
+ 232
+ 112
128
40
@@ -25,26 +71,26 @@
- com.umlet.element.Relation
+ com.umlet.element.Class
- 768
- 472
- 136
- 104
+ 120
+ 232
+ 80
+ 24
- lt=<<<<-
- 120;24;120;88;24;88
+ Defines
+
com.umlet.element.Class
- 560
- 544
+ 352
+ 568
232
136
<<Interface>>
-Parser
+LevelParser
--
Functions:
vector<struct> Parse();
@@ -53,164 +99,39 @@ Privates:
enum headerType;
const int FileHeaderSize;
const int FileVersion;
-
-
-
-
- com.umlet.element.Class
-
- 624
- 208
- 80
- 24
-
- LevelLoader
com.umlet.element.Relation
- 640
- 208
- 40
- 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
+ 336
+ 88
+ 136
160
- Defines
-
-
-
- com.umlet.element.Class
-
- 800
- 360
- 208
- 136
-
- <<Interface>>
-Loader
---
-Functions:
-wchar* LoadFile(string fileName);
-Model* LoadModel(string modelName);
-Model* LoadModel(int modelID);
--
-Privates:
-
-
-
- com.umlet.element.Class
-
- 328
- 208
- 80
- 24
-
- Defines
-
-
-
- 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.Relation
-
- 680
- 176
- 152
- 56
-
- lt=-
+ lt=lt=->>>>
m1=1..1
m2=1..1
Uses>
- 24;40;136;40
-
-
- com.umlet.element.Class
-
- 816
- 192
- 128
- 40
-
- Resource Loader
-<<Dennis>><<Singleton>
-
-
-
- com.umlet.element.Class
-
- 928
- 560
- 200
- 120
-
- Collection of functions
-<<lots of functions>>
---
-functions for creating the right structs
-
+ 24;40;80;40;120;40;120;144
com.umlet.element.Relation
-
- 768
- 576
- 176
- 56
-
- lt=-
-m1=1..1
-m2=1..1
-Uses>
- 24;40;160;40
-
-
- com.umlet.element.Class
560
- 360
+ 496
+ 136
+ 104
+
+ lt=<<<<-
+ 120;24;120;88;24;88
+
+
+ com.umlet.element.Class
+
+ 352
+ 384
232
136
@@ -229,49 +150,128 @@ Privates:
com.umlet.element.Relation
- 344
- 208
- 40
- 168
+ 560
+ 600
+ 176
+ 56
- lt=<<.
- 24;24;24;152
-
-
- com.umlet.element.Relation
-
- 840
- 208
- 88
- 168
-
- lt=.
-<Uses
- 24;24;24;64;72;64;72;152
-
-
- com.umlet.element.Relation
-
- 656
- 472
- 40
- 88
-
- lt=<<<<-
- 24;72;24;24
-
-
- com.umlet.element.Relation
-
- 544
- 64
- 136
- 160
-
- lt=lt=->>>>
+ lt=-
m1=1..1
m2=1..1
Uses>
- 24;40;80;40;120;40;120;144
+ 24;40;160;40
+
+
+ com.umlet.element.Package
+
+ 344
+ 344
+ 584
+ 368
+
+ LevelLoader
+
+
+
+ com.umlet.element.Relation
+
+ 472
+ 200
+ 152
+ 56
+
+ lt=-
+m1=1..1
+m2=1..1
+Uses>
+ 24;40;136;40
+
+
+ com.umlet.element.Class
+
+ 416
+ 232
+ 80
+ 24
+
+ LevelLoader
+
+
+
+
+ com.umlet.element.Class
+
+ 48
+ 384
+ 232
+ 104
+
+ ObjectDefines.h
+<<Header file>>
+--
+Enum ObjectType(static, dynamic, specials);
+.
+Struct static;
+Struct dynamic;
+Struct specials
+
+
+
+ com.umlet.element.Class
+
+ 720
+ 584
+ 200
+ 120
+
+ Collection of functions
+<<lots of functions>>
+--
+functions for creating the right structs
+
+
+
+ com.umlet.element.Package
+
+ 40
+ 344
+ 248
+ 160
+
+ Defines
+
+
+
+ com.umlet.element.Class
+
+ 592
+ 392
+ 208
+ 128
+
+ <<Interface>>
+Loader
+--
+Functions:
+wchar* LoadFile(string fileName);
+//Model* LoadHitBoxes(string modelName);
+//Model* LoadHitBoxes(int modelID);
+-
+Privates:
+
+
+
+ com.umlet.element.Relation
+
+ 176
+ 200
+ 256
+ 56
+
+ lt=->>>>
+m1=1..1
+m2=1..1
+<Knows about
+ 240;40;24;40
diff --git a/Code/Game/GameLogic/GameLogic.vcxproj b/Code/Game/GameLogic/GameLogic.vcxproj
index 6b66a9d5..809c82b5 100644
--- a/Code/Game/GameLogic/GameLogic.vcxproj
+++ b/Code/Game/GameLogic/GameLogic.vcxproj
@@ -184,7 +184,12 @@
+
+
+
+
+
@@ -202,7 +207,11 @@
+
+
+
+
diff --git a/Code/Game/GameLogic/LevelLoader/LevelLoader.cpp b/Code/Game/GameLogic/LevelLoader/LevelLoader.cpp
new file mode 100644
index 00000000..d60aac66
--- /dev/null
+++ b/Code/Game/GameLogic/LevelLoader/LevelLoader.cpp
@@ -0,0 +1,18 @@
+//////////////////////////////////
+// Created by Sam Svensson 2013 //
+//////////////////////////////////
+
+#include "LevelLoader.h"
+using namespace GameLogic;
+using namespace GameLogic::LevelFileLoader;
+
+
+std::vector LevelLoader::LoadLevel(std::string fileName)
+{
+ return parser.Parse(fileName);
+}
+
+LevelMetaData LevelLoader::LoadLevelHeader(std::string fileName)
+{
+ return parser.ParseHeader(fileName);
+}
\ No newline at end of file
diff --git a/Code/Game/GameLogic/LevelLoader/LevelLoader.h b/Code/Game/GameLogic/LevelLoader/LevelLoader.h
new file mode 100644
index 00000000..4ac7a950
--- /dev/null
+++ b/Code/Game/GameLogic/LevelLoader/LevelLoader.h
@@ -0,0 +1,42 @@
+//////////////////////////////////
+// Created by Sam Svensson 2013 //
+//////////////////////////////////
+
+#ifndef LEVELLOADER_H
+#define LEVELLOADER_H
+
+#include
+#include
+#include
+#include "ObjectDefines.h"
+#include "LevelParser.h"
+
+namespace GameLogic
+{
+ class LevelLoader
+ {
+
+ public:
+ LevelLoader(){this->parser = GameLogic::LevelFileLoader::LevelParser(); }
+ ~LevelLoader(){}
+
+ /********************************************************
+ * Loads the level and objects from file.
+ * @param fileName: Path to the level-file that you want to load.
+ * @return: Returns all structs with objects and information about the level.
+ ********************************************************/
+ std::vector LoadLevel(std::string fileName);
+
+ /********************************************************
+ * Just for fast access for the meta information about the level.
+ * @param fileName: Path to the level-file that you want to load.
+ * @return: Returns the meta information about the level.
+ ********************************************************/
+ LevelMetaData LoadLevelHeader(std::string fileName); //.
+
+ private:
+ GameLogic::LevelFileLoader::LevelParser parser;
+ };
+}
+
+#endif
\ No newline at end of file
diff --git a/Code/Game/GameLogic/LevelLoader/LevelParser.cpp b/Code/Game/GameLogic/LevelLoader/LevelParser.cpp
new file mode 100644
index 00000000..3ab3c203
--- /dev/null
+++ b/Code/Game/GameLogic/LevelLoader/LevelParser.cpp
@@ -0,0 +1,117 @@
+#include "LevelParser.h"
+
+#include "Loader.h"
+#include "ParseFunctions.h"
+
+using namespace GameLogic;
+using namespace ::LevelFileLoader;
+
+LevelParser::LevelParser()
+{
+ formatVersion.formatVersionMajor = 1;
+ formatVersion.formatVersionMinor = 0;
+}
+
+LevelParser::~LevelParser()
+{
+}
+
+std::vector LevelParser::Parse(std::string filename)
+{
+ int bufferSize = 0;
+ int counter = 0;
+
+ std::vector objects;
+
+ //Read entire level file.
+ Loader loader;
+ char* buffer = (char*)loader.LoadFile(filename.c_str(), bufferSize);
+
+ //Read format version
+ FormatVersion levelFormatVersion;
+ //ParseObject(&buffer[counter], &levelFormatVersion, sizeof(formatVersion));
+ if(this->formatVersion != levelFormatVersion)
+ {
+ //Do something if it's not the same version
+ }
+
+ while(counter < bufferSize)
+ {
+ //Get typeID
+ ObjectTypeHeader typeID;
+ ParseObject(&buffer[counter], &typeID, sizeof(typeID));
+ switch((int)typeID.typeID)
+ {
+ case ObjectType_LevelMetaData:
+ {
+ LevelMetaData header;
+ ParseLevelMetaData(&buffer[counter], header, counter);
+ objects.push_back(header);
+ break;
+ }
+
+ case ObjectType_Dynamic:
+ {
+ ObjectHeader header;
+ ParseObject(&buffer[counter], &header, sizeof(header));
+ objects.push_back(header);
+ counter += sizeof(header);
+ break;
+ }
+
+ default:
+ //Couldn't find typeID. FAIL!!!!!!
+ break;
+ }
+ }
+
+ return objects;
+}
+
+//för meta information om leveln.
+LevelMetaData LevelParser::ParseHeader(std::string filename)
+{
+ int bufferSize = 0;
+ int counter = 0;
+
+ LevelMetaData levelHeader;
+ levelHeader.typeID = ObjectType::ObjectType_Unknown;
+
+ //Read entire level file.
+ Loader loader;
+ char* buffer = (char*)loader.LoadFile(filename.c_str(), bufferSize);
+
+ //Read format version
+ FormatVersion levelFormatVersion;
+ //ParseObject(&buffer[counter], &levelFormatVersion, sizeof(formatVersion));
+ if(this->formatVersion != levelFormatVersion)
+ {
+ //Do something if it's not the same version
+ }
+
+ //Find the header in the returned string.
+ while(counter < bufferSize)
+ {
+ ObjectTypeHeader typeID;
+ ParseObject(&buffer[counter], &typeID, sizeof(typeID));
+
+ switch(typeID.typeID)
+ {
+ case ObjectType_LevelMetaData:
+ ParseLevelMetaData(&buffer[counter], levelHeader, counter);
+ return levelHeader;
+ break;
+ case ObjectType_Dynamic:
+ //Do not call parse this object, since we are only interested in the LevelMetaData
+ //Only increase the counter size
+ counter += sizeof(ObjectHeader);
+ break;
+
+ default:
+ //Couldn't find typeID. FAIL!!!!!!
+ break;
+ }
+ }
+
+ return levelHeader;
+}
\ No newline at end of file
diff --git a/Code/Game/GameLogic/LevelLoader/LevelParser.h b/Code/Game/GameLogic/LevelLoader/LevelParser.h
new file mode 100644
index 00000000..6dce25f8
--- /dev/null
+++ b/Code/Game/GameLogic/LevelLoader/LevelParser.h
@@ -0,0 +1,30 @@
+#ifndef LEVEL_PARSER_H
+#define LEVEL_PARSER_H
+
+#include
+#include
+#include "ObjectDefines.h"
+
+namespace GameLogic
+{
+ namespace LevelFileLoader
+ {
+ class LevelParser
+ {
+ public:
+ LevelParser();
+ ~LevelParser();
+
+ //
+ std::vector Parse(std::string filename);
+
+ //
+ LevelMetaData ParseHeader(std::string filename);
+
+ private:
+ FormatVersion formatVersion;
+
+ };
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Code/Game/GameLogic/LevelLoader/Loader.cpp b/Code/Game/GameLogic/LevelLoader/Loader.cpp
new file mode 100644
index 00000000..3e15315c
--- /dev/null
+++ b/Code/Game/GameLogic/LevelLoader/Loader.cpp
@@ -0,0 +1,22 @@
+//////////////////////////////////
+// Created by Sam Svensson 2013 //
+//////////////////////////////////
+
+#include "Loader.h"
+#include
+
+using namespace GameLogic::LevelFileLoader;
+using namespace Oyster::Resource;
+using namespace std;
+
+char* Loader::LoadFile(std::string fileName, int &size)
+{
+ //convert from string to wstring
+ std::wstring temp(fileName.begin(), fileName.end());
+
+ //convert from wstring to wchar then loads the file
+ char* buffer = (char*)OysterResource::LoadResource(temp.c_str(), Oyster::Resource::ResourceType::ResourceType_Byte_Raw, -1 , false);
+
+ size = OysterResource::GetResourceSize(buffer);
+ return buffer;
+}
\ No newline at end of file
diff --git a/Code/Game/GameLogic/LevelLoader/Loader.h b/Code/Game/GameLogic/LevelLoader/Loader.h
new file mode 100644
index 00000000..198c2a87
--- /dev/null
+++ b/Code/Game/GameLogic/LevelLoader/Loader.h
@@ -0,0 +1,28 @@
+//////////////////////////////////
+// Created by Sam Svensson 2013 //
+//////////////////////////////////
+
+#ifndef LOADER_H
+#define LOADER_H
+
+#include "..\Misc\Resource\OysterResource.h"
+#include
+
+namespace GameLogic
+{
+ namespace LevelFileLoader
+ {
+ class Loader
+ {
+ public:
+ Loader (){};
+ ~Loader(){};
+ char* LoadFile(std::string fileName, int &size);
+
+ //TODO:
+ //Add functionality to load physicsObjects (hitboxes)
+ };
+ }
+}
+
+#endif;
\ No newline at end of file
diff --git a/Code/Game/GameLogic/LevelLoader/ObjectDefines.h b/Code/Game/GameLogic/LevelLoader/ObjectDefines.h
new file mode 100644
index 00000000..dcf960a5
--- /dev/null
+++ b/Code/Game/GameLogic/LevelLoader/ObjectDefines.h
@@ -0,0 +1,109 @@
+#ifndef OBJECT_DEFINES_H
+#define OBJECT_DEFINES_H
+
+#include
+#include
+
+namespace GameLogic
+{
+ /************************************
+ Enums
+ *************************************/
+
+ enum ObjectType
+ {
+ ObjectType_LevelMetaData,
+ ObjectType_Static,
+ ObjectType_Dynamic,
+ //Etc
+
+ ObjectType_NUM_OF_TYPES,
+
+ ObjectType_Unknown = -1,
+ };
+
+ enum UsePhysics
+ {
+ UsePhysics_UseFullPhysics,
+ UsePhysics_IgnoreGravity,
+ UsePhysics_IgnorePhysics,
+
+ UsePhysics_Count,
+ UsePhysics_Unknown = -1,
+ };
+
+ //Should this be moved somewhere else?
+ enum GameMode
+ {
+ GameMode_FreeForAll,
+ GameMode_TeamDeathMatch,
+ //Etc
+
+ GameMode_Count,
+ GameMode_Unknown = -1,
+ };
+
+
+ /************************************
+ Structs
+ *************************************/
+
+ struct FormatVersion
+ {
+ int formatVersionMajor;
+ int formatVersionMinor;
+
+ bool operator ==(const FormatVersion& obj)
+ {
+ return (this->formatVersionMajor != obj.formatVersionMajor && this->formatVersionMinor != obj.formatVersionMinor);
+ }
+
+ bool operator !=(const FormatVersion& obj)
+ {
+ return !(*this == obj);
+ }
+ };
+
+ struct ObjectTypeHeader
+ {
+ ObjectType typeID;
+ };
+
+ struct PhysicsObject
+ {
+ float mass;
+ float elasticity;
+ float frictionCoeffStatic;
+ float frictionCoeffDynamic;
+ float inertiaTensor[16];
+ UsePhysics usePhysics;
+ };
+
+ struct LevelMetaData : ObjectTypeHeader
+ {
+ std::string levelName;
+ FormatVersion levelVersion;
+ std::string levelDescription;
+ std::string levelAuthor;
+ int maxNumberOfPlayer;
+ float worldSize;
+ int overviewPictureID;
+ std::vector gameModesSupported;
+ };
+
+ struct ObjectHeader : public ObjectTypeHeader
+ {
+ //Model,
+ int ModelID;
+ //Texture
+ int TextureID;
+ //Position
+ float position[3];
+ //Rotation
+ float rotation[3];
+ //Scale
+ float scale[3];
+ };
+}
+
+#endif
\ No newline at end of file
diff --git a/Code/Game/GameLogic/LevelLoader/ParseFunctions.cpp b/Code/Game/GameLogic/LevelLoader/ParseFunctions.cpp
new file mode 100644
index 00000000..f456b2d7
--- /dev/null
+++ b/Code/Game/GameLogic/LevelLoader/ParseFunctions.cpp
@@ -0,0 +1,80 @@
+//////////////////////////////////
+// Created by Sam Svensson 2013 //
+//////////////////////////////////
+
+#include "ParseFunctions.h"
+#include "../../../Misc/Packing/Packing.h"
+#include
+
+using namespace Oyster::Packing;
+using namespace GameLogic::LevelFileLoader;
+using namespace GameLogic;
+using namespace std;
+
+namespace GameLogic
+{
+ namespace LevelFileLoader
+ {
+ void ParseObject(char* buffer, void *header, int size)
+ {
+ memcpy(header, buffer, size);
+ }
+
+ void ParseLevelMetaData(char* buffer, LevelMetaData &header, int &size)
+ {
+ int start = 0;
+ int tempSize;
+ char tempName[100];
+
+ memcpy(&header.typeID, &buffer[start], 4);
+ start += 4;
+
+ memcpy(&tempSize , &buffer[start], 4);
+ start += 4;
+
+ memcpy(&tempName, &buffer[start], tempSize);
+ header.levelName.assign(&tempName[0], &tempName[tempSize]);
+ start += tempSize;
+
+ memcpy(&header.levelVersion, &buffer[start], 8);
+ start += 8;
+
+ memcpy(&tempSize, &buffer[start], 4);
+ start +=4;
+
+ memcpy(&tempName, &buffer[start], tempSize);
+ header.levelDescription.assign(&tempName[0], &tempName[tempSize]);
+ start += tempSize;
+
+ memcpy(&tempSize, &buffer[start], 4);
+ start += 4;
+
+ memcpy(&tempName, &buffer[start], tempSize);
+ header.levelAuthor.assign(&tempName[0], &tempName[tempSize]);
+ start += tempSize;
+
+ memcpy(&header.maxNumberOfPlayer, &buffer[start], 4);
+ start += 4;
+
+ memcpy(&header.worldSize, &buffer[start], 4);
+ start += 4;
+
+ memcpy(&header.overviewPictureID, &buffer[start], 4);
+ start += 4;
+
+ memcpy(&tempSize, &buffer[start], 4);
+ start += 4;
+
+ int temp;
+
+ for(int i = 0; i < tempSize; i++)
+ {
+ memcpy(&temp, &buffer[start], 4);
+ start += 4;
+ header.gameModesSupported.push_back((GameMode)temp);
+ }
+
+ size += start;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Code/Game/GameLogic/LevelLoader/ParseFunctions.h b/Code/Game/GameLogic/LevelLoader/ParseFunctions.h
new file mode 100644
index 00000000..08962b4a
--- /dev/null
+++ b/Code/Game/GameLogic/LevelLoader/ParseFunctions.h
@@ -0,0 +1,19 @@
+//////////////////////////////////
+// Created by Sam Svensson 2013 //
+//////////////////////////////////
+
+#ifndef PARSERFUNCTIONS_H
+#define PARSERFUNCTIONS_H
+#include "ObjectDefines.h"
+
+namespace GameLogic
+{
+ namespace LevelFileLoader
+ {
+ void ParseObject(char* buffer, void *header, int size);
+ void ParseLevelMetaData(char* buffer, LevelMetaData &header, int &size);
+ }
+}
+
+
+#endif
\ No newline at end of file
diff --git a/Code/Misc/Misc.vcxproj b/Code/Misc/Misc.vcxproj
index 0b7bf576..6c3db1ec 100644
--- a/Code/Misc/Misc.vcxproj
+++ b/Code/Misc/Misc.vcxproj
@@ -146,6 +146,7 @@
+
@@ -164,6 +165,7 @@
+
diff --git a/Code/Misc/Misc.vcxproj.filters b/Code/Misc/Misc.vcxproj.filters
index 44348332..8413642a 100644
--- a/Code/Misc/Misc.vcxproj.filters
+++ b/Code/Misc/Misc.vcxproj.filters
@@ -48,6 +48,9 @@
Source Files
+
+ Source Files
+
@@ -110,5 +113,8 @@
Header Files
+
+ Header Files
+
\ No newline at end of file
diff --git a/Code/Misc/Packing/Packing.cpp b/Code/Misc/Packing/Packing.cpp
new file mode 100644
index 00000000..30064b0a
--- /dev/null
+++ b/Code/Misc/Packing/Packing.cpp
@@ -0,0 +1,346 @@
+#include "Packing.h"
+
+/***************************
+ Packing
+***************************/
+
+#include
+
+namespace Oyster
+{
+ namespace Packing
+ {
+ //bool (1-bit)
+ void Pack(unsigned char buffer[], bool i)
+ {
+ *buffer++ = i;
+ }
+
+ //char (8-bit)
+ void Pack(unsigned char buffer[], char i)
+ {
+ *buffer++ = i;
+ }
+
+ void Pack(unsigned char buffer[], unsigned char i)
+ {
+ *buffer++ = i;
+ }
+
+ //short (16-bit)
+ void Pack(unsigned char buffer[], short i)
+ {
+ *buffer++ = i >> 8;
+ *buffer++ = (char)i;
+ }
+
+ void Pack(unsigned char buffer[], unsigned short i)
+ {
+ *buffer++ = i >> 8;
+ *buffer++ = (char)i;
+ }
+
+ //int (32-bit)
+ void Pack(unsigned char buffer[], int i)
+ {
+ *buffer++ = i >> 24;
+ *buffer++ = i >> 16;
+ *buffer++ = i >> 8;
+ *buffer++ = i;
+ }
+
+ void Pack(unsigned char buffer[], unsigned int i)
+ {
+ *buffer++ = i >> 24;
+ *buffer++ = i >> 16;
+ *buffer++ = i >> 8;
+ *buffer++ = i;
+ }
+
+ //__int64 (64-bit)
+ void Pack(unsigned char buffer[], __int64 i)
+ {
+ *buffer++ = (char)(i >> 56);
+ *buffer++ = (char)(i >> 48);
+ *buffer++ = (char)(i >> 40);
+ *buffer++ = (char)(i >> 32);
+ *buffer++ = (char)(i >> 24);
+ *buffer++ = (char)(i >> 16);
+ *buffer++ = (char)(i >> 8);
+ *buffer++ = (char)i;
+ }
+
+ void Pack(unsigned char buffer[], unsigned __int64 i)
+ {
+ *buffer++ = (char)(i >> 56);
+ *buffer++ = (char)(i >> 48);
+ *buffer++ = (char)(i >> 40);
+ *buffer++ = (char)(i >> 32);
+ *buffer++ = (char)(i >> 24);
+ *buffer++ = (char)(i >> 16);
+ *buffer++ = (char)(i >> 8);
+ *buffer++ = (char)i;
+ }
+
+ //floating point (32, 64-bit)
+ void Pack(unsigned char buffer[], float i)
+ {
+ int tempFloat = (int)Pack754(i, 32, 8);
+ Pack(buffer, tempFloat);
+ }
+
+ void Pack(unsigned char buffer[], double i)
+ {
+ __int64 tempDouble = Pack754(i, 64, 11);
+ Pack(buffer, tempDouble);
+ }
+
+ //string
+ void Pack(unsigned char buffer[], char str[])
+ {
+ short len = (short)strlen(str);
+ Pack(buffer, len);
+ buffer += 2;
+ memcpy(buffer, str, len);
+ }
+
+ void Pack(unsigned char buffer[], std::string& str)
+ {
+ short len = (short)str.length();
+ Pack(buffer, len);
+ buffer += 2;
+ memcpy(buffer, str.c_str(), len);
+ }
+
+ unsigned __int64 Pack754(long double f, unsigned bits, unsigned expbits)
+ {
+ long double fnorm;
+ int shift;
+ long long sign, exp, significand;
+ unsigned significandbits = bits - expbits - 1; // -1 for sign bit
+
+ if (f == 0.0)
+ return 0; // get this special case out of the way
+
+ // check sign and begin normalization
+ if (f < 0)
+ {
+ sign = 1;
+ fnorm = -f;
+ }
+ else
+ {
+ sign = 0;
+ fnorm = f;
+ }
+
+ // get the normalized form of f and track the exponent
+ shift = 0;
+ while(fnorm >= 2.0)
+ {
+ fnorm /= 2.0;
+ shift++;
+ }
+
+ while(fnorm < 1.0)
+ {
+ fnorm *= 2.0;
+ shift--;
+ }
+
+ fnorm = fnorm - 1.0;
+
+ // calculate the binary form (non-float) of the significand data
+ significand = (long long)(fnorm * ((1LL << significandbits) + 0.5f));
+
+ // get the biased exponent
+ exp = shift + ((1 << (expbits - 1)) - 1); // shift + bias
+
+ // return the final answer
+ return (sign << (bits - 1)) | (exp << (bits - expbits - 1)) | significand;
+ }
+
+ /******************************
+ Unpacking
+ ******************************/
+
+ //bool (1-bit)
+ bool Unpackb(unsigned char buffer[])
+ {
+ return *buffer;
+ }
+
+ //char (8-bit)
+ char Unpackc(unsigned char buffer[])
+ {
+ if(*buffer <= 0x7f)
+ {
+ return *buffer;
+ }
+ else
+ {
+ return (-1 - (unsigned char)(0xffu - *buffer));
+ }
+ }
+
+ unsigned char UnpackC(unsigned char buffer[])
+ {
+ return *buffer;
+ }
+
+ //short (16-bit)
+ short Unpacks(unsigned char buffer[])
+ {
+ short i = ((short)buffer[0] << 8) | buffer[1];
+
+ if(i > 0x7fffu)
+ {
+ i = -1 - (unsigned short)(0xffffu - i);
+ }
+
+ return i;
+ }
+
+ unsigned short UnpackS(unsigned char buffer[])
+ {
+ return ((unsigned int)buffer[0] << 8) | buffer[1];
+ }
+
+ //int (32-bit)
+ int Unpacki(unsigned char buffer[])
+ {
+ int i = ((int)buffer[0] << 24) |
+ ((int)buffer[1] << 16) |
+ ((int)buffer[2] << 8) |
+ ((int)buffer[3]);
+
+ if(i > 0x7fffffffu)
+ {
+ i = -1 - (int)(0xffffffffu - i);
+ }
+
+ return i;
+ }
+
+ unsigned int UnpackI(unsigned char buffer[])
+ {
+ return ((unsigned int)buffer[0] << 24) |
+ ((unsigned int)buffer[1] << 16) |
+ ((unsigned int)buffer[2] << 8) |
+ ((unsigned int)buffer[3]);
+ }
+
+ //__int64 (64-bit)
+ __int64 Unpacki64(unsigned char buffer[])
+ {
+ __int64 i = ((__int64)buffer[0] << 56) |
+ ((__int64)buffer[1] << 48) |
+ ((__int64)buffer[2] << 40) |
+ ((__int64)buffer[3] << 32) |
+ ((__int64)buffer[4] << 24) |
+ ((__int64)buffer[5] << 16) |
+ ((__int64)buffer[6] << 8) |
+ (buffer[7]);
+
+ if(i > 0x7fffffffffffffffu)
+ {
+ i = -1 - (__int64)(0xffffffffffffffffu - i);
+ }
+
+ return i;
+ }
+
+ unsigned __int64 UnpackI64(unsigned char buffer[])
+ {
+
+ return ((__int64)buffer[0] << 56) |
+ ((__int64)buffer[1] << 48) |
+ ((__int64)buffer[2] << 40) |
+ ((__int64)buffer[3] << 32) |
+ ((__int64)buffer[4] << 24) |
+ ((__int64)buffer[5] << 16) |
+ ((__int64)buffer[6] << 8) |
+ ((__int64)buffer[7]);
+ }
+
+ //floating point (32, 64-bit)
+ float Unpackf(unsigned char buffer[])
+ {
+ int tempFloat = Unpacki(buffer);
+ return (float)Unpack754(tempFloat, 32, 8);
+ }
+
+ double Unpackd(unsigned char buffer[])
+ {
+ __int64 tempDouble = Unpacki64(buffer);
+ return Unpack754(tempDouble, 64, 11);
+ }
+
+ //string
+ char* UnpackCStr(unsigned char buffer[])
+ {
+ short len = UnpackS(buffer);
+ char* str = new char[len+1];
+
+ buffer += 2;
+ for(int i = 0; i < len; i++)
+ {
+ str[i] = buffer[i];
+ }
+
+ str[len] = '\0';
+
+ return str;
+ }
+
+ std::string UnpackStr(unsigned char buffer[])
+ {
+ short len = UnpackS(buffer);
+ std::string temp;
+ temp.resize(len);
+
+ buffer += 2;
+ for(int i = 0; i < len; i++)
+ {
+ temp[i] = buffer[i];
+ }
+
+ return temp;
+ }
+
+ long double Unpack754(unsigned __int64 i, unsigned bits, unsigned expbits)
+ {
+ long double result;
+ long long shift;
+ unsigned bias;
+ unsigned significandbits = bits - expbits - 1; // -1 for sign bit
+
+ if (i == 0)
+ return 0.0;
+
+ // pull the significand
+ result = (long double)(i&((1LL << significandbits) - 1)); // mask
+ result /= (1LL << significandbits); // convert back to float
+ result += 1.0f; // add the one back on
+
+ // deal with the exponent
+ bias = (1 << (expbits - 1)) - 1;
+ shift = ((i >> significandbits) & ((1LL << expbits) - 1)) - bias;
+ while(shift > 0)
+ {
+ result *= 2.0;
+ shift--;
+ }
+ while(shift < 0)
+ {
+ result /= 2.0;
+ shift++;
+ }
+
+ // sign it
+ result *= (i >> (bits - 1)) & 1 ? -1.0 : 1.0;
+
+ return result;
+ }
+ }
+}
diff --git a/Code/Misc/Packing/Packing.h b/Code/Misc/Packing/Packing.h
new file mode 100644
index 00000000..47a65c51
--- /dev/null
+++ b/Code/Misc/Packing/Packing.h
@@ -0,0 +1,81 @@
+#ifndef PACKING_H
+#define PACKING_H
+
+/////////////////////////////////////
+// Created by Pontus Fransson 2013 //
+/////////////////////////////////////
+
+#include
+
+/******************************
+ Packing
+******************************/
+namespace Oyster
+{
+ namespace Packing
+ {
+ //bool (1-bit)
+ void Pack(unsigned char buffer[], bool i);
+
+ //char (8-bit)
+ void Pack(unsigned char buffer[], char i);
+ void Pack(unsigned char buffer[], unsigned char i); // unsigned
+
+ //short (16-bit)
+ void Pack(unsigned char buffer[], short i);
+ void Pack(unsigned char buffer[], unsigned short i); // unsigned
+
+ //int (32-bit)
+ void Pack(unsigned char buffer[], int i);
+ void Pack(unsigned char buffer[], unsigned int i); // unsigned
+
+ //__int64 (64-bit)
+ void Pack(unsigned char buffer[], __int64 i);
+ void Pack(unsigned char buffer[], unsigned __int64 i); // unsigned
+
+ //floating point (32, 64-bit)
+ void Pack(unsigned char buffer[], float i);
+ void Pack(unsigned char buffer[], double i);
+
+ //string
+ void Pack(unsigned char buffer[], char str[]);
+ void Pack(unsigned char buffer[], std::string& str);
+
+ unsigned __int64 Pack754(long double f, unsigned bits, unsigned expbits);
+
+ /******************************
+ Unpacking
+ ******************************/
+
+ //bool (1-bit)
+ bool Unpackb(unsigned char buffer[]);
+
+ //char (8-bit)
+ char Unpackc(unsigned char buffer[]);
+ unsigned char UnpackC(unsigned char buffer[]); // unsigned
+
+ //short (16-bit)
+ short Unpacks(unsigned char buffer[]);
+ unsigned short UnpackS(unsigned char buffer[]); // unsigned
+
+ //int (32-bit)
+ int Unpacki(unsigned char buffer[]);
+ unsigned int UnpackI(unsigned char buffer[]); // unsigned
+
+ //__int64 (64-bit)
+ __int64 Unpacki64(unsigned char buffer[]);
+ unsigned __int64 UnpackI64(unsigned char buffer[]); // unsigned
+
+ //floating point (32, 64-bit)
+ float Unpackf(unsigned char buffer[]);
+ double Unpackd(unsigned char buffer[]);
+
+ //string
+ char* UnpackCStr(unsigned char buffer[]);
+ std::string UnpackStr(unsigned char buffer[]);
+
+ long double Unpack754(unsigned __int64 i, unsigned bits, unsigned expbits);
+ }
+}
+
+#endif
\ No newline at end of file
diff --git a/Code/Misc/Resource/OResourceHandler.cpp b/Code/Misc/Resource/OResourceHandler.cpp
index 918ecd1d..52d93af0 100644
--- a/Code/Misc/Resource/OResourceHandler.cpp
+++ b/Code/Misc/Resource/OResourceHandler.cpp
@@ -214,7 +214,14 @@ int OysterResource::GetResourceId(const wchar_t c[])
return -1;
}
+int OysterResource::GetResourceSize(const OHRESOURCE& resource)
+{
+ OResource* t = resourcePrivate.FindResource(resource);
+ if(t) return t->GetResourceSize();
+
+ return -1;
+}
OResource* ResourcePrivate::FindResource(const OHRESOURCE& h) const
{
diff --git a/Code/Misc/Resource/OysterResource.h b/Code/Misc/Resource/OysterResource.h
index d6509b54..8adce704 100644
--- a/Code/Misc/Resource/OysterResource.h
+++ b/Code/Misc/Resource/OysterResource.h
@@ -150,6 +150,11 @@ namespace Oyster
* @return Returns the accociated ID
*/
static int GetResourceId(const wchar_t filename[]);
+
+
+ static int GetResourceSize(const OHRESOURCE& resource);
+
+
};
}
diff --git a/Code/Network/NetworkDependencies/Messages/MessageHeader.cpp b/Code/Network/NetworkDependencies/Messages/MessageHeader.cpp
index d2823b62..8f315797 100644
--- a/Code/Network/NetworkDependencies/Messages/MessageHeader.cpp
+++ b/Code/Network/NetworkDependencies/Messages/MessageHeader.cpp
@@ -1,8 +1,9 @@
#include "MessageHeader.h"
-#include "../Packing.h"
+#include "../../../Misc/Packing/Packing.h"
#include
using namespace std;
+using namespace Oyster::Packing;
using namespace Oyster::Network;
using namespace Oyster::Network::Messages;
using namespace Oyster::Network::Protocols;
diff --git a/Code/Network/NetworkDependencies/NetworkDependencies.vcxproj b/Code/Network/NetworkDependencies/NetworkDependencies.vcxproj
index 061d3c4d..a723d1f7 100644
--- a/Code/Network/NetworkDependencies/NetworkDependencies.vcxproj
+++ b/Code/Network/NetworkDependencies/NetworkDependencies.vcxproj
@@ -157,7 +157,6 @@
-
@@ -171,7 +170,6 @@
-
diff --git a/Code/Network/NetworkDependencies/NetworkDependencies.vcxproj.filters b/Code/Network/NetworkDependencies/NetworkDependencies.vcxproj.filters
index 188a4377..6a695e88 100644
--- a/Code/Network/NetworkDependencies/NetworkDependencies.vcxproj.filters
+++ b/Code/Network/NetworkDependencies/NetworkDependencies.vcxproj.filters
@@ -7,7 +7,6 @@
-
@@ -21,7 +20,6 @@
-
diff --git a/Code/Network/NetworkDependencies/Packing.cpp b/Code/Network/NetworkDependencies/Packing.cpp
deleted file mode 100644
index 41d059a3..00000000
--- a/Code/Network/NetworkDependencies/Packing.cpp
+++ /dev/null
@@ -1,486 +0,0 @@
-#include "Packing.h"
-
-/***************************
- Packing
-***************************/
-
-#include
-
-namespace Oyster
-{
- namespace Network
- {
- namespace Packing
- {
- //bool (1-bit)
- void Pack(unsigned char buffer[], bool i)
- {
- *buffer++ = i;
- }
-
- //char (8-bit)
- void Pack(unsigned char buffer[], char i)
- {
- *buffer++ = i;
- }
-
- void Pack(unsigned char buffer[], unsigned char i)
- {
- *buffer++ = i;
- }
-
- //short (16-bit)
- void Pack(unsigned char buffer[], short i)
- {
- *buffer++ = i >> 8;
- *buffer++ = (char)i;
- }
-
- void Pack(unsigned char buffer[], unsigned short i)
- {
- *buffer++ = i >> 8;
- *buffer++ = (char)i;
- }
-
- //int (32-bit)
- void Pack(unsigned char buffer[], int i)
- {
- *buffer++ = i >> 24;
- *buffer++ = i >> 16;
- *buffer++ = i >> 8;
- *buffer++ = i;
- }
-
- void Pack(unsigned char buffer[], unsigned int i)
- {
- *buffer++ = i >> 24;
- *buffer++ = i >> 16;
- *buffer++ = i >> 8;
- *buffer++ = i;
- }
-
- //__int64 (64-bit)
- void Pack(unsigned char buffer[], __int64 i)
- {
- *buffer++ = (char)(i >> 56);
- *buffer++ = (char)(i >> 48);
- *buffer++ = (char)(i >> 40);
- *buffer++ = (char)(i >> 32);
- *buffer++ = (char)(i >> 24);
- *buffer++ = (char)(i >> 16);
- *buffer++ = (char)(i >> 8);
- *buffer++ = (char)i;
- }
-
- void Pack(unsigned char buffer[], unsigned __int64 i)
- {
- *buffer++ = (char)(i >> 56);
- *buffer++ = (char)(i >> 48);
- *buffer++ = (char)(i >> 40);
- *buffer++ = (char)(i >> 32);
- *buffer++ = (char)(i >> 24);
- *buffer++ = (char)(i >> 16);
- *buffer++ = (char)(i >> 8);
- *buffer++ = (char)i;
- }
-
- //floating point (32, 64-bit)
- void Pack(unsigned char buffer[], float i)
- {
- int tempFloat = (int)Pack754(i, 32, 8);
- Pack(buffer, tempFloat);
- }
-
- void Pack(unsigned char buffer[], double i)
- {
- __int64 tempDouble = Pack754(i, 64, 11);
- Pack(buffer, tempDouble);
- }
-
- //string
- void Pack(unsigned char buffer[], char str[])
- {
- short len = (short)strlen(str);
- Pack(buffer, len);
- buffer += 2;
- memcpy(buffer, str, len);
- }
-
- void Pack(unsigned char buffer[], std::string& str)
- {
- short len = (short)str.length();
- Pack(buffer, len);
- buffer += 2;
- memcpy(buffer, str.c_str(), len);
- }
-
- unsigned __int64 Pack754(long double f, unsigned bits, unsigned expbits)
- {
- long double fnorm;
- int shift;
- long long sign, exp, significand;
- unsigned significandbits = bits - expbits - 1; // -1 for sign bit
-
- if (f == 0.0)
- return 0; // get this special case out of the way
-
- // check sign and begin normalization
- if (f < 0)
- {
- sign = 1;
- fnorm = -f;
- }
- else
- {
- sign = 0;
- fnorm = f;
- }
-
- // get the normalized form of f and track the exponent
- shift = 0;
- while(fnorm >= 2.0)
- {
- fnorm /= 2.0;
- shift++;
- }
-
- while(fnorm < 1.0)
- {
- fnorm *= 2.0;
- shift--;
- }
-
- fnorm = fnorm - 1.0;
-
- // calculate the binary form (non-float) of the significand data
- significand = (long long)(fnorm * ((1LL << significandbits) + 0.5f));
-
- // get the biased exponent
- exp = shift + ((1 << (expbits - 1)) - 1); // shift + bias
-
- // return the final answer
- return (sign << (bits - 1)) | (exp << (bits - expbits - 1)) | significand;
- }
-
- /******************************
- Unpacking
- ******************************/
-
- //bool (1-bit)
- bool Unpackb(unsigned char buffer[])
- {
- return *buffer;
- }
-
- //char (8-bit)
- char Unpackc(unsigned char buffer[])
- {
- if(*buffer <= 0x7f)
- {
- return *buffer;
- }
- else
- {
- return (-1 - (unsigned char)(0xffu - *buffer));
- }
- }
-
- unsigned char UnpackC(unsigned char buffer[])
- {
- return *buffer;
- }
-
- //short (16-bit)
- short Unpacks(unsigned char buffer[])
- {
- short i = ((short)buffer[0] << 8) | buffer[1];
-
- if(i > 0x7fffu)
- {
- i = -1 - (unsigned short)(0xffffu - i);
- }
-
- return i;
- }
-
- unsigned short UnpackS(unsigned char buffer[])
- {
- return ((unsigned int)buffer[0] << 8) | buffer[1];
- }
-
- //int (32-bit)
- int Unpacki(unsigned char buffer[])
- {
- int i = ((int)buffer[0] << 24) |
- ((int)buffer[1] << 16) |
- ((int)buffer[2] << 8) |
- ((int)buffer[3]);
-
- if(i > 0x7fffffffu)
- {
- i = -1 - (int)(0xffffffffu - i);
- }
-
- return i;
- }
-
- unsigned int UnpackI(unsigned char buffer[])
- {
- return ((unsigned int)buffer[0] << 24) |
- ((unsigned int)buffer[1] << 16) |
- ((unsigned int)buffer[2] << 8) |
- ((unsigned int)buffer[3]);
- }
-
- //__int64 (64-bit)
- __int64 Unpacki64(unsigned char buffer[])
- {
- __int64 i = ((__int64)buffer[0] << 56) |
- ((__int64)buffer[1] << 48) |
- ((__int64)buffer[2] << 40) |
- ((__int64)buffer[3] << 32) |
- ((__int64)buffer[4] << 24) |
- ((__int64)buffer[5] << 16) |
- ((__int64)buffer[6] << 8) |
- (buffer[7]);
-
- if(i > 0x7fffffffffffffffu)
- {
- i = -1 - (__int64)(0xffffffffffffffffu - i);
- }
-
- return i;
- }
-
- unsigned __int64 UnpackI64(unsigned char buffer[])
- {
-
- return ((__int64)buffer[0] << 56) |
- ((__int64)buffer[1] << 48) |
- ((__int64)buffer[2] << 40) |
- ((__int64)buffer[3] << 32) |
- ((__int64)buffer[4] << 24) |
- ((__int64)buffer[5] << 16) |
- ((__int64)buffer[6] << 8) |
- ((__int64)buffer[7]);
- }
-
- //floating point (32, 64-bit)
- float Unpackf(unsigned char buffer[])
- {
- int tempFloat = Unpacki(buffer);
- return (float)Unpack754(tempFloat, 32, 8);
- }
-
- double Unpackd(unsigned char buffer[])
- {
- __int64 tempDouble = Unpacki64(buffer);
- return Unpack754(tempDouble, 64, 11);
- }
-
- //string
- char* UnpackCStr(unsigned char buffer[])
- {
- short len = UnpackS(buffer);
- char* str = new char[len+1];
-
- buffer += 2;
- for(int i = 0; i < len; i++)
- {
- str[i] = buffer[i];
- }
-
- str[len] = '\0';
-
- return str;
- }
-
- std::string UnpackStr(unsigned char buffer[])
- {
- short len = UnpackS(buffer);
- std::string temp;
- temp.resize(len);
-
- buffer += 2;
- for(int i = 0; i < len; i++)
- {
- temp[i] = buffer[i];
- }
-
- return temp;
- }
-
- long double Unpack754(unsigned __int64 i, unsigned bits, unsigned expbits)
- {
- long double result;
- long long shift;
- unsigned bias;
- unsigned significandbits = bits - expbits - 1; // -1 for sign bit
-
- if (i == 0)
- return 0.0;
-
- // pull the significand
- result = (long double)(i&((1LL << significandbits) - 1)); // mask
- result /= (1LL << significandbits); // convert back to float
- result += 1.0f; // add the one back on
-
- // deal with the exponent
- bias = (1 << (expbits - 1)) - 1;
- shift = ((i >> significandbits) & ((1LL << expbits) - 1)) - bias;
- while(shift > 0)
- {
- result *= 2.0;
- shift--;
- }
- while(shift < 0)
- {
- result /= 2.0;
- shift++;
- }
-
- // sign it
- result *= (i >> (bits - 1)) & 1 ? -1.0 : 1.0;
-
- return result;
- }
- }
- }
-}
-
-/*
-int32_t pack(unsigned char* buffer, char* format, ...)
-{
- va_list ap;
- int16_t h;
- int32_t l;
- int8_t c;
- float f;
- double d;
- char* s;
- int32_t size = 0, len;
-
- va_start(ap, format);
-
- for(; *format != '\0'; format++)
- {
- switch(*format)
- {
- case 'h': // 16-bit
- size += 2;
- h = (int16_t)va_arg(ap, int);
- packi16(buffer, h);
- buffer += 2;
- break;
- case 'l': // 32-bit
- size += 4;
- l = va_arg(ap, int32_t);
- packi32(buffer, l);
- buffer += 4;
- break;
- case 'c': // 8-bit
- size += 1;
- c = (int8_t)va_arg(ap, int);
- *buffer++ = (c >> 0)&0xff;
- break;
- case 'f': // float (32-bit)
- size += 4;
- f = (float)va_arg(ap, double);
- //l = pack754(f, 32, 8);
- packi32(buffer, l);
- buffer += 4;
- break;
- case 'd': // double (64-bit)
- size += 8;
- d = (float)va_arg(ap, double);
- //l = pack754(f, 64, 11);
- packi32(buffer, l);
- buffer += 4;
- break;
- case 's': // string
- s = va_arg(ap, char*);
- len = strlen(s);
- size += len + 2;
- packi16(buffer, len);
- buffer += 2;
- memcpy(buffer, s, len);
- buffer += len;
- break;
- }
- }
-
- va_end(ap);
-
- return size;
-}
-*/
-
-/*
-void unpack(unsigned char* buffer, char* format, ...)
-{
- va_list ap;
- int16_t* h;
- int32_t* l;
- int32_t pf;
- int64_t pd;
- int8_t* c;
- float* f;
- double* d;
- char* s;
- int32_t len, count, maxstrlen = 0;
-
- va_start(ap, format);
-
- for(; *format != '\0'; format++)
- {
- switch(*format)
- {
- case 'h': // 16-bit
- h = va_arg(ap, int16_t*);
- *h = unpacki16(buffer);
- buffer += 2;
- break;
- case 'l': // 32-bit
- l = va_arg(ap, int32_t*);
- *l = unpacki32(buffer);
- buffer += 4;
- break;
- case 'c': // 8-bit
- c = va_arg(ap, int8_t*);
- *c = *buffer++;
- break;
- case 'f': // float
- f = va_arg(ap, float*);
- pf = unpacki32(buffer);
- buffer += 4;
- //*f = unpack754(pf, 32, 8);
- break;
- case 'd': // double (64-bit)
- d = va_arg(ap, double*);
- pd = unpacki64(buffer);
- buffer += 8;
- //*d = unpack754(pf, 64, 11);
- break;
- case 's': // string
- s = va_arg(ap, char*);
- len = unpacki16(buffer);
- buffer += 2;
- if (maxstrlen > 0 && len > maxstrlen) count = maxstrlen - 1;
- else count = len;
- memcpy(s, buffer, count);
- s[count] = '\0';
- buffer += len;
- break;
- default:
- if (isdigit(*format)) // track max str len
- {
- maxstrlen = maxstrlen * 10 + (*format-'0');
- }
- }
-
- if(!isdigit(*format))
- maxstrlen = 0;
- }
-
- va_end(ap);
-}*/
\ No newline at end of file
diff --git a/Code/Network/NetworkDependencies/Packing.h b/Code/Network/NetworkDependencies/Packing.h
deleted file mode 100644
index aaf3a1b8..00000000
--- a/Code/Network/NetworkDependencies/Packing.h
+++ /dev/null
@@ -1,107 +0,0 @@
-#ifndef PACKING_H
-#define PACKING_H
-
-/////////////////////////////////////
-// Created by Pontus Fransson 2013 //
-/////////////////////////////////////
-
-#include
-
-/******************************
- Packing
-******************************/
-namespace Oyster
-{
- namespace Network
- {
- namespace Packing
- {
- //bool (1-bit)
- void Pack(unsigned char buffer[], bool i);
-
- //char (8-bit)
- void Pack(unsigned char buffer[], char i);
- void Pack(unsigned char buffer[], unsigned char i); // unsigned
-
- //short (16-bit)
- void Pack(unsigned char buffer[], short i);
- void Pack(unsigned char buffer[], unsigned short i); // unsigned
-
- //int (32-bit)
- void Pack(unsigned char buffer[], int i);
- void Pack(unsigned char buffer[], unsigned int i); // unsigned
-
- //__int64 (64-bit)
- void Pack(unsigned char buffer[], __int64 i);
- void Pack(unsigned char buffer[], unsigned __int64 i); // unsigned
-
- //floating point (32, 64-bit)
- void Pack(unsigned char buffer[], float i);
- void Pack(unsigned char buffer[], double i);
-
- //string
- void Pack(unsigned char buffer[], char str[]);
- void Pack(unsigned char buffer[], std::string& str);
-
- unsigned __int64 Pack754(long double f, unsigned bits, unsigned expbits);
-
- /******************************
- Unpacking
- ******************************/
-
- //bool (1-bit)
- bool Unpackb(unsigned char buffer[]);
-
- //char (8-bit)
- char Unpackc(unsigned char buffer[]);
- unsigned char UnpackC(unsigned char buffer[]); // unsigned
-
- //short (16-bit)
- short Unpacks(unsigned char buffer[]);
- unsigned short UnpackS(unsigned char buffer[]); // unsigned
-
- //int (32-bit)
- int Unpacki(unsigned char buffer[]);
- unsigned int UnpackI(unsigned char buffer[]); // unsigned
-
- //__int64 (64-bit)
- __int64 Unpacki64(unsigned char buffer[]);
- unsigned __int64 UnpackI64(unsigned char buffer[]); // unsigned
-
- //floating point (32, 64-bit)
- float Unpackf(unsigned char buffer[]);
- double Unpackd(unsigned char buffer[]);
-
- //string
- char* UnpackCStr(unsigned char buffer[]);
- std::string UnpackStr(unsigned char buffer[]);
-
- long double Unpack754(unsigned __int64 i, unsigned bits, unsigned expbits);
- }
- }
-}
-
-
-//int32_t pack(unsigned char* buffer, char* format, ...);
-
-//void unpack(unsigned char* buffer, char* format, ...);
-
-
-/***********************************************
-* This table is used for naming pack/unpack functions.
-* It's also used to identify types in the 'format' string in function pack()/unpack()
-*
-* bits |signed unsigned float string
-* -----+----------------------------------
-* 1 | b
-* 8 | c C
-* 16 | s S f
-* 32 | i I d
-* 64 | q Q g
-* - | str
-*
-* (16-bit unsigned length is automatically added in front of strings)
-*
-*/
-
-#endif
\ No newline at end of file