diff options
Diffstat (limited to 'src/levelinfo.cpp')
| -rw-r--r-- | src/levelinfo.cpp | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/src/levelinfo.cpp b/src/levelinfo.cpp new file mode 100644 index 0000000..3a0ef6f --- /dev/null +++ b/src/levelinfo.cpp @@ -0,0 +1,37 @@ +#include "levelinfo.h"
 +
 +void dLevelInfo_c::load(void *buffer) {
 +	data = (header_s*)buffer;
 +
 +	// decode all the level names
 +	for (int sect = 0; sect < sectionCount(); sect++) {
 +		// parse this section
 +		section_s *thisSect = getSectionByIndex(sect);
 +		entry_s *levels = getLevelsForSection(thisSect);
 +
 +		for (int lev = 0; lev < thisSect->levelCount; lev++) {
 +			entry_s *level = &levels[lev];
 +
 +			char *name = (char*)getNameForLevel(level);
 +
 +			for (int i = 0; i < level->nameLength+1; i++) {
 +				name[i] -= 0xD0;
 +			}
 +		}
 +	}
 +}
 +
 +dLevelInfo_c::entry_s *dLevelInfo_c::search(int world, int level) {
 +	for (int i = 0; i < sectionCount(); i++) {
 +		section_s *sect = getSectionByIndex(i);
 +
 +		for (int j = 0; j < sect->levelCount; j++) {
 +			entry_s *entry = &getLevelsForSection(sect)[j];
 +			if (entry->world == world && entry->level == level)
 +				return entry;
 +		}
 +	}
 +
 +	return 0;
 +}
 +
 | 
