fix: Codegens furniture containers (#977)

This commit is contained in:
Kamron Batman 2022-03-27 15:02:29 -07:00 • committed by GitHub
parent 8f922c94ae
commit fa0bf86a08
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 247 additions and 378 deletions

View file

@ -1,150 +1,60 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace Server.Items namespace Server.Items;
{
[Furniture] [Furniture]
[Flippable(0x2815, 0x2816)] [Flippable(0x2815, 0x2816)]
public class TallCabinet : BaseContainer [Serializable(0, false)]
public partial class TallCabinet : BaseContainer
{ {
[Constructible] [Constructible]
public TallCabinet() : base(0x2815) => Weight = 1.0; public TallCabinet() : base(0x2815) => Weight = 1.0;
public TallCabinet(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
} }
[Furniture] [Furniture]
[Flippable(0x2817, 0x2818)] [Flippable(0x2817, 0x2818)]
public class ShortCabinet : BaseContainer [Serializable(0, false)]
public partial class ShortCabinet : BaseContainer
{ {
[Constructible] [Constructible]
public ShortCabinet() : base(0x2817) => Weight = 1.0; public ShortCabinet() : base(0x2817) => Weight = 1.0;
public ShortCabinet(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
} }
[Furniture] [Furniture]
[Flippable(0x2857, 0x2858)] [Flippable(0x2857, 0x2858)]
public class RedArmoire : BaseContainer [Serializable(0, false)]
public partial class RedArmoire : BaseContainer
{ {
[Constructible] [Constructible]
public RedArmoire() : base(0x2857) => Weight = 1.0; public RedArmoire() : base(0x2857) => Weight = 1.0;
public RedArmoire(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
} }
[Furniture] [Furniture]
[Flippable(0x285D, 0x285E)] [Flippable(0x285D, 0x285E)]
public class CherryArmoire : BaseContainer [Serializable(0, false)]
public partial class CherryArmoire : BaseContainer
{ {
[Constructible] [Constructible]
public CherryArmoire() : base(0x285D) => Weight = 1.0; public CherryArmoire() : base(0x285D) => Weight = 1.0;
public CherryArmoire(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
} }
[Furniture] [Furniture]
[Flippable(0x285B, 0x285C)] [Flippable(0x285B, 0x285C)]
public class MapleArmoire : BaseContainer [Serializable(0, false)]
public partial class MapleArmoire : BaseContainer
{ {
[Constructible] [Constructible]
public MapleArmoire() : base(0x285B) => Weight = 1.0; public MapleArmoire() : base(0x285B) => Weight = 1.0;
public MapleArmoire(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
} }
[Furniture] [Furniture]
[Flippable(0x2859, 0x285A)] [Flippable(0x2859, 0x285A)]
public class ElegantArmoire : BaseContainer [Serializable(0, false)]
public partial class ElegantArmoire : BaseContainer
{ {
[Constructible] [Constructible]
public ElegantArmoire() : base(0x2859) => Weight = 1.0; public ElegantArmoire() : base(0x2859) => Weight = 1.0;
public ElegantArmoire(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
} }
[Furniture] [Furniture]
@ -171,119 +81,50 @@ namespace Server.Items
[Furniture] [Furniture]
[Flippable(0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)] [Flippable(0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)]
public class FullBookcase : BaseContainer [Serializable(0, false)]
public partial class FullBookcase : BaseContainer
{ {
[Constructible] [Constructible]
public FullBookcase() : base(0xA97) => Weight = 1.0; public FullBookcase() : base(0xA97) => Weight = 1.0;
public FullBookcase(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
} }
[Furniture] [Furniture]
[Flippable(0xa9d, 0xa9e)] [Flippable(0xa9d, 0xa9e)]
public class EmptyBookcase : BaseContainer [Serializable(0, false)]
public partial class EmptyBookcase : BaseContainer
{ {
[Constructible] [Constructible]
public EmptyBookcase() : base(0xA9D) public EmptyBookcase() : base(0xA9D)
{ {
} }
public EmptyBookcase(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(1); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
if (version == 0 && Weight == 1.0)
{
Weight = -1;
}
}
} }
[Furniture] [Furniture]
[Flippable(0xa2c, 0xa34)] [Flippable(0xa2c, 0xa34)]
public class Drawer : BaseContainer [Serializable(0, false)]
public partial class Drawer : BaseContainer
{ {
[Constructible] [Constructible]
public Drawer() : base(0xA2C) => Weight = 1.0; public Drawer() : base(0xA2C) => Weight = 1.0;
public Drawer(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
} }
[Furniture] [Furniture]
[Flippable(0xa30, 0xa38)] [Flippable(0xa30, 0xa38)]
public class FancyDrawer : BaseContainer [Serializable(0, false)]
public partial class FancyDrawer : BaseContainer
{ {
[Constructible] [Constructible]
public FancyDrawer() : base(0xA30) => Weight = 1.0; public FancyDrawer() : base(0xA30) => Weight = 1.0;
public FancyDrawer(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
} }
[Furniture] [Furniture]
[Flippable(0xa4f, 0xa53)] [Flippable(0xa4f, 0xa53)]
public class Armoire : BaseContainer [Serializable(0, false)]
public partial class Armoire : BaseContainer
{ {
[Constructible] [Constructible]
public Armoire() : base(0xA4F) => Weight = 1.0; public Armoire() : base(0xA4F) => Weight = 1.0;
public Armoire(Serial serial) : base(serial)
{
}
public override void DisplayTo(Mobile m) public override void DisplayTo(Mobile m)
{ {
if (DynamicFurniture.Open(this, m)) if (DynamicFurniture.Open(this, m))
@ -292,32 +133,21 @@ namespace Server.Items
} }
} }
public override void Serialize(IGenericWriter writer) [AfterDeserialization]
private void AfterDeserialization()
{ {
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
DynamicFurniture.Close(this); DynamicFurniture.Close(this);
} }
} }
[Furniture] [Furniture]
[Flippable(0xa4d, 0xa51)] [Flippable(0xa4d, 0xa51)]
public class FancyArmoire : BaseContainer [Serializable(0, false)]
public partial class FancyArmoire : BaseContainer
{ {
[Constructible] [Constructible]
public FancyArmoire() : base(0xA4D) => Weight = 1.0; public FancyArmoire() : base(0xA4D) => Weight = 1.0;
public FancyArmoire(Serial serial) : base(serial)
{
}
public override void DisplayTo(Mobile m) public override void DisplayTo(Mobile m)
{ {
if (DynamicFurniture.Open(this, m)) if (DynamicFurniture.Open(this, m))
@ -326,28 +156,20 @@ namespace Server.Items
} }
} }
public override void Serialize(IGenericWriter writer) [AfterDeserialization]
private void AfterDeserialization()
{ {
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
DynamicFurniture.Close(this); DynamicFurniture.Close(this);
} }
} }
public static class DynamicFurniture public static class DynamicFurniture
{ {
private static readonly Dictionary<Container, Timer> m_Table = new(); private static readonly Dictionary<Container, Timer> _table = new();
public static bool Open(Container c, Mobile m) public static bool Open(Container c, Mobile m)
{ {
if (m_Table.ContainsKey(c)) if (_table.ContainsKey(c))
{ {
c.SendRemovePacket(); c.SendRemovePacket();
Close(c); Close(c);
@ -360,7 +182,7 @@ namespace Server.Items
{ {
Timer t = new FurnitureTimer(c, m); Timer t = new FurnitureTimer(c, m);
t.Start(); t.Start();
m_Table[c] = t; _table[c] = t;
c.ItemID = c.ItemID switch c.ItemID = c.ItemID switch
{ {
@ -377,7 +199,7 @@ namespace Server.Items
public static void Close(Container c) public static void Close(Container c)
{ {
if (m_Table.Remove(c, out var t)) if (_table.Remove(c, out var t))
{ {
t.Stop(); t.Stop();
} }
@ -398,22 +220,21 @@ namespace Server.Items
public class FurnitureTimer : Timer public class FurnitureTimer : Timer
{ {
private readonly Container m_Container; private readonly Container _container;
private readonly Mobile m_Mobile; private readonly Mobile _mobile;
public FurnitureTimer(Container c, Mobile m) : base(TimeSpan.FromSeconds(0.5), TimeSpan.FromSeconds(0.5)) public FurnitureTimer(Container c, Mobile m) : base(TimeSpan.FromSeconds(0.5), TimeSpan.FromSeconds(0.5))
{ {
m_Container = c; _container = c;
m_Mobile = m; _mobile = m;
} }
protected override void OnTick() protected override void OnTick()
{ {
if (m_Mobile.Map != m_Container.Map || !m_Mobile.InRange(m_Container.GetWorldLocation(), 3)) if (_mobile.Map != _container.Map || !_mobile.InRange(_container.GetWorldLocation(), 3))
{ {
DynamicFurniture.Close(m_Container); DynamicFurniture.Close(_container);
}
} }
} }
} }

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.Armoire"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.CherryArmoire"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.Drawer"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ElegantArmoire"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.EmptyBookcase"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FancyArmoire"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FancyDrawer"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FullBookcase"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.MapleArmoire"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.RedArmoire"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ShortCabinet"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.TallCabinet"
}