using System.Collections.Generic; using System.IO; using Terraria; using Terraria.Audio; using Terraria.ID; using Terraria.ModLoader; using ForgottenWawiTech.Content.Items.Materials; using ForgottenWawiTech.Content.Rarities; using Terraria.ModLoader.IO; using Terraria.Localization; namespace ForgottenWawiTech.Content.Items.Tools.SingularitySet { public class SingularityMultitool : ModItem { private bool hammerMode; private const int PickaxePower = 500; private const int HammerPower = 500; private const int AxePower = 500; protected override bool CloneNewInstances => true; public override void SetDefaults() { Item.damage = 500; Item.DamageType = DamageClass.Melee; Item.width = 40; Item.height = 40; Item.useTime = 10; Item.useAnimation = 20; Item.useStyle = ItemUseStyleID.Swing; Item.knockBack = 5.0f; Item.value = Item.sellPrice(gold: 5); Item.rare = ModContent.RarityType(); Item.UseSound = SoundID.Item1; Item.autoReuse = true; Item.useTurn = true; Item.axe = AxePower; Item.pick = PickaxePower; Item.hammer = 0; ApplyMode(); } public override bool AltFunctionUse(Player player) => true; public override bool CanUseItem(Player player) { if (player.altFunctionUse == 2) { ToggleMode(player); return false; } ApplyMode(); return base.CanUseItem(player); } public override void ModifyTooltips(List tooltips) { string modeText = hammerMode ? "Hammer" : "Pickaxe"; tooltips.Add(new TooltipLine(Mod, "SingularityMultitoolMode", $"Current Mode: {modeText}")); } public override void SaveData(TagCompound tag) { tag["HammerMode"] = hammerMode; } public override void LoadData(TagCompound tag) { hammerMode = tag.GetBool("HammerMode"); ApplyMode(); } public override void NetSend(BinaryWriter writer) { writer.Write(hammerMode); } public override void NetReceive(BinaryReader reader) { hammerMode = reader.ReadBoolean(); ApplyMode(); } public override void AddRecipes() { CreateRecipe() .AddIngredient(ModContent.ItemType(), 12) .AddIngredient(ModContent.ItemType(), 4) .AddTile() .Register(); } private void ToggleMode(Player player) { hammerMode = !hammerMode; ApplyMode(); if (Main.myPlayer == player.whoAmI) { string itemName = Lang.GetItemNameValue(Item.type); string modeText = hammerMode ? "Hammer" : "Pickaxe"; Main.NewText($"{itemName} switched to {modeText} mode.", 190, 120, 255); } SoundEngine.PlaySound(SoundID.MenuTick, player.Center); } private void ApplyMode() { if (hammerMode) { Item.pick = 0; Item.hammer = HammerPower; } else { Item.pick = PickaxePower; Item.hammer = 0; } Item.axe = AxePower; } } }