Beispiel #1
0
 public void ShowBox(NarrativeQuest quest, string text)
 {
     box_title.text   = text;
     quest_title.text = quest.title;
     timer            = 0f;
     Show();
 }
Beispiel #2
0
        public bool IsMet(GameObject triggerer)
        {
            bool condition_met = false;

            if (type == NarrativeConditionType.None)
            {
                condition_met = true;
            }

            if (type == NarrativeConditionType.CustomInt)
            {
                int i1 = NarrativeData.Get().GetCustomInt(target_id);
                int i2 = target_type == NarrativeConditionTargetType.Target ? NarrativeData.Get().GetCustomInt(other_target_id) : value_int;
                condition_met = CompareInt(i1, i2);
            }

            if (type == NarrativeConditionType.CustomFloat)
            {
                float f1 = NarrativeData.Get().GetCustomFloat(target_id);
                float f2 = target_type == NarrativeConditionTargetType.Target ? NarrativeData.Get().GetCustomFloat(other_target_id) : value_float;
                condition_met = CompareFloat(f1, f2);
            }

            if (type == NarrativeConditionType.CustomString)
            {
                string s1 = NarrativeData.Get().GetCustomString(target_id);
                string s2 = target_type == NarrativeConditionTargetType.Target ? NarrativeData.Get().GetCustomString(other_target_id) : value_string;
                condition_met = CompareString(s1, s2);
            }

            if (type == NarrativeConditionType.IsVisible)
            {
                GameObject targ = target.GetTargetObject(triggerer);
                condition_met = (targ != null && targ.activeSelf);
                if (targ != null)
                {
                    condition_met = targ.activeSelf;
                }
                if (oper2 == NarrativeConditionOperator2.IsFalse)
                {
                    condition_met = !condition_met;
                }
            }

            if (type == NarrativeConditionType.HoldItem)
            {
                GameObject targ = target.GetTargetObject(triggerer);
                if (targ && targ.GetComponent <CharacterHoldItem>())
                {
                    CharacterHoldItem character = targ.GetComponent <CharacterHoldItem>();
                    CarryItem         item      = character.GetHeldItem();
                    condition_met = (item != null && (item.item_type == value_string || value_string == ""));
                }
                if (oper2 == NarrativeConditionOperator2.IsFalse)
                {
                    condition_met = !condition_met;
                }
            }

            if (type == NarrativeConditionType.InsideRegion)
            {
                GameObject targ = target.GetTargetObject(triggerer);
                if (targ && value_object)
                {
                    if (value_object.GetComponent <Region>())
                    {
                        condition_met = value_object.GetComponent <Region>().IsInside(targ);
                    }
                }
                if (oper2 == NarrativeConditionOperator2.IsFalse)
                {
                    condition_met = !condition_met;
                }
            }

            if (type == NarrativeConditionType.QuestStarted)
            {
                if (value_object && value_object.GetComponent <NarrativeQuest>())
                {
                    NarrativeQuest quest = value_object.GetComponent <NarrativeQuest>();
                    condition_met = NarrativeData.Get().IsQuestStarted(quest.quest_id);
                    if (oper2 == NarrativeConditionOperator2.IsFalse)
                    {
                        condition_met = !condition_met;
                    }
                }
            }

            if (type == NarrativeConditionType.QuestStartedActive)
            {
                if (value_object && value_object.GetComponent <NarrativeQuest>())
                {
                    NarrativeQuest quest = value_object.GetComponent <NarrativeQuest>();
                    condition_met = NarrativeData.Get().IsQuestActive(quest.quest_id);
                    if (oper2 == NarrativeConditionOperator2.IsFalse)
                    {
                        condition_met = !condition_met;
                    }
                }
            }

            if (type == NarrativeConditionType.QuestCompleted)
            {
                if (value_object && value_object.GetComponent <NarrativeQuest>())
                {
                    NarrativeQuest quest = value_object.GetComponent <NarrativeQuest>();
                    condition_met = NarrativeData.Get().IsQuestCompleted(quest.quest_id);
                    if (oper2 == NarrativeConditionOperator2.IsFalse)
                    {
                        condition_met = !condition_met;
                    }
                }
            }

            if (type == NarrativeConditionType.DialogueTriggered)
            {
                GameObject targ = target.GetTargetObject();
                if (targ && targ.GetComponent <DialogueEvent>())
                {
                    DialogueEvent cinema = targ.GetComponent <DialogueEvent>();
                    condition_met = cinema.GetTriggerCount() >= 1;
                    if (oper2 == NarrativeConditionOperator2.IsFalse)
                    {
                        condition_met = !condition_met;
                    }
                }
            }

            if (type == NarrativeConditionType.CustomFunction)
            {
                if (custom_condition != null)
                {
                    if (custom_condition.GetComponent <CustomContidion>() != null)
                    {
                        condition_met = custom_condition.GetComponent <CustomContidion>().IsMet();
                    }
                    if (oper2 == NarrativeConditionOperator2.IsFalse)
                    {
                        condition_met = !condition_met;
                    }
                }
            }

            return(condition_met);
        }
        public void Trigger(GameObject triggerer)
        {
            if (type == NarrativeEffectType.CustomInt)
            {
                NarrativeData.Get().SetCustomInt(target_id, value_int);
            }

            if (type == NarrativeEffectType.CustomFloat)
            {
                NarrativeData.Get().SetCustomFloat(target_id, value_float);
            }

            if (type == NarrativeEffectType.CustomString)
            {
                NarrativeData.Get().SetCustomString(target_id, value_string);
            }

            if (type == NarrativeEffectType.Move)
            {
                GameObject targ     = target.GetTargetObject();
                GameObject targ_pos = value_object;
                if (targ != null && targ_pos != null)
                {
                    targ.transform.position = targ_pos.transform.position;
                }
            }

            if (type == NarrativeEffectType.Show)
            {
                GameObject targ = target.GetTargetObject();
                if (targ)
                {
                    targ.SetActive(true);
                }
            }

            if (type == NarrativeEffectType.Hide)
            {
                GameObject targ = target.GetTargetObject();
                if (targ)
                {
                    targ.SetActive(false);
                }
            }

            if (type == NarrativeEffectType.Spawn)
            {
                GameObject targ = target.GetTargetObject();
                if (targ != null)
                {
                    GameObject.Instantiate(targ, triggerer.transform.position, Quaternion.identity);
                }
            }

            if (type == NarrativeEffectType.Destroy)
            {
                GameObject targ = target.GetTargetObject(triggerer);
                Destroy(targ);
            }

            if (type == NarrativeEffectType.DestroyHeld)
            {
                GameObject targ = target.GetTargetObject(triggerer);
                if (targ && targ.GetComponent <CharacterHoldItem>())
                {
                    CarryItem item = targ.GetComponent <CharacterHoldItem>().GetHeldItem();
                    if (item)
                    {
                        Destroy(item.gameObject);
                    }
                }
            }

            if (type == NarrativeEffectType.StartDialogue)
            {
                GameObject targ = target.GetTargetObject(triggerer);
                if (targ && targ.GetComponent <DialogueEvent>())
                {
                    if (targ.GetComponent <DialogueEvent>().AreConditionsMet())
                    {
                        NarrativeManager.Get().StartEvent(targ.GetComponent <DialogueEvent>());
                    }
                }
                if (targ && targ.GetComponent <DialogueChoice>())
                {
                    if (targ.GetComponent <DialogueChoice>().AreConditionsMet())
                    {
                        targ.GetComponent <DialogueChoice>().Trigger(triggerer);
                    }
                }
            }

            if (type == NarrativeEffectType.LockCamera)
            {
                FollowCamera pcam = FollowCamera.Get();
                if (pcam != null)
                {
                    pcam.LockCameraOn(value_object);
                }
            }

            if (type == NarrativeEffectType.UnlockCamera)
            {
                FollowCamera pcam = FollowCamera.Get();
                if (pcam != null)
                {
                    pcam.UnlockCamera();
                }
            }

            if (type == NarrativeEffectType.LockGameplay)
            {
                foreach (PlayerControls controls in PlayerControls.GetAll())
                {
                    controls.disable_controls = true;
                }
            }

            if (type == NarrativeEffectType.UnlockGameplay)
            {
                foreach (PlayerControls controls in PlayerControls.GetAll())
                {
                    controls.disable_controls = false;
                }
            }

            if (type == NarrativeEffectType.StartQuest)
            {
                NarrativeQuest quest = value_object.GetComponent <NarrativeQuest>();
                NarrativeData.Get().StartQuest(quest.quest_id);
                if (QuestBox.Get())
                {
                    QuestBox.Get().ShowBox(quest, "New Quest");
                }
            }

            if (type == NarrativeEffectType.CancelQuest)
            {
                NarrativeQuest quest = value_object.GetComponent <NarrativeQuest>();
                NarrativeData.Get().CancelQuest(quest.quest_id);
                if (QuestBox.Get())
                {
                    QuestBox.Get().ShowBox(quest, "Quest Failed");
                }
            }

            if (type == NarrativeEffectType.CompleteQuest)
            {
                NarrativeQuest quest = value_object.GetComponent <NarrativeQuest>();
                NarrativeData.Get().CompleteQuest(quest.quest_id);
                if (QuestBox.Get())
                {
                    QuestBox.Get().ShowBox(quest, "Quest Completed");
                }
            }

            if (type == NarrativeEffectType.RunEvent)
            {
                GameObject targ = target.GetTargetObject(triggerer);
                if (targ && targ.GetComponent <NarrativeEvent>())
                {
                    targ.GetComponent <NarrativeEvent>().Run(triggerer);
                }
            }

            if (type == NarrativeEffectType.RunEventIfMet)
            {
                GameObject targ = target.GetTargetObject(triggerer);
                if (targ && targ.GetComponent <NarrativeEvent>())
                {
                    targ.GetComponent <NarrativeEvent>().RunIfConditionsMet(triggerer);
                }
            }

            if (type == NarrativeEffectType.CallFunction)
            {
                if (callfunc_evt != null)
                {
                    callfunc_evt.Invoke();
                }
            }
        }