//////////////// 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; } }
//////////////// 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); }
//////////////// 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; }
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; }
private void UpdatePostTrainLoad() { if (this.player.dead) { return; } if (LoadHelpers.IsWorldSafelyBeingPlayed()) { if (Main.netMode != 2) { this.UpdateTrainWarp(); } } }
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; }
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(); } } }
//////////////// 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); } } }
//////////////// 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++; }
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); }
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(); } }
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); }
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 ); }
//////////////// 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 ); }