qtscript: Add new events eventPlayerLeft(player index) for when a player leaves

the game, and eventDesignCreated(template) for when a player creates a new design
in the design GUI.
master
per 2013-01-16 22:49:17 +01:00
parent 20c7024a9b
commit 391492ddfc
5 changed files with 35 additions and 0 deletions

View File

@ -80,6 +80,7 @@
#include "template.h"
#include "multiplay.h"
#include "multistat.h"
#include "qtscript.h"
#define FLASH_BUTTONS // Enable flashing body part buttons.
@ -4237,6 +4238,7 @@ void intProcessDesign(UDWORD id)
if (saveTemplate())
{
eventFireCallbackTrigger((TRIGGER_TYPE)CALL_DROIDDESIGNED);
triggerEventDesignCreated(&sCurrDesign);
}
switch ( desCompMode )

View File

@ -67,6 +67,7 @@
#include "multiint.h"
#include "multistat.h"
#include "multigifts.h"
#include "qtscript.h"
#include "scriptcb.h"
// ////////////////////////////////////////////////////////////////////////////
@ -302,6 +303,7 @@ bool MultiPlayerLeave(UDWORD playerIndex)
// fire script callback to reassign skirmish players.
CBPlayerLeft = playerIndex;
eventFireCallbackTrigger((TRIGGER_TYPE)CALL_PLAYERLEFT);
triggerEventPlayerLeft(playerIndex);
netPlayersUpdated = true;
return true;

View File

@ -655,6 +655,20 @@ bool triggerEvent(SCRIPT_TRIGGER_TYPE trigger)
return true;
}
//__ \subsection{eventPlayerLeft(player index)}
//__ An event that is run after a player has left the game.
bool triggerEventPlayerLeft(int id)
{
for (int i = 0; i < scripts.size(); ++i)
{
QScriptEngine *engine = scripts.at(i);
QScriptValueList args;
args += id;
callFunction(engine, "eventPlayerLeft", args);
}
return true;
}
//__ \subsection{eventCheatMode(entered)} Game entered or left cheat/debug mode.
//__ The entered parameter is true if cheat mode entered, false otherwise.
bool triggerEventCheatMode(bool entered)
@ -1008,3 +1022,17 @@ bool triggerEventArea(QString label, DROID *psDroid)
return true;
}
//__ \subsection{eventDesignCreated(template)}
//__ An event that is run whenever a new droid template is created. It is only
//__ run on the client of the player designing the template.
bool triggerEventDesignCreated(DROID_TEMPLATE *psTemplate)
{
for (int i = 0; i < scripts.size(); ++i)
{
QScriptEngine *engine = scripts.at(i);
QScriptValueList args;
args += convTemplate(psTemplate, engine);
callFunction(engine, "eventDesignCreated", args);
}
return true;
}

View File

@ -100,5 +100,7 @@ bool triggerEventGroupLoss(BASE_OBJECT *psObj, int group, int size, QScriptEngin
bool triggerEventDroidMoved(DROID *psDroid, int oldx, int oldy);
bool triggerEventArea(QString label, DROID *psDroid);
bool triggerEventSelected();
bool triggerEventPlayerLeft(int id);
bool triggerEventDesignCreated(DROID_TEMPLATE *psTemplate);
#endif

View File

@ -57,6 +57,7 @@ QScriptValue convStructure(STRUCTURE *psStruct, QScriptEngine *engine);
QScriptValue convObj(BASE_OBJECT *psObj, QScriptEngine *engine);
QScriptValue convFeature(FEATURE *psFeature, QScriptEngine *engine);
QScriptValue convMax(BASE_OBJECT *psObj, QScriptEngine *engine);
QScriptValue convTemplate(DROID_TEMPLATE *psTemplate, QScriptEngine *engine);
QScriptValue convResearch(RESEARCH *psResearch, QScriptEngine *engine, int player);
BASE_OBJECT *IdToObject(OBJECT_TYPE type, int id, int player);