ICCItem *CMission::FireOnReward (ICCItem *pData) // FireOnReward // // Fire <OnReward> // // Callers are responsible for discarding the result, if not NULL. { SEventHandlerDesc Event; if (FindEventHandler(EVENT_ON_REWARD, &Event)) { CCodeChainCtx Ctx; Ctx.SaveAndDefineSourceVar(this); Ctx.SaveAndDefineDataVar(pData); ICCItem *pResult = Ctx.Run(Event); if (pResult->IsError()) { ReportEventError(EVENT_ON_REWARD, pResult); Ctx.Discard(pResult); return NULL; } return pResult; } return NULL; }
ICCItem *CMission::FireOnDeclined (void) // FireOnDeclined // // Fire <OnDeclined>. We return the result of the event, which might contain // instructions for the mission screen. // // Callers are responsible for discarding the result, if not NULL. { SEventHandlerDesc Event; if (FindEventHandler(EVENT_ON_DECLINED, &Event)) { CCodeChainCtx Ctx; Ctx.SaveAndDefineSourceVar(this); ICCItem *pResult = Ctx.Run(Event); if (pResult->IsError()) { ReportEventError(EVENT_ON_DECLINED, pResult); Ctx.Discard(pResult); return NULL; } return pResult; } return NULL; }
void CMission::FireOnStart (void) // FireOnStart // // Fire <OnStarted> { SEventHandlerDesc Event; if (FindEventHandler(EVENT_ON_STARTED, &Event)) { CCodeChainCtx Ctx; Ctx.SaveAndDefineSourceVar(this); ICCItem *pResult = Ctx.Run(Event); if (pResult->IsError()) ReportEventError(EVENT_ON_STARTED, pResult); Ctx.Discard(pResult); } }
void CMission::FireOnSetPlayerTarget (const CString &sReason) // FireOnSetPlayerTarget // // Fire <OnSetPlayerTarget> { SEventHandlerDesc Event; if (FindEventHandler(EVENT_ON_SET_PLAYER_TARGET, &Event)) { CCodeChainCtx Ctx; Ctx.SaveAndDefineSourceVar(this); Ctx.DefineString(STR_A_REASON, sReason); ICCItem *pResult = Ctx.Run(Event); if (pResult->IsError()) ReportEventError(EVENT_ON_SET_PLAYER_TARGET, pResult); Ctx.Discard(pResult); } }
void CMission::FireOnReward (ICCItem *pData) // FireOnReward // // Fire <OnReward> { SEventHandlerDesc Event; if (FindEventHandler(EVENT_ON_REWARD, &Event)) { CCodeChainCtx Ctx; Ctx.SaveAndDefineSourceVar(this); Ctx.SaveAndDefineDataVar(pData); ICCItem *pResult = Ctx.Run(Event); if (pResult->IsError()) ReportEventError(EVENT_ON_REWARD, pResult); Ctx.Discard(pResult); } }
void CMission::FireCustomEvent (const CString &sEvent) // FireCustomEvent // // Fires a custom timed event { SEventHandlerDesc Event; if (FindEventHandler(sEvent, &Event)) { CCodeChainCtx Ctx; Ctx.SetEvent(eventDoEvent); Ctx.SaveAndDefineSourceVar(this); ICCItem *pResult = Ctx.Run(Event); if (pResult->IsError()) ReportEventError(sEvent, pResult); Ctx.Discard(pResult); } }
void CMission::FireOnStop (const CString &sReason, ICCItem *pData) // FireOnStop // // Fire <OnCompleted> { SEventHandlerDesc Event; if (FindEventHandler(EVENT_ON_COMPLETED, &Event)) { CCodeChainCtx Ctx; Ctx.SaveAndDefineSourceVar(this); Ctx.SaveAndDefineDataVar(pData); Ctx.DefineString(STR_A_REASON, sReason); ICCItem *pResult = Ctx.Run(Event); if (pResult->IsError()) ReportEventError(EVENT_ON_COMPLETED, pResult); Ctx.Discard(pResult); } }