示例#1
0
        public void Init(int index)
        {
            if (useIDInput && IDInput == null)
            {
                IDInput = inputKnobs[0];
            }

            killCount             = 0;
            Entity.OnEntityDeath += updateState;

            if (!nameMode && passIfEntityDoesNotExist && !AIData.entities.Exists(e => e.ID == targetID))
            {
                state = ConditionState.Completed;
                output.connection(0).body.Calculate();
                return;
            }

            state = ConditionState.Listening;

            if (useIDInput)
            {
                if (IDInput.connected())
                {
                    targetID = (IDInput.connections[0].body as SpawnEntityNode).entityID;
                }
                else
                {
                    Debug.LogWarning("Name Input not connected!");
                }
            }
        }
示例#2
0
        public override int Traverse()
        {
            // Pop the pending text
            if (outputUp.connected())
            {
                if (outputUp.connection(0).body is StartTaskNode taskNode && !string.IsNullOrEmpty(taskNode.entityIDforConfirmedResponse))
                {
                    var stack = TaskManager.interactionOverrides[taskNode.entityIDforConfirmedResponse];
                    if (stack.Count > 0)
                    {
                        TaskManager.interactionOverrides[taskNode.entityIDforConfirmedResponse].Pop();
                    }
                }
            }

            SectorManager.instance.player.alerter.showMessage("TASK FAILED", "clip_fail");
            if (outputUp.connected())
            {
                if (outputUp.connection(0).body is StartTaskNode taskNode)
                {
                    taskNode.forceTask = false; // you shouldn't force tasks you can fail
                    string taskID = taskNode.taskID;
                    TaskManager.Instance.endTask(taskID);
                }
            }

            return(0);
        }
示例#3
0
        void VariableUpdate(string variable)
        {
            if (variableName == variable)
            {
                int i = TaskManager.Instance.GetTaskVariable(variableName);
                switch (mode)
                {
                case 0: if (i == value)
                    {
                        state = ConditionState.Completed;
                        outputRight.connection(0).body.Calculate();
                    }
                    break;

                case 1: if (i > value)
                    {
                        state = ConditionState.Completed;
                        outputRight.connection(0).body.Calculate();
                    }
                    break;

                case 2: if (i < value)
                    {
                        state = ConditionState.Completed;
                        outputRight.connection(0).body.Calculate();
                    }
                    break;
                }
            }
        }
        public override AINode GetTreeNode()
        {
            Decorator output = base.GetTreeNode() as Decorator;

            if (child.connected())
            {
                EditorAINode node = child.connection(0).body as EditorAINode;
                output.subNode = node.GetTreeNode();
            }

            return(output);
        }
示例#5
0
 void SiegeWin(string sector)
 {
     if (sector == sectorName)
     {
         state = ConditionState.Completed;
         output.connection(0).body.Calculate();
     }
 }
示例#6
0
        public void Init(int index)
        {
            for (int i = 0; i < PlayerCore.Instance.cursave.missions.Count; i++)
            {
                //Debug.Log("Mission: " + PlayerCore.Instance.cursave.missions[i].name + ", status: " + PlayerCore.Instance.cursave.missions[i].status);
                if (PlayerCore.Instance.cursave.missions[i].name == missionName &&
                    PlayerCore.Instance.cursave.missions[i].status == (Mission.MissionStatus)missionStatus)
                {
                    state = ConditionState.Completed;
                    output.connection(0).body.Calculate();
                    return;
                }
            }

            OnMissionStatusChange += MissionStatus;

            state = ConditionState.Listening;
        }
示例#7
0
 void SectorLoaded(string sector)
 {
     if (sector == sectorName)
     {
         Debug.Log("Completimegousdrhndrtouhnt!");
         state = ConditionState.Completed;
         output.connection(0).body.Calculate();
     }
 }
示例#8
0
        //void SetEntityID(string SelectedID)
        //{
        //    entityID = SelectedID;
        //    WorldCreatorCursor.selectEntity -= SetEntityID;
        //}

        public override int Traverse()
        {
            if (IDIn.connected())
            {
                if (IDIn.connection(0).body is SpawnEntityNode)
                {
                    string ID = (IDIn.connection(0).body as SpawnEntityNode).entityID;
                }
            }

            foreach (var data in AIData.entities)
            {
                if (data.ID == entityID)
                {
                    Destroy(data.gameObject);
                    return(0);
                }
            }
            return(0);
        }
示例#9
0
        public void OnDialogue()
        {
            // draw objectives
            if (TaskManager.objectiveLocations[(Canvas as QuestCanvas).missionName].Contains(objectiveLocation))
            {
                TaskManager.objectiveLocations[(Canvas as QuestCanvas).missionName].Remove(objectiveLocation);
            }
            TaskManager.DrawObjectiveLocations();

            DialogueSystem.ShowFinishTaskNode(this, SectorManager.instance.GetEntity(rewardGiverID));
            //DialogueSystem.ShowPopup(rewardText, textColor, );

            DialogueSystem.OnDialogueEnd    = OnClick;
            DialogueSystem.OnDialogueCancel = OnCancel;
            if (outputUp.connected())
            {
                var taskNode = (outputUp.connection(0).body as StartTaskNode);
                if (taskNode)
                {
                    string taskID = taskNode.taskID;
                    TaskManager.Instance.endTask(taskID);
                    Debug.Log("Task complete!");
                    SectorManager.instance.player.AddCredits(taskNode.creditReward);
                    SectorManager.instance.player.reputation += taskNode.reputationReward;
                    SectorManager.instance.player.shards     += taskNode.shardReward;
                    if (taskNode.partReward)
                    {
                        SectorManager.instance.player.cursave.partInventory.Add(
                            new EntityBlueprint.PartInfo
                        {
                            partID        = taskNode.partID,
                            abilityID     = taskNode.partAbilityID,
                            tier          = taskNode.partTier,
                            secondaryData = taskNode.partSecondaryData
                        });
                    }
                }
            }
        }
示例#10
0
 private void RewardPlayer()
 {
     if (outputUp.connection(0).body is StartTaskNode taskNode)
     {
         string taskID = taskNode.taskID;
         TaskManager.Instance.endTask(taskID);
         Debug.Log("Task complete!");
         SectorManager.instance.player.AddCredits(taskNode.creditReward);
         SectorManager.instance.player.reputation += taskNode.reputationReward;
         SectorManager.instance.player.shards     += taskNode.shardReward;
         if (taskNode.partReward)
         {
             SectorManager.instance.player.cursave.partInventory.Add(
                 new EntityBlueprint.PartInfo
             {
                 partID        = taskNode.partID,
                 abilityID     = taskNode.partAbilityID,
                 tier          = taskNode.partTier,
                 secondaryData = taskNode.partSecondaryData
             });
         }
     }
 }
示例#11
0
        public void OnCancel()
        {
            DialogueSystem.OnDialogueCancel -= OnCancel;
            DialogueSystem.OnDialogueEnd    -= OnClick;
            if (customDialogueSpeed)
            {
                DialogueSystem.Instance.timeBetweenCharacters = oldSpeed;
            }

            if (cancel.connected())
            {
                IDialogueOverrideHandler handler = null;
                if (state != NodeEditorGUI.NodeEditorState.Dialogue)
                {
                    handler = TaskManager.Instance;
                }
                else
                {
                    handler = DialogueSystem.Instance;
                }

                var node = state != NodeEditorGUI.NodeEditorState.Dialogue
                    ? StartDialogueNode.missionCanvasNode
                    : StartDialogueNode.dialogueCanvasNode;
                Debug.Log(node?.EntityID + " " + StartDialogueNode.missionCanvasNode?.EntityID);
                if (node && !string.IsNullOrEmpty(node.EntityID))
                {
                    handler.GetInteractionOverrides()[node.EntityID].Pop();
                    // DialogueSystem.Instance.DialogueViewTransitionOut();
                    if (node == StartDialogueNode.missionCanvasNode)
                    {
                        StartDialogueNode.missionCanvasNode = null;
                    }
                    else
                    {
                        StartDialogueNode.dialogueCanvasNode = null;
                    }
                }

                TaskManager.Instance.setNode(cancel.connection(0));
            }
        }
示例#12
0
 void updateState(Entity entity, Entity _)
 {
     if (((!nameMode && entity.ID == targetID) || (nameMode && (entity.entityName == targetID || entity.name == targetID))) &&
         entity.faction == targetFaction)
     {
         killCount++;
         if (targetFaction != 0)
         {
             SectorManager.instance.player.alerter.showMessage("ENEMIES DESTROYED: " + killCount + " / " + targetCount, "clip_victory");
         }
         else
         {
             SectorManager.instance.player.alerter.showMessage("ALLIES DEAD: " + killCount + " / " + targetCount, "clip_alert");
         }
         if (killCount == targetCount)
         {
             state = ConditionState.Completed;
             output.connection(0).body.Calculate();
         }
     }
 }
示例#13
0
 public override AINode GetTreeNode()
 {
     return(((EditorAINode)(child.connection(0).body)).GetTreeNode());
 }