Time for action – providing an initialization function
The task for this exercise is to make it possible for the AI to initialize itself by invoking the init()
function. Let's get right down to business. Extend the AIScript
structure with yet another field:
QScriptValue m_thisObject;
This object will represent the AI itself. The script will be able to store data or define functions in it. Add the following code to the class as well:
void AIScript::initialize(QScriptEngine *engine) { m_thisObject = engine->newObject(); engine->pushContext(); initFunction.call(m_thisObject); engine->popContext(); }
Add a call to initialize()
at the end of start()
:
void start(const QString &fileName) { m_ai = AIScript(); QScriptProgram program = m_ai.read(fileName); evaluate(program, this); m_ai.initialize(this); }
Now, run the program using the following
init()
function:
function init() { print("This is init function") this.distance = function(p1...