Skip to content

Commit ebdd4fd

Browse files
committed
- move region loading code to C++ classes
- implement level cell iteration for viewing
1 parent 13613c6 commit ebdd4fd

13 files changed

Lines changed: 961 additions & 361 deletions

File tree

DriverLevelTool/driver_level.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@
2121

2222
// extern some vars
2323
extern IVirtualStream* g_levStream;
24+
2425
extern CDriverLevelTextures g_levTextures;
2526
extern CDriverLevelModels g_levModels;
27+
extern CDriver2LevelMap g_levMap;
2628

2729
//----------------------------------------------------------
2830

DriverLevelTool/driver_routines/d2_types.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,18 +63,18 @@ typedef struct dlevinfo_t
6363
//------------------------------------------------------------------------------------------------------------
6464

6565
struct OUT_CELL_FILE_HEADER {
66-
int cells_across; // size=0, offset=0
67-
int cells_down; // size=0, offset=4
68-
int cell_size; // size=0, offset=8
66+
int cells_across;
67+
int cells_down;
68+
int cell_size;
6969

70-
int num_regions; // size=0, offset=12
71-
int region_size; // size=0, offset=16
70+
int num_regions;
71+
int region_size;
7272

73-
int num_cell_objects; // size=0, offset=20
74-
int num_cell_data; // size=0, offset=24
73+
int num_cell_objects;
74+
int num_cell_data;
7575

76-
int ambient_light_level; // size=0, offset=28
77-
struct VECTOR_NOPAD light_source; // size=12, offset=32
76+
int ambient_light_level;
77+
VECTOR_NOPAD light_source;
7878
};
7979

8080
//------------------------------------------------------------------------------------------------------------

DriverLevelTool/driver_routines/level.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ char* g_overlayMapData = nullptr;
1313

1414
CDriverLevelTextures g_levTextures;
1515
CDriverLevelModels g_levModels;
16+
CDriver2LevelMap g_levMap;
1617

1718
//---------------------------------------------------------------------------------------------------------------------------------
1819

@@ -64,6 +65,7 @@ void DetectLevelFormat(IVirtualStream* pFile)
6465
case LUMP_CHAIR:
6566
case LUMP_CAR_MODELS:
6667
case LUMP_TEXTUREINFO:
68+
case LUMP_STRAIGHTS2:
6769
break;
6870
case LUMP_JUNCTIONS2:
6971
{
@@ -140,7 +142,7 @@ void ProcessLumps(IVirtualStream* pFile)
140142
break;
141143
case LUMP_MAP:
142144
MsgWarning("LUMP_MAP ofs=%d size=%d\n", pFile->Tell(), lump.size);
143-
LoadMapLump(pFile);
145+
g_levMap.LoadMapLump(pFile);
144146
break;
145147
case LUMP_TEXTURENAMES:
146148
MsgWarning("LUMP_TEXTURENAMES ofs=%d size=%d\n", pFile->Tell(), lump.size);
@@ -169,7 +171,7 @@ void ProcessLumps(IVirtualStream* pFile)
169171
break;
170172
case LUMP_SPOOLINFO:
171173
MsgWarning("LUMP_SPOOLINFO ofs=%d size=%d\n", pFile->Tell(), lump.size);
172-
LoadSpoolInfoLump(pFile);
174+
g_levMap.LoadSpoolInfoLump(pFile);
173175
break;
174176
case LUMP_STRAIGHTS2:
175177
MsgWarning("LUMP_STRAIGHTS2 ofs=%d size=%d\n", pFile->Tell(), lump.size);
@@ -320,8 +322,7 @@ void FreeLevelData()
320322
delete g_levStream;
321323
g_levStream = nullptr;
322324

323-
FreeSpoolData();
324-
325+
g_levMap.FreeAll();
325326
g_levTextures.FreeAll();
326327
g_levModels.FreeAll();
327328

DriverLevelTool/driver_routines/level.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
#ifndef LEVEL_H
66
#define LEVEL_H
77

8+
#define SPOOL_CD_BLOCK_SIZE 2048
9+
810
// known lumps indexes
911
enum LevLumpType
1012
{

0 commit comments

Comments
 (0)