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<GameInterfaceLayer> 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<MyPlayer>().TryExtractEssence();
return;
}
ModPacket packet = ModContent.GetInstance<SoulHarvest>().GetPacket();
packet.Write((byte)SoulHarvest.MessageType.RequestExtractEssence);
packet.Send();
}
internal static void RequestEssenceAbsorption()
{
if (Main.netMode == Terraria.ID.NetmodeID.SinglePlayer)
{
Main.LocalPlayer.GetModPlayer<MyPlayer>().TryAbsorbEssence();
return;
}
ModPacket packet = ModContent.GetInstance<SoulHarvest>().GetPacket();
packet.Write((byte)SoulHarvest.MessageType.RequestAbsorbEssence);
packet.Send();
}
}
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<GameInterfaceLayer> 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<MyPlayer>().TryExtractEssence();
return;
}
ModPacket packet = ModContent.GetInstance<SoulHarvest>().GetPacket();
packet.Write((byte)SoulHarvest.MessageType.RequestExtractEssence);
packet.Send();
}
internal static void RequestEssenceAbsorption()
{
if (Main.netMode == Terraria.ID.NetmodeID.SinglePlayer)
{
Main.LocalPlayer.GetModPlayer<MyPlayer>().TryAbsorbEssence();
return;
}
ModPacket packet = ModContent.GetInstance<SoulHarvest>().GetPacket();
packet.Write((byte)SoulHarvest.MessageType.RequestAbsorbEssence);
packet.Send();
}
}