Decimation_Mod/Lib/Items/DecimationItem.cs
FyloZ ec4585bed5 - Changed Bloodshot Eye's music to Boss 1 Orchestra ( https://www.youtube.com/watch?time_continue=120&v=r-9nKGc85FQ )
- Added support for animated projectiles
- Refactoring
- Removed useless fields
- Fixed swords not dealing damages
- Added Hour Hand (from Evie's PR)
2020-03-21 00:11:07 -04:00

77 lines
2.2 KiB
C#

using System.Collections.Generic;
using Decimation.Lib.Util;
using Terraria;
using Terraria.Audio;
using Terraria.DataStructures;
using Terraria.ID;
using Terraria.ModLoader;
namespace Decimation.Lib.Items
{
public abstract class DecimationItem : ModItem
{
protected abstract string ItemName { get; }
protected virtual string ItemTooltip { get; } = "";
protected virtual DrawAnimation Animation { get; } = null;
public sealed override void SetStaticDefaults()
{
this.DisplayName.SetDefault(this.ItemName);
this.Tooltip.SetDefault(this.ItemTooltip);
if (this.Animation != null) Main.RegisterItemAnimation(this.item.type, this.Animation);
}
public sealed override void SetDefaults()
{
this.item.height = 16;
this.item.width = 16;
this.item.useAnimation = 20;
this.item.useTime = 20;
this.item.useStyle = 1;
this.item.maxStack = 999;
this.item.noMelee = true;
this.item.UseSound = SoundID.Item1;
Init();
}
public sealed override void AddRecipes()
{
List<ModRecipe> recipes = GetAdditionalRecipes();
recipes.Add(GetRecipe());
foreach (ModRecipe recipe in recipes) recipe?.AddRecipe();
}
protected abstract void Init();
protected virtual ModRecipe GetRecipe()
{
return null;
}
protected virtual List<ModRecipe> GetAdditionalRecipes()
{
return new List<ModRecipe>();
}
protected static ModRecipe GetNewModRecipe(DecimationItem result, int quantity, int tile,
bool anyIronBar = false)
{
return GetNewModRecipe(result, quantity, new List<int> {tile}, anyIronBar);
}
protected static ModRecipe GetNewModRecipe(DecimationItem result, int quantity, List<int> tiles,
bool anyIronBar = false)
{
ModRecipe recipe = new ModRecipe(References.mod) {anyIronBar = anyIronBar};
recipe.SetResult(result, quantity);
foreach (int tile in tiles) recipe.AddTile(tile);
return recipe;
}
}
}