src/ai/squirrel/squirrel.hpp
author truelight
Wed, 14 Mar 2007 10:30:34 +0000
branchnoai
changeset 9377 3f1327677bcd
parent 9375 8bbd77b18de4
child 9381 df270ca8eec8
permissions -rw-r--r--
(svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
-Add: store the instance-pointer of the squirrel class
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"
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
     9
#include "../core/ai_base.hpp"
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    10
#include <squirrel.h>
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    11
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    12
class Squirrel: public AIController {
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    13
private:
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    14
	HSQUIRRELVM vm;  ///< The Virtual Machine for squirrel
9377
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    15
	SQUserPointer SQ_instance; ///< The internal instance of squirrel
9365
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    16
9373
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    17
	/**
9375
8bbd77b18de4 (svn r9163) [NoAI] -Codechange: put AddMethod in his own function, so calling often is easier
truelight
parents: 9373
diff changeset
    18
	 * Add a single method to a class (in creation) in Squirrel.
8bbd77b18de4 (svn r9163) [NoAI] -Codechange: put AddMethod in his own function, so calling often is easier
truelight
parents: 9373
diff changeset
    19
	 */
8bbd77b18de4 (svn r9163) [NoAI] -Codechange: put AddMethod in his own function, so calling often is easier
truelight
parents: 9373
diff changeset
    20
	void SQAddMethod(const char *name, SQFUNCTION proc, uint nparam, const char *params);
8bbd77b18de4 (svn r9163) [NoAI] -Codechange: put AddMethod in his own function, so calling often is easier
truelight
parents: 9373
diff changeset
    21
8bbd77b18de4 (svn r9163) [NoAI] -Codechange: put AddMethod in his own function, so calling often is easier
truelight
parents: 9373
diff changeset
    22
	/**
9373
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    23
	 * 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
    24
	 */
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    25
	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
    26
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
	 * 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
    29
	 *  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
    30
	 */
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    31
	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
    32
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    33
	/**
9377
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    34
	 * 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
    35
	 *  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
    36
	 */
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    37
	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
    38
3f1327677bcd (svn r9166) [NoAI] -Add: added destructor code, so we can do things there in the future
truelight
parents: 9375
diff changeset
    39
	/**
9373
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    40
	 * 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
    41
	 */
d03563181088 (svn r9160) [NoAI] -Add: added AIController for Squirrel; all AIs, C++ or Squirrel, should extend this class
truelight
parents: 9365
diff changeset
    42
	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
    43
9365
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    44
public:
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    45
	Squirrel(const char *script_dir);
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    46
	~Squirrel();
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    47
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    48
	/* virtual */ void GameLoop();
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    49
};
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    50
c3d08e0b1083 (svn r9151) [NoAI] -Add: added squirrel module that loads squirrel scripts and
truelight
parents:
diff changeset
    51
#endif /* SQUIRREL_HPP */