mirror of
https://github.com/UberGames/EF2GameSource.git
synced 2024-11-10 06:31:42 +00:00
145 lines
3.7 KiB
C++
145 lines
3.7 KiB
C++
|
//-----------------------------------------------------------------------------
|
||
|
//
|
||
|
// $Logfile:: /Code/DLLs/game/program.h $
|
||
|
// $Revision:: 7 $
|
||
|
// $Date:: 5/07/02 12:02p $
|
||
|
//
|
||
|
// Copyright (C) 1999 by Ritual Entertainment, Inc.
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
// This source is may not be distributed and/or modified without
|
||
|
// expressly written permission by Ritual Entertainment, Inc.
|
||
|
//
|
||
|
|
||
|
#ifndef PUZZLE_OBJECT_HPP
|
||
|
#define PUZZLE_OBJECT_HPP
|
||
|
|
||
|
#include "entity.h"
|
||
|
|
||
|
|
||
|
class PuzzleObject : public Entity
|
||
|
{
|
||
|
public:
|
||
|
CLASS_PROTOTYPE( PuzzleObject );
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
// "idle" anim
|
||
|
PUZZLE_STATE_IDLE, // normal, just waiting for the player
|
||
|
PUZZLE_STATE_IDLE_SOLVED, // player has solved it, it's in afterglow
|
||
|
PUZZLE_STATE_IDLE_LOCKED, // player fucked it up, it's sulking
|
||
|
|
||
|
// "opening" anim
|
||
|
PUZZLE_STATE_OPENING, // working on getting open
|
||
|
|
||
|
// "open" anim
|
||
|
PUZZLE_STATE_IDLE_OPEN, // waiting to be used by you
|
||
|
|
||
|
// "openon" anim
|
||
|
PUZZLE_STATE_ACTIVE_OPEN, // is being used by you
|
||
|
|
||
|
// "closing" anim
|
||
|
PUZZLE_STATE_CLOSING, // closing on the way to normal idle
|
||
|
PUZZLE_STATE_CLOSING_SOLVED,// closing after being solved
|
||
|
PUZZLE_STATE_CLOSING_LOCKED,// closing after being failed
|
||
|
|
||
|
PUZZLE_STATE_DEACTIVATED
|
||
|
|
||
|
}PuzzleState;
|
||
|
|
||
|
|
||
|
PuzzleObject();
|
||
|
virtual ~PuzzleObject();
|
||
|
|
||
|
PuzzleState getPuzzleState(void) { return _puzzleState; }
|
||
|
void setPuzzleState(PuzzleState puzzleState) { _puzzleState = puzzleState; }
|
||
|
|
||
|
void setOpenDistance(Event* event);
|
||
|
|
||
|
//Thread setting functions
|
||
|
void setItemUsedThread(Event* event);
|
||
|
void setFailedThread(Event* event);
|
||
|
void setSolvedThread(Event* event);
|
||
|
void setCanceledThread(Event* event);
|
||
|
|
||
|
void failed(Event* event);
|
||
|
void canceled(Event* event);
|
||
|
void solved(Event* event);
|
||
|
void reset( Event* event );
|
||
|
|
||
|
void animationDone(Event* event);
|
||
|
void setItemToUse(Event* event);
|
||
|
void useEvent(Event* event);
|
||
|
void activate( Event* event );
|
||
|
void deActivate( Event* event );
|
||
|
|
||
|
void normalUse( void );
|
||
|
void timedUse( void );
|
||
|
|
||
|
void setTimeToUse( Event *ev );
|
||
|
void timedPuzzleSolved( void );
|
||
|
void timedPuzzleCanceled( void );
|
||
|
void showTimerHud( void );
|
||
|
void hideTimerHud( void );
|
||
|
|
||
|
void setTimerHudName( Event * ev );
|
||
|
|
||
|
void becomeModBarInSkill( Event* ev );
|
||
|
|
||
|
/*virtual*/ void Archive(Archiver &arc);
|
||
|
/*virutal*/ void Think( void );
|
||
|
|
||
|
private:
|
||
|
str _itemToUse;
|
||
|
//Animations to use based up the state.
|
||
|
str _itemUsedThread;
|
||
|
str _failedThread;
|
||
|
str _solvedThread;
|
||
|
str _canceledThread;
|
||
|
|
||
|
PuzzleState _puzzleState;
|
||
|
PuzzleState _saveState;
|
||
|
float _openDistance;
|
||
|
|
||
|
bool _timed;
|
||
|
float _timeToUse;
|
||
|
float _lastTimeUsed;
|
||
|
float _usedTime;
|
||
|
bool _hudOn;
|
||
|
|
||
|
float _nextNeedToUseTime;
|
||
|
|
||
|
str _hudName;
|
||
|
int _minSkill; // if skill level is <= this, the puzzle becomes a mod bar
|
||
|
};
|
||
|
|
||
|
|
||
|
inline void PuzzleObject::Archive( Archiver &arc )
|
||
|
{
|
||
|
Entity::Archive( arc );
|
||
|
|
||
|
arc.ArchiveString( &_itemToUse );
|
||
|
arc.ArchiveString( &_itemUsedThread );
|
||
|
arc.ArchiveString( &_failedThread );
|
||
|
arc.ArchiveString( &_solvedThread );
|
||
|
arc.ArchiveString( &_canceledThread );
|
||
|
ArchiveEnum( _puzzleState, PuzzleState );
|
||
|
ArchiveEnum( _saveState, PuzzleState );
|
||
|
|
||
|
arc.ArchiveFloat( &_openDistance );
|
||
|
|
||
|
arc.ArchiveBool( &_timed );
|
||
|
arc.ArchiveFloat( &_timeToUse );
|
||
|
arc.ArchiveFloat( &_lastTimeUsed );
|
||
|
arc.ArchiveFloat( &_usedTime );
|
||
|
arc.ArchiveBool( &_hudOn );
|
||
|
|
||
|
arc.ArchiveFloat( &_nextNeedToUseTime );
|
||
|
|
||
|
arc.ArchiveString( &_hudName );
|
||
|
|
||
|
arc.ArchiveInteger( &_minSkill );
|
||
|
}
|
||
|
|
||
|
#endif
|