src/ai/squirrel/squirrel.hpp
author truelight
Thu, 15 Mar 2007 00:15:52 +0000
branchnoai
changeset 9395 4337e022594c
parent 9393 04bd925b9069
child 9404 ef9e171617a3
permissions -rw-r--r--
(svn r9187) [NoAI] -Change: renamed SquirrelCore to SquirrelEngine, as it is more
the engine then a 'core', which is pretty vague
9365
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
     1
/* $Id$ */
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
     2
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
     3
/** @file squirrel.hpp declarations of the class for squirrel loader */
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
     4
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
     5
#ifndef SQUIRREL_HPP
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
     6
#define SQUIRREL_HPP
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
     7
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
     8
#include "../core/ai_controller.hpp"
9389
cb4e3c4ae84e (svn r9181) [NoAI] -Fix: allow compilation with MINGW and _UNICODE (squirrel has some problems with that)
glx
parents: 9387
diff changeset
     9
#ifdef _UNICODE
cb4e3c4ae84e (svn r9181) [NoAI] -Fix: allow compilation with MINGW and _UNICODE (squirrel has some problems with that)
glx
parents: 9387
diff changeset
    10
/* Disable unicode for squirrel to allow compilation with MINGW
cb4e3c4ae84e (svn r9181) [NoAI] -Fix: allow compilation with MINGW and _UNICODE (squirrel has some problems with that)
glx
parents: 9387
diff changeset
    11
 * and simplify coding for WIN32 (squirrel headers miss a lot of "string" functions)
cb4e3c4ae84e (svn r9181) [NoAI] -Fix: allow compilation with MINGW and _UNICODE (squirrel has some problems with that)
glx
parents: 9387
diff changeset
    12
 */
cb4e3c4ae84e (svn r9181) [NoAI] -Fix: allow compilation with MINGW and _UNICODE (squirrel has some problems with that)
glx
parents: 9387
diff changeset
    13
#undef _UNICODE
cb4e3c4ae84e (svn r9181) [NoAI] -Fix: allow compilation with MINGW and _UNICODE (squirrel has some problems with that)
glx
parents: 9387
diff changeset
    14
#endif
9365
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    15
#include <squirrel.h>
9395
4337e022594c (svn r9187) [NoAI] -Change: renamed SquirrelCore to SquirrelEngine, as it is more
truelight
parents: 9393
diff changeset
    16
#include "engine.hpp"
9365
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    17
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    18
class Squirrel: public AIController {
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    19
private:
9381
df270ca8eec8 (svn r9171) [NoAI] -Fix: call GameLoop() of the instance directly
truelight
parents: 9377
diff changeset
    20
	HSQOBJECT SQ_instance; ///< The internal instance of squirrel
9395
4337e022594c (svn r9187) [NoAI] -Change: renamed SquirrelCore to SquirrelEngine, as it is more
truelight
parents: 9393
diff changeset
    21
	SquirrelEngine *engine; ///< The SquirrelEngine
9375
8bbd77b18de4 (svn r9163) [NoAI] -Codechange: put AddMethod in his own function, so calling often is easier
truelight
parents: 9373
diff changeset
    22
8bbd77b18de4 (svn r9163) [NoAI] -Codechange: put AddMethod in his own function, so calling often is easier
truelight
parents: 9373
diff changeset
    23
	/**
9373
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    24
	 * Registers all our classes, so it can be used from Squirrel.
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    25
	 */
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    26
	void RegisterClasses();
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    27
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    28
	/**
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    29
	 * Constructor for Squirrel AIController. We assign the real 'this' value to
9377
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    30
	 *  the instance pointer, so we can easy look up this->.
9373
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    31
	 */
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    32
	static SQInteger SQConstructor(HSQUIRRELVM vm);
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    33
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    34
	/**
9377
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    35
	 * Destructor for Squirrel AIController. This is called if the class is
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    36
	 *  destroyed inside the script.
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    37
	 */
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    38
	static SQInteger SQDestructor(SQUserPointer p, SQInteger size);
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    39
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    40
	/**
9373
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    41
	 * A wrapper around the AIController class, as that can't be automated.
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    42
	 */
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    43
	static SQInteger SQGetTick(HSQUIRRELVM vm);
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    44
9385
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    45
	/**
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    46
	 * This is called by the init-part of a script to indicate there is an AI class.
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    47
	 */
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    48
	static SQInteger SQRegisterAI(HSQUIRRELVM vm);
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    49
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    50
	/**
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    51
	 * Create a class with the name 'class' and set all pointers correctly.
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    52
	 */
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    53
	bool SQCreateClass(const char *classname);
56803dfb2ff6 (svn r9176) [NoAI] -Add: added a RegisterAI() proc, that makes the AI known to the
truelight
parents: 9381
diff changeset
    54
9365
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    55
public:
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    56
	Squirrel(const char *script_dir);
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    57
	~Squirrel();
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    58
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    59
	/* virtual */ void GameLoop();
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    60
};
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    61
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    62
#endif /* SQUIRREL_HPP */