From 933c41070fe4b38324ee5ca3b01a55d9f2eddd63 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Sun, 17 Apr 2022 17:10:45 -0700 Subject: [PATCH] fix: Codegens farmables (#1001) --- .../Items/Farming/FarmableCabbage.cs | 55 +++----- .../UOContent/Items/Farming/FarmableCarrot.cs | 55 +++----- .../UOContent/Items/Farming/FarmableCotton.cs | 44 ++----- .../UOContent/Items/Farming/FarmableCrop.cs | 122 ++++++++---------- .../UOContent/Items/Farming/FarmableFlax.cs | 55 +++----- .../Items/Farming/FarmableLettuce.cs | 55 +++----- .../UOContent/Items/Farming/FarmableOnion.cs | 55 +++----- .../Items/Farming/FarmablePumpkin.cs | 58 +++------ .../UOContent/Items/Farming/FarmableTurnip.cs | 55 +++----- .../UOContent/Items/Farming/FarmableWheat.cs | 44 ++----- .../Server.Items.FarmableCabbage.v0.json | 4 + .../Server.Items.FarmableCarrot.v0.json | 4 + .../Server.Items.FarmableCotton.v0.json | 4 + .../Server.Items.FarmableCrop.v0.json | 14 ++ .../Server.Items.FarmableFlax.v0.json | 4 + .../Server.Items.FarmableLettuce.v0.json | 4 + .../Server.Items.FarmableOnion.v0.json | 4 + .../Server.Items.FarmablePumpkin.v0.json | 4 + .../Server.Items.FarmableTurnip.v0.json | 4 + .../Server.Items.FarmableWheat.v0.json | 4 + 20 files changed, 256 insertions(+), 392 deletions(-) create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmableCabbage.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmableCarrot.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmableCotton.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmableCrop.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmableFlax.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmableLettuce.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmableOnion.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmablePumpkin.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmableTurnip.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FarmableWheat.v0.json diff --git a/Projects/UOContent/Items/Farming/FarmableCabbage.cs b/Projects/UOContent/Items/Farming/FarmableCabbage.cs index f9fb4563b..3b4e32d59 100644 --- a/Projects/UOContent/Items/Farming/FarmableCabbage.cs +++ b/Projects/UOContent/Items/Farming/FarmableCabbage.cs @@ -1,41 +1,22 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0)] +public partial class FarmableCabbage : FarmableCrop { - public class FarmableCabbage : FarmableCrop + [Constructible] + public FarmableCabbage() : base(GetCropID()) { - [Constructible] - public FarmableCabbage() : base(GetCropID()) - { - } - - public FarmableCabbage(Serial serial) : base(serial) - { - } - - public static int GetCropID() => 3254; - - public override Item GetCropObject() - { - var cabbage = new Cabbage(); - - cabbage.ItemID = Utility.Random(3195, 2); - - return cabbage; - } - - public override int GetPickedID() => 3254; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } + + public static int GetCropID() => 3254; + + public override Item GetCropObject() => + new Cabbage + { + ItemID = Utility.Random(3195, 2) + }; + + public override int GetPickedID() => 3254; } diff --git a/Projects/UOContent/Items/Farming/FarmableCarrot.cs b/Projects/UOContent/Items/Farming/FarmableCarrot.cs index 5c4e79f5d..41c3e1c7a 100644 --- a/Projects/UOContent/Items/Farming/FarmableCarrot.cs +++ b/Projects/UOContent/Items/Farming/FarmableCarrot.cs @@ -1,41 +1,22 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0)] +public partial class FarmableCarrot : FarmableCrop { - public class FarmableCarrot : FarmableCrop + [Constructible] + public FarmableCarrot() : base(GetCropID()) { - [Constructible] - public FarmableCarrot() : base(GetCropID()) - { - } - - public FarmableCarrot(Serial serial) : base(serial) - { - } - - public static int GetCropID() => 3190; - - public override Item GetCropObject() - { - var carrot = new Carrot(); - - carrot.ItemID = Utility.Random(3191, 2); - - return carrot; - } - - public override int GetPickedID() => 3254; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } + + public static int GetCropID() => 3190; + + public override Item GetCropObject() => + new Carrot + { + ItemID = Utility.Random(3191, 2) + }; + + public override int GetPickedID() => 3254; } diff --git a/Projects/UOContent/Items/Farming/FarmableCotton.cs b/Projects/UOContent/Items/Farming/FarmableCotton.cs index f4ff49e08..1ec1e5b16 100644 --- a/Projects/UOContent/Items/Farming/FarmableCotton.cs +++ b/Projects/UOContent/Items/Farming/FarmableCotton.cs @@ -1,34 +1,18 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0)] +public partial class FarmableCotton : FarmableCrop { - public class FarmableCotton : FarmableCrop + [Constructible] + public FarmableCotton() : base(GetCropID()) { - [Constructible] - public FarmableCotton() : base(GetCropID()) - { - } - - public FarmableCotton(Serial serial) : base(serial) - { - } - - public static int GetCropID() => Utility.Random(3153, 4); - - public override Item GetCropObject() => new Cotton(); - - public override int GetPickedID() => 3254; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } + + public static int GetCropID() => Utility.Random(3153, 4); + + public override Item GetCropObject() => new Cotton(); + + public override int GetPickedID() => 3254; } diff --git a/Projects/UOContent/Items/Farming/FarmableCrop.cs b/Projects/UOContent/Items/Farming/FarmableCrop.cs index 5ec0340f6..5f0bfa56e 100644 --- a/Projects/UOContent/Items/Farming/FarmableCrop.cs +++ b/Projects/UOContent/Items/Farming/FarmableCrop.cs @@ -1,91 +1,71 @@ using System; +using ModernUO.Serialization; using Server.Network; -namespace Server.Items +namespace Server.Items; + +[SerializationGenerator(0)] +public abstract partial class FarmableCrop : Item { - public abstract class FarmableCrop : Item + [SerializableField(0)] + private bool _picked; + + public FarmableCrop(int itemID) : base(itemID) => Movable = false; + + public abstract Item GetCropObject(); + public abstract int GetPickedID(); + + public override void OnDoubleClick(Mobile from) { - private bool m_Picked; + var map = Map; + var loc = Location; - public FarmableCrop(int itemID) : base(itemID) => Movable = false; - - public FarmableCrop(Serial serial) : base(serial) + if (Parent != null || Movable || IsLockedDown || IsSecure || map == null || map == Map.Internal) { + return; } - public abstract Item GetCropObject(); - public abstract int GetPickedID(); - - public override void OnDoubleClick(Mobile from) + if (!from.InRange(loc, 2) || !from.InLOS(this)) { - var map = Map; - var loc = Location; - - if (Parent != null || Movable || IsLockedDown || IsSecure || map == null || map == Map.Internal) - { - return; - } - - if (!from.InRange(loc, 2) || !from.InLOS(this)) - { - from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that. - } - else if (!m_Picked) - { - OnPicked(from, loc, map); - } + from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that. } - - public virtual void OnPicked(Mobile from, Point3D loc, Map map) + else if (!_picked) { - ItemID = GetPickedID(); + OnPicked(from, loc, map); + } + } - var spawn = GetCropObject(); + public virtual void OnPicked(Mobile from, Point3D loc, Map map) + { + ItemID = GetPickedID(); - spawn?.MoveToWorld(loc, map); + var spawn = GetCropObject(); - m_Picked = true; + spawn?.MoveToWorld(loc, map); + _picked = true; + + Unlink(); + + Timer.StartTimer(TimeSpan.FromMinutes(5.0), Delete); + } + + public void Unlink() + { + if (Spawner != null) + { + Spawner.Remove(this); + Spawner = null; + } + } + + [AfterDeserialization] + private void AfterDeserialization() + { + if (_picked) + { Unlink(); - - Timer.StartTimer(TimeSpan.FromMinutes(5.0), Delete); - } - - public void Unlink() - { - if (Spawner != null) - { - Spawner.Remove(this); - Spawner = null; - } - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - - writer.Write(m_Picked); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - - m_Picked = version switch - { - 0 => reader.ReadBool(), - _ => m_Picked - }; - - if (m_Picked) - { - Unlink(); - Delete(); - } + Delete(); } } } diff --git a/Projects/UOContent/Items/Farming/FarmableFlax.cs b/Projects/UOContent/Items/Farming/FarmableFlax.cs index e698b6560..5dd7fe755 100644 --- a/Projects/UOContent/Items/Farming/FarmableFlax.cs +++ b/Projects/UOContent/Items/Farming/FarmableFlax.cs @@ -1,41 +1,22 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0)] +public partial class FarmableFlax : FarmableCrop { - public class FarmableFlax : FarmableCrop + [Constructible] + public FarmableFlax() : base(GetCropID()) { - [Constructible] - public FarmableFlax() : base(GetCropID()) - { - } - - public FarmableFlax(Serial serial) : base(serial) - { - } - - public static int GetCropID() => Utility.Random(6809, 3); - - public override Item GetCropObject() - { - var flax = new Flax(); - - flax.ItemID = Utility.Random(6812, 2); - - return flax; - } - - public override int GetPickedID() => 3254; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } + + public static int GetCropID() => Utility.Random(6809, 3); + + public override Item GetCropObject() => + new Flax + { + ItemID = Utility.Random(6812, 2) + }; + + public override int GetPickedID() => 3254; } diff --git a/Projects/UOContent/Items/Farming/FarmableLettuce.cs b/Projects/UOContent/Items/Farming/FarmableLettuce.cs index bc930b824..d443acf9f 100644 --- a/Projects/UOContent/Items/Farming/FarmableLettuce.cs +++ b/Projects/UOContent/Items/Farming/FarmableLettuce.cs @@ -1,41 +1,22 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0)] +public partial class FarmableLettuce : FarmableCrop { - public class FarmableLettuce : FarmableCrop + [Constructible] + public FarmableLettuce() : base(GetCropID()) { - [Constructible] - public FarmableLettuce() : base(GetCropID()) - { - } - - public FarmableLettuce(Serial serial) : base(serial) - { - } - - public static int GetCropID() => 3254; - - public override Item GetCropObject() - { - var lettuce = new Lettuce(); - - lettuce.ItemID = Utility.Random(3184, 2); - - return lettuce; - } - - public override int GetPickedID() => 3254; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } + + public static int GetCropID() => 3254; + + public override Item GetCropObject() => + new Lettuce + { + ItemID = Utility.Random(3184, 2) + }; + + public override int GetPickedID() => 3254; } diff --git a/Projects/UOContent/Items/Farming/FarmableOnion.cs b/Projects/UOContent/Items/Farming/FarmableOnion.cs index 22d86df48..66921dda7 100644 --- a/Projects/UOContent/Items/Farming/FarmableOnion.cs +++ b/Projects/UOContent/Items/Farming/FarmableOnion.cs @@ -1,41 +1,22 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0)] +public partial class FarmableOnion : FarmableCrop { - public class FarmableOnion : FarmableCrop + [Constructible] + public FarmableOnion() : base(GetCropID()) { - [Constructible] - public FarmableOnion() : base(GetCropID()) - { - } - - public FarmableOnion(Serial serial) : base(serial) - { - } - - public static int GetCropID() => 3183; - - public override Item GetCropObject() - { - var onion = new Onion(); - - onion.ItemID = Utility.Random(3181, 2); - - return onion; - } - - public override int GetPickedID() => 3254; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } + + public static int GetCropID() => 3183; + + public override Item GetCropObject() => + new Onion + { + ItemID = Utility.Random(3181, 2) + }; + + public override int GetPickedID() => 3254; } diff --git a/Projects/UOContent/Items/Farming/FarmablePumpkin.cs b/Projects/UOContent/Items/Farming/FarmablePumpkin.cs index dc6c0f4be..986345e84 100644 --- a/Projects/UOContent/Items/Farming/FarmablePumpkin.cs +++ b/Projects/UOContent/Items/Farming/FarmablePumpkin.cs @@ -1,43 +1,23 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0)] +public partial class FarmablePumpkin : FarmableCrop { - public class FarmablePumpkin : FarmableCrop + [Constructible] + public FarmablePumpkin() + : base(GetCropID()) { - [Constructible] - public FarmablePumpkin() - : base(GetCropID()) - { - } - - public FarmablePumpkin(Serial serial) - : base(serial) - { - } - - public static int GetCropID() => Utility.Random(3166, 3); - - public override Item GetCropObject() - { - var pumpkin = new Pumpkin(); - - pumpkin.ItemID = Utility.Random(3178, 3); - - return pumpkin; - } - - public override int GetPickedID() => Utility.Random(3166, 3); - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } + + public static int GetCropID() => Utility.Random(3166, 3); + + public override Item GetCropObject() => + new Pumpkin + { + ItemID = Utility.Random(3178, 3) + }; + + public override int GetPickedID() => Utility.Random(3166, 3); } diff --git a/Projects/UOContent/Items/Farming/FarmableTurnip.cs b/Projects/UOContent/Items/Farming/FarmableTurnip.cs index eec9facbd..94fc10733 100644 --- a/Projects/UOContent/Items/Farming/FarmableTurnip.cs +++ b/Projects/UOContent/Items/Farming/FarmableTurnip.cs @@ -1,41 +1,22 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0)] +public partial class FarmableTurnip : FarmableCrop { - public class FarmableTurnip : FarmableCrop + [Constructible] + public FarmableTurnip() : base(GetCropID()) { - [Constructible] - public FarmableTurnip() : base(GetCropID()) - { - } - - public FarmableTurnip(Serial serial) : base(serial) - { - } - - public static int GetCropID() => Utility.Random(3169, 3); - - public override Item GetCropObject() - { - var turnip = new Turnip(); - - turnip.ItemID = Utility.Random(3385, 2); - - return turnip; - } - - public override int GetPickedID() => 3254; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } + + public static int GetCropID() => Utility.Random(3169, 3); + + public override Item GetCropObject() => + new Turnip + { + ItemID = Utility.Random(3385, 2) + }; + + public override int GetPickedID() => 3254; } diff --git a/Projects/UOContent/Items/Farming/FarmableWheat.cs b/Projects/UOContent/Items/Farming/FarmableWheat.cs index d3fcbf109..f15d9b21e 100644 --- a/Projects/UOContent/Items/Farming/FarmableWheat.cs +++ b/Projects/UOContent/Items/Farming/FarmableWheat.cs @@ -1,34 +1,18 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0)] +public partial class FarmableWheat : FarmableCrop { - public class FarmableWheat : FarmableCrop + [Constructible] + public FarmableWheat() : base(GetCropID()) { - [Constructible] - public FarmableWheat() : base(GetCropID()) - { - } - - public FarmableWheat(Serial serial) : base(serial) - { - } - - public static int GetCropID() => Utility.Random(3157, 4); - - public override Item GetCropObject() => new WheatSheaf(); - - public override int GetPickedID() => Utility.Random(3502, 2); - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } + + public static int GetCropID() => Utility.Random(3157, 4); + + public override Item GetCropObject() => new WheatSheaf(); + + public override int GetPickedID() => Utility.Random(3502, 2); } diff --git a/Projects/UOContent/Migrations/Server.Items.FarmableCabbage.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmableCabbage.v0.json new file mode 100644 index 000000000..8776b3e00 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmableCabbage.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FarmableCabbage" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FarmableCarrot.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmableCarrot.v0.json new file mode 100644 index 000000000..77b6c7539 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmableCarrot.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FarmableCarrot" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FarmableCotton.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmableCotton.v0.json new file mode 100644 index 000000000..7f44351fa --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmableCotton.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FarmableCotton" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FarmableCrop.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmableCrop.v0.json new file mode 100644 index 000000000..72bd19707 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmableCrop.v0.json @@ -0,0 +1,14 @@ +{ + "version": 0, + "type": "Server.Items.FarmableCrop", + "properties": [ + { + "name": "Picked", + "type": "bool", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FarmableFlax.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmableFlax.v0.json new file mode 100644 index 000000000..738e26776 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmableFlax.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FarmableFlax" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FarmableLettuce.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmableLettuce.v0.json new file mode 100644 index 000000000..7377cd821 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmableLettuce.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FarmableLettuce" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FarmableOnion.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmableOnion.v0.json new file mode 100644 index 000000000..9e83694b8 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmableOnion.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FarmableOnion" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FarmablePumpkin.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmablePumpkin.v0.json new file mode 100644 index 000000000..5a3efdfb0 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmablePumpkin.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FarmablePumpkin" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FarmableTurnip.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmableTurnip.v0.json new file mode 100644 index 000000000..476ee5fec --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmableTurnip.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FarmableTurnip" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FarmableWheat.v0.json b/Projects/UOContent/Migrations/Server.Items.FarmableWheat.v0.json new file mode 100644 index 000000000..c91c597d5 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FarmableWheat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FarmableWheat" +} \ No newline at end of file