コード例 #1
0
        /// <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));
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
        /// <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);
                }
            }
        }
コード例 #5
0
        /// <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);
                }
            }
        }
コード例 #6
0
        /// <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);
                }
            }
        }