private void CreateMissionTask()
        {
            MissionTaskData data = new MissionTaskData();

            data.DescriptionKey   = DESCRIPTION;
            data.PowerRequirement = REQUIRED_POWER;
            data.StatRequirement  = TEST_STAT;

            mMissionTask = new MissionTask(data, new MissionProposal());
        }
示例#2
0
 /// <summary>
 /// Loads the player progress for this task instance
 /// </summary>
 /// <param name="task">The player task information</param>
 public void LoadInstance(MissionTask task)
 {
     if (task.Values != null)
     {
         Progress = task.ValueArray().ToList();
     }
     else
     {
         Progress = new List <float>();
     }
 }
    bool ConditionsMet(MissionTask currenTask)
    {
        foreach (TaskCondition currentCondition in currenTask.TaskConditions)
        {
            switch (currentCondition.Type)
            {
            case TaskCondition.TaskConditionType.CloseTo:
                if (!IsCloseTo(

                        Game.Instance().CurrentLevel.Entities.FirstOrDefault(ent => ent.UniqueObjectName ==
                                                                             currentCondition.uniqueObjectNameFrom).gameObject,
                        Game.Instance().CurrentLevel.Entities.FirstOrDefault(ent => ent.UniqueObjectName ==
                                                                             currentCondition.uniqueObjectNameTo).gameObject))
                {
                    return(false);
                }


                break;

            case TaskCondition.TaskConditionType.Destroyed:
                if (!IsDestroyed(currentCondition.uniqueObjectNameFrom))
                {
                    return(false);
                }
                break;

            case TaskCondition.TaskConditionType.Inventoried:
                if (!IsInventoried(currentCondition.uniqueObjectNameFrom, currentCondition.Quantity))
                {
                }
                break;

            case TaskCondition.TaskConditionType.KeyPressed:
                if (Input.GetButton(currentCondition.uniqueObjectNameFrom))
                {
                    return(false);
                }
                break;
            }
        }

        return(true);
    }
        public void InitiateExecution(params object[] obj)
        {
            if (!CanBeExecutedOn(obj))
            {
                throw new InvalidOperationException("Cannot be executed!");
            }

            var tran = _transactionProvider.GetCurrentTransaction();

            tran.CaptureMacroState("CommandAddTask");

            var mission = (Mission)obj[0];

            var task = new MissionTask();

            tran.Helper.AddItem(mission.Tasks, task);

            tran.Commit();
        }
    void ExecuteTaskActions(MissionTask currenTask)
    {
        foreach (TaskAction currentaAction in currenTask.TaskActions)
        {
            switch (currentaAction.Type)
            {
            case TaskAction.TaskActionType.InventoryAdd:
                AddInventory(currentaAction.uniqueObjectNameFrom, currentaAction.Quantity);
                break;

            case TaskAction.TaskActionType.LoadScene:
                SceneManager.LoadScene(currentaAction.uniqueObjectNameFrom);
                break;

            case TaskAction.TaskActionType.ShowMessage:
                Debug.Log(currentaAction.uniqueObjectNameFrom);
                break;
            }
        }
    }
    public void LoadMissions(XmlDocument xmlDoc)
    {
        var selectedNodes =
            xmlDoc.SelectNodes("//level/missions/mission");

        foreach (XmlNode currentNode in selectedNodes)
        {
            newMission = new Mission
            {
                id            = currentNode.Attributes["id"].Value,
                description   = currentNode.Attributes["description"].Value,
                prerequisites = currentNode.Attributes["prerequisites"].Value
            };

            newMission.MissionTasks = new List <MissionTask>();


            var selectedTask =
                xmlDoc.SelectNodes(string.Format("//level/missions/mission[@id='{0}']/tasks/task", newMission.id));

            foreach (XmlNode currentTask in selectedTask)
            {
                newMissionTask = new MissionTask
                {
                    id          = currentTask.Attributes["id"].Value,
                    description = currentTask.Attributes["description"].Value
                };
                newMissionTask.TaskConditions = new List <TaskCondition>();

                var selectedTaskConditions = xmlDoc.SelectNodes(string.Format("//level/missions/mission[@id='{0}']/tasks/task[@id='{1}']/conditions/condition", newMission.id, newMissionTask.id));
                foreach (XmlNode currentTaskCondition in selectedTaskConditions)
                {
                    newTaskCondition = new TaskCondition
                    {
                        Type = (TaskCondition.TaskConditionType)Enum.Parse(typeof(TaskCondition.TaskConditionType),
                                                                           currentTaskCondition.Attributes["type"].Value),
                        uniqueObjectNameFrom = currentTaskCondition.Attributes["uniqueObjectNameFrom"].Value,
                        uniqueObjectNameTo   = currentTaskCondition.Attributes["uniqueObjectNameTo"].Value
                    };
                    newMissionTask.TaskConditions.Add(newTaskCondition);
                }

                newMissionTask.TaskActions = new List <TaskAction>();

                var selectedTaskActions = xmlDoc.SelectNodes(string.Format("//level/missions/mission[@id='{0}']/tasks/task[@id='{1}']/actions/action", newMission.id, newMissionTask.id));
                foreach (XmlNode currentTaskCondition in selectedTaskActions)
                {
                    newTaskAction = new TaskAction
                    {
                        Type = (TaskAction.TaskActionType)Enum.Parse(typeof(TaskAction.TaskActionType),
                                                                     currentTaskCondition.Attributes["type"].Value),
                        uniqueObjectNameFrom = currentTaskCondition.Attributes["uniqueObjectNameFrom"].Value,
                        uniqueObjectNameTo   = currentTaskCondition.Attributes["uniqueObjectNameTo"].Value,
                        Quantity             = Convert.ToSingle(currentTaskCondition.Attributes["quantity"].Value)
                    };

                    newMissionTask.TaskActions.Add(newTaskAction);
                }
                newMission.MissionTasks.Add(newMissionTask);
            }

            Game.Instance().CurrentLevel.Missions.Add(newMission);
        }
    }