Files
firestorm/Gameleap/code/mw4/Libraries/Adept/ExecutionState.hpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

172 lines
3.9 KiB
C++

#pragma once
#include "Adept.hpp"
#include "State.hpp"
namespace Adept {
class Entity;
//##########################################################################
//##################### Entity::StateEngine ##########################
//##########################################################################
class Entity__ExecutionStateEngine__ClassData;
class Entity__ExecutionStateEngine:
public StateEngine
{
public:
static void
InitializeClass();
static void
TerminateClass();
typedef StateEngine BaseClass;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Inheritance support
//
public:
typedef Entity__ExecutionStateEngine__ClassData ClassData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Run-time Construction and Destruction Support
//
public:
typedef Entity__ExecutionStateEngine*
(*Factory)(
Entity *entity,
const FactoryRequest *request
);
static Entity__ExecutionStateEngine*
Make(
Entity *entity,
const FactoryRequest *request
);
protected:
Entity__ExecutionStateEngine(
ClassData *class_data,
Entity *entity,
const FactoryRequest *request
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class Data support
//
public:
ClassData*
GetClassData();
static ClassData
*DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// State stuff
//
public:
enum {
NeverExecuteState = StateEngine::StateCount,
AlwaysExecuteState,
ExecuteOnceState,
StateCount
};
int
RequestState(
int new_state,
void* data = NULL
);
protected:
static const StateEntry
StateEntries[];
Entity
*owningEntity;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Support
//
public:
void
TestInstance();
};
//##########################################################################
//##### Entity::StateEngine::ClassData ##########
//##########################################################################
class Entity__ExecutionStateEngine__ClassData:
public StateEngine::ClassData
{
friend class Entity__ExecutionStateEngine;
public:
typedef StateEngine::ClassData BaseClass;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
Entity__ExecutionStateEngine__ClassData(
Stuff::RegisteredClass::ClassID class_id,
const char *class_name,
StateEngine::ClassData *parent,
int state_count,
const StateEngine__StateEntry *state_entries,
Entity__ExecutionStateEngine::Factory engine_factory,
Entity__ExecutionStateEngine::FactoryRequest::Factory request_factory
):
StateEngine__ClassData(
class_id,
class_name,
parent,
state_count,
state_entries,
(StateEngine::Factory)engine_factory,
request_factory
)
{}
Entity__ExecutionStateEngine*
Make(
Entity *entity,
const Entity__ExecutionStateEngine::FactoryRequest *request
)
{
Check_Object(this); Check_Pointer(entity); Check_Object(request);
Check_Pointer(engineFactory);
return (*(Entity__ExecutionStateEngine::Factory)engineFactory)(entity, request);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Support
//
public:
void
TestInstance();
};
inline Entity__ExecutionStateEngine::Entity__ExecutionStateEngine(
ClassData *class_data,
Entity *entity,
const FactoryRequest *request
):
BaseClass(class_data, request),
owningEntity(entity)
{
Check_Pointer(entity);
}
inline Entity__ExecutionStateEngine::ClassData*
Entity__ExecutionStateEngine::GetClassData()
{
Check_Object(this);
return Cast_Pointer(ClassData*, classData);
}
}