From a66c4e48ac09e375ddecbf80c0d7af5363a5fb41 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Wed, 8 Jul 2020 22:24:00 -0400 Subject: [PATCH] Updated Titan Forge. --- Content/Tiles/DenziumOre.cs | 3 +- Content/Tiles/TitanForge.cs | 54 +++++------------------ Content/Tiles/TitanForge.png | Bin 3390 -> 2875 bytes Lib/Tiles/DecimationFramedTile.cs | 21 +++++++++ Lib/Tiles/DecimationMultiTile.cs | 61 ++++++++++++++++++++++++++ Lib/Tiles/DecimationTile.cs | 69 ++++++++++++++++++++++++++++++ 6 files changed, 163 insertions(+), 45 deletions(-) create mode 100644 Lib/Tiles/DecimationFramedTile.cs create mode 100644 Lib/Tiles/DecimationMultiTile.cs create mode 100644 Lib/Tiles/DecimationTile.cs diff --git a/Content/Tiles/DenziumOre.cs b/Content/Tiles/DenziumOre.cs index cdaacae..3759827 100644 --- a/Content/Tiles/DenziumOre.cs +++ b/Content/Tiles/DenziumOre.cs @@ -1,5 +1,4 @@ -using System; -using Terraria; +using Terraria; using Terraria.ModLoader; using Terraria.ID; using Microsoft.Xna.Framework; diff --git a/Content/Tiles/TitanForge.cs b/Content/Tiles/TitanForge.cs index e1468ec..52da694 100644 --- a/Content/Tiles/TitanForge.cs +++ b/Content/Tiles/TitanForge.cs @@ -1,51 +1,19 @@ -using Microsoft.Xna.Framework; -using Terraria; +using Decimation.Lib.Tiles; +using Microsoft.Xna.Framework; using Terraria.ID; using Terraria.ModLoader; using Terraria.ObjectData; namespace Decimation.Content.Tiles { - class TitanForge : ModTile + class TitanForge : DecimationMultiTile { - public override void SetDefaults() - { - Main.tileSolidTop[Type] = false; - Main.tileFrameImportant[Type] = true; - Main.tileNoAttach[Type] = true; - TileObjectData.newTile.CopyFrom(TileObjectData.Style3x3); - TileObjectData.newTile.CoordinateHeights = new int[] { 16, 16, 16 }; - TileObjectData.addTile(Type); - ModTranslation name = CreateMapEntryName(); - name.SetDefault("Titan Forge"); - AddMapEntry(new Color(104, 140, 183), name); - dustType = DustID.Iron; - disableSmartCursor = true; - animationFrameHeight = 54; - } - - public override void NumDust(int i, int j, bool fail, ref int num) - { - num = fail ? 1 : 3; - } - - public override void KillMultiTile(int i, int j, int frameX, int frameY) - { - Item.NewItem(i * 16, j * 16, 48, 48, ModContent.ItemType()); - } - - public override void AnimateTile(ref int frame, ref int frameCounter) - { - frameCounter++; - if (frameCounter > 5) - { - frameCounter = 0; - frame++; - if (frame > 4) - { - frame = 0; - } - } - } + public override TileObjectData Style => TileObjectData.Style3x3; + public override string Name => "Titan Forge"; + public override Color MapColor => new Color(104, 140, 183); + public override int DustType => DustID.Iron; + public override int AnimationFrameCount => 8; + public override int? AnimationFrameHeight => 54; + public override int TileItem => ModContent.ItemType(); } -} +} \ No newline at end of file diff --git a/Content/Tiles/TitanForge.png b/Content/Tiles/TitanForge.png index 8886fc7de23fb0649552d14e145f9260311e30b3..ddce566a4b9d0de7cf340adb8678d9a9a3257778 100644 GIT binary patch literal 2875 zcmeH}iBr?p7RP^KlTAQiBm~r0!&X5E0*auOEhb@K8p3KwfU--)q9Rxbh{TYx3Zd)< zXc1H*i-iEnl2CYn5DJEEDgz0Iy@mi>w0Jcs8(tv}paic=_Q2y&UA}lD^M#$O9RSdCl=eep z0YDn?aPe^xpC8eMTAi^quq1r$7j6*W8he%Ko-@+mV7+_&-AdM35yN~%WOk2Il<{)C zR497)Q6#?d_xPK@{|A92c!8K+k%Qq@VEYP?1-E9W(lI zZ`G|2r`249P+4;mnXg%_*w6(x!EOc&OJRs;}2-m_W05AkLU z(un+vGfFO`D#Wnwcrvkb{_t{9zpY*ppUZtTwnHV#z>vX7m9T8nd3AyY|EmFDOgMz$ z@rCE$w71|KDaO1!X_cg1x#e_>He?~hxs;hWqkZ&yZ&ThAelpv)CPlN}H(h=%L-f>F zq&_Lg>^Y_1)#ZoI=lsfe0U>KDr`s3sWRW45>y#n*G8qM{RK0OaeGk*I|OH`F*!nY`wY4{S5-s*xyEI@1kr z?%3N4zR=1+DGPdIDNc$iUvwW zlqEQXs9CBso}2q^J2`eLeRAe{oS58-HN)AY#DGB+{@ja=2};r0;bhJ*8-v&K_>-8Y zrG6i%4atK!Ty|j9g=~+STWi-IxL8-kMtGU>SX)O4ftc}3eJ)%A#plc*ZpM(E(*6eA z=(@@E8a5%_M5D=PrU!2T*Zw3VM7eeDO`5o5s#aXIasJh_f>tcnqizmIFTkcs;K}|F zO3!&-@-rWVaLC0c9EYg0#~1LWLR{-kd8vf>XdJu8-3Ou^841e)9Y4l~lkhcDQ`Ex& zuiH4AM&oe)>nW_!fK1fl49#yApK9Ti7Q^L_H(nUVTrVV;OKGlZ*+EV}JS5;NY4k@V zd)C{AfA#A7iWPlrj<#cmg6CrLZTK@7&*)3?`SX^sIT9@!d)DDYj!!npp3t--qn!u( zI^zQfd4+u?Pnf+#bFLh@yk9D&g@ZDF5k?+yPZ_Oyrj)QnXSzY&+caWI07;_bYBij| ztjr9tu;|Z_vbEnWK2%203Q0l3D+4WR=Q8GJkOBCPF**of2`i`vP@ZGqJ1iiwvbW+? zY7hmD>t4dOSj?jW2pO;xRURw;%J9l#PrvNTX!EAiS>~}nhAIjQE&SJDbx@GP)mC3O zyv4DuZqvF4*BT|<+fJ?DEwsR{!So$q#@P$r;)Kmi=cceQZagoV-c;psGxFs0oq8>$ zrg6Lh9hgQ-Ig?ZNM>^Tk*_lu#&)xzC6Y&09gF)%BmuGE{R-DZbj_YqxlPJgM0Kj6B zY2*H~w3A)wv_?Yij!_I#3P$%5=guf^u|y!*ySO;zT~^};WYT*cCT){$IFad6XXcKg ziC=`GdM?!W78iyPjIaKR{}ep{F-}w`tg^w#Kl6y!?;a^`%MYT8n}Uu>qPkMoKaVsajB8eqYJ5#8F}Nz7obZw+ovZqnFn3aj(2z_a~NY^4ozc zG=I8(m{d(|p6&0iJ_$#sXisMRr>Bo-Cc>iwhQs6TPTmIpV_j*a*SzgmT`?yDv_Xly z#b8eBNY~^khMsiK2^WU6bB@uArRU93R``i2no)h=wEp literal 3390 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 true; + public override bool TilesCanAttach => true; + + public virtual bool MergeDirt { get; set; } = true; + + protected sealed override void InitTile() + { + Main.tileMergeDirt[Type] = MergeDirt; + + InitFramedTile(); + } + + protected abstract void InitFramedTile(); + } +} \ No newline at end of file diff --git a/Lib/Tiles/DecimationMultiTile.cs b/Lib/Tiles/DecimationMultiTile.cs new file mode 100644 index 0000000..bce788d --- /dev/null +++ b/Lib/Tiles/DecimationMultiTile.cs @@ -0,0 +1,61 @@ +using Terraria; +using Terraria.DataStructures; +using Terraria.Enums; +using Terraria.ObjectData; + +namespace Decimation.Lib.Tiles +{ + public abstract class DecimationMultiTile : DecimationTile + { + public override bool DisableSmartCursor => true; + + public virtual bool Table { get; set; } = false; + public virtual Point16 Origin { get; } = new Point16(0, 0); + public virtual int[] CoordinateHeights { get; set; } = { }; + public virtual int CoordinateWidth { get; } = 16; + public virtual int CoordinatePadding { get; } = 2; + public virtual int? Width { get; } = null; + public virtual int? Height { get; } = null; + public virtual bool AnchorBottom { get; } = true; + + public abstract TileObjectData Style { get; } + + private int _width; + private int _height; + + protected sealed override void InitTile() + { + Main.tileTable[Type] = Table; + Main.tileFrameImportant[Type] = true; + + TileObjectData.newTile.CopyFrom(Style); + if (Width.HasValue) TileObjectData.newTile.Width = Width.Value; + if (Height.HasValue) TileObjectData.newTile.Height = Height.Value; + if (CoordinateHeights.Length <= 0) + { + CoordinateHeights = new int[TileObjectData.newTile.Height]; + for (int i = 0; i < TileObjectData.newTile.Height; i++) CoordinateHeights[i] = 16; + } + + TileObjectData.newTile.CoordinateHeights = CoordinateHeights; + TileObjectData.newTile.CoordinateWidth = CoordinateWidth; + TileObjectData.newTile.CoordinatePadding = CoordinatePadding; + if (AnchorBottom) + TileObjectData.newTile.AnchorBottom = + new AnchorData(AnchorType.SolidTile, TileObjectData.newTile.Width - 1, 0); + TileObjectData.addTile(Type); + + _width = TileObjectData.newTile.Width * 16; + _height = TileObjectData.newTile.Height * 16; + } + + public override void KillMultiTile(int i, int j, int frameX, int frameY) + { + Item.NewItem(i * 16, j * 16, _width, _height, TileItem); + } + + protected virtual void InitMultiTile() + { + } + } +} \ No newline at end of file diff --git a/Lib/Tiles/DecimationTile.cs b/Lib/Tiles/DecimationTile.cs new file mode 100644 index 0000000..1f6cdbe --- /dev/null +++ b/Lib/Tiles/DecimationTile.cs @@ -0,0 +1,69 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ModLoader; + +namespace Decimation.Lib.Tiles +{ + public abstract class DecimationTile : ModTile + { + public virtual bool Solid { get; set; } = false; + public virtual bool SolidTop { get; set; } = false; + public virtual bool TilesCanAttach { get; set; } = false; + public virtual bool DisableSmartCursor { get; set; } = false; + public virtual float MineResistance { get; set; } = 1f; + public virtual int DustType { get; } = 0; + public virtual int AnimationFrameCount { get; } = 0; + public virtual int AnimationFps { get; } = 5; + public virtual int? AnimationFrameHeight { get; } = null; + public virtual string Name { get; } = null; + public virtual int MinimumPickaxePower { get; set; } = 0; + + public abstract Color MapColor { get; } + public abstract int TileItem { get; } + + public sealed override void SetDefaults() + { + Main.tileSolid[Type] = Solid; + Main.tileSolidTop[Type] = SolidTop; + Main.tileNoAttach[Type] = !TilesCanAttach; + minPick = MinimumPickaxePower; + mineResist = MineResistance; + dustType = DustType; + drop = TileItem; + disableSmartCursor = DisableSmartCursor; + if (AnimationFrameHeight.HasValue) animationFrameHeight = AnimationFrameHeight.Value; + + if (Name == null) + { + AddMapEntry(MapColor); + } + else + { + ModTranslation translation = CreateMapEntryName(); + translation.SetDefault(Name); + AddMapEntry(MapColor, translation); + } + + InitTile(); + } + + public override void NumDust(int i, int j, bool fail, ref int num) + { + num = fail ? 1 : 3; + } + + public override void AnimateTile(ref int frame, ref int frameCounter) + { + frameCounter++; + if (frameCounter > AnimationFps) + { + frameCounter = 0; + frame++; + + if (frame >= AnimationFrameCount) frame = 0; + } + } + + protected abstract void InitTile(); + } +} \ No newline at end of file