using SoulHarvest.Common; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using ReLogic.Content; using System; using System.Collections.Generic; using Terraria; using Terraria.GameContent; using Terraria.Localization; using Terraria.ModLoader; using Terraria.UI; namespace SoulHarvest.UI; [Autoload(Side = ModSide.Client)] public class SoulIconUISystem : ModSystem { private UserInterface? soulIconInterface; private SoulIconState? soulIconState; public override void Load() { soulIconState = new SoulIconState(); soulIconState.Activate(); soulIconInterface = new UserInterface(); soulIconInterface.SetState(soulIconState); } public override void UpdateUI(GameTime gameTime) { if (!Main.gameMenu) soulIconInterface?.Update(gameTime); } public override void ModifyInterfaceLayers(List layers) { int resourceBarIndex = layers.FindIndex(layer => layer.Name == "Vanilla: Resource Bars"); if (resourceBarIndex < 0) return; layers.Insert(resourceBarIndex, new LegacyGameInterfaceLayer( "SoulHarvest: Soul Icon", () => { if (!Main.gameMenu) soulIconInterface?.Draw(Main.spriteBatch, new GameTime()); return true; }, InterfaceScaleType.UI)); } internal static void RequestEssenceExtraction() { if (Main.netMode == Terraria.ID.NetmodeID.SinglePlayer) { Main.LocalPlayer.GetModPlayer().TryExtractEssence(); return; } ModPacket packet = ModContent.GetInstance().GetPacket(); packet.Write((byte)SoulHarvest.MessageType.RequestExtractEssence); packet.Send(); } internal static void RequestEssenceAbsorption() { if (Main.netMode == Terraria.ID.NetmodeID.SinglePlayer) { Main.LocalPlayer.GetModPlayer().TryAbsorbEssence(); return; } ModPacket packet = ModContent.GetInstance().GetPacket(); packet.Write((byte)SoulHarvest.MessageType.RequestAbsorbEssence); packet.Send(); } }