Пример #1
0
        public static EventManager.CEventFlow eventToFlow(ModEvent ev)
        {
            EventManager.CEventFlow flow = new EventManager.CEventFlow();

            flow.EventName   = ev.Name;
            flow.EventType   = (EEventType)Enum.Parse(typeof(EEventType), ev.Type);
            flow.Location    = (ESchoolLocation)Enum.Parse(typeof(ESchoolLocation), ev.Location);
            flow.EventScenes = new EventManager.CEventFlow.CEventScene[ev.EventScenes.Count];
            for (int i = 0; i < ev.EventScenes.Count; i++)
            {
                if (ev.EventScenes[i] != null)
                {
                    flow.EventScenes[i] = new EventManager.CEventFlow.CEventScene();
                }
                if (ev.EventScenes[i].SceneLayout != null)
                {
                    flow.EventScenes[i].SceneLayout = (EEventLayoutType)Enum.Parse(typeof(EEventLayoutType), ev.EventScenes[i].SceneLayout);
                }
                if (ev.EventScenes[i].Illustration_BG != "")
                {
                    flow.EventScenes[i].Illustration_BG = SpriteHelper.LookupBG(ev.EventScenes[i].Illustration_BG, ev);
                }
                if (ev.EventScenes[i].Illustration_FG != "")
                {
                    flow.EventScenes[i].Illustration_FG = SpriteHelper.LookupCustomSprite(ev.EventScenes[i].Illustration_FG);
                }
                if (ev.EventScenes[i].Illustration_Player != null)
                {
                    flow.EventScenes[i].Illustration_Player = (Sprite)Resources.Load(ev.EventScenes[i].Illustration_Player, typeof(Sprite));
                }

                SetupSprites(ref flow.EventScenes[i], ev.EventScenes[i]);

                if (ev.EventScenes[i].WhoSpeaksNPC != null)
                {
                    flow.EventScenes[i].WhoSpeaksNPC = ev.EventScenes[i].WhoSpeaksNPC;
                }
                if (ev.EventScenes[i].WhoSpeaksSprite != null)
                {
                    flow.EventScenes[i].WhoSpeaksSprite = ev.EventScenes[i].WhoSpeaksSprite;
                }
                if (ev.EventScenes[i].Text == null)
                {
                    throw new ArgumentNullException("Text", "Text cannot be null, please check your xml file.");
                }
                flow.EventScenes[i].Text[ELanguage.English]        = ev.EventScenes[i].Text;
                flow.EventScenes[i].IsOptionScene                  = ev.EventScenes[i].IsOptionScene;
                flow.EventScenes[i].TextOption2[ELanguage.English] = ev.EventScenes[i].TextOption2;
                flow.EventScenes[i].IsFinalScene      = ev.EventScenes[i].IsFinalScene;
                flow.EventScenes[i].HasForcedLocation = ev.EventScenes[i].HasForcedLocation;
                if (ev.EventScenes[i].ForcedOutfitForCharacters != null)
                {
                    flow.EventScenes[i].ForcedOutfitForCharacters = ev.EventScenes[i].ForcedOutfitForCharacters.ToArray();
                }
                if (ev.EventScenes[i].SfxId != null)
                {
                    flow.EventScenes[i].SfxId = ev.EventScenes[i].SfxId;
                }
            }
            flow.IndexSceneOfOption1Success = ev.IndexSceneOfOption1Success;
            flow.IndexSceneOfOption1Failure = ev.IndexSceneOfOption1Failure;
            flow.IndexSceneOfOption2Success = ev.IndexSceneOfOption2Success;
            flow.IndexSceneOfOption2Failure = ev.IndexSceneOfOption2Failure;
            if (ev.StatRequired_Option1 != null)
            {
                flow.StatRequired_Option1 = (EStat)Enum.Parse(typeof(EStat), ev.StatRequired_Option1);
            }
            if (ev.StatRequired_Option2 != null)
            {
                flow.StatRequired_Option2 = (EStat)Enum.Parse(typeof(EStat), ev.StatRequired_Option2);
            }
            if (ev.TopicTags != null)
            {
                flow.TopicTags = ev.TopicTags.ToArray();
            }

            ev.ArgumentTags.Add("MOD");
            flow.ArgumentTags = ev.ArgumentTags.ToArray();

            if (ev.CharacterTags != null)
            {
                flow.CharacterTags = ev.CharacterTags.ToArray();
                ev.CharacterTags.ForEach(cha => { if (!ModConstants.VANILLA_CHARACTERS.Contains(cha))
                                                  {
                                                      EventHelper.AddCharacter(cha);
                                                  }
                                         });
            }
            if (ev.EventRestrictions != null)
            {
                flow.EventRestrictions = new EventManager.CEventFlow.CEventRestriction[ev.EventRestrictions.Count];
            }
            for (int j = 0; j < ev.EventRestrictions.Count; j++)
            {
                flow.EventRestrictions[j] = new EventManager.CEventFlow.CEventRestriction();
                if (ev.EventRestrictions[j].Type != null)
                {
                    flow.EventRestrictions[j].RestrictionType = (EEventRestrictionType)Enum.Parse(typeof(EEventRestrictionType), ev.EventRestrictions[j].Type);
                }
                flow.EventRestrictions[j].TrueOrFalse = ev.EventRestrictions[j].TrueOrFalse;
                if (ev.EventRestrictions[j].RestrictionData != null)
                {
                    flow.EventRestrictions[j].RestrictionData = ev.EventRestrictions[j].RestrictionData;
                }
            }
            if (ev.Option1SuccessLoves != null)
            {
                flow.Option1Success_Loves = ev.Option1SuccessLoves.ToArray();
            }
            if (ev.Option1FailureLoves != null)
            {
                flow.Option1Failure_Loves = ev.Option1FailureLoves.ToArray();
            }
            if (ev.Option2SuccessLoves != null)
            {
                flow.Option2Success_Loves = ev.Option2SuccessLoves.ToArray();
            }
            if (ev.Option2FailureLoves != null)
            {
                flow.Option2Failure_Loves = ev.Option2FailureLoves.ToArray();
            }
            flow.ContinuityData = new EventManager.CEventFlow.CEventContinuity();
            if (ev.ContinuityData != null)
            {
                flow.ContinuityData.Initialized      = ev.ContinuityData.Initialized;
                flow.ContinuityData.IsContinuityRoot = ev.ContinuityData.IsContinuityRoot;
                flow.ContinuityData.ContinuityEventLengthFromThisNode = ev.ContinuityData.ContinuityEventLengthFromThisNode;
                flow.ContinuityData.Option1Success_ContinuityIndex    = ev.ContinuityData.Option1SuccessContinuityIndex;
                flow.ContinuityData.Option1Failure_ContinuityIndex    = ev.ContinuityData.Option1FailureContinuityIndex;
                flow.ContinuityData.Option2Success_ContinuityIndex    = ev.ContinuityData.Option2SuccessContinuityIndex;
                flow.ContinuityData.Option2Failure_ContinuityIndex    = ev.ContinuityData.Option2FailureContinuityIndex;
                flow.ContinuityData.Option1Success_IsSelfContinuity   = ev.ContinuityData.Option1SuccessIsSelfContinuity;
                flow.ContinuityData.Option1Failure_IsSelfContinuity   = ev.ContinuityData.Option1FailureIsSelfContinuity;
                flow.ContinuityData.Option2Success_IsSelfContinuity   = ev.ContinuityData.Option2SuccessIsSelfContinuity;
                flow.ContinuityData.Option2Failure_IsSelfContinuity   = ev.ContinuityData.Option2FailureIsSelfContinuity;
            }
            if (ev.Option1Success_RuleNoMoreTags != null)
            {
                flow.Option1Success_RuleNoMoreTags = ev.Option1Success_RuleNoMoreTags.ToArray();
            }
            if (ev.Option1Failure_RuleNoMoreTags != null)
            {
                flow.Option1Failure_RuleNoMoreTags = ev.Option1Failure_RuleNoMoreTags.ToArray();
            }
            if (ev.Option2Success_RuleNoMoreTags != null)
            {
                flow.Option2Success_RuleNoMoreTags = ev.Option2Success_RuleNoMoreTags.ToArray();
            }
            if (ev.Option2Failure_RuleNoMoreTags != null)
            {
                flow.Option2Failure_RuleNoMoreTags = ev.Option2Failure_RuleNoMoreTags.ToArray();
            }
            if (ev.Option1Success_RuleMoreTags != null)
            {
                flow.Option1Success_RuleMoreTags = ev.Option1Success_RuleMoreTags.ToArray();
            }
            if (ev.Option1Failure_RuleMoreTags != null)
            {
                flow.Option1Failure_RuleMoreTags = ev.Option1Failure_RuleMoreTags.ToArray();
            }
            if (ev.Option2Success_RuleMoreTags != null)
            {
                flow.Option2Success_RuleMoreTags = ev.Option2Success_RuleMoreTags.ToArray();
            }
            if (ev.Option2Failure_RuleMoreTags != null)
            {
                flow.Option2Failure_RuleMoreTags = ev.Option2Failure_RuleMoreTags.ToArray();
            }
            return(flow);
        }