fix: Codegens games (#1058)
This commit is contained in:
parent
5b48843045
commit
368160144b
28 changed files with 502 additions and 711 deletions
|
|
@ -1,51 +1,37 @@
|
|||
namespace Server.Items
|
||||
using ModernUO.Serialization;
|
||||
|
||||
namespace Server.Items;
|
||||
|
||||
[Flippable(0xE1C, 0xFAD)]
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class Backgammon : BaseBoard
|
||||
{
|
||||
[Flippable(0xE1C, 0xFAD)]
|
||||
public class Backgammon : BaseBoard
|
||||
[Constructible]
|
||||
public Backgammon() : base(0xE1C)
|
||||
{
|
||||
[Constructible]
|
||||
public Backgammon() : base(0xE1C)
|
||||
}
|
||||
|
||||
public override void CreatePieces()
|
||||
{
|
||||
for (var i = 0; i < 5; i++)
|
||||
{
|
||||
CreatePiece(new PieceWhiteChecker(this), 42, 17 * i + 6);
|
||||
CreatePiece(new PieceBlackChecker(this), 42, 17 * i + 119);
|
||||
|
||||
CreatePiece(new PieceBlackChecker(this), 142, 17 * i + 6);
|
||||
CreatePiece(new PieceWhiteChecker(this), 142, 17 * i + 119);
|
||||
}
|
||||
|
||||
public Backgammon(Serial serial) : base(serial)
|
||||
for (var i = 0; i < 3; i++)
|
||||
{
|
||||
CreatePiece(new PieceBlackChecker(this), 108, 17 * i + 6);
|
||||
CreatePiece(new PieceWhiteChecker(this), 108, 17 * i + 153);
|
||||
}
|
||||
|
||||
public override void CreatePieces()
|
||||
for (var i = 0; i < 2; i++)
|
||||
{
|
||||
for (var i = 0; i < 5; i++)
|
||||
{
|
||||
CreatePiece(new PieceWhiteChecker(this), 42, 17 * i + 6);
|
||||
CreatePiece(new PieceBlackChecker(this), 42, 17 * i + 119);
|
||||
|
||||
CreatePiece(new PieceBlackChecker(this), 142, 17 * i + 6);
|
||||
CreatePiece(new PieceWhiteChecker(this), 142, 17 * i + 119);
|
||||
}
|
||||
|
||||
for (var i = 0; i < 3; i++)
|
||||
{
|
||||
CreatePiece(new PieceBlackChecker(this), 108, 17 * i + 6);
|
||||
CreatePiece(new PieceWhiteChecker(this), 108, 17 * i + 153);
|
||||
}
|
||||
|
||||
for (var i = 0; i < 2; i++)
|
||||
{
|
||||
CreatePiece(new PieceWhiteChecker(this), 223, 17 * i + 6);
|
||||
CreatePiece(new PieceBlackChecker(this), 223, 17 * i + 170);
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
CreatePiece(new PieceWhiteChecker(this), 223, 17 * i + 6);
|
||||
CreatePiece(new PieceBlackChecker(this), 223, 17 * i + 170);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,145 +1,129 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ModernUO.Serialization;
|
||||
using Server.ContextMenus;
|
||||
using Server.Gumps;
|
||||
using Server.Multis;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
namespace Server.Items;
|
||||
|
||||
[SerializationGenerator(2, false)]
|
||||
public abstract partial class BaseBoard : Container, ISecurable
|
||||
{
|
||||
public abstract class BaseBoard : Container, ISecurable
|
||||
[SerializableField(0)]
|
||||
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
|
||||
private SecureLevel _level;
|
||||
|
||||
public BaseBoard(int itemID) : base(itemID)
|
||||
{
|
||||
public BaseBoard(int itemID) : base(itemID)
|
||||
CreatePieces();
|
||||
|
||||
Weight = 5.0;
|
||||
}
|
||||
|
||||
public override bool DisplaysContent => false; // Do not display (x items, y stones)
|
||||
|
||||
public override bool IsDecoContainer => false;
|
||||
|
||||
public override TimeSpan DecayTime => TimeSpan.FromDays(1.0);
|
||||
|
||||
public abstract void CreatePieces();
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
for (var i = Items.Count - 1; i >= 0; --i)
|
||||
{
|
||||
CreatePieces();
|
||||
|
||||
Weight = 5.0;
|
||||
}
|
||||
|
||||
public BaseBoard(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool DisplaysContent => false; // Do not display (x items, y stones)
|
||||
|
||||
public override bool IsDecoContainer => false;
|
||||
|
||||
public override TimeSpan DecayTime => TimeSpan.FromDays(1.0);
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level { get; set; }
|
||||
|
||||
public abstract void CreatePieces();
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
for (var i = Items.Count - 1; i >= 0; --i)
|
||||
if (i < Items.Count)
|
||||
{
|
||||
if (i < Items.Count)
|
||||
Items[i].Delete();
|
||||
}
|
||||
}
|
||||
|
||||
CreatePieces();
|
||||
}
|
||||
|
||||
public void CreatePiece(BasePiece piece, int x, int y)
|
||||
{
|
||||
AddItem(piece);
|
||||
piece.Location = new Point3D(x, y, 0);
|
||||
}
|
||||
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
if (version == 1)
|
||||
{
|
||||
Level = (SecureLevel)reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped) =>
|
||||
dropped is BasePiece piece && piece.Board == this && base.OnDragDrop(from, dropped);
|
||||
|
||||
public override bool OnDragDropInto(Mobile from, Item dropped, Point3D point)
|
||||
{
|
||||
if (dropped is BasePiece piece && piece.Board == this && base.OnDragDropInto(from, dropped, point))
|
||||
{
|
||||
if (RootParent == from)
|
||||
{
|
||||
from.SendSound(0x127, GetWorldLocation());
|
||||
}
|
||||
else
|
||||
{
|
||||
Span<byte> buffer = stackalloc byte[OutgoingEffectPackets.SoundPacketLength].InitializePacket();
|
||||
|
||||
foreach (var state in GetClientsInRange(2))
|
||||
{
|
||||
Items[i].Delete();
|
||||
OutgoingEffectPackets.CreateSoundEffect(buffer, 0x127, GetWorldLocation());
|
||||
state.Send(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
CreatePieces();
|
||||
return true;
|
||||
}
|
||||
|
||||
public void CreatePiece(BasePiece piece, int x, int y)
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
|
||||
if (ValidateDefault(from, this))
|
||||
{
|
||||
AddItem(piece);
|
||||
piece.Location = new Point3D(x, y, 0);
|
||||
list.Add(new DefaultEntry(from, this));
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(1); // version
|
||||
SetSecureLevelEntry.AddTo(from, this, list);
|
||||
}
|
||||
|
||||
writer.Write((int)Level);
|
||||
public static bool ValidateDefault(Mobile from, BaseBoard board) =>
|
||||
!board.Deleted && (from.AccessLevel >= AccessLevel.GameMaster || from.Alive &&
|
||||
(board.IsChildOf(from.Backpack) || board.RootParent is not Mobile &&
|
||||
board.Map == from.Map && from.InRange(board.GetWorldLocation(), 1) &&
|
||||
BaseHouse.FindHouseAt(board)?.IsOwner(from) == true));
|
||||
|
||||
public class DefaultEntry : ContextMenuEntry
|
||||
{
|
||||
private readonly BaseBoard m_Board;
|
||||
private readonly Mobile m_From;
|
||||
|
||||
public DefaultEntry(Mobile from, BaseBoard board) : base(
|
||||
6162,
|
||||
from.AccessLevel >= AccessLevel.GameMaster ? -1 : 1
|
||||
)
|
||||
{
|
||||
m_From = from;
|
||||
m_Board = board;
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
public override void OnClick()
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
|
||||
if (version == 1)
|
||||
if (ValidateDefault(m_From, m_Board))
|
||||
{
|
||||
Level = (SecureLevel)reader.ReadInt();
|
||||
}
|
||||
|
||||
if (Weight == 1.0)
|
||||
{
|
||||
Weight = 5.0;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped) =>
|
||||
dropped is BasePiece piece && piece.Board == this && base.OnDragDrop(from, dropped);
|
||||
|
||||
public override bool OnDragDropInto(Mobile from, Item dropped, Point3D point)
|
||||
{
|
||||
if (dropped is BasePiece piece && piece.Board == this && base.OnDragDropInto(from, dropped, point))
|
||||
{
|
||||
if (RootParent == from)
|
||||
{
|
||||
from.SendSound(0x127, GetWorldLocation());
|
||||
}
|
||||
else
|
||||
{
|
||||
Span<byte> buffer = stackalloc byte[OutgoingEffectPackets.SoundPacketLength].InitializePacket();
|
||||
|
||||
foreach (var state in GetClientsInRange(2))
|
||||
{
|
||||
OutgoingEffectPackets.CreateSoundEffect(buffer, 0x127, GetWorldLocation());
|
||||
state.Send(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
|
||||
if (ValidateDefault(from, this))
|
||||
{
|
||||
list.Add(new DefaultEntry(from, this));
|
||||
}
|
||||
|
||||
SetSecureLevelEntry.AddTo(from, this, list);
|
||||
}
|
||||
|
||||
public static bool ValidateDefault(Mobile from, BaseBoard board) =>
|
||||
!board.Deleted && (from.AccessLevel >= AccessLevel.GameMaster || from.Alive &&
|
||||
(board.IsChildOf(from.Backpack) || board.RootParent is not Mobile &&
|
||||
board.Map == from.Map && from.InRange(board.GetWorldLocation(), 1) &&
|
||||
BaseHouse.FindHouseAt(board)?.IsOwner(from) == true));
|
||||
|
||||
public class DefaultEntry : ContextMenuEntry
|
||||
{
|
||||
private readonly BaseBoard m_Board;
|
||||
private readonly Mobile m_From;
|
||||
|
||||
public DefaultEntry(Mobile from, BaseBoard board) : base(
|
||||
6162,
|
||||
from.AccessLevel >= AccessLevel.GameMaster ? -1 : 1
|
||||
)
|
||||
{
|
||||
m_From = from;
|
||||
m_Board = board;
|
||||
}
|
||||
|
||||
public override void OnClick()
|
||||
{
|
||||
if (ValidateDefault(m_From, m_Board))
|
||||
{
|
||||
m_Board.Reset();
|
||||
}
|
||||
m_Board.Reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,89 +1,67 @@
|
|||
namespace Server.Items
|
||||
using ModernUO.Serialization;
|
||||
|
||||
namespace Server.Items;
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class BasePiece : Item
|
||||
{
|
||||
public class BasePiece : Item
|
||||
[SerializableField(0)]
|
||||
private BaseBoard _board;
|
||||
|
||||
public BasePiece(int itemID, BaseBoard board) : base(itemID) => _board = board;
|
||||
|
||||
public override bool IsVirtualItem => true;
|
||||
|
||||
public override bool CanTarget => false;
|
||||
|
||||
[AfterDeserialization(false)]
|
||||
private void AfterDeserialization()
|
||||
{
|
||||
public BasePiece(int itemID, BaseBoard board) : base(itemID) => Board = board;
|
||||
|
||||
public BasePiece(Serial serial) : base(serial)
|
||||
if (Board == null || Parent == null)
|
||||
{
|
||||
Delete();
|
||||
}
|
||||
|
||||
public BaseBoard Board { get; set; }
|
||||
|
||||
public override bool IsVirtualItem => true;
|
||||
|
||||
public override bool CanTarget => false;
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0);
|
||||
writer.Write(Board);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
var version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
Board = (BaseBoard)reader.ReadEntity<Item>();
|
||||
|
||||
if (Board == null || Parent == null)
|
||||
{
|
||||
Delete();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnSingleClick(Mobile from)
|
||||
{
|
||||
if (Board?.Deleted != false)
|
||||
{
|
||||
Delete();
|
||||
}
|
||||
else if (!IsChildOf(Board))
|
||||
{
|
||||
Board.DropItem(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
base.OnSingleClick(from);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnDragLift(Mobile from)
|
||||
{
|
||||
if (Board?.Deleted != false)
|
||||
{
|
||||
Delete();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!IsChildOf(Board))
|
||||
{
|
||||
Board.DropItem(this);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool DropToMobile(Mobile from, Mobile target, Point3D p) => false;
|
||||
|
||||
public override bool DropToItem(Mobile from, Item target, Point3D p) =>
|
||||
target == Board && p.X != -1 && p.Y != -1 && base.DropToItem(from, target, p);
|
||||
|
||||
public override bool DropToWorld(Mobile from, Point3D p) => false;
|
||||
|
||||
public override int GetLiftSound(Mobile from) => -1;
|
||||
}
|
||||
|
||||
public override void OnSingleClick(Mobile from)
|
||||
{
|
||||
if (Board?.Deleted != false)
|
||||
{
|
||||
Delete();
|
||||
}
|
||||
else if (!IsChildOf(Board))
|
||||
{
|
||||
Board.DropItem(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
base.OnSingleClick(from);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnDragLift(Mobile from)
|
||||
{
|
||||
if (Board?.Deleted != false)
|
||||
{
|
||||
Delete();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!IsChildOf(Board))
|
||||
{
|
||||
Board.DropItem(this);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool DropToMobile(Mobile from, Mobile target, Point3D p) => false;
|
||||
|
||||
public override bool DropToItem(Mobile from, Item target, Point3D p) =>
|
||||
target == Board && p.X != -1 && p.Y != -1 && base.DropToItem(from, target, p);
|
||||
|
||||
public override bool DropToWorld(Mobile from, Point3D p) => false;
|
||||
|
||||
public override int GetLiftSound(Mobile from) => -1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,41 +1,27 @@
|
|||
namespace Server.Items
|
||||
using ModernUO.Serialization;
|
||||
|
||||
namespace Server.Items;
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class CheckerBoard : BaseBoard
|
||||
{
|
||||
public class CheckerBoard : BaseBoard
|
||||
[Constructible]
|
||||
public CheckerBoard() : base(0xFA6)
|
||||
{
|
||||
[Constructible]
|
||||
public CheckerBoard() : base(0xFA6)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public CheckerBoard(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
public override int LabelNumber => 1016449; // a checker board
|
||||
|
||||
public override int LabelNumber => 1016449; // a checker board
|
||||
|
||||
public override void CreatePieces()
|
||||
public override void CreatePieces()
|
||||
{
|
||||
for (var i = 0; i < 4; i++)
|
||||
{
|
||||
for (var i = 0; i < 4; i++)
|
||||
{
|
||||
CreatePiece(new PieceWhiteChecker(this), 50 * i + 45, 25);
|
||||
CreatePiece(new PieceWhiteChecker(this), 50 * i + 70, 50);
|
||||
CreatePiece(new PieceWhiteChecker(this), 50 * i + 45, 75);
|
||||
CreatePiece(new PieceBlackChecker(this), 50 * i + 70, 150);
|
||||
CreatePiece(new PieceBlackChecker(this), 50 * i + 45, 175);
|
||||
CreatePiece(new PieceBlackChecker(this), 50 * i + 70, 200);
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
CreatePiece(new PieceWhiteChecker(this), 50 * i + 45, 25);
|
||||
CreatePiece(new PieceWhiteChecker(this), 50 * i + 70, 50);
|
||||
CreatePiece(new PieceWhiteChecker(this), 50 * i + 45, 75);
|
||||
CreatePiece(new PieceBlackChecker(this), 50 * i + 70, 150);
|
||||
CreatePiece(new PieceBlackChecker(this), 50 * i + 45, 175);
|
||||
CreatePiece(new PieceBlackChecker(this), 50 * i + 70, 200);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,52 +1,23 @@
|
|||
namespace Server.Items
|
||||
using ModernUO.Serialization;
|
||||
|
||||
namespace Server.Items;
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceWhiteChecker : BasePiece
|
||||
{
|
||||
public class PieceWhiteChecker : BasePiece
|
||||
public PieceWhiteChecker(BaseBoard board) : base(0x3584, board)
|
||||
{
|
||||
public PieceWhiteChecker(BaseBoard board) : base(0x3584, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceWhiteChecker(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white checker";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceBlackChecker : BasePiece
|
||||
{
|
||||
public PieceBlackChecker(BaseBoard board) : base(0x358B, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceBlackChecker(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black checker";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
public override string DefaultName => "white checker";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceBlackChecker : BasePiece
|
||||
{
|
||||
public PieceBlackChecker(BaseBoard board) : base(0x358B, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black checker";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,302 +1,123 @@
|
|||
namespace Server.Items
|
||||
using ModernUO.Serialization;
|
||||
|
||||
namespace Server.Items;
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceWhiteKing : BasePiece
|
||||
{
|
||||
public class PieceWhiteKing : BasePiece
|
||||
public PieceWhiteKing(BaseBoard board) : base(0x3587, board)
|
||||
{
|
||||
public PieceWhiteKing(BaseBoard board) : base(0x3587, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceWhiteKing(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white king";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceBlackKing : BasePiece
|
||||
{
|
||||
public PieceBlackKing(BaseBoard board) : base(0x358E, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceBlackKing(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black king";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceWhiteQueen : BasePiece
|
||||
{
|
||||
public PieceWhiteQueen(BaseBoard board) : base(0x358A, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceWhiteQueen(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white queen";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceBlackQueen : BasePiece
|
||||
{
|
||||
public PieceBlackQueen(BaseBoard board) : base(0x3591, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceBlackQueen(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black queen";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceWhiteRook : BasePiece
|
||||
{
|
||||
public PieceWhiteRook(BaseBoard board) : base(0x3586, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceWhiteRook(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white rook";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceBlackRook : BasePiece
|
||||
{
|
||||
public PieceBlackRook(BaseBoard board) : base(0x358D, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceBlackRook(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black rook";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceWhiteBishop : BasePiece
|
||||
{
|
||||
public PieceWhiteBishop(BaseBoard board) : base(0x3585, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceWhiteBishop(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white bishop";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceBlackBishop : BasePiece
|
||||
{
|
||||
public PieceBlackBishop(BaseBoard board) : base(0x358C, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceBlackBishop(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black bishop";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceWhiteKnight : BasePiece
|
||||
{
|
||||
public PieceWhiteKnight(BaseBoard board) : base(0x3588, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceWhiteKnight(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white knight";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceBlackKnight : BasePiece
|
||||
{
|
||||
public PieceBlackKnight(BaseBoard board) : base(0x358F, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceBlackKnight(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black knight";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceWhitePawn : BasePiece
|
||||
{
|
||||
public PieceWhitePawn(BaseBoard board) : base(0x3589, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceWhitePawn(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white pawn";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PieceBlackPawn : BasePiece
|
||||
{
|
||||
public PieceBlackPawn(BaseBoard board) : base(0x3590, board)
|
||||
{
|
||||
}
|
||||
|
||||
public PieceBlackPawn(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black pawn";
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
public override string DefaultName => "white king";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceBlackKing : BasePiece
|
||||
{
|
||||
public PieceBlackKing(BaseBoard board) : base(0x358E, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black king";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceWhiteQueen : BasePiece
|
||||
{
|
||||
public PieceWhiteQueen(BaseBoard board) : base(0x358A, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white queen";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceBlackQueen : BasePiece
|
||||
{
|
||||
public PieceBlackQueen(BaseBoard board) : base(0x3591, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black queen";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceWhiteRook : BasePiece
|
||||
{
|
||||
public PieceWhiteRook(BaseBoard board) : base(0x3586, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white rook";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceBlackRook : BasePiece
|
||||
{
|
||||
public PieceBlackRook(BaseBoard board) : base(0x358D, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black rook";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceWhiteBishop : BasePiece
|
||||
{
|
||||
public PieceWhiteBishop(BaseBoard board) : base(0x3585, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white bishop";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceBlackBishop : BasePiece
|
||||
{
|
||||
public PieceBlackBishop(BaseBoard board) : base(0x358C, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black bishop";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceWhiteKnight : BasePiece
|
||||
{
|
||||
public PieceWhiteKnight(BaseBoard board) : base(0x3588, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white knight";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceBlackKnight : BasePiece
|
||||
{
|
||||
public PieceBlackKnight(BaseBoard board) : base(0x358F, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black knight";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceWhitePawn : BasePiece
|
||||
{
|
||||
public PieceWhitePawn(BaseBoard board) : base(0x3589, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "white pawn";
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class PieceBlackPawn : BasePiece
|
||||
{
|
||||
public PieceBlackPawn(BaseBoard board) : base(0x3590, board)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "black pawn";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,66 +1,52 @@
|
|||
namespace Server.Items
|
||||
using ModernUO.Serialization;
|
||||
|
||||
namespace Server.Items;
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class Chessboard : BaseBoard
|
||||
{
|
||||
public class Chessboard : BaseBoard
|
||||
[Constructible]
|
||||
public Chessboard() : base(0xFA6)
|
||||
{
|
||||
[Constructible]
|
||||
public Chessboard() : base(0xFA6)
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1016450; // a chessboard
|
||||
|
||||
public override void CreatePieces()
|
||||
{
|
||||
for (var i = 0; i < 8; i++)
|
||||
{
|
||||
CreatePiece(new PieceBlackPawn(this), 67, 25 * i + 17);
|
||||
CreatePiece(new PieceWhitePawn(this), 192, 25 * i + 17);
|
||||
}
|
||||
|
||||
public Chessboard(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
// Rook
|
||||
CreatePiece(new PieceBlackRook(this), 42, 5);
|
||||
CreatePiece(new PieceBlackRook(this), 42, 180);
|
||||
|
||||
public override int LabelNumber => 1016450; // a chessboard
|
||||
CreatePiece(new PieceWhiteRook(this), 216, 5);
|
||||
CreatePiece(new PieceWhiteRook(this), 216, 180);
|
||||
|
||||
public override void CreatePieces()
|
||||
{
|
||||
for (var i = 0; i < 8; i++)
|
||||
{
|
||||
CreatePiece(new PieceBlackPawn(this), 67, 25 * i + 17);
|
||||
CreatePiece(new PieceWhitePawn(this), 192, 25 * i + 17);
|
||||
}
|
||||
// Knight
|
||||
CreatePiece(new PieceBlackKnight(this), 42, 30);
|
||||
CreatePiece(new PieceBlackKnight(this), 42, 155);
|
||||
|
||||
// Rook
|
||||
CreatePiece(new PieceBlackRook(this), 42, 5);
|
||||
CreatePiece(new PieceBlackRook(this), 42, 180);
|
||||
CreatePiece(new PieceWhiteKnight(this), 216, 30);
|
||||
CreatePiece(new PieceWhiteKnight(this), 216, 155);
|
||||
|
||||
CreatePiece(new PieceWhiteRook(this), 216, 5);
|
||||
CreatePiece(new PieceWhiteRook(this), 216, 180);
|
||||
// Bishop
|
||||
CreatePiece(new PieceBlackBishop(this), 42, 55);
|
||||
CreatePiece(new PieceBlackBishop(this), 42, 130);
|
||||
|
||||
// Knight
|
||||
CreatePiece(new PieceBlackKnight(this), 42, 30);
|
||||
CreatePiece(new PieceBlackKnight(this), 42, 155);
|
||||
CreatePiece(new PieceWhiteBishop(this), 216, 55);
|
||||
CreatePiece(new PieceWhiteBishop(this), 216, 130);
|
||||
|
||||
CreatePiece(new PieceWhiteKnight(this), 216, 30);
|
||||
CreatePiece(new PieceWhiteKnight(this), 216, 155);
|
||||
// Queen
|
||||
CreatePiece(new PieceBlackQueen(this), 42, 105);
|
||||
CreatePiece(new PieceWhiteQueen(this), 216, 105);
|
||||
|
||||
// Bishop
|
||||
CreatePiece(new PieceBlackBishop(this), 42, 55);
|
||||
CreatePiece(new PieceBlackBishop(this), 42, 130);
|
||||
|
||||
CreatePiece(new PieceWhiteBishop(this), 216, 55);
|
||||
CreatePiece(new PieceWhiteBishop(this), 216, 130);
|
||||
|
||||
// Queen
|
||||
CreatePiece(new PieceBlackQueen(this), 42, 105);
|
||||
CreatePiece(new PieceWhiteQueen(this), 216, 105);
|
||||
|
||||
// King
|
||||
CreatePiece(new PieceBlackKing(this), 42, 80);
|
||||
CreatePiece(new PieceWhiteKing(this), 216, 80);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
// King
|
||||
CreatePiece(new PieceBlackKing(this), 42, 80);
|
||||
CreatePiece(new PieceWhiteKing(this), 216, 80);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,54 +1,39 @@
|
|||
using ModernUO.Serialization;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
namespace Server.Items;
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public partial class Dices : Item, ITelekinesisable
|
||||
{
|
||||
public class Dices : Item, ITelekinesisable
|
||||
[Constructible]
|
||||
public Dices() : base(0xFA7) => Weight = 1.0;
|
||||
|
||||
public void OnTelekinesis(Mobile from)
|
||||
{
|
||||
[Constructible]
|
||||
public Dices() : base(0xFA7) => Weight = 1.0;
|
||||
Effects.SendLocationParticles(EffectItem.Create(Location, Map, EffectItem.DefaultDuration), 0x376A, 9, 32, 5022);
|
||||
Effects.PlaySound(Location, Map, 0x1F5);
|
||||
|
||||
public Dices(Serial serial) : base(serial)
|
||||
Roll(from);
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void OnTelekinesis(Mobile from)
|
||||
{
|
||||
Effects.SendLocationParticles(EffectItem.Create(Location, Map, EffectItem.DefaultDuration), 0x376A, 9, 32, 5022);
|
||||
Effects.PlaySound(Location, Map, 0x1F5);
|
||||
Roll(from);
|
||||
}
|
||||
|
||||
Roll(from);
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Roll(from);
|
||||
}
|
||||
|
||||
public void Roll(Mobile from)
|
||||
{
|
||||
PublicOverheadMessage(
|
||||
MessageType.Regular,
|
||||
0,
|
||||
false,
|
||||
$"*{from.Name} rolls {Utility.Random(1, 6)}, {Utility.Random(1, 6)}*"
|
||||
);
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
var version = reader.ReadInt();
|
||||
}
|
||||
public void Roll(Mobile from)
|
||||
{
|
||||
PublicOverheadMessage(
|
||||
MessageType.Regular,
|
||||
0,
|
||||
false,
|
||||
$"*{from.Name} rolls {Utility.Random(1, 6)}, {Utility.Random(1, 6)}*"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Backgammon"
|
||||
}
|
||||
11
Projects/UOContent/Migrations/Server.Items.BaseBoard.v2.json
Normal file
11
Projects/UOContent/Migrations/Server.Items.BaseBoard.v2.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"version": 2,
|
||||
"type": "Server.Items.BaseBoard",
|
||||
"properties": [
|
||||
{
|
||||
"name": "Level",
|
||||
"type": "Server.Multis.SecureLevel",
|
||||
"rule": "EnumMigrationRule"
|
||||
}
|
||||
]
|
||||
}
|
||||
11
Projects/UOContent/Migrations/Server.Items.BasePiece.v0.json
Normal file
11
Projects/UOContent/Migrations/Server.Items.BasePiece.v0.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BasePiece",
|
||||
"properties": [
|
||||
{
|
||||
"name": "Board",
|
||||
"type": "Server.Items.BaseBoard",
|
||||
"rule": "SerializableInterfaceMigrationRule"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.CheckerBoard"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Chessboard"
|
||||
}
|
||||
4
Projects/UOContent/Migrations/Server.Items.Dices.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Dices.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Dices"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceBlackBishop"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceBlackChecker"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceBlackKing"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceBlackKnight"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceBlackPawn"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceBlackQueen"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceBlackRook"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceWhiteBishop"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceWhiteChecker"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceWhiteKing"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceWhiteKnight"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceWhitePawn"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceWhiteQueen"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PieceWhiteRook"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue