This commit is contained in:
Daveo 2001-07-25 16:20:01 +00:00
parent 3358131470
commit d3d9f1d840
3 changed files with 138 additions and 37 deletions

View File

@ -492,7 +492,8 @@ cleanmapscreens:
@$(ECHO) Map screens Cleaned @$(ECHO) Map screens Cleaned
$(MAPSCREENS_OUT_DIR)/%.gfx : $(MAPSCREENS_IN_DIR)/%.tga $(MAPSCREENS_OUT_DIR)/%.gfx : $(MAPSCREENS_IN_DIR)/%.tga
@$(TGA2GFX) $< $@ @$(TGA2GFX) $< a.tmp
@$(LZNP) a.tmp $@ >nul
GRAF_DIRS_TO_MAKE += $(MAPSCREENS_OUT_DIR) GRAF_DIRS_TO_MAKE += $(MAPSCREENS_OUT_DIR)
GFX_DATA_OUT += $(MAPSCREENS_OUT) GFX_DATA_OUT += $(MAPSCREENS_OUT)

View File

@ -70,6 +70,7 @@
#include "fma\fma.h" #include "fma\fma.h"
#endif #endif
#include "utils\lznp.h"
/* Std Lib /* Std Lib
------- */ ------- */
@ -131,44 +132,77 @@
CMapScene MapScene; CMapScene MapScene;
CMapScene::sMapLevelGfxTable CMapScene::s_GfxTable[MAP_GFX_MAX]=
{
{MAP_C1_L1_GFX,0},
{MAP_C1_L2_GFX,0},
{MAP_C1_L3_GFX,0},
{MAP_C1_L4_GFX,0},
{MAP_C1_FAIR_GFX,0},
{MAP_C2_L1_GFX,0},
{MAP_C2_L2_GFX,0},
{MAP_C2_L3_GFX,0},
{MAP_C2_L4_GFX,0},
{MAP_C2_FAIR_GFX,0},
{MAP_C3_L1_GFX,0},
{MAP_C3_L2_GFX,0},
{MAP_C3_L3_GFX,0},
{MAP_C3_L4_GFX,0},
{MAP_C3_FAIR_GFX,0},
{MAP_C4_L1_GFX,0},
{MAP_C4_L2_GFX,0},
{MAP_C4_L3_GFX,0},
{MAP_C4_L4_GFX,0},
{MAP_C4_FAIR_GFX,0},
{MAP_C5_L1_GFX,0},
{MAP_C5_L2_GFX,0},
{MAP_C5_L3_GFX,0},
{MAP_C5_L4_GFX,0},
{MAP_C5_FAIR_GFX,0},
};
CMapScene::sMapLevelData CMapScene::s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER]= CMapScene::sMapLevelData CMapScene::s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER]=
{ {
// mapFile globalLevelNumber spatulaOrTokenCounts questItemFrame kelpWorldLevel // mapFile Gfx, globalLevelNumber spatulaOrTokenCounts questItemFrame kelpWorldLevel
{ {
{ MAP_C1_L1_GFX, 0, CHAPTER01_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L1_QUEST_ITEM, false }, { MAP_GFX_C1_L1, 0, CHAPTER01_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L1_QUEST_ITEM, false },
{ MAP_C1_L2_GFX, 1, CHAPTER01_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L2_QUEST_ITEM, false }, { MAP_GFX_C1_L2, 1, CHAPTER01_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L2_QUEST_ITEM, false },
{ MAP_C1_L3_GFX, 2, CHAPTER01_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L3_QUEST_ITEM, false }, { MAP_GFX_C1_L3, 2, CHAPTER01_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L3_QUEST_ITEM, false },
{ MAP_C1_L4_GFX, 3, CHAPTER01_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L4_QUEST_ITEM, false }, { MAP_GFX_C1_L4, 3, CHAPTER01_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L4_QUEST_ITEM, false },
{ MAP_C1_FAIR_GFX, 4, CHAPTER06_LEVEL01_INF_TOTAL_ITEM_KELP_TOKEN, -1, true }, { MAP_GFX_C1_FAIR, 4, CHAPTER06_LEVEL01_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
}, },
{ {
{ MAP_C2_L1_GFX, 5, CHAPTER02_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L1_QUEST_ITEM, false }, { MAP_GFX_C2_L1, 5, CHAPTER02_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L1_QUEST_ITEM, false },
{ MAP_C2_L2_GFX, 6, CHAPTER02_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L2_QUEST_ITEM, false }, { MAP_GFX_C2_L2, 6, CHAPTER02_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L2_QUEST_ITEM, false },
{ MAP_C2_L3_GFX, 7, CHAPTER02_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L3_QUEST_ITEM, false }, { MAP_GFX_C2_L3, 7, CHAPTER02_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L3_QUEST_ITEM, false },
{ MAP_C2_L4_GFX, 8, CHAPTER02_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L4_QUEST_ITEM, false }, { MAP_GFX_C2_L4, 8, CHAPTER02_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L4_QUEST_ITEM, false },
{ MAP_C2_FAIR_GFX, 9, CHAPTER06_LEVEL02_INF_TOTAL_ITEM_KELP_TOKEN, -1, true }, { MAP_GFX_C2_FAIR, 9, CHAPTER06_LEVEL02_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
}, },
{ {
{ MAP_C3_L1_GFX, 10, CHAPTER03_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L1_QUEST_ITEM, false }, { MAP_GFX_C3_L1, 10, CHAPTER03_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L1_QUEST_ITEM, false },
{ MAP_C3_L2_GFX, 11, CHAPTER03_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L2_QUEST_ITEM, false }, { MAP_GFX_C3_L2, 11, CHAPTER03_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L2_QUEST_ITEM, false },
{ MAP_C3_L3_GFX, 12, CHAPTER03_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L3_QUEST_ITEM, false }, { MAP_GFX_C3_L3, 12, CHAPTER03_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L3_QUEST_ITEM, false },
{ MAP_C3_L4_GFX, 13, CHAPTER03_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L4_QUEST_ITEM, false }, { MAP_GFX_C3_L4, 13, CHAPTER03_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L4_QUEST_ITEM, false },
{ MAP_C3_FAIR_GFX, 14, CHAPTER06_LEVEL03_INF_TOTAL_ITEM_KELP_TOKEN, -1, true }, { MAP_GFX_C3_FAIR, 14, CHAPTER06_LEVEL03_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
}, },
{ {
{ MAP_C4_L1_GFX, 15, CHAPTER04_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false }, { MAP_GFX_C4_L1, 15, CHAPTER04_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
{ MAP_C4_L2_GFX, 16, CHAPTER04_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false }, { MAP_GFX_C4_L2, 16, CHAPTER04_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
{ MAP_C4_L3_GFX, 17, CHAPTER04_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false }, { MAP_GFX_C4_L3, 17, CHAPTER04_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
{ MAP_C4_L4_GFX, 18, CHAPTER04_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false }, { MAP_GFX_C4_L4, 18, CHAPTER04_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
{ MAP_C4_FAIR_GFX, 19, CHAPTER06_LEVEL04_INF_TOTAL_ITEM_KELP_TOKEN, -1, true }, { MAP_GFX_C4_FAIR, 19, CHAPTER06_LEVEL04_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
}, },
{ {
{ MAP_C5_L1_GFX, 20, CHAPTER05_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L1_QUEST_ITEM, false }, { MAP_GFX_C5_L1, 20, CHAPTER05_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L1_QUEST_ITEM, false },
{ MAP_C5_L2_GFX, 21, CHAPTER05_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L2_QUEST_ITEM, false }, { MAP_GFX_C5_L2, 21, CHAPTER05_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L2_QUEST_ITEM, false },
{ MAP_C5_L3_GFX, 22, CHAPTER05_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L3_QUEST_ITEM, false }, { MAP_GFX_C5_L3, 22, CHAPTER05_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L3_QUEST_ITEM, false },
{ MAP_C5_L4_GFX, 23, CHAPTER05_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L4_QUEST_ITEM, false }, { MAP_GFX_C5_L4, 23, CHAPTER05_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L4_QUEST_ITEM, false },
{ MAP_C5_FAIR_GFX, 24, CHAPTER06_LEVEL05_INF_TOTAL_ITEM_KELP_TOKEN, -1, true }, { MAP_GFX_C5_FAIR, 24, CHAPTER06_LEVEL05_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
}, },
}; };
@ -205,7 +239,17 @@ void CMapScene::init()
m_screenImage=MemAlloc(512*256*2,"MapScreen"); m_screenImage=MemAlloc(512*256*2,"MapScreen");
m_currentChapterSelection=s_chapterToStartOn; m_currentChapterSelection=s_chapterToStartOn;
m_mapBackgroundImage=(char*)CFileIO::loadFile(MAP_MAP_BACKGROUND_GFX);ASSERT(m_mapBackgroundImage); // m_mapBackgroundImage=(char*)CFileIO::loadFile(MAP_MAP_BACKGROUND_GFX);ASSERT(m_mapBackgroundImage);
u8 *Back=(u8*)CFileIO::loadFile(MAP_MAP_BACKGROUND_GFX);ASSERT(Back);
LZNP_Decode(Back,(u8*)m_screenImage);
MemFree(Back);
// Load level Gfx
for (int i=0; i<MAP_GFX_MAX; i++)
{
s_GfxTable[i].Gfx=(u8*)CFileIO::loadFile((FileEquate)s_GfxTable[i].Filename,"MapLevelGfx");
}
generateMapScreenImage(); generateMapScreenImage();
m_currentLevelSelection=s_levelToStartOn; m_currentLevelSelection=s_levelToStartOn;
@ -233,8 +277,14 @@ void CMapScene::shutdown()
CSoundMediator::dumpSong(); CSoundMediator::dumpSong();
ClearScreenImage(); ClearScreenImage();
// Free level Gfx
for (int i=0; i<MAP_GFX_MAX; i++)
{
MemFree(s_GfxTable[i].Gfx);
}
delete m_pointerIcon; delete m_pointerIcon;
MemFree(m_mapBackgroundImage); // MemFree(m_mapBackgroundImage);
MemFree(m_screenImage); MemFree(m_screenImage);
m_font->dump(); delete m_font; m_font->dump(); delete m_font;
} }
@ -512,12 +562,13 @@ void CMapScene::generateMapScreenImage()
int i; int i;
m_currentLevelSelection=0; m_currentLevelSelection=0;
memcpy(m_screenImage,m_mapBackgroundImage,512*256*2); // memcpy(m_screenImage,m_mapBackgroundImage,512*256*2);
for(i=0;i<MAP_NUM_LEVELS_PER_CHAPTER;i++) for(i=0;i<MAP_NUM_LEVELS_PER_CHAPTER;i++)
{ {
if(isLevelOpen(m_currentChapterSelection,i)) if(isLevelOpen(m_currentChapterSelection,i))
{ {
copyImageToScreen(s_mapLevelData[m_currentChapterSelection][i].m_mapFile,s_mapLevelPositions[i].vx,s_mapLevelPositions[i].vy,MAP_LEVEL_WIDTH,MAP_LEVEL_HEIGHT); copyImageToScreen(s_mapLevelData[m_currentChapterSelection][i].m_Gfx,s_mapLevelPositions[i].vx,s_mapLevelPositions[i].vy,MAP_LEVEL_WIDTH,MAP_LEVEL_HEIGHT);
// copyImageToScreen(s_mapLevelData[m_currentChapterSelection][i].m_mapFile,s_mapLevelPositions[i].vx,s_mapLevelPositions[i].vy,MAP_LEVEL_WIDTH,MAP_LEVEL_HEIGHT);
} }
} }
@ -537,12 +588,20 @@ void CMapScene::copyImageToScreen(int _file,int _x,int _y,int _w,int _h)
u16 *src,*dst; u16 *src,*dst;
int y; int y;
image=CFileIO::loadFile((FileEquate)_file);ASSERT(image); image=(u8*)MemAlloc(MAP_LEVEL_WIDTH*MAP_LEVEL_HEIGHT*2,"MapLvlBuffer");
LZNP_Decode(s_GfxTable[_file].Gfx,image);
// image=CFileIO::loadFile((FileEquate)_file);ASSERT(image);
src=(u16*)image; src=(u16*)image;
dst=(u16*)m_screenImage+(_x+(_y*512)); dst=(u16*)m_screenImage+(_x+(_y*512));
for(y=0;y<_h;y++) for(y=0;y<_h;y++)
{ {
memcpy(dst,src,_w*2); // memcpy(dst,src,_w*2);
u32 *S=(u32*)src;
u32 *D=(u32*)dst;
for (int x=0; x<MAP_LEVEL_WIDTH/2; x++)
{
*D++=*S++;
}
dst+=512; dst+=512;
src+=_w; src+=_w;
} }

View File

@ -74,15 +74,55 @@ private:
MAP_NUM_LEVELS_PER_CHAPTER=5, MAP_NUM_LEVELS_PER_CHAPTER=5,
}; };
enum MAP_GFX
{
MAP_GFX_C1_L1=0,
MAP_GFX_C1_L2,
MAP_GFX_C1_L3,
MAP_GFX_C1_L4,
MAP_GFX_C1_FAIR,
MAP_GFX_C2_L1,
MAP_GFX_C2_L2,
MAP_GFX_C2_L3,
MAP_GFX_C2_L4,
MAP_GFX_C2_FAIR,
MAP_GFX_C3_L1,
MAP_GFX_C3_L2,
MAP_GFX_C3_L3,
MAP_GFX_C3_L4,
MAP_GFX_C3_FAIR,
MAP_GFX_C4_L1,
MAP_GFX_C4_L2,
MAP_GFX_C4_L3,
MAP_GFX_C4_L4,
MAP_GFX_C4_FAIR,
MAP_GFX_C5_L1,
MAP_GFX_C5_L2,
MAP_GFX_C5_L3,
MAP_GFX_C5_L4,
MAP_GFX_C5_FAIR,
MAP_GFX_MAX
};
typedef struct typedef struct
{ {
int m_mapFile; MAP_GFX m_Gfx;
int m_globalLevelNumber; int m_globalLevelNumber;
int m_spatulaOrTokenCounts; int m_spatulaOrTokenCounts;
int m_questItemFrame; int m_questItemFrame;
int m_kelpWorldLevel; int m_kelpWorldLevel;
} sMapLevelData; } sMapLevelData;
struct sMapLevelGfxTable
{
int Filename;
u8 *Gfx;
};
void renderPointer(); void renderPointer();
void renderInstructions(); void renderInstructions();
@ -102,14 +142,15 @@ private:
int m_musicStarted; int m_musicStarted;
char *m_screenImage; char *m_screenImage;
char *m_mapBackgroundImage; // char *m_mapBackgroundImage;
int m_currentChapterSelection; int m_currentChapterSelection;
int m_currentLevelSelection; int m_currentLevelSelection;
class CPointerIcon *m_pointerIcon; class CPointerIcon *m_pointerIcon;
static sMapLevelData s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER]; static sMapLevelGfxTable s_GfxTable[MAP_GFX_MAX];
static DVECTOR s_mapLevelPositions[MAP_NUM_LEVELS_PER_CHAPTER]; static sMapLevelData s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER];
static DVECTOR s_mapLevelPositions[MAP_NUM_LEVELS_PER_CHAPTER];
static int s_chapterToStartOn; static int s_chapterToStartOn;
static int s_levelToStartOn; static int s_levelToStartOn;