summaryrefslogtreecommitdiff
path: root/src/levelinfo.h
diff options
context:
space:
mode:
authorTreeki <treeki@gmail.com>2011-03-13 23:35:44 +0100
committerTreeki <treeki@gmail.com>2011-03-13 23:35:44 +0100
commit793fc74bd957eea3930e30aae704e47adee5e015 (patch)
tree577e0579ef3de4e0a1063a94a7f3a4b144abcc33 /src/levelinfo.h
parent485c95c4fc071f954c7f808b0a89eb37d147c57b (diff)
downloadkamek-793fc74bd957eea3930e30aae704e47adee5e015.tar.gz
kamek-793fc74bd957eea3930e30aae704e47adee5e015.zip
made LevelInfo into an OO class and added a header file for dWMResourceMng_c
Diffstat (limited to '')
-rw-r--r--src/levelinfo.h94
1 files changed, 47 insertions, 47 deletions
diff --git a/src/levelinfo.h b/src/levelinfo.h
index 1b75275..36db669 100644
--- a/src/levelinfo.h
+++ b/src/levelinfo.h
@@ -2,55 +2,55 @@
#define __NEWER_LEVELINFO_H
#include <common.h>
-#include "fileload.h"
-struct LevelInfo_Header {
- u32 magic;
- u32 sectionCount;
+class LevelInfo {
+public:
+ struct Header {
+ u32 magic;
+ u32 sectionCount;
+ u32 sectionOffsets[1];
+ };
+
+ struct Section {
+ u32 levelCount;
+ };
+
+ struct Entry {
+ u8 world;
+ u8 level;
+ u8 reserved1;
+ u8 reserved2;
+ u8 nameLength;
+ u8 reserved3;
+ u16 flags;
+ u32 nameOffset;
+ };
+
+private:
+ Header *data;
+
+public:
+ void load(void *buffer);
+
+ Entry *search(int world, int level);
+
+ u32 sectionCount() {
+ return data->sectionCount;
+ }
+
+ Section *getSectionByIndex(u32 index) {
+ return (Section*)(((char*)data) + data->sectionOffsets[index]);
+ }
+
+ Entry *getLevelsForSection(Section *section) {
+ return (Entry*)(section + 1);
+ }
+
+ char *getNameForLevel(Entry *entry) {
+ return (char*)data + entry->nameOffset;
+ }
};
-struct LevelInfo_Section {
- u32 levelCount;
-};
-
-struct LevelInfo_Entry {
- u8 world;
- u8 level;
- u8 reserved1;
- u8 reserved2;
- u8 nameLength;
- u8 reserved3;
- u16 flags;
- u32 nameOffset;
-};
-
-inline u32 LevelInfo_GetSectionCount(void *file) {
- return ((LevelInfo_Header*)file)->sectionCount;
-}
-
-inline u32 *LevelInfo_GetOffsets(void *file) {
- return (u32*)(((LevelInfo_Header*)file)+1);
-}
-
-inline LevelInfo_Section *LevelInfo_GetSection(void *file, int id) {
- u32 offs = LevelInfo_GetOffsets(file)[id];
- return (LevelInfo_Section*)(((char*)file)+offs);
-};
-
-inline LevelInfo_Entry *LevelInfo_GetLevels(void *file, LevelInfo_Section *section) {
- return (LevelInfo_Entry*)(section+1);
-}
-
-inline LevelInfo_Entry *LevelInfo_GetLevels(void *file, int sectionID) {
- return (LevelInfo_Entry*)(LevelInfo_GetSection(file, sectionID)+1);
-}
-
-inline char *LevelInfo_GetName(void *file, LevelInfo_Entry *entry) {
- return ((char*)file)+entry->nameOffset;
-}
-
-void LevelInfo_Prepare(FileHandle *fh);
-LevelInfo_Entry *LevelInfo_Search(void *file, int world, int level);
-
#endif
+