SBSPSS/source/map/map.h
2001-08-09 19:51:18 +00:00

206 lines
4.2 KiB
C++

/*=========================================================================
map.h
Author: PKG
Created:
Project: Spongebob
Purpose:
Copyright (c) 2001 Climax Development Ltd
===========================================================================*/
#ifndef __MAP_MAP_H__
#define __MAP_MAP_H__
/*----------------------------------------------------------------------
Includes
-------- */
#ifndef __SYSTEM_GSTATE_H__
#include "system\gstate.h"
#endif
#ifndef _GLOBAL_HEADER_
#include "system\global.h" // Doh.. just for DVECTOR :/
#endif
/* Std Lib
------- */
/*----------------------------------------------------------------------
Tyepdefs && Defines
------------------- */
/*----------------------------------------------------------------------
Structure defintions
-------------------- */
class CMapScene: public CScene
{
public:
void init();
void shutdown();
void render();
void think(int _frames);
int readyToShutdown();
char *getSceneName() {return"Map";}
static void setLevelToStartOn(int _chapter,int _level) {s_chapterToStartOn=_chapter;s_levelToStartOn=_level;}
private:
enum
{
MAP_LEVEL_WIDTH=140,
MAP_LEVEL_HEIGHT=60,
MAP_INSTRUCTIONS_YSTART=180,
MAP_INSTRUCTIONS_BUTTON_Y_OFFSET=3,
MAP_INSTRUCTIONS_TEXT_R=128,
MAP_INSTRUCTIONS_TEXT_G=64,
MAP_INSTRUCTIONS_TEXT_B=64,
MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS=5,
MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT=10,
MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES=13,
MAP_CHAPTER_ARROW_XOFF=90,
MAP_CHAPTER_ARROW_Y=180,
MAP_CHAPTER_ARROW_RGB_UNSELECTED=50,
MAP_CHAPTER_ARROW_RGB_SELECTED=150,
MAP_NUM_CHAPTERS=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
{
MAP_GFX m_Gfx;
int m_globalLevelNumber;
int m_spatulaOrTokenCounts;
int m_questItemFrame;
int m_kelpWorldLevel;
} sMapLevelData;
struct sMapLevelGfxTable
{
int Filename;
u8 *Gfx;
};
enum
{
MAP_ICON_PREVIOUS_CHAPTER,
MAP_ICON_LEVEL_1,
MAP_ICON_LEVEL_2,
MAP_ICON_LEVEL_3,
MAP_ICON_LEVEL_4,
MAP_ICON_LEVEL_BONUS,
MAP_ICON_NEXT_CHAPTER,
NUM_MAP_ICONS,
};
typedef struct
{
u8 m_left,m_right,m_up,m_down;
} sMapIconMoves;
typedef enum
{
CURSOR_DIDNT_MOVE,
CURSOR_MOVED,
CURSOR_COULDNT_MOVE,
} CURSOR_MOVE_STATE;
void renderPointer();
void renderInstructions();
void renderChapterArrows();
void generateMapScreenImage();
void copyImageToScreen(int _file,int _x,int _y,int _w,int _h);
DVECTOR getPointerTargetPosition();
int isLevelOpen(unsigned int _chapter,unsigned int _level);
int isChapterOpen(unsigned int _chapter);
int getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level);
int hasQuestItemBeenCollected(unsigned int _chapter,unsigned int _level);
class FontBank *m_font;
int m_readyToExit;
int m_musicStarted;
char *m_screenImage;
char *m_packedBackgroundImage;
int m_currentChapterSelection;
int m_currentIconSelection;
class CPointerIcon *m_pointerIcon;
static sMapLevelGfxTable s_GfxTable[MAP_GFX_MAX];
static sMapLevelData s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER];
static DVECTOR s_mapLevelPositions[MAP_NUM_LEVELS_PER_CHAPTER];
static DVECTOR s_mapPointerPositions[MAP_NUM_LEVELS_PER_CHAPTER+2];
static const int s_padToIconMappings[4][NUM_MAP_ICONS][NUM_MAP_ICONS];
static int s_chapterToStartOn;
static int s_levelToStartOn;
};
/*----------------------------------------------------------------------
Globals
------- */
extern CMapScene MapScene;
/*----------------------------------------------------------------------
Functions
--------- */
/*---------------------------------------------------------------------- */
#endif /* __MAP_MAP_H__ */
/*===========================================================================
end */