Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/script_engine/OLD/Script.h @ 8061

Last change on this file since 8061 was 8061, checked in by bensch, 18 years ago

merged the scriptengine back to the trunk

File size: 2.5 KB
RevLine 
[7645]1#ifndef __LUA_SCRIPT_BASE_H__
2#define __LUA_SCRIPT_BASE_H__
3
4#include <string>
5
6#include "VirtualMachine.h"
7#include "scriptable.h"
8
[7653]9namespace OrxScript
[7645]10{
11
[7653]12  struct Scrptbl
13  {
14    Scriptable* scriptable;
15    int scriptableRef;
16  };
17
18  class LuaScript
19  {
[7645]20  public:
21    LuaScript ();
22    virtual ~LuaScript (void);
23
24
25    void init(LuaVirtualMachine& vm);
26
27    /* ------------------ Script related Functions ------------------ */
28
[7653]29    // Compile script into Virtual Machine
[7645]30    bool compileFile (const std::string& strFilename);
31    bool compileBuffer (unsigned char *pbBuffer, size_t szLen);
32
[7653]33    // Register function with Lua in the this table
[7645]34    int registerFunction (const std::string& strFuncName);
35
36
[7653]37    // Selects a Lua Script function to call
[7645]38    bool selectScriptFunction (const std::string& strFuncName);
39    void addParam (int iInt);
40    void addParam (float fFloat);
[7654]41    void addParam (const std::string& string);
[7645]42
[7653]43    // Runs the loaded script
[7645]44    bool run (int nReturns = 0);
45
[7653]46    // Checks on Virtual Machine script
[7645]47    bool scriptHasFunction (const std::string& strScriptName);
48
[7653]49    // Method indexing check
[7645]50    int methods (void) { return methodCount; }
51
52
[7653]53    // When the script calls a class method, this is called
[7645]54    virtual int scriptCalling (LuaVirtualMachine& vm, int iFunctionNumber) = 0;
55
[7653]56    // When the script function has returns
[7645]57    virtual void handleReturns (LuaVirtualMachine& vm, const std::string& strFunc) = 0;
58
59
60
61    /* ------------------- Handle external Objects ------------------ */
62
[7654]63    void removeFromScript(int referenceToScriptable) {}
[7653]64    int addScriptableToScript(Scriptable* scriptbl,const std::string& name);  // name= name the scriptable goes by in lua
65    int addFunctionToScriptable(const std::string& strFuncName, int toScriptable, int lastMethodIndex);
[7645]66
[7653]67    //Handle the Scriptable List
68    Scriptable* getScriptableByReference(int scrptblRef);
69    int getReferenceByScriptable(Scriptable* scriptable);
70    bool addScriptableToList(Scriptable* scriptbl, int scriptableRef);
71    bool removeScriptableFromList(Scriptable* scriptable);
72    bool removeScriptableFromList(int scriptable);
[7645]73
74
75
76    /* ------------------ ... ------------------ */
77
78    LuaVirtualMachine& getVirtualMachine (void) { return virtualMachine; }
79    char whatIsThis();
80
81  protected:
82    int methodCount;
83    LuaVirtualMachine virtualMachine;
84    int thisReference;
85    int argumentCount;
86    std::string functionName;
87    std::list<Scrptbl> scriptableList;
[7653]88  };
[7645]89
[7653]90}
[7645]91
92#endif // __LUA_SCRIPT_BASE_H__
Note: See TracBrowser for help on using the repository browser.