/// <summary> /// Creates a new QuestRequirement and does some basich compativilite checks for the parameters /// </summary> /// <param name="defaultNPC"></param> /// <param name="type"></param> /// <param name="n"></param> /// <param name="v"></param> /// <param name="comp"></param> public AbstractRequirement(GameNPC defaultNPC, eRequirementType type, Object n, Object v, eComparator comp) : this(defaultNPC, type, comp) { RequirementAttribute attr = BehaviourMgr.getRequirementAttribute(this.GetType()); // handle parameter N object defaultValueN = GetDefaultValue(attr.DefaultValueN); this.N = (TypeN)BehaviourUtils.ConvertObject(n, defaultValueN, typeof(TypeN)); CheckParameter(this.N, attr.IsNullableN, typeof(TypeN)); // handle parameter V object defaultValueV = GetDefaultValue(attr.DefaultValueV); this.v = (TypeV)BehaviourUtils.ConvertObject(v, defaultValueV, typeof(TypeV)); CheckParameter(this.V, attr.IsNullableV, typeof(TypeV)); }
/// <summary> /// Initializes a new instance of the AbstractAction class. /// </summary> /// <param name="npc"></param> /// <param name="actionType"></param> /// <param name="p"></param> /// <param name="q"></param> public AbstractAction(GameNPC npc, eActionType actionType, object p, object q) : this(npc, actionType) { ActionAttribute attr = BehaviourMgr.GetActionAttribute(GetType()); // handle parameter P object defaultValueP = GetDefaultValue(attr.DefaultValueP); this.p = (TypeP)BehaviourUtils.ConvertObject(p, defaultValueP, typeof(TypeP)); CheckParameter(this.p, attr.IsNullableP, typeof(TypeP)); // handle parameter Q object defaultValueQ = GetDefaultValue(attr.DefaultValueQ); this.q = (TypeQ)BehaviourUtils.ConvertObject(q, defaultValueQ, typeof(TypeQ)); CheckParameter(this.q, attr.IsNullableQ, typeof(TypeQ)); }
/// <summary> /// Creates a new questtrigger and does some simple triggertype parameter compatibility checking /// </summary> /// <param name="defaultNPC"></param> /// <param name="notifyHandler"></param> /// <param name="type">Triggertype</param> /// <param name="k">keyword (K), meaning depends on triggertype</param> /// <param name="i">variable (I), meaning depends on triggertype</param> public AbstractTrigger(GameLiving defaultNPC, DOLEventHandler notifyHandler, eTriggerType type, object k, object i) : this(defaultNPC, notifyHandler, type) { TriggerAttribute attr = BehaviourMgr.getTriggerAttribute(this.GetType()); // handle parameter K object defaultValueK = GetDefaultValue(attr.DefaultValueK); this.k = (TypeK)BehaviourUtils.ConvertObject(k, defaultValueK, typeof(TypeK)); CheckParameter(K, attr.IsNullableK, typeof(TypeK)); // handle parameter I object defaultValueI = GetDefaultValue(attr.DefaultValueI); this.i = (TypeI)BehaviourUtils.ConvertObject(i, defaultValueI, typeof(TypeI)); CheckParameter(I, attr.IsNullableI, typeof(TypeI)); }
/// <summary> /// Adds a new Requirement to the QuestPart. /// </summary> /// <param name="requirementType">RequirementType</param> /// <param name="requirementN">First Requirement Variable, meaning depends on RequirementType</param> /// <param name="requirementV">Second Requirement Variable, meaning depends on RequirementType</param> /// <param name="requirementComparator">Comparator used if some values are veeing compared</param> public void AddRequirement(eRequirementType requirementType, Object requirementN, Object requirementV, eComparator requirementComparator) { IBehaviourRequirement requ = null; Type type = BehaviourMgr.GetTypeForRequirementType(requirementType); if (type != null) { requ = (IBehaviourRequirement)Activator.CreateInstance(type, new object[] { this.NPC, requirementN, requirementV, requirementComparator }); AddRequirement(requ); } else { if (log.IsErrorEnabled) { log.Error("No registered requirement found for RequirementType " + requirementType); } } }
/// <summary> /// Adds an Action to the QuestPart that will be performed once the QuestPart fires /// </summary> /// <param name="actionType">ActionType</param> /// <param name="p">First Action Variable, meaning depends on ActionType</param> /// <param name="q">Second Action Variable, meaning depends on ActionType</param> public void AddAction(eActionType actionType, Object p, Object q) { IBehaviourAction action = null; Type type = BehaviourMgr.GetTypeForActionType(actionType); if (type != null) { action = (IBehaviourAction)Activator.CreateInstance(type, new object[] { this.NPC, p, q }); AddAction(action); } else { if (log.IsErrorEnabled) { log.Error("No registered action found for ActionType " + actionType); } } }
/// <summary> /// Adds a trigger to the questpart for details about parameters look at documentation of used triggertype /// </summary> /// <param name="triggerType">triggertype</param> /// <param name="keyword">keyword (K), meaning depends on triggertype</param> /// <param name="var">variable (I), meaning depends on triggertype</param> public void AddTrigger(eTriggerType triggerType, Object keyword, Object var) { IBehaviourTrigger trigger = null; Type type = BehaviourMgr.GetTypeForTriggerType(triggerType); if (type != null) { trigger = (IBehaviourTrigger)Activator.CreateInstance(type, new object[] { this.NPC, NotifyHandler, keyword, var }); AddTrigger(trigger); } else { if (log.IsErrorEnabled) { log.Error("No registered trigger found for TriggerType " + triggerType); } } }