ModernUO/Projects/UOContent/Items/Construction/Decorative/Tapestry.cs
Kamron Batman 4ddb3de026
fix(core): Fixes several serialization issues (#355)
- [X] Fixes an issue where a buffer smaller than 8 bytes would not double with enough space in some cases.
- [X] Fixes an issue with dupe copying the savebuffer reference (ugh).
- [X] Streamlines the IGenericWriter API to use better generics.
- [X] Streamlines the IGenericReader API to use better generics.
- [X] Forces `tidying` of a List/HashSet to be done externally since Writers/Readers should not have side effects.
- [X] Fixes an issue where Tidying a list didn't TrimExcess, causing memory leaks.
- [X] Reverted the meaning of `World.Running` to specifically refer to any world state post world loading.
  - NOTE: Do not use this if you want to block on world saves. Instead use checks against `WorldState.Saving` states.
- [X] Fixes an issue with serializing negative DateTime deltas.
- [X] Fixes a potential issue with serializing non-UTC DateTime.

Bumps release version
2020-12-23 07:11:41 -08:00

1267 lines
28 KiB
C#

namespace Server.Items
{
public class Tapestry1N : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry1N() : base(0xEAA)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry1N(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X + 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry1N m_Item;
public InternalItem(Tapestry1N item) : base(0xEAB)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X - 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry1N>();
}
}
}
public class Tapestry2N : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry2N() : base(0xEAC)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry2N(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X + 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry2N m_Item;
public InternalItem(Tapestry2N item) : base(0xEAD)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X - 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry2N>();
}
}
}
public class Tapestry2W : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry2W() : base(0xEAE)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry2W(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y - 1, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry2W m_Item;
public InternalItem(Tapestry2W item) : base(0xEAF)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y + 1, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry2W>();
}
}
}
public class Tapestry3N : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry3N() : base(0xFD6)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry3N(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X - 2, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry3N m_Item;
public InternalItem(Tapestry3N item) : base(0xFD5)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X + 2, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry3N>();
}
}
}
public class Tapestry3W : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry3W() : base(0xFD7)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry3W(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y - 2, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry3W m_Item;
public InternalItem(Tapestry3W item) : base(0xFD8)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y + 2, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry3W>();
}
}
}
public class Tapestry4N : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry4N() : base(0xFDA)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry4N(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X - 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry4N m_Item;
public InternalItem(Tapestry4N item) : base(0xFD9)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X + 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry4N>();
}
}
}
public class Tapestry4W : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry4W() : base(0xFDB)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry4W(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y - 1, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry4W m_Item;
public InternalItem(Tapestry4W item) : base(0xFDC)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y + 1, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry4W>();
}
}
}
public class Tapestry5N : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry5N() : base(0xFDE)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry5N(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X - 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry5N m_Item;
public InternalItem(Tapestry5N item) : base(0xFDD)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X + 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry5N>();
}
}
}
public class Tapestry5W : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry5W() : base(0xFDF)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry5W(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y - 1, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry5W m_Item;
public InternalItem(Tapestry5W item) : base(0xFE0)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y + 1, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry5W>();
}
}
}
public class Tapestry6N : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry6N() : base(0xFE2)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry6N(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X - 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry6N m_Item;
public InternalItem(Tapestry6N item) : base(0xFE1)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X + 1, Y, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry6N>();
}
}
}
public class Tapestry6W : Item
{
private InternalItem m_Item;
[Constructible]
public Tapestry6W() : base(0xFE3)
{
Movable = false;
m_Item = new InternalItem(this);
}
public Tapestry6W(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y - 1, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<InternalItem>();
}
private class InternalItem : Item
{
private Tapestry6W m_Item;
public InternalItem(Tapestry6W item) : base(0xFE4)
{
Movable = true;
m_Item = item;
}
public InternalItem(Serial serial) : base(serial)
{
}
public override void OnLocationChange(Point3D oldLocation)
{
if (m_Item != null)
{
m_Item.Location = new Point3D(X, Y + 1, Z);
}
}
public override void OnMapChange()
{
if (m_Item != null)
{
m_Item.Map = Map;
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
m_Item?.Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_Item);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_Item = reader.ReadEntity<Tapestry6W>();
}
}
}
}