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); ...

Get Game Programming Using Qt now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.