mirror of
https://github.com/tribes2/engine.git
synced 2026-03-26 07:39:15 +00:00
t2 engine svn checkout
This commit is contained in:
commit
ff569bd2ae
988 changed files with 394180 additions and 0 deletions
199
console/console.h
Normal file
199
console/console.h
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// V12 Engine
|
||||
//
|
||||
// Copyright (c) 2001 GarageGames.Com
|
||||
// Portions Copyright (c) 2001 by Sierra Online, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef _CONSOLE_H_
|
||||
#define _CONSOLE_H_
|
||||
|
||||
#ifndef _PLATFORM_H_
|
||||
#include "Platform/platform.h"
|
||||
#endif
|
||||
#ifndef _BITSET_H_
|
||||
#include "Core/bitSet.h"
|
||||
#endif
|
||||
|
||||
class SimObject;
|
||||
struct EnumTable;
|
||||
class Namespace;
|
||||
|
||||
enum
|
||||
{
|
||||
StringTagPrefixByte = 0x01
|
||||
};
|
||||
|
||||
struct ConsoleLogEntry
|
||||
{
|
||||
enum Level
|
||||
{
|
||||
Normal = 0,
|
||||
Warning,
|
||||
Error,
|
||||
NUM_CLASS
|
||||
} mLevel;
|
||||
enum Type
|
||||
{
|
||||
General = 0,
|
||||
Assert,
|
||||
Script,
|
||||
GUI,
|
||||
Network,
|
||||
NUM_TYPE
|
||||
} mType;
|
||||
const char *mString;
|
||||
};
|
||||
|
||||
struct EnumTable
|
||||
{
|
||||
S32 size;
|
||||
|
||||
struct Enums
|
||||
{
|
||||
S32 index;
|
||||
const char *label;
|
||||
};
|
||||
|
||||
Enums *table;
|
||||
EnumTable(S32 sSize, Enums *sTable)
|
||||
{ size = sSize; table = sTable; }
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
typedef const char *StringTableEntry;
|
||||
typedef const char *(*StringCallback)(SimObject *obj, S32 argc, const char *argv[]);
|
||||
typedef S32 (*IntCallback)(SimObject *obj, S32 argc, const char *argv[]);
|
||||
typedef F32 (*FloatCallback)(SimObject *obj, S32 argc, const char *argv[]);
|
||||
typedef void (*VoidCallback)(SimObject *obj, S32 argc, const char *argv[]);
|
||||
typedef bool (*BoolCallback)(SimObject *obj, S32 argc, const char *argv[]);
|
||||
typedef void (*ConsumerCallback)(ConsoleLogEntry::Level level, const char *consoleLine);
|
||||
|
||||
typedef const char* (*GetDataFunction)(void *dptr, EnumTable *tbl, BitSet32 flag);
|
||||
typedef void (*SetDataFunction)(void *dptr, S32 argc, const char **argv, EnumTable *tbl, BitSet32 flag);
|
||||
|
||||
|
||||
namespace Con
|
||||
{
|
||||
enum {
|
||||
MaxLineLength = 512
|
||||
};
|
||||
|
||||
void init();
|
||||
void shutdown();
|
||||
bool isActive();
|
||||
|
||||
void addConsumer(ConsumerCallback cb);
|
||||
void removeConsumer(ConsumerCallback cb);
|
||||
|
||||
void setVariable(const char *name, const char *value);
|
||||
bool addVariable(const char *name, S32, void *);
|
||||
bool removeVariable(const char *name);
|
||||
const char* getVariable(const char* name);
|
||||
const char* getLocalVariable(const char* name);
|
||||
void setLocalVariable(const char *name, const char *value);
|
||||
|
||||
void addCommand(const char *name, StringCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
void addCommand(const char *name, IntCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
void addCommand(const char *name, FloatCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
void addCommand(const char *name, VoidCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
void addCommand(const char *name, BoolCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
|
||||
void addCommand(const char *nameSpace, const char *name,StringCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
void addCommand(const char *nameSpace, const char *name,IntCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
void addCommand(const char *nameSpace, const char *name,FloatCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
void addCommand(const char *nameSpace, const char *name,VoidCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
void addCommand(const char *nameSpace, const char *name,BoolCallback, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
|
||||
bool removeCommand(const char *name);
|
||||
void printf(const char *_format, ...);
|
||||
void warnf(ConsoleLogEntry::Type type, const char *_format, ...);
|
||||
void errorf(ConsoleLogEntry::Type type, const char *_format, ...);
|
||||
void warnf(const char *_format, ...);
|
||||
void errorf(const char *_format, ...);
|
||||
|
||||
const char *execute(S32 argc, const char* argv[]);
|
||||
const char *executef(S32 argc, ...); // first param is funcName, remaining params are args
|
||||
|
||||
// first param is func name, second param MUST be empty (gets filled with object ID)
|
||||
// also, MUST have at least those two params
|
||||
const char *execute(SimObject *, S32 argc, const char *argv[]);
|
||||
|
||||
const char *executef(SimObject *, S32 argc, ...); // first param is funcName, remaining params are args
|
||||
|
||||
const char *evaluate(const char* string, bool echo = false, const char *fileName = NULL);
|
||||
const char *evaluatef(const char* string, ...);
|
||||
|
||||
bool isFunction(const char *fn);
|
||||
|
||||
void setBoolVariable(const char* name,bool var);
|
||||
bool getBoolVariable(const char* name,bool def = false);
|
||||
void setIntVariable(const char* name,S32 var);
|
||||
S32 getIntVariable(const char* name,S32 def = 0);
|
||||
void setFloatVariable(const char* name,F32 var);
|
||||
F32 getFloatVariable(const char* name,F32 def = .0f);
|
||||
|
||||
// console function implementation helpers
|
||||
char *getReturnBuffer(U32 bufferSize);
|
||||
|
||||
char *getArgBuffer(U32 bufferSize);
|
||||
char *getFloatArg(F64 arg);
|
||||
char *getIntArg(S32 arg);
|
||||
|
||||
|
||||
const char *tabComplete(const char *prevText, S32 baseLen, bool);
|
||||
void exportVariables(const char *varString, Vector<const char *> &varName, Vector<const char *> &value);
|
||||
|
||||
Namespace *lookupNamespace(const char *nsName);
|
||||
void linkNamespaces(const char *parentName, const char *childName);
|
||||
|
||||
// this should only be called from consoleObject.h
|
||||
void classLinkNamespaces(Namespace *parent, Namespace *child);
|
||||
|
||||
void getLog(ConsoleLogEntry * &log, U32 &size);
|
||||
// dynamic data management functions:
|
||||
void setLogMode(S32 mode);
|
||||
|
||||
void registerType(S32 type, S32 size, GetDataFunction gdf, SetDataFunction sdf);
|
||||
void setData(S32 type, void *dptr, S32 index, S32 argc, const char **argv, EnumTable *tbl = NULL, BitSet32 flag = 0);
|
||||
const char *getData(S32 type, void *dptr, S32 index, EnumTable *tbl = NULL, BitSet32 flag = 0);
|
||||
}
|
||||
|
||||
extern void expandEscape(char *dest, const char *src);
|
||||
extern bool collapseEscape(char *buf);
|
||||
extern S32 HashPointer(StringTableEntry ptr);
|
||||
|
||||
struct ConsoleConstructor
|
||||
{
|
||||
StringCallback sc;
|
||||
IntCallback ic;
|
||||
FloatCallback fc;
|
||||
VoidCallback vc;
|
||||
BoolCallback bc;
|
||||
S32 mina, maxa;
|
||||
const char *usage;
|
||||
const char *funcName;
|
||||
const char *className;
|
||||
ConsoleConstructor *next;
|
||||
static ConsoleConstructor *first;
|
||||
|
||||
void init(const char *cName, const char *fName, const char *usg, S32 minArgs, S32 maxArgs);
|
||||
static void setup();
|
||||
ConsoleConstructor(const char *className, const char *funcName, StringCallback sfunc, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
ConsoleConstructor(const char *className, const char *funcName, IntCallback ifunc, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
ConsoleConstructor(const char *className, const char *funcName, FloatCallback ffunc, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
ConsoleConstructor(const char *className, const char *funcName, VoidCallback vfunc, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
ConsoleConstructor(const char *className, const char *funcName, BoolCallback bfunc, const char *usage, S32 minArgs, S32 maxArgs);
|
||||
};
|
||||
|
||||
#define ConsoleFunction(name,returnType,minArgs,maxArgs,usage) \
|
||||
static returnType c##name(SimObject *, S32, const char **argv); \
|
||||
static ConsoleConstructor g##name##obj(NULL,#name,c##name,usage,minArgs,maxArgs);\
|
||||
static returnType c##name(SimObject *, S32 argc, const char **argv)
|
||||
|
||||
#define ConsoleMethod(className,name,returnType,minArgs,maxArgs,usage) \
|
||||
static returnType c##className##name(SimObject *, S32, const char **argv); \
|
||||
static ConsoleConstructor className##name##obj(#className,#name,c##className##name,usage,minArgs,maxArgs);\
|
||||
static returnType c##className##name(SimObject *object, S32 argc, const char **argv)
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue