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); }