This commit is contained in:
Paul 2001-01-10 21:43:17 +00:00
parent 0da75f8104
commit cfead5058e
2 changed files with 259 additions and 0 deletions

172
source/game/gameslot.cpp Normal file
View File

@ -0,0 +1,172 @@
/*=========================================================================
gameslot.cpp
Author: PKG
Created:
Project: Spongebob
Purpose:
Copyright (c) 2000 Climax Development Ltd
===========================================================================*/
/*----------------------------------------------------------------------
Includes
-------- */
#include "game\gameslot.h"
#ifndef __SYSTEM_DBG_H__
#include "system\dbg.h"
#endif
/* Std Lib
------- */
/* Data
---- */
/*----------------------------------------------------------------------
Tyepdefs && Defines
------------------- */
/*----------------------------------------------------------------------
Structure defintions
-------------------- */
/*----------------------------------------------------------------------
Function Prototypes
------------------- */
/*----------------------------------------------------------------------
Vars
---- */
CGameSlotManager::GameSlot CGameSlotManager::s_gameSlots[4];
CGameSlotManager::GameSlot *CGameSlotManager::s_currentGameSlot=0;
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGameSlotManager::init()
{
int i;
for(i=0;i<NUM_GAME_SLOTS;i++)
{
eraseGameSlot(i);
}
setActiveSlot(0);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGameSlotManager::setActiveSlot(unsigned int _slot)
{
ASSERT(_slot<=NUM_GAME_SLOTS);
s_currentGameSlot=&s_gameSlots[_slot];
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
CGameSlotManager::GameSlot CGameSlotManager::getSlotData()
{
ASSERT(s_currentGameSlot!=0);
return *s_currentGameSlot;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGameSlotManager::setSlotData(GameSlot *_data)
{
ASSERT(s_currentGameSlot!=0);
*s_currentGameSlot=*_data;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGameSlotManager::eraseGameSlot(unsigned int _slot)
{
ASSERT(_slot<=NUM_GAME_SLOTS);
GameSlot *slot;
slot=&s_gameSlots[_slot];
slot->m_lives=INITIAL_LIVES;
slot->m_continues=INITIAL_CONTINUES;
slot->m_maxLevelCompleted=0;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGameSlotManager::copyGameSlot(unsigned int _src,unsigned int _dest)
{
ASSERT(_src<=NUM_GAME_SLOTS);
ASSERT(_dest<=NUM_GAME_SLOTS);
s_gameSlots[_dest]=s_gameSlots[_src];
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGameSlotManager::setSlotData(int _slot,GameSlot *_data)
{
ASSERT(_slot<=NUM_GAME_SLOTS);
s_gameSlots[_slot]=*_data;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
CGameSlotManager::GameSlot CGameSlotManager::getSlotData(int _slot)
{
ASSERT(_slot<=NUM_GAME_SLOTS);
return s_gameSlots[_slot];
}
/*===========================================================================
end */

87
source/game/gameslot.h Normal file
View File

@ -0,0 +1,87 @@
/*=========================================================================
gameslot.h
Author: PKG
Created:
Project: Spongebob
Purpose:
Copyright (c) 2000 Climax Development Ltd
===========================================================================*/
#ifndef __GAME_GAMESLOT_H__
#define __GAME_GAMESLOT_H__
/*----------------------------------------------------------------------
Includes
-------- */
/* Std Lib
------- */
/*----------------------------------------------------------------------
Tyepdefs && Defines
------------------- */
/*----------------------------------------------------------------------
Structure defintions
-------------------- */
class CGameSlotManager
{
public:
enum
{
INITIAL_LIVES=4,
INITIAL_CONTINUES=3,
NUM_GAME_SLOTS=4,
};
typedef struct
{
int m_lives;
int m_continues;
int m_maxLevelCompleted;
} GameSlot;
static void init();
static void setActiveSlot(unsigned int _slot);
static GameSlot getSlotData();
static void setSlotData(GameSlot *_data);
static void eraseGameSlot(unsigned int _slot);
static void copyGameSlot(unsigned int _src,unsigned int _dest);
private:
static GameSlot s_gameSlots[NUM_GAME_SLOTS];
static GameSlot *s_currentGameSlot;
// These allow the CSaveLoadDatabase total access to the game slots
static void setSlotData(int _slot,GameSlot *_data);
static GameSlot getSlotData(int _slot);
friend class CSaveLoadDatabase;
};
/*----------------------------------------------------------------------
Globals
------- */
/*----------------------------------------------------------------------
Functions
--------- */
/*---------------------------------------------------------------------- */
#endif /* __GAME_GAMESLOT_H__ */
/*===========================================================================
end */