internal static void RegisterStages(CaseData cData) { $"Started AdvancedScriptManager with min: {Settings.Settings.MinValue()} max: {Settings.Settings.MaxValue()}".AddLog(); Asm = new AdvancedScriptManager { DefaultTimerIntervalMin = Settings.Settings.MinValue(), DefaultTimerIntervalMax = Settings.Settings.MaxValue() }; StageRegister.RegisterStage(Asm, typeof(Sa1Csi), nameof(Sa1Csi), null, StageRegister.CreateList("Sa_2aHospital", "SA_2b_MedicalExaminer"), true); //StageRegister.RegisterStage(Asm, typeof(Sa_2aHospital), nameof(Sa_2aHospital), StageRegister.CreateList("Sa1Csi"), StageRegister.CreateList("SA_3_VictimFamily")); StageRegister.RegisterStage(Asm, typeof(Sa_2BMedicalExaminer), nameof(Sa_2BMedicalExaminer), StageRegister.CreateList("Sa1Csi"), StageRegister.CreateList("Sa_2CStation")); StageRegister.RegisterStage(Asm, typeof(Sa_2CStation), nameof(Sa_2CStation), StageRegister.CreateList("Sa_2BMedicalExaminer"), StageRegister.CreateList("SA_3_VictimFamily")); StageRegister.RegisterStage(Asm, typeof(SA_3_VictimFamily), nameof(SA_3_VictimFamily), StageRegister.CreateList("Sa_2CStation"), StageRegister.CreateList("Sa_3b_Wait")); StageRegister.RegisterStage(Asm, typeof(Sa_3b_Wait), nameof(Sa_3b_Wait), StageRegister.CreateList("SA_3_VictimFamily"), StageRegister.CreateList("Sa_4ASuspectHome")); StageRegister.RegisterStage(Asm, typeof(Sa_4ASuspectHome), nameof(Sa_4ASuspectHome), StageRegister.CreateList("Sa_3b_Wait"), StageRegister.CreateList("Sa_4BWait")); StageRegister.RegisterStage(Asm, typeof(Sa_4BWait), nameof(Sa_4BWait), StageRegister.CreateList("Sa_4ASuspectHome"), StageRegister.CreateList("Sa_4CSuspectWork")); StageRegister.RegisterStage(Asm, typeof(Sa_4CSuspectWork), nameof(Sa_4CSuspectWork), StageRegister.CreateList("Sa_4BWait"), null); GameFiber.StartNew(delegate { GameFiber.Sleep(20000); if (string.IsNullOrWhiteSpace(cData.StartingStage)) { "Starting script from CSI -- no starting stage found".AddLog(); Asm.StartScript(nameof(Sa1Csi)); } else { ("Starting script from stage: " + cData.StartingStage).AddLog(); Asm.StartScript(cData.StartingStage); } var stage = CaseData.LastStage.None; if (cData.CompletedStages.Count > 0) { stage = cData.CompletedStages.LastOrDefault(); } Game.DisplayNotification("3dtextures", "mpgroundlogo_cops", "L.S. Noir", "Created by Fiskey111 and LtFlash", "Loading L.S. Noir...\n\nLast completed stage: ~y~" + ConvertEnumToReadableString(stage, cData)); Game.DisplayHelp("You have loaded L.S. Noir!\nI would recommend disabling callouts for now if you're planning on working on the case.\n\nThis is a temporary fix, hopefully a permanent one will be available soon."); }); }
/// <summary> /// Registers a stage to the scriptmanager that is passed as a parameter /// </summary> /// <param name="scriptManager">The specific scriptmanager</param> /// <param name="classType">The class being registered</param> /// <param name="id">An string used for identification purposes</param> /// <param name="before">The stages required before this stage</param> /// <param name="after">The stages to be added after this stage</param> /// <param name="noPrior">true=no scripts before will be added; /// false=scripts are required before</param> public static void RegisterStage(AdvancedScriptManager scriptManager, Type classType, string id, List <string> before, List <string> after, bool noPrior = false) { $"Beginning registration of stage {id}; noPrior={noPrior}".AddLog(); var beforeList = new List <List <string> >(); var afterList = after; if (after == null) { afterList = new List <string>(); } if (!noPrior) { beforeList.Add(before); } scriptManager.AddScript( classType, id, EInitModels.TimerBased, afterList, beforeList); $"Stage {id} successfully registered".AddLog(true); }