Exemple #1
0
        ////////////////

        internal void Update()
        {
            var mymod = ModHelpersMod.Instance;

            if (!LoadHelpers.IsWorldSafelyBeingPlayed())
            {
                this.IsDay = Main.dayTime;
            }
            else
            {
                if (this.IsDay != Main.dayTime)
                {
                    if (!this.IsDay)
                    {
                        foreach (Action hook in mymod.WorldTimeHooks.DayHooks.Values)
                        {
                            hook();
                        }
                    }
                    else
                    {
                        foreach (Action hook in mymod.WorldTimeHooks.NightHooks.Values)
                        {
                            hook();
                        }
                    }
                }

                this.IsDay = Main.dayTime;
            }
        }
Exemple #2
0
        ////////////////

        public bool JumpToPage(Player player, int pageNum)
        {
            if (!LoadHelpers.IsWorldSafelyBeingPlayed())
            {
                LogHelpers.Warn("World not in play");
                return(false);
            }
            if (Timers.GetTimerTickDuration(InventoryBook.PageScrollTimerName) > 0)
            {
                return(false);
            }

            string err;

            if (!this.CanScrollPages(out err))
            {
                Main.NewText(err, Color.Red);
                return(false);
            }

            this.PullFromInventoryToPage(player, this.CurrentPageIdx);
            this.PushPageToInventory(player, pageNum);

            this.CurrentPageIdx = pageNum;
            //RecipeHack.ForceRecipeRefresh();
            Recipe.FindRecipes();

            Timers.SetTimer(InventoryBook.PageScrollTimerName, 10, true, () => {
                return(false);
            });

            return(true);
        }
Exemple #3
0
        ////////////////

        public override void PreUpdate()
        {
            if (LoadHelpers.IsWorldLoaded())
            {
                this.Logic.Update();
            }
        }
        ////////////////

        internal void Update(HamstarHelpersMod mymod)
        {
            if (!LoadHelpers.IsWorldSafelyBeingPlayed())
            {
                this.IsDay = Main.dayTime;
            }
            else
            {
                if (this.IsDay != Main.dayTime)
                {
                    this.HalfDaysElapsed++;

                    if (!this.IsDay)
                    {
                        foreach (var kv in mymod.WorldHelpers.DayHooks)
                        {
                            kv.Value();
                        }
                    }
                    else
                    {
                        foreach (var kv in mymod.WorldHelpers.NightHooks)
                        {
                            kv.Value();
                        }
                    }
                }

                this.IsDay = Main.dayTime;
            }

            this.TicksElapsed++;
        }
        ////////////////

        internal void Update()
        {
            if (!LoadHelpers.IsWorldBeingPlayed())
            {
                return;
            }

            foreach (var kv in this.Data)
            {
                foreach (var kv2 in kv.Value.ToArray())
                {
                    int      x    = kv.Key;
                    int      y    = kv2.Key;
                    TileData data = kv2.Value;

                    if (!TileDataManager.IsValidTile(x, y))
                    {
                        this.Data[x].Remove(y);
                    }
                    else if (data.Damage > 0)
                    {
                        if (data.TTL-- <= 0)
                        {
                            data.Damage = 0;
                            data.TTL    = 0;
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Enables entity groups. Must be called before all mod load and setup functions are called.
        /// </summary>
        public static void Enable()
        {
            var mymod = ModHelpersMod.Instance;

            if (LoadHelpers.IsModLoaded())
            {
                throw new ModHelpersException("Entity Groups must be enabled before mods finish loading.");
            }

            var entGrps = mymod.EntityGroups;

            entGrps.IsEnabled = true;
        }
Exemple #7
0
        public void UnloadModules()
        {
            this.Loadables.OnModsUnload();

            this.Loadables                  = null;
            this.ReflectionHelpers          = null;
            this.PacketProtocolMngr         = null;
            this.ExceptionMngr              = null;
            this.Timers                     = null;
            this.LogHelpers                 = null;
            this.ModFeaturesHelpers         = null;
            this.BuffHelpers                = null;
            this.NetHelpers                 = null;
            this.NPCAttributeHelpers        = null;
            this.ProjectileAttributeHelpers = null;
            this.BuffIdentityHelpers        = null;
            this.NPCBannerHelpers           = null;
            this.RecipeFinderHelpers        = null;
            this.RecipeGroupHelpers         = null;
            this.PlayerHooks                = null;
            this.LoadHelpers                = null;
            this.GetModInfo                 = null;
            this.GetModTags                 = null;
            this.WorldStateHelpers          = null;
            this.ModLock                    = null;
            this.EntityGroups               = null;
            this.AnimatedColors             = null;
            this.AnimatedTextures           = null;
            this.PlayerMessages             = null;
            this.Inbox                 = null;
            this.ControlPanel          = null;
            this.MenuItemMngr          = null;
            this.MenuContextMngr       = null;
            this.MusicHelpers          = null;
            this.PlayerIdentityHelpers = null;
            this.LoadHooks             = null;
            this.CustomLoadHooks       = null;
            this.DataStore             = null;
            this.CustomHotkeys         = null;
            this.XnaHelpers            = null;
            this.Server                = null;
            //this.PlayerDataMngr = null;
            this.SupportInfo          = null;
            this.RecipeHack           = null;
            this.ModListHelpers       = null;
            this.ItemAttributeHelpers = null;
            this.WorldTimeHooks       = null;

            this.ControlPanelHotkey = null;
            this.DataDumpHotkey     = null;
        }
Exemple #8
0
        private void UpdatePostTrainLoad()
        {
            if (this.player.dead)
            {
                return;
            }

            if (LoadHelpers.IsWorldSafelyBeingPlayed())
            {
                if (Main.netMode != 2)
                {
                    this.UpdateTrainWarp();
                }
            }
        }
Exemple #9
0
        internal void Update()
        {
            if (!LoadHelpers.IsWorldBeingPlayed())
            {
                return;
            }

            lock (CustomEntityManager.MyLock) {
                var ents = this.WorldEntitiesByIndexes.Values.ToArray();

                foreach (CustomEntity ent in ents)
                {
                    ent.Update();
                }
            }
        }
        public void UnloadOuter()
        {
            this.ReflectionHelpers         = null;
            this.PacketProtocolMngr        = null;
            this.ExceptionMngr             = null;
            this.Timers                    = null;
            this.ConfigJson                = null;
            this.LogHelpers                = null;
            this.ModFeaturesHelpers        = null;
            this.BuffHelpers               = null;
            this.NetHelpers                = null;
            this.ItemIdentityHelpers       = null;
            this.NPCIdentityHelpers        = null;
            this.ProjectileIdentityHelpers = null;
            this.BuffIdentityHelpers       = null;
            this.NPCBannerHelpers          = null;
            this.RecipeIdentityHelpers     = null;
            this.RecipeGroupHelpers        = null;
            this.PlayerHooks               = null;
            this.LoadHelpers               = null;
            this.GetModInfo                = null;
            this.GetModTags                = null;
            this.WorldStateHelpers         = null;
            this.ModLock                   = null;
            this.EntityGroups              = null;
            this.AnimatedColors            = null;
            this.PlayerMessages            = null;
            this.Inbox                 = null;
            this.ControlPanel          = null;
            this.MenuItemMngr          = null;
            this.MenuContextMngr       = null;
            this.MusicHelpers          = null;
            this.PlayerIdentityHelpers = null;
            this.CustomEntMngr         = null;
            this.Promises              = null;
            this.DataStore             = null;
            this.CustomHotkeys         = null;
            this.XnaHelpers            = null;
            this.ServerInfo            = null;
            //this.PlayerDataMngr = null;
            this.SupportInfo    = null;
            this.RecipeHack     = null;
            this.ModListHelpers = null;

            this.ControlPanelHotkey = null;
            this.DataDumpHotkey     = null;
        }
Exemple #11
0
        private void LoadModules()
        {
            this.Loadables.OnModsLoad();

            this.ReflectionHelpers = new ReflectionHelpers();
            this.DataStore         = new DataStore();
            this.LoadHooks         = new LoadHooks();
            this.CustomLoadHooks   = new CustomLoadHooks();
            this.LoadHelpers       = new LoadHelpers();

            this.Timers             = new Timers();
            this.LogHelpers         = new LogHelpers();
            this.ModFeaturesHelpers = new ModFeaturesHelpers();
            this.PacketProtocolMngr = new PacketProtocolManager();

            this.BuffHelpers                = new BuffHelpers();
            this.NetHelpers                 = new NetPlayHelpers();
            this.NPCAttributeHelpers        = new NPCAttributeHelpers();
            this.ProjectileAttributeHelpers = new ProjectileAttributeHelpers();
            this.BuffIdentityHelpers        = new BuffAttributesHelpers();
            this.NPCBannerHelpers           = new NPCBannerHelpers();
            this.RecipeFinderHelpers        = new RecipeFinderHelpers();
            this.RecipeGroupHelpers         = new RecipeGroupHelpers();
            this.PlayerHooks                = new ExtendedPlayerHooks();
            this.WorldTimeHooks             = new WorldTimeHooks();
            this.WorldStateHelpers          = new WorldStateHelpers();
            this.ControlPanel               = new UIControlPanel();
            this.ModLock               = new ModLockService();
            this.EntityGroups          = new EntityGroups();
            this.PlayerMessages        = new PlayerMessages();
            this.Inbox                 = new InboxControl();
            this.GetModInfo            = new GetModInfo();
            this.GetModTags            = new GetModTags();
            this.MenuItemMngr          = new MenuItemManager();
            this.MenuContextMngr       = new MenuContextServiceManager();
            this.MusicHelpers          = new MusicHelpers();
            this.PlayerIdentityHelpers = new PlayerIdentityHelpers();
            this.CustomHotkeys         = new CustomHotkeys();
            this.XnaHelpers            = new XNAHelpers();
            this.Server                = new Server();
            //this.PlayerDataMngr = new PlayerDataManager();
            this.SupportInfo          = new SupportInfoDisplay();
            this.RecipeHack           = new RecipeHack();
            this.ModListHelpers       = new ModListHelpers();
            this.ItemAttributeHelpers = new ItemAttributeHelpers();
        }
        ////////////////

        private static void _Update()
        {
            var mymod = ResetModeMod.Instance;

            if (mymod == null)
            {
                return;
            }

            if (mymod.Session.OnTickGet())
            {
                if (LoadHelpers.IsWorldSafelyBeingPlayed() && mymod.Session.IsWorldInPlay)
                {
                    mymod.Session.Update();
                }
            }
        }
Exemple #13
0
        ////////////////

        internal void Update()
        {
            if (!this.IsInitialized)
            {
                return;
            }
            if (!this.IsMismatched)
            {
                return;
            }
//if( (this.ExitDuration % 60) == 0 ) {LogHelpers.Log( "bye? IsInitialized:"+this.IsInitialized+" IsMismatched:"+this.IsMismatched+"," + ( this.ExitDuration / 60) );}

            if (Main.netMode == 2 && !this.MismatchBroadcastMade)
            {
                var modworld = HamstarHelpersMod.Instance.GetModWorld <HamstarHelpersWorld>();

                if (LoadHelpers.IsWorldSafelyBeingPlayed())
                {
                    this.MismatchBroadcastMade = true;

                    int eta = this.ExitDuration / 60;
                    var msg = NetworkText.FromLiteral("World mod mismatch found. Server shutting down in " + eta + " seconds.");

                    NetMessage.BroadcastChatMessage(msg, Color.Red, -1);
                }
            }

            if (this.ExitDuration > 0)
            {
                this.ExitDuration--;
            }
            else
            {
                if (Main.netMode == 0 || Main.netMode == 1)
                {
                    TmlHelpers.ExitToMenu(false);
                }
                else if (Main.netMode == 2)
                {
                    TmlHelpers.ExitToDesktop(false);
                }
            }
        }
        private void PreUpdate(HamstarHelpersMod mymod)
        {
            if (LoadHelpers.IsWorldLoaded())
            {
                mymod.Promises.FulfillWorldLoadPromises();
            }

            if (LoadHelpers.IsWorldBeingPlayed())
            {
                mymod.LoadHelpers.PostWorldLoadUpdate();
                mymod.WorldHelpers.Update(mymod);

                // Simply idle until ready (seems needed)
                if (LoadHelpers.IsWorldSafelyBeingPlayed())
                {
                    this.UpdateSafelyLoaded(mymod);
                }
            }
        }
Exemple #15
0
        ////////////////

        internal void UpdateUponWorldBeingPlayed()
        {
            var mymod = ModHelpersMod.Instance;

            if (!LoadHelpers.IsWorldSafelyBeingPlayed())
            {
                this.IsDay = Main.dayTime;
            }
            else
            {
                if (this.IsDay != Main.dayTime)
                {
                    this.HalfDaysElapsed++;
                }

                this.IsDay = Main.dayTime;
            }

            this.TicksElapsed++;
        }
Exemple #16
0
        private void UpdatePlayerState()
        {
            if (this.player.dead)
            {
                return;
            }

            this.IsInInitLockdown = !LoadHelpers.IsWorldSafelyBeingPlayed();

            if (this.IsInInitLockdown)
            {
                PlayerHelpers.LockdownPlayerPerTick(this.player);
            }

            var args = new PlayerPromiseArguments {
                Who = this.player.whoAmI
            };

            Promises.TriggerValidatedPromise(OnARailPlayer.PlayerFuncsValidator, OnARailPlayer.MyValidatorKey, args);
        }
Exemple #17
0
        private void PreUpdateShared()
        {
            var mymod = ModHelpersMod.Instance;

            if (LoadHelpers.IsWorldLoaded())
            {
                mymod.Promises.FulfillWorldLoadPromises();
            }

            if (LoadHelpers.IsWorldBeingPlayed())
            {
                mymod.Promises.FulfillWorldInPlayPromises();
                mymod.LoadHelpers.UpdateUponWorldBeingPlayed();
                mymod.WorldStateHelpers.UpdateUponWorldBeingPlayed();
            }

            if (LoadHelpers.IsWorldSafelyBeingPlayed())
            {
                this.UpdateSafelyLoaded();
                mymod.Promises.FulfillSafeWorldLoadPromises();
            }
        }
Exemple #18
0
        public bool ScrollPageUp(Player player)
        {
            if (!LoadHelpers.IsWorldSafelyBeingPlayed())
            {
                LogHelpers.Warn("World not in play");
                //Main.NewText( "Could not scroll pages. Please report this as an issue.", Color.Red );
                return(false);
            }
            if (Timers.GetTimerTickDuration(InventoryBook.PageScrollTimerName) > 0)
            {
                return(false);
            }

            string err;

            if (!this.CanScrollPages(out err))
            {
                Main.NewText(err, Color.Red);
                return(false);
            }
            if (this.CurrentPageIdx <= 0)
            {
                return(false);
            }

            this.PullFromInventoryToPage(player, this.CurrentPageIdx);
            this.PushPageToInventory(player, --this.CurrentPageIdx);
            //RecipeHack.ForceRecipeRefresh();
            Recipe.FindRecipes();

            Timers.SetTimer(InventoryBook.PageScrollTimerName, 10, true, () => {
                RecipeHack.ForceRecipeRefresh();
                return(false);
            });

            return(true);
        }
Exemple #19
0
        public override void ModifyInterfaceLayers(List <GameInterfaceLayer> layers)
        {
            int idx = layers.FindIndex(layer => layer.Name.Equals("Vanilla: Mouse Text"));

            if (idx != -1)
            {
                GameInterfaceDrawMethod drawMethod = delegate {
                    if (!LoadHelpers.IsWorldSafelyBeingPlayed())
                    {
                        return(true);
                    }

                    try {
                        var      myworld = ModContent.GetInstance <RewardsWorld>();
                        KillData data    = myworld.Logic.GetPlayerData(Main.LocalPlayer);

                        if (data == null)
                        {
                            throw new ModHelpersException("No player data for " + Main.LocalPlayer.name);
                        }

                        if (data.CanDrawPoints())
                        {
                            data.DrawPointScore(Main.spriteBatch);
                        }
                    } catch (Exception) { }

                    return(true);
                };

                var interfaceLayer = new LegacyGameInterfaceLayer("Rewards: Points", drawMethod,
                                                                  InterfaceScaleType.UI);

                layers.Insert(idx, interfaceLayer);
            }
        }
        ////////////////

        public override void ModifyInterfaceLayers(List <GameInterfaceLayer> layers)
        {
//Services.DataStore.DataStore.Add( DebugHelpers.GetCurrentContext()+"_A", 1 );
            if (this.LoadHelpers != null && !LoadHelpers.IsWorldBeingPlayed())
            {
                return;
            }

            int idx = layers.FindIndex(layer => layer.Name.Equals("Vanilla: Mouse Text"));

            if (idx == -1)
            {
                return;
            }

            GameInterfaceDrawMethod debugDrawCallback = () => {
                var sb = Main.spriteBatch;

                try {
                    this.PlayerMessages.Draw(sb);
                    SimpleMessage.DrawMessage(sb);

                    DebugHelpers.PrintAll(sb);
                    DebugHelpers.Once = false;
                    DebugHelpers.OnceInAWhile--;
                } catch (Exception e) {
                    LogHelpers.Warn("debugLayerDraw - " + e.ToString());
                }
                return(true);
            };

            GameInterfaceDrawMethod cpDrawCallback = () => {
                var sb = Main.spriteBatch;

                try {
                    if (!this.Config.DisableControlPanel)
                    {
                        this.ControlPanel.UpdateToggler();
                        this.ControlPanel.DrawToggler(sb);
                    }
                    if (this.LastSeenCPScreenWidth != Main.screenWidth || this.LastSeenCPScreenHeight != Main.screenHeight)
                    {
                        this.LastSeenCPScreenWidth  = Main.screenWidth;
                        this.LastSeenCPScreenHeight = Main.screenHeight;
                        this.ControlPanel.RecalculateMe();
                    }

                    this.Inbox.Draw(sb);
                } catch (Exception e) {
                    LogHelpers.Warn("cpLayerDraw - " + e.ToString());
                }

//sb.DrawString( Main.fontDeathText, "ALERT", new Vector2(128, 128), this.AnimatedColors.Alert.CurrentColor );
//sb.DrawString( Main.fontDeathText, "STROBE", new Vector2(128, 256), this.AnimatedColors.Strobe.CurrentColor );
//sb.DrawString( Main.fontDeathText, "FIRE", new Vector2(128, 320), this.AnimatedColors.Fire.CurrentColor );
//sb.DrawString( Main.fontDeathText, "WATER", new Vector2(128, 384), this.AnimatedColors.Water.CurrentColor );
//sb.DrawString( Main.fontDeathText, "AIR", new Vector2(128, 448), this.AnimatedColors.Air.CurrentColor );
                return(true);
            };

            GameInterfaceDrawMethod modlockDrawCallback = delegate {
                try {
                    this.ModLock.DrawWarning(Main.spriteBatch);
                } catch (Exception e) {
                    LogHelpers.Warn("modlockLayerDraw - " + e.ToString());
                }
                return(true);
            };

            ////

            var debugLayer = new LegacyGameInterfaceLayer("ModHelpers: Debug Display",
                                                          debugDrawCallback, InterfaceScaleType.UI);

            layers.Insert(idx, debugLayer);

            var modlockLayer = new LegacyGameInterfaceLayer("ModHelpers: Mod Lock",
                                                            modlockDrawCallback, InterfaceScaleType.UI);

            layers.Insert(idx, modlockLayer);

            if (!this.Config.DisableControlPanel)
            {
                var cpLayer = new LegacyGameInterfaceLayer("ModHelpers: Control Panel",
                                                           cpDrawCallback, InterfaceScaleType.UI);
                layers.Insert(idx, cpLayer);
            }
//Services.DataStore.DataStore.Add( DebugHelpers.GetCurrentContext()+"_B", 1 );
        }
Exemple #21
0
        ////////////////

        public override void PreUpdate()
        {
            Player plr = this.player;

            if (plr.whoAmI != Main.myPlayer)
            {
                return;
            }
            if (plr.dead)
            {
                return;
            }

            var  mymod      = (StarvationMod)this.mod;
            int  buffIdx    = plr.FindBuffIndex(BuffID.WellFed);
            bool isStarving = false;

            if (buffIdx == -1)
            {
                if (this.HurtDelay-- < 0)
                {
                    this.HurtDelay = mymod.Config.StarvationHarmRepeatDelayInTicks;
                    this.HungerHurt();
                }
                isStarving = true;
            }
            else
            {
                if (plr.buffTime[buffIdx] > (mymod.Config.WellFedAddedDrainPerTick + 1))
                {
                    float mul      = mymod.Config.AddedWellFedDrainRatePerTickMultiplierPerMaxHealthOver100;
                    float addDrain = mul * (float)Math.Max(0, this.player.statLifeMax - 100);
                    plr.buffTime[buffIdx] -= mymod.Config.WellFedAddedDrainPerTick + (int)addDrain;
                }
            }

            if (isStarving && isStarving != this.IsStarving)
            {
                Main.NewText("You're starving! Find food quickly.", Color.Red);
                if (this.player.statLifeMax == 400 && mymod.Config.CraftableUnlifeCrystal)
                {
                    Main.NewText("Tip: Craft Unlife Crystals to reduce max hunger rate (but also max health).", new Color(96, 96, 96));
                }
            }

            this.IsStarving = isStarving;

            if (Timers.GetTimerTickDuration("StarvationInventoryRotCheck") <= 0)
            {
                Timers.SetTimer("StarvationInventoryRotCheck", 60, () => {
                    if (Main.gamePaused || !LoadHelpers.IsWorldSafelyBeingPlayed())
                    {
                        return(false);
                    }

                    for (int i = 0; i < player.inventory.Length; i++)
                    {
                        Item item = player.inventory[i];
                        if (item == null || item.IsAir)
                        {
                            continue;
                        }

                        if (RotItem.IsRotted(item))
                        {
                            if (!Main.mouseItem.IsAir && i == PlayerItemHelpers.VanillaInventorySelectedSlot)
                            {
                                Main.mouseItem = new Item();
                            }

                            player.inventory[i] = new Item();
                            ItemHelpers.CreateItem(player.Center, ModContent.ItemType <RotItem>(), item.stack, RotItem.Width, RotItem.Height);
                        }
                    }

                    bool?_;
                    Item[] myChest = PlayerItemHelpers.GetCurrentlyOpenChest(player, out _);
                    if (myChest != null)
                    {
                        for (int i = 0; i < myChest.Length; i++)
                        {
                            Item item = myChest[i];
                            if (item == null || item.IsAir)
                            {
                                continue;
                            }

                            if (RotItem.IsRotted(item))
                            {
                                myChest[i] = new Item();
                                ItemHelpers.CreateItem(player.Center, ModContent.ItemType <RotItem>(), item.stack, RotItem.Width, RotItem.Height);
                            }
                        }
                    }

                    return(false);
                });
            }
        }
        ////////////////

        public override void ModifyInterfaceLayers(List <GameInterfaceLayer> layers)
        {
//Services.DataStore.DataStore.Add( DebugHelpers.GetCurrentContext()+"_A", 1 );
            if (this.LoadHelpers != null && !LoadHelpers.IsWorldBeingPlayed())
            {
                return;
            }

            int idx = layers.FindIndex(layer => layer.Name.Equals("Vanilla: Mouse Text"));

            if (idx == -1)
            {
                return;
            }

            GameInterfaceDrawMethod debugDrawCallback = () => {
                var sb = Main.spriteBatch;

                try {
                    this.PlayerMessages.Draw(sb);

                    DebugHelpers.PrintAll(sb);
                } catch (Exception e) {
                    LogHelpers.Warn("debugLayerDraw - " + e.ToString());
                }
                return(true);
            };

            GameInterfaceDrawMethod cpDrawCallback = () => {
                var sb = Main.spriteBatch;

                try {
                    if (!ModHelpersMod.Config.DisableControlPanel)
                    {
                        this.ControlPanel.UpdateToggler();
                        this.ControlPanel.DrawToggler(sb);
                    }
                    if (this.LastSeenCPScreenWidth != Main.screenWidth || this.LastSeenCPScreenHeight != Main.screenHeight)
                    {
                        this.LastSeenCPScreenWidth  = Main.screenWidth;
                        this.LastSeenCPScreenHeight = Main.screenHeight;
                        this.ControlPanel.RecalculateMe();
                    }

                    this.Inbox.Draw(sb);
                } catch (Exception e) {
                    LogHelpers.Warn("cpLayerDraw - " + e.ToString());
                }

                return(true);
            };

            GameInterfaceDrawMethod modlockDrawCallback = delegate {
                try {
                    this.ModLock.DrawWarning(Main.spriteBatch);
                } catch (Exception e) {
                    LogHelpers.Warn("modlockLayerDraw - " + e.ToString());
                }
                return(true);
            };

            ////

            var debugLayer = new LegacyGameInterfaceLayer("ModHelpers: Debug Display",
                                                          debugDrawCallback,
                                                          InterfaceScaleType.UI);

            layers.Insert(idx, debugLayer);

            var modlockLayer = new LegacyGameInterfaceLayer("ModHelpers: Mod Lock",
                                                            modlockDrawCallback,
                                                            InterfaceScaleType.UI);

            layers.Insert(idx, modlockLayer);

            var cpLayer = new LegacyGameInterfaceLayer("ModHelpers: Control Panel",
                                                       cpDrawCallback,
                                                       InterfaceScaleType.UI);

            layers.Insert(idx, cpLayer);
//Services.DataStore.DataStore.Add( DebugHelpers.GetCurrentContext()+"_B", 1 );
        }