Show kcommandprocessor.h syntax highlighted
/*
Copyright (C) 2003, 2004, 2005 by Luca Cappa
Written by Luca Cappa groton@users.sourceforge.net
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __COMMAND_H__
#define __COMMAND_H__
#include "ivideo/graph3d.h"
#include "iutil/vfs.h"
#include "iutil/plugin.h"
#include "ivaria/conin.h"
#include "csutil/strhash.h"
//
//Forward declarations.
struct iEngine;
struct iCamera;
struct iConsoleOutput;
struct iObjectRegistry;
struct iPluginManager;
class csMeshList;
class SKE;
/**
* This class represents a command that can be send thru the console
* or by pressing a key from within the engine.
* It is a static class which contains only static data.
*/
class KCommandProcessor
{
private:
/// The engine that this command interpreter is using.
static iEngine* s_engine;
/// The corresponding camera object for this command interpreter.
static iCamera* s_camera;
/// The iGraphics3D interface to use.
static iGraphics3D* s_g3d;
/// The iObjectRegistry interface to use.
//static iObjectRegistry* object_reg;
/// The console.
static iConsoleOutput* s_console;
/**
* If this variable is non-NULL there is a running script from
* which commands are read and executed (one command every frame).
*/
static iFile* s_script;
public:
static csStringHash s_cmdSet;
/// Call this first.
static void Initialize (iCamera* camera, iConsoleOutput* p_console);
//??? WHERE DOES THIS INTERFACE IS USED TO????
/// This struct can be used as a console input callback
struct PerformCallback : public iConsoleExecCallback
{
SCF_DECLARE_IBASE;
PerformCallback ()
{
SCF_CONSTRUCT_IBASE (0);
}
virtual ~PerformCallback ()
{
}
virtual void Execute (const char* cmd);
};
/// Perform the command and return true if it was a valid command.
static bool _Perform (const char* cmd, const char* arg = 0);
/// Perform the command and return true if it was a valid command.
static bool _PerformFormat (const char* format, ...);
/**
* Perform the command line (split in command and args),
* perform the command and return true if it was a valid command.
*/
static bool _PerformLine (const char* line);
/// Virtual override of csSimpleCommand.
virtual bool PerformLine (const char* line);
/// Start a script of commands from a file.
static bool StartScript (const char* scr);
/**
* Check if a script is running and if so, return one command from the
* script. This routine will return false if there is no script, or
* if the last command from the script has been read. The script will
* be closed automatically in the last case.
*/
static bool GetScriptLine (char* buf, int max_size);
/// Change boolean variable value
static void ChangeBoolean (const char* arg, bool* value, const char* what);
/// Change value to one of listed in choices[]
static void ChangeChoice (const char* arg, int* value, const char* what, const char* const* choices, int num);
/// Change float variable value
static bool ChangeFloat (const char* arg, float* value, const char* what, float min, float max);
/// Change int variable value
static bool ChangeInt (const char* arg, int* value, const char* what, int min, int max);
/// Change long variable value
static bool ChangeLong (const char* arg, long* value, const char* what, long min, long max);
/**
* Additional command handler. If not 0, this handler will be called
* BEFORE internal handler, giving your handler a chance to override
* default behaviour. Should return TRUE if command has been recognized.
*/
typedef bool (*CmdHandler) (const char* cmd, const char* arg);
static CmdHandler s_extraHandler;
};
#endif // __COMMAND_H__
See more files for this project here