_________ __                 __
        /   _____//  |_____________ _/  |______     ____  __ __  ______
        \_____  \\   __\_  __ \__  \\   __\__  \   / ___\|  |  \/  ___/
        /        \|  |  |  | \// __ \|  |  / __ \_/ /_/  >  |  /\___ \
       /_______  /|__|  |__|  (____  /__| (____  /\___  /|____//____  >
               \/                  \/          \//_____/            \/
    ______________________                           ______________________
                          T H E   W A R   B E G I N S
                   Stratagus - A free fantasy real time strategy game engine

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes
script.cpp File Reference
#include <signal.h>
#include "stratagus.h"
#include "script.h"
#include "animation/animation_setplayervar.h"
#include "font.h"
#include "game.h"
#include "iocompat.h"
#include "iolib.h"
#include "map.h"
#include "parameters.h"
#include "translate.h"
#include "trigger.h"
#include "ui.h"
#include "unit.h"

Classes

struct  UStrInt
 

script.cpp - The configuration language.

enum  UStrIntType {
  USTRINT_STR, USTRINT_INT, USTRINT_STR, USTRINT_INT,
  USTRINT_STR, USTRINT_INT
}
 Counter for lua function. More...
 
lua_State * Lua
 
int CclInConfigFile
 Structure to work with lua files. More...
 
NumberDescDamage
 True while config file parsing. More...
 
static int NumberCounter = 0
 Damage calculation for missile. More...
 
static int StringCounter = 0
 Counter for lua function. More...
 
UStrInt GetComponent (const CUnit &unit, int index, EnumVariable e, int t)
 Get component for unit variable. More...
 
UStrInt GetComponent (const CUnitType &type, int index, EnumVariable e, int t)
 Get component for unit type variable. More...
 
static void lstop (lua_State *l, lua_Debug *ar)
 
static void laction (int i)
 
static int report (int status, bool exitOnError)
 
static int luatraceback (lua_State *L)
 
int LuaCall (int narg, int clear, bool exitOnError)
 
static bool GetFileContent (const std::string &file, std::string &content)
 
int LuaLoadFile (const std::string &file, const std::string &strArg)
 
static int CclSavePreferences (lua_State *l)
 
static int CclLoad (lua_State *l)
 
static int CclLoadBuffer (lua_State *l)
 
const char * LuaToString (lua_State *l, int narg)
 True while config file parsing. More...
 
int LuaToNumber (lua_State *l, int narg)
 
unsigned int LuaToUnsignedNumber (lua_State *l, int narg)
 
bool LuaToBoolean (lua_State *l, int narg)
 
const char * LuaToString (lua_State *l, int index, int subIndex)
 
int LuaToNumber (lua_State *l, int index, int subIndex)
 
unsigned int LuaToUnsignedNumber (lua_State *l, int index, int subIndex)
 
bool LuaToBoolean (lua_State *l, int index, int subIndex)
 
void LuaGarbageCollect ()
 
static void ParseBinOp (lua_State *l, BinOp *binop)
 
static CUnit ** Str2UnitRef (lua_State *l, const char *s)
 
static CUnitType ** Str2TypeRef (lua_State *l, const char *s)
 
UnitDescCclParseUnitDesc (lua_State *l)
 Parse a number description. More...
 
CUnitType ** CclParseTypeDesc (lua_State *l)
 Parse a unit description. More...
 
static int ParseLuaFunction (lua_State *l, const char *tablename, int *counter)
 
static int CallLuaNumberFunction (unsigned int handler)
 
static std::string CallLuaStringFunction (unsigned int handler)
 
NumberDescCclParseNumberDesc (lua_State *l)
 
StringDescCclParseStringDesc (lua_State *l)
 Parse a unit type description. More...
 
CUnitEvalUnit (const UnitDesc *unitdesc)
 Evaluate the number. More...
 
int EvalNumber (const NumberDesc *number)
 Parse a string description. More...
 
std::string EvalString (const StringDesc *s)
 Evaluate the unit. More...
 
void FreeUnitDesc (UnitDesc *)
 Free number description content. (no pointer itself). More...
 
void FreeNumberDesc (NumberDesc *number)
 Evaluate the string. More...
 
void FreeStringDesc (StringDesc *s)
 Free unit description content. (no pointer itself). More...
 
static int AliasTypeVar (lua_State *l, const char *s)
 
static int AliasUnitVar (lua_State *l, const char *s)
 
static int CclUnitAttackerVar (lua_State *l)
 
static int CclUnitDefenderVar (lua_State *l)
 
static int CclActiveUnitVar (lua_State *l)
 
static int CclActiveTypeVar (lua_State *l)
 
static int Alias (lua_State *l, const char *s)
 
static int CclAdd (lua_State *l)
 
static int CclSub (lua_State *l)
 
static int CclMul (lua_State *l)
 
static int CclDiv (lua_State *l)
 
static int CclMin (lua_State *l)
 
static int CclMax (lua_State *l)
 
static int CclRand (lua_State *l)
 
static int CclGreaterThan (lua_State *l)
 
static int CclGreaterThanOrEq (lua_State *l)
 
static int CclLessThan (lua_State *l)
 
static int CclLessThanOrEq (lua_State *l)
 
static int CclEqual (lua_State *l)
 
static int CclNotEqual (lua_State *l)
 
static int CclConcat (lua_State *l)
 
static int CclString (lua_State *l)
 
static int CclInverseVideo (lua_State *l)
 
static int CclUnitName (lua_State *l)
 
static int CclIf (lua_State *l)
 
static int CclSubString (lua_State *l)
 
static int CclLine (lua_State *l)
 
static int CclGameInfo (lua_State *l)
 
static int CclVideoTextLength (lua_State *l)
 
static int CclStringFind (lua_State *l)
 
static int CclNumIf (lua_State *l)
 
static int CclPlayerData (lua_State *l)
 
static int CclPlayerName (lua_State *l)
 
static void AliasRegister ()
 
static int CclStratagusLibraryPath (lua_State *l)
 
static int CclFilteredListDirectory (lua_State *l, int type, int mask)
 
static int CclListDirectory (lua_State *l)
 
static int CclListFilesInDirectory (lua_State *l)
 
static int CclListDirsInDirectory (lua_State *l)
 
static int CclSetDamageFormula (lua_State *l)
 
static int CclDebugPrint (lua_State *l)
 
int CclCommand (const std::string &command, bool exitOnError)
 Save user preferences. More...
 
int tolua_stratagus_open (lua_State *tolua_S)
 
void InitLua ()
 Perform garbage collection. More...
 
static std::string ConcatTableString (const std::vector< std::string > &blockTableNames)
 
static bool IsAValidTableName (const std::string &key)
 
static bool ShouldGlobalTableBeSaved (const std::string &key)
 
static bool ShouldLocalTableBeSaved (const std::string &key)
 
static bool LuaValueToString (lua_State *l, std::string &value)
 
static std::string SaveGlobal (lua_State *l, bool is_root, std::vector< std::string > &blockTableNames)
 
std::string SaveGlobal (lua_State *l)
 
void SavePreferences ()
 Load ccl config file. More...
 
void LoadCcl (const std::string &filename, const std::string &luaArgStr)
 Initialise Lua. More...
 
void ScriptRegister ()
 

Enumeration Type Documentation

Counter for lua function.

Useful for getComponent.

Enumerator
USTRINT_STR 
USTRINT_INT 
USTRINT_STR 
USTRINT_INT 
USTRINT_STR 
USTRINT_INT 

Function Documentation

static int Alias ( lua_State *  l,
const char *  s 
)
static

Make alias for some function.

Parameters
llua State.
sFIXME: docu
Returns
the lua table {s, {arg1, arg2, ..., argn}} or {s, arg1}
static void AliasRegister ( )
static
static int AliasTypeVar ( lua_State *  l,
const char *  s 
)
static

Make alias for some unit type Variable function.

Parameters
llua State.
sFIXME: docu
Returns
the lua table {"TypeVar", {Variable = arg1, Component = "Value" or arg2}
static int AliasUnitVar ( lua_State *  l,
const char *  s 
)
static

Make alias for some unit Variable function.

Parameters
llua State.
sFIXME: docu
Returns
the lua table {"UnitVar", {Unit = s, Variable = arg1, Component = "Value" or arg2, Loc = [012]}
static int CallLuaNumberFunction ( unsigned int  handler)
static

Call a Lua handler

Parameters
handlerhandler of the lua function to call.
Returns
lua function result.
static std::string CallLuaStringFunction ( unsigned int  handler)
static

Call a Lua handler

Parameters
handlerhandler of the lua function to call.
Returns
lua function result.
static int CclActiveTypeVar ( lua_State *  l)
static

Return equivalent lua table for . {"Type", {Type = "Active", Variable = arg1, Component = "Value" or arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclActiveUnitVar ( lua_State *  l)
static

Return equivalent lua table for . {"Unit", {Unit = "Active", Variable = arg1, Component = "Value" or arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclAdd ( lua_State *  l)
static

Return equivalent lua table for add. {"Add", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
int CclCommand ( const std::string &  command,
bool  exitOnError 
)

Save user preferences.

Send command to ccl.

Parameters
commandZero terminated command string.
static int CclConcat ( lua_State *  l)
static

Return equivalent lua table for Concat. {"Concat", {arg1}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclDebugPrint ( lua_State *  l)
static

Print debug message with info about current script name, line number and function.

See also
DebugPrint
Parameters
lLua state.
static int CclDiv ( lua_State *  l)
static

Return equivalent lua table for add. {"Div", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclEqual ( lua_State *  l)
static

Return equivalent lua table for Equal. {"Equal", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclFilteredListDirectory ( lua_State *  l,
int  type,
int  mask 
)
static

Return a table with the filtered items found in the subdirectory.

static int CclGameInfo ( lua_State *  l)
static

Return equivalent lua table for Line. {"Line", "arg1"}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclGreaterThan ( lua_State *  l)
static

Return equivalent lua table for GreaterThan. {"GreaterThan", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclGreaterThanOrEq ( lua_State *  l)
static

Return equivalent lua table for GreaterThanOrEq. {"GreaterThanOrEq", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclIf ( lua_State *  l)
static

Return equivalent lua table for If. {"If", {arg1}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclInverseVideo ( lua_State *  l)
static

Return equivalent lua table for InverseVideo. {"InverseVideo", {arg1}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclLessThan ( lua_State *  l)
static

Return equivalent lua table for LessThan. {"LessThan", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclLessThanOrEq ( lua_State *  l)
static

Return equivalent lua table for LessThanOrEq. {"LessThanOrEq", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclLine ( lua_State *  l)
static

Return equivalent lua table for Line. {"Line", {arg1, arg2[, arg3]}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclListDirectory ( lua_State *  l)
static

Return a table with the files or directories found in the subdirectory.

static int CclListDirsInDirectory ( lua_State *  l)
static

Return a table with the files found in the subdirectory.

static int CclListFilesInDirectory ( lua_State *  l)
static

Return a table with the files found in the subdirectory.

static int CclLoad ( lua_State *  l)
static

Load a file and execute it.

Parameters
lLua state.
Returns
0 in success, else exit.
static int CclLoadBuffer ( lua_State *  l)
static

Load a file into a buffer and return it.

Parameters
lLua state.
Returns
buffer or nil on failure
static int CclMax ( lua_State *  l)
static

Return equivalent lua table for add. {"Max", {arg1, arg2, argn}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclMin ( lua_State *  l)
static

Return equivalent lua table for add. {"Min", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclMul ( lua_State *  l)
static

Return equivalent lua table for add. {"Mul", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclNotEqual ( lua_State *  l)
static

Return equivalent lua table for NotEqual. {"NotEqual", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclNumIf ( lua_State *  l)
static

Return equivalent lua table for NumIf. {"NumIf", {arg1}}

Parameters
lLua state.
Returns
equivalent lua table.
NumberDesc* CclParseNumberDesc ( lua_State *  l)

Return number.

Parameters
llua state.
Returns
number.
StringDesc* CclParseStringDesc ( lua_State *  l)

Parse a unit type description.

Return String description.

Parameters
llua state.
Returns
String description.
CUnitType** CclParseTypeDesc ( lua_State *  l)

Parse a unit description.

Return unit type referernce definition.

Parameters
llua state.
Returns
unit type referernce definition.
UnitDesc* CclParseUnitDesc ( lua_State *  l)

Parse a number description.

Return unit referernce definition.

Parameters
llua state.
Returns
unit referernce definition.
static int CclPlayerData ( lua_State *  l)
static

Return equivalent lua table for PlayerData. {"PlayerData", {arg1}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclPlayerName ( lua_State *  l)
static

Return equivalent lua table for PlayerName. {"PlayerName", {arg1}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclRand ( lua_State *  l)
static

Return equivalent lua table for add. {"Rand", {arg1}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclSavePreferences ( lua_State *  l)
static

Save preferences

Parameters
lLua state.
static int CclSetDamageFormula ( lua_State *  l)
static

Set damage computation method.

Parameters
lLua state.
static int CclStratagusLibraryPath ( lua_State *  l)
static

Return the stratagus library path.

Parameters
lLua state.
Returns
Current libray path.
static int CclString ( lua_State *  l)
static

Return equivalent lua table for String. {"String", {arg1}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclStringFind ( lua_State *  l)
static

Return equivalent lua table for StringFind. {"StringFind", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclSub ( lua_State *  l)
static

Return equivalent lua table for add. {"Div", {arg1, arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclSubString ( lua_State *  l)
static

Return equivalent lua table for SubString. {"SubString", {arg1, arg2, arg3}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclUnitAttackerVar ( lua_State *  l)
static

Return equivalent lua table for . {"Unit", {Unit = "Attacker", Variable = arg1, Component = "Value" or arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclUnitDefenderVar ( lua_State *  l)
static

Return equivalent lua table for . {"Unit", {Unit = "Defender", Variable = arg1, Component = "Value" or arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclUnitName ( lua_State *  l)
static

Return equivalent lua table for UnitName. {"UnitName", {arg1}}

Parameters
lLua state.
Returns
equivalent lua table.
static int CclVideoTextLength ( lua_State *  l)
static

Return equivalent lua table for VideoTextLength. {"VideoTextLength", {Text = arg1, Font = arg2}}

Parameters
lLua state.
Returns
equivalent lua table.
static std::string ConcatTableString ( const std::vector< std::string > &  blockTableNames)
static
int EvalNumber ( const NumberDesc number)

Parse a string description.

compute the number expression

Parameters
numberstruct with definition of the calculation.
Returns
the result number.
Todo:
Manage better the error (div/0, unit==NULL, ...).
std::string EvalString ( const StringDesc s)

Evaluate the unit.

compute the string expression

Parameters
sstruct with definition of the calculation.
Returns
the result string.
Todo:
Manage better the error.
CUnit* EvalUnit ( const UnitDesc unitdesc)

Evaluate the number.

compute the Unit expression

Parameters
unitdescstruct with definition of the calculation.
Returns
the result unit.
void FreeNumberDesc ( NumberDesc number)

Evaluate the string.

Free the number expression content. (not the pointer itself).

Parameters
numberstruct to free
void FreeStringDesc ( StringDesc s)

Free unit description content. (no pointer itself).

Free the String expression content. (not the pointer itself).

Parameters
sstruct to free
void FreeUnitDesc ( UnitDesc )

Free number description content. (no pointer itself).

Free the unit expression content. (not the pointer itself).

Parameters
unitdescstruct to free
UStrInt GetComponent ( const CUnit unit,
int  index,
EnumVariable  e,
int  t 
)

Get component for unit variable.

Return the value corresponding.

Parameters
unitUnit.
indexIndex of the variable.
eComponent of the variable.
tWhich var use (0:unit, 1:Type, 2:Stats)
Returns
Value corresponding
UStrInt GetComponent ( const CUnitType type,
int  index,
EnumVariable  e,
int  t 
)

Get component for unit type variable.

static bool GetFileContent ( const std::string &  file,
std::string &  content 
)
static

Get the (uncompressed) content of the file into a string

void InitLua ( )

Perform garbage collection.

Initialize Lua

static bool IsAValidTableName ( const std::string &  key)
static
static void laction ( int  i)
static

FIXME: docu

void LoadCcl ( const std::string &  filename,
const std::string &  luaArgStr 
)

Initialise Lua.

Load stratagus config file.

static void lstop ( lua_State *  l,
lua_Debug *  ar 
)
static

FIXME: docu

int LuaCall ( int  narg,
int  clear,
bool  exitOnError 
)

Call a lua function

Parameters
nargNumber of arguments
clearClear the return value(s)
exitOnErrorExit the program when an error occurs
Returns
0 in success, else exit.
void LuaGarbageCollect ( )

Perform lua garbage collection

int LuaLoadFile ( const std::string &  file,
const std::string &  strArg 
)

Load a file and execute it

Parameters
fileFile to load and execute
nargsNumber of arguments that caller has put on the stack
Returns
0 for success, else exit.
bool LuaToBoolean ( lua_State *  l,
int  narg 
)

Convert lua boolean to bool. It also checks type and exits in case of error.

Parameters
lLua state.
nargArgument number.
Returns
1 for true, 0 for false from lua.
bool LuaToBoolean ( lua_State *  l,
int  index,
int  subIndex 
)
int LuaToNumber ( lua_State *  l,
int  narg 
)

Convert lua number in C number. It checks also type and exit in case of error.

Parameters
lLua state.
nargArgument number.
Returns
C number from lua.
int LuaToNumber ( lua_State *  l,
int  index,
int  subIndex 
)
const char* LuaToString ( lua_State *  l,
int  narg 
)

True while config file parsing.

Convert lua string in char*. It checks also type and exit in case of error.

Note
char* could be invalidated with lua garbage collector.
Parameters
lLua state.
nargArgument number.
Returns
char* from lua.
const char* LuaToString ( lua_State *  l,
int  index,
int  subIndex 
)
unsigned int LuaToUnsignedNumber ( lua_State *  l,
int  narg 
)

Convert lua number in C unsigned int. It checks also type and exit in case of error.

Parameters
lLua state.
nargArgument number.
Returns
C number from lua.
unsigned int LuaToUnsignedNumber ( lua_State *  l,
int  index,
int  subIndex 
)
static int luatraceback ( lua_State *  L)
static
static bool LuaValueToString ( lua_State *  l,
std::string &  value 
)
static
static void ParseBinOp ( lua_State *  l,
BinOp binop 
)
static

Parse binary operation with number.

Parameters
llua state.
binopWhere to stock info (must be malloced)
static int ParseLuaFunction ( lua_State *  l,
const char *  tablename,
int *  counter 
)
static

Add a Lua handler

Parameters
llua state.
tablenamename of the lua table.
counterCounter for the handler
Returns
handle of the function.
static int report ( int  status,
bool  exitOnError 
)
static

Check error status, and print error message and exit if status is different of 0.

Parameters
statusstatus of the last lua call. (0: success)
exitOnErrorexit the program on error
Returns
0 in success, else exit.
static std::string SaveGlobal ( lua_State *  l,
bool  is_root,
std::vector< std::string > &  blockTableNames 
)
static

For saving lua state (table, number, string, bool, not function).

Parameters
llua_State to save.
is_roottrue for the main call, 0 for recursif call.
Returns
"" if nothing could be saved. else a string that could be executed in lua to restore lua state
Todo:
do the output prettier (adjust indentation, newline)
std::string SaveGlobal ( lua_State *  l)
void SavePreferences ( )

Load ccl config file.

Save user preferences

void ScriptRegister ( )
static bool ShouldGlobalTableBeSaved ( const std::string &  key)
static
static bool ShouldLocalTableBeSaved ( const std::string &  key)
static
static CUnitType** Str2TypeRef ( lua_State *  l,
const char *  s 
)
static

Convert the string to the corresponding data (which is a unit type).

Parameters
llua state.
sIdent.
Returns
The reference of the unit type.
Todo:
better check for error (restrict param).
static CUnit** Str2UnitRef ( lua_State *  l,
const char *  s 
)
static

Convert the string to the corresponding data (which is a unit).

Parameters
llua state.
sIdent.
Returns
The reference of the unit.
Todo:
better check for error (restrict param).
TOLUA_API int tolua_stratagus_open ( lua_State *  tolua_S)

Variable Documentation

int CclInConfigFile

Structure to work with lua files.

NumberDesc* Damage

True while config file parsing.

Burning building frames.

lua_State* Lua
int NumberCounter = 0
static

Damage calculation for missile.

int StringCounter = 0
static

Counter for lua function.

(C) Copyright 1998-2012 by The Stratagus Project under the GNU General Public License.
All trademarks and copyrights on this page are owned by their respective owners.