fix: Converts ConPVP to serialization generator (#2338)

This commit is contained in:
Kamron Batman 2026-02-14 14:50:10 -08:00 committed by GitHub
parent 6ffb63ec82
commit b01a40a3de
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
31 changed files with 7942 additions and 8243 deletions

View file

@ -2,6 +2,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using ModernUO.CodeGeneratedEvents;
using ModernUO.Serialization;
using Server.Engines.PartySystem;
using Server.Factions;
using Server.Gumps;
@ -19,12 +20,12 @@ using Server.Spells.Seventh;
using Server.Spells.Spellweaving;
using Server.Targeting;
namespace Server.Engines.ConPVP
{
public delegate void CountdownCallback(int count);
namespace Server.Engines.ConPVP;
public class DuelContext
{
public delegate void CountdownCallback(int count);
public partial class DuelContext
{
private static readonly TimeSpan CombatDelay = TimeSpan.FromSeconds(30.0);
private static readonly TimeSpan AutoTieDelay = TimeSpan.FromMinutes(15.0);
@ -2517,14 +2518,11 @@ namespace Server.Engines.ConPVP
}
}
private class InternalWall : Item
[SerializationGenerator(0, false)]
private partial class InternalWall : Item
{
public InternalWall() : base(0x80) => Movable = false;
public InternalWall(Serial serial) : base(serial)
{
}
public void Appear(Point3D loc, Map map)
{
MoveToWorld(loc, map);
@ -2532,21 +2530,7 @@ namespace Server.Engines.ConPVP
Effects.SendLocationParticles(this, 0x376A, 9, 10, 5025);
}
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();
Delete();
}
public override bool SkipSerialization => true;
}
private class ReturnEntry
@ -2740,7 +2724,8 @@ namespace Server.Engines.ConPVP
}
}
private class ArenaMoongate : ConfirmationMoongate
[SerializationGenerator(0, false)]
private partial class ArenaMoongate : ConfirmationMoongate
{
private readonly ExitTeleporter m_Teleporter;
@ -2761,9 +2746,7 @@ namespace Server.Engines.ConPVP
Timer.StartTimer(TimeSpan.FromSeconds(10.0), Delete);
}
public ArenaMoongate(Serial serial) : base(serial)
{
}
public override bool SkipSerialization => true;
public override string DefaultName => "spectator moongate";
@ -2807,22 +2790,5 @@ namespace Server.Engines.ConPVP
Effects.PlaySound(loc, map, 0x20E);
MoveToWorld(loc, map);
}
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();
Delete();
}
}
}
}

View file

@ -1,19 +1,21 @@
using ModernUO.Serialization;
using Server.Items;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
public enum DuelTeleporterType
{
public enum DuelTeleporterType
{
Squares = 6095,
Buds = 6104,
Flowers = 6113,
Spikes = 6122,
Arrows = 6140,
Links = 6149
}
}
public class DuelTeleporterAddon : BaseAddon
{
[SerializationGenerator(0, false)]
public partial class DuelTeleporterAddon : BaseAddon
{
[Constructible]
public DuelTeleporterAddon(DuelTeleporterType type = DuelTeleporterType.Squares)
{
@ -51,22 +53,10 @@ namespace Server.Engines.ConPVP
AddComponent(new AddonComponent(0x754), -2, +1, 0);
}
public DuelTeleporterAddon(Serial serial) : base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public DuelTeleporterType Type
{
get
{
if (Components.Count > 0)
{
return (DuelTeleporterType)Components[0].ItemID;
}
return DuelTeleporterType.Squares;
}
get => Components.Count > 0 ? (DuelTeleporterType)Components[0].ItemID : DuelTeleporterType.Squares;
set
{
for (var i = 0; i < Components.Count && i < 9; ++i)
@ -75,19 +65,4 @@ namespace Server.Engines.ConPVP
}
}
}
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();
}
}
}

View file

@ -1,15 +1,18 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Text;
using ModernUO.Serialization;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
using Server.Targeting;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public partial class BRBomb : Item
{
public class BRBomb : Item
{
private readonly BRGame m_Game;
private readonly List<Mobile> m_Helpers;
@ -33,10 +36,6 @@ namespace Server.Engines.ConPVP
m_Timer.Start();
}
public BRBomb(Serial serial) : base(serial)
{
}
public override bool SkipSerialization => true;
public override string DefaultName => "da bomb";
@ -58,20 +57,6 @@ namespace Server.Engines.ConPVP
return null;
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void OnAdded(IEntity parent)
{
base.OnAdded(parent);
@ -846,11 +831,17 @@ namespace Server.Engines.ConPVP
}
}
}
}
}
public class BRGoal : BaseAddon
{
private bool m_North;
[SerializationGenerator(0, false)]
public partial class BRGoal : BaseAddon
{
[SerializableField(0)]
private bool _north;
[SerializableFieldChanged(0)]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void OnNorthChanged(bool oldValue, bool newValue) => Remake();
private BRTeamInfo m_Team;
@ -864,21 +855,6 @@ namespace Server.Engines.ConPVP
Remake();
}
public BRGoal(Serial serial) : base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public bool North
{
get => m_North;
set
{
m_North = value;
Remake();
}
}
public override string DefaultName => "Bombing Run Goal";
public override bool ShareHue => false;
@ -908,8 +884,9 @@ namespace Server.Engines.ConPVP
private void Remake()
{
foreach (var ac in Components)
for (var i = 0; i < Components.Count; i++)
{
var ac = Components[i];
ac.Addon = null;
ac.Delete();
}
@ -929,7 +906,7 @@ namespace Server.Engines.ConPVP
// Center Sparkle
AddComponent(new AddonComponent(0x375A), 0, 0, -1);
if (!m_North)
if (!_north)
{
// Pillars
AddComponent(new AddonComponent(0x0CE), 0, +1, -2);
@ -967,37 +944,6 @@ namespace Server.Engines.ConPVP
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(1); // version
writer.Write(m_North);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 1:
{
m_North = reader.ReadBool();
goto case 0;
}
case 0:
{
break;
}
}
Hue = 0x84C;
}
public override bool OnMoveOver(Mobile m)
{
if (!Visible)
@ -1027,21 +973,15 @@ namespace Server.Engines.ConPVP
m.Backpack.FindItemByType<BRBomb>()?.CheckScore(this, m, 7);
return true;
}
}
}
public sealed class BRBoard : Item
{
[SerializationGenerator(0, false)]
public sealed partial class BRBoard : Item
{
public BRTeamInfo m_TeamInfo;
[Constructible]
public BRBoard()
: base(7774) =>
Movable = false;
public BRBoard(Serial serial)
: base(serial)
{
}
public BRBoard() : base(7774) => Movable = false;
public override string DefaultName => "Scoreboard";
@ -1052,24 +992,10 @@ namespace Server.Engines.ConPVP
from.SendGump(new BRBoardGump(from, m_TeamInfo.Game));
}
}
}
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 BRBoardGump : Gump
{
public class BRBoardGump : Gump
{
private const int LabelColor32 = 0xFFFFFF;
private const int BlackColor32 = 0x000000;
@ -1223,10 +1149,10 @@ namespace Server.Engines.ConPVP
{
AddHtml(x, y, width, height, color == 0 ? text : text.Color(color));
}
}
}
public sealed class BRPlayerInfo : IRankedCTF, IComparable<BRPlayerInfo>
{
public sealed class BRPlayerInfo : IRankedCTF, IComparable<BRPlayerInfo>
{
private readonly BRTeamInfo m_TeamInfo;
private int m_Captures;
@ -1296,11 +1222,11 @@ namespace Server.Engines.ConPVP
}
}
}
}
}
[PropertyObject]
public sealed class BRTeamInfo : IRankedCTF, IComparable<BRTeamInfo>
{
[PropertyObject]
public sealed class BRTeamInfo : IRankedCTF, IComparable<BRTeamInfo>
{
private BRGoal m_Goal;
public BRTeamInfo(int teamID)
@ -1445,10 +1371,10 @@ namespace Server.Engines.ConPVP
return "...";
}
}
}
public sealed class BRController : EventController
{
public sealed class BRController : EventController
{
[Constructible]
public BRController()
{
@ -1542,10 +1468,10 @@ namespace Server.Engines.ConPVP
}
}
}
}
}
public sealed class BRGame : EventGame
{
public sealed class BRGame : EventGame
{
private BRBomb m_Bomb;
private TimerExecutionToken _finishTimerToken;
@ -1960,5 +1886,4 @@ namespace Server.Engines.ConPVP
_finishTimerToken.Cancel();
}
}
}

View file

@ -1,27 +1,22 @@
using System;
using System.Collections.Generic;
using System.Text;
using ModernUO.Serialization;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
using Server.Network;
using Server.Targeting;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public sealed partial class CTFBoard : Item
{
public sealed class CTFBoard : Item
{
public CTFTeamInfo m_TeamInfo;
[Constructible]
public CTFBoard()
: base(7774) =>
Movable = false;
public CTFBoard(Serial serial)
: base(serial)
{
}
public CTFBoard() : base(7774) => Movable = false;
public override string DefaultName => "scoreboard";
@ -32,24 +27,10 @@ namespace Server.Engines.ConPVP
from.SendGump(new CTFBoardGump(from, m_TeamInfo.Game));
}
}
}
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 CTFBoardGump : Gump
{
public class CTFBoardGump : Gump
{
private const int LabelColor32 = 0xFFFFFF;
private const int BlackColor32 = 0x000000;
@ -208,10 +189,11 @@ namespace Server.Engines.ConPVP
{
AddHtml(x, y, width, height, color == 0 ? text : text.Color(color));
}
}
}
public sealed class CTFFlag : Item
{
[SerializationGenerator(0, false)]
public sealed partial class CTFFlag : Item
{
public Mobile m_Fragger;
public DateTime m_FragTime;
@ -223,14 +205,7 @@ namespace Server.Engines.ConPVP
public CTFTeamInfo m_TeamInfo;
[Constructible]
public CTFFlag()
: base(5643) =>
Movable = false;
public CTFFlag(Serial serial)
: base(serial)
{
}
public CTFFlag() : base(5643) => Movable = false;
public override string DefaultName => "old people cookies";
@ -523,32 +498,18 @@ namespace Server.Engines.ConPVP
mob.SolidHueOverride = m_TeamInfo?.Game.GetColor(mob) ?? -1;
}
}
}
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 interface IRankedCTF
{
public interface IRankedCTF
{
int Kills { get; }
int Captures { get; }
int Score { get; }
string Name { get; }
}
}
public sealed class CTFPlayerInfo : IRankedCTF
{
public sealed class CTFPlayerInfo : IRankedCTF
{
private readonly CTFTeamInfo m_TeamInfo;
private int m_Captures;
@ -600,11 +561,11 @@ namespace Server.Engines.ConPVP
}
}
}
}
}
[PropertyObject]
public sealed class CTFTeamInfo : IRankedCTF
{
[PropertyObject]
public sealed class CTFTeamInfo : IRankedCTF
{
public CTFTeamInfo(int teamID)
{
TeamID = teamID;
@ -731,10 +692,10 @@ namespace Server.Engines.ConPVP
}
public override string ToString() => "...";
}
}
public sealed class CTFController : EventController
{
public sealed class CTFController : EventController
{
[Constructible]
public CTFController()
{
@ -850,10 +811,10 @@ namespace Server.Engines.ConPVP
Duration = TimeSpan.FromMinutes(30.0);
}
}
}
}
public sealed class CTFGame : EventGame
{
public sealed class CTFGame : EventGame
{
private TimerExecutionToken _finishTimerToken;
public CTFGame(CTFController controller, DuelContext context) : base(context) => Controller = controller;
@ -1309,5 +1270,4 @@ namespace Server.Engines.ConPVP
_finishTimerToken.Cancel();
}
}
}

View file

@ -1,25 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
using ModernUO.Serialization;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public sealed partial class DDBoard : Item
{
public sealed class DDBoard : Item
{
public DDTeamInfo m_TeamInfo;
[Constructible]
public DDBoard()
: base(7774) =>
Movable = false;
public DDBoard(Serial serial)
: base(serial)
{
}
public DDBoard() : base(7774) => Movable = false;
public override string DefaultName => "scoreboard";
@ -30,24 +25,10 @@ namespace Server.Engines.ConPVP
from.SendGump(new DDBoardGump(from, m_TeamInfo.Game));
}
}
}
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 DDBoardGump : Gump
{
public class DDBoardGump : Gump
{
private const int LabelColor32 = 0xFFFFFF;
private const int BlackColor32 = 0x000000;
@ -200,10 +181,10 @@ namespace Server.Engines.ConPVP
{
AddHtml(x, y, width, height, color == 0 ? text : text.Color(color));
}
}
}
public sealed class DDPlayerInfo : IRankedCTF
{
public sealed class DDPlayerInfo : IRankedCTF
{
private readonly DDTeamInfo m_TeamInfo;
private int m_Captures;
@ -255,11 +236,11 @@ namespace Server.Engines.ConPVP
}
}
}
}
}
[PropertyObject]
public sealed class DDTeamInfo : IRankedCTF
{
[PropertyObject]
public sealed class DDTeamInfo : IRankedCTF
{
public DDTeamInfo(int teamID)
{
TeamID = teamID;
@ -360,10 +341,10 @@ namespace Server.Engines.ConPVP
}
public override string ToString() => "...";
}
}
public sealed class DDController : EventController
{
public sealed class DDController : EventController
{
[Constructible]
public DDController()
{
@ -454,10 +435,10 @@ namespace Server.Engines.ConPVP
}
}
}
}
}
public sealed class DDGame : EventGame
{
public sealed class DDGame : EventGame
{
private int m_CapStage;
private bool m_Capturable = true;
@ -974,10 +955,11 @@ namespace Server.Engines.ConPVP
Controller.PointB.SetNonCaptureHue();
}
}
}
}
public class DDWayPoint : BaseAddon
{
[SerializationGenerator(0, false)]
public partial class DDWayPoint : BaseAddon
{
public const int UncapturableHue = 0x497;
public const int NonCapturedHue = 0x38A;
private DDGame m_Game;
@ -1005,10 +987,6 @@ namespace Server.Engines.ConPVP
SetUncapturableHue();
}
public DDWayPoint(Serial serial) : base(serial)
{
}
public override bool ShareHue => false;
public DDGame Game
@ -1041,20 +1019,6 @@ namespace Server.Engines.ConPVP
}
}
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 SetUncapturableHue()
{
for (var i = 0; i < Components.Count; i++)
@ -1123,29 +1087,11 @@ namespace Server.Engines.ConPVP
return true;
}
public class DDStep : AddonComponent
[SerializationGenerator(0, false)]
public partial class DDStep : AddonComponent
{
public DDStep(int itemID) : base(itemID) => Visible = true;
public DDStep(Serial serial) : base(serial)
{
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override bool OnMoveOver(Mobile m) => Addon.OnMoveOver(m);
}
}
}

View file

@ -1,41 +1,23 @@
using ModernUO.Serialization;
using Server.Gumps;
using Server.Items;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public abstract partial class EventController : Item
{
public abstract class EventController : Item
{
public EventController()
: base(0x1B7A)
public EventController() : base(0x1B7A)
{
Visible = false;
Movable = false;
}
public EventController(Serial serial)
: base(serial)
{
}
public abstract string Title { get; }
public abstract EventGame Construct(DuelContext dc);
public abstract string GetTeamName(int teamID);
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 void OnDoubleClick(Mobile from)
{
if (from.AccessLevel >= AccessLevel.GameMaster)
@ -43,10 +25,10 @@ namespace Server.Engines.ConPVP
from.SendGump(new PropertiesGump(from, this));
}
}
}
}
public abstract class EventGame
{
public abstract class EventGame
{
protected DuelContext m_Context;
public EventGame(DuelContext context) => m_Context = context;
@ -66,5 +48,4 @@ namespace Server.Engines.ConPVP
public virtual void OnStop()
{
}
}
}

View file

@ -1,22 +1,28 @@
using System;
using System.Collections.Generic;
using System.Text;
using ModernUO.Serialization;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public partial class HillOfTheKing : Item
{
public class HillOfTheKing : Item
{
private KHGame m_Game;
[SerializedCommandProperty(AccessLevel.GameMaster)]
private KingTimer m_KingTimer;
[EncodedInt]
[SerializableField(0)]
private int _scoreInterval;
[Constructible]
public HillOfTheKing()
: base(0x520)
public HillOfTheKing() : base(0x520)
{
ScoreInterval = 10;
m_Game = null;
King = null;
Movable = false;
@ -24,10 +30,6 @@ namespace Server.Engines.ConPVP
Name = "the hill";
}
public HillOfTheKing(Serial s) : base(s)
{
}
public Mobile King { get; private set; }
public KHGame Game
@ -44,36 +46,8 @@ namespace Server.Engines.ConPVP
}
}
[CommandProperty(AccessLevel.GameMaster)]
public int ScoreInterval { get; set; }
public int CapturesSoFar => m_KingTimer?.Captures ?? 0;
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 0:
{
ScoreInterval = reader.ReadEncodedInt();
break;
}
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.WriteEncodedInt(ScoreInterval);
}
private bool CanBeKing(Mobile m)
{
// Game running?
@ -272,41 +246,31 @@ namespace Server.Engines.ConPVP
}
}
}
}
[SerializationGenerator(0, false)]
public partial class KHBoard : Item
{
[SerializedCommandProperty(AccessLevel.GameMaster)]
[SerializableField(0)]
private KHController _controller;
[SerializableFieldChanged(0)]
private void OnControllerChanged(KHController oldValue, KHController newValue)
{
oldValue?.RemoveBoard(this);
newValue?.AddBoard(this);
}
public class KHBoard : Item
{
private KHController m_Controller;
public KHGame m_Game;
[Constructible]
public KHBoard()
: base(7774)
public KHBoard() : base(7774)
{
Name = "King of the Hill Scoreboard";
Movable = false;
}
public KHBoard(Serial serial)
: base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public KHController Controller
{
get => m_Controller;
set
{
if (m_Controller != value)
{
m_Controller?.RemoveBoard(this);
m_Controller = value;
m_Controller?.AddBoard(this);
}
}
}
public override void OnDoubleClick(Mobile from)
{
if (m_Game != null)
@ -318,35 +282,10 @@ namespace Server.Engines.ConPVP
from.SendMessage("There is no King of the Hill game in progress.");
}
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
writer.Write(m_Controller);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 0:
{
m_Controller = reader.ReadEntity<KHController>();
break;
}
}
}
}
public sealed class KHBoardGump : Gump
{
public sealed class KHBoardGump : Gump
{
private const int LabelColor32 = 0xFFFFFF;
private const int BlackColor32 = 0x000000;
@ -470,10 +409,10 @@ namespace Server.Engines.ConPVP
{
AddHtml(x, y, width, height, color == 0 ? text : text.Color(color));
}
}
}
public sealed class KHPlayerInfo : IRankedCTF, IComparable<KHPlayerInfo>
{
public sealed class KHPlayerInfo : IRankedCTF, IComparable<KHPlayerInfo>
{
private readonly KHTeamInfo m_TeamInfo;
private int m_Captures;
@ -537,11 +476,11 @@ namespace Server.Engines.ConPVP
}
}
}
}
}
[PropertyObject]
public sealed class KHTeamInfo : IRankedCTF, IComparable<KHTeamInfo>
{
[PropertyObject]
public sealed class KHTeamInfo : IRankedCTF, IComparable<KHTeamInfo>
{
public KHTeamInfo(int teamID)
{
TeamID = teamID;
@ -644,10 +583,10 @@ namespace Server.Engines.ConPVP
}
public override string ToString() => TeamName != null ? $"({Name}) ..." : "...";
}
}
public sealed class KHController : EventController
{
public sealed class KHController : EventController
{
private int m_ScoreInterval;
[Constructible]
@ -815,10 +754,10 @@ namespace Server.Engines.ConPVP
}
}
}
}
}
public sealed class KHGame : EventGame
{
public sealed class KHGame : EventGame
{
private TimerExecutionToken _finishTimerToken;
public KHGame(KHController controller, DuelContext context) : base(context) => Controller = controller;
@ -1256,5 +1195,4 @@ namespace Server.Engines.ConPVP
_finishTimerToken.Cancel();
}
}
}

View file

@ -1,13 +1,15 @@
using System.Collections.Generic;
using System.Text;
using ModernUO.Serialization;
using Server.Gumps;
using Server.Mobiles;
using Server.Network;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public partial class ArenasMoongate : Item
{
public class ArenasMoongate : Item
{
[Constructible]
public ArenasMoongate() : base(0x1FD4)
{
@ -15,27 +17,8 @@ namespace Server.Engines.ConPVP
Light = LightType.Circle300;
}
public ArenasMoongate(Serial serial) : base(serial)
{
}
public override string DefaultName => "arena moongate";
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();
Light = LightType.Circle300;
}
public bool UseGate(Mobile from)
{
if (DuelContext.CheckCombat(from))
@ -73,10 +56,10 @@ namespace Server.Engines.ConPVP
}
public override bool OnMoveOver(Mobile m) => !m.Player || UseGate(m);
}
}
public class ArenaGump : Gump
{
public class ArenaGump : Gump
{
private readonly List<Arena> m_Arenas;
private readonly Mobile m_From;
private readonly ArenasMoongate m_Gate;
@ -292,5 +275,4 @@ namespace Server.Engines.ConPVP
m_ColumnX += width;
}
}
}

View file

@ -1,49 +1,23 @@
using System;
using System.Collections.Generic;
using ModernUO.Serialization;
using Server.Gumps;
using Server.Network;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public partial class LadderItem : Item
{
public class LadderItem : Item
{
[SerializedCommandProperty(AccessLevel.GameMaster)]
[SerializableField(0)]
private LadderController _ladder;
[Constructible]
public LadderItem() : base(0x117F) => Movable = false;
public LadderItem(Serial serial) : base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public LadderController Ladder { get; set; }
public override string DefaultName => "1v1 leaderboard";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(1);
writer.Write(Ladder);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 1:
{
Ladder = reader.ReadEntity<LadderController>();
break;
}
}
}
public override void OnDoubleClick(Mobile from)
{
if (from.InRange(GetWorldLocation(), 2))
@ -60,10 +34,10 @@ namespace Server.Engines.ConPVP
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that
}
}
}
}
public class LadderGump : Gump
{
public class LadderGump : Gump
{
private readonly Ladder m_Ladder;
private readonly List<LadderEntry> m_List;
@ -255,5 +229,4 @@ namespace Server.Engines.ConPVP
m_ColumnX += width;
}
}
}

View file

@ -1,19 +1,18 @@
using ModernUO.Serialization;
using Server.Gumps;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public partial class TournamentBracketItem : Item
{
public class TournamentBracketItem : Item
{
[SerializableField(0)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private TournamentController _tournament;
[Constructible]
public TournamentBracketItem() : base(3774) => Movable = false;
public TournamentBracketItem(Serial serial) : base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public TournamentController Tournament { get; set; }
public override string DefaultName => "tournament bracket";
public override void OnDoubleClick(Mobile from)
@ -32,30 +31,4 @@ namespace Server.Engines.ConPVP
}
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
writer.Write(Tournament);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 0:
{
Tournament = reader.ReadEntity<TournamentController>();
break;
}
}
}
}
}

View file

@ -1,23 +1,20 @@
using System;
using ModernUO.Serialization;
using Server.Factions;
using Server.Mobiles;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public partial class TournamentRegistrar : Banker
{
public class TournamentRegistrar : Banker
{
[SerializedCommandProperty(AccessLevel.GameMaster)]
[SerializableField(0)]
private TournamentController _tournament;
[Constructible]
public TournamentRegistrar()
{
Timer.StartTimer(TimeSpan.FromSeconds(30.0), TimeSpan.FromSeconds(30.0), Announce_Callback);
}
public TournamentRegistrar(Serial serial) : base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public TournamentController Tournament { get; set; }
public TournamentRegistrar() =>
Timer.DelayCall(TimeSpan.FromSeconds(30.0), TimeSpan.FromSeconds(30.0), Announce_Callback);
private void Announce_Callback()
{
@ -78,31 +75,9 @@ namespace Server.Engines.ConPVP
m.EndAction(this);
}
public override void Serialize(IGenericWriter writer)
[AfterDeserialization]
private void AfterDeserialization()
{
base.Serialize(writer);
writer.Write(0);
writer.Write(Tournament);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 0:
{
Tournament = reader.ReadEntity<TournamentController>();
break;
}
}
Timer.StartTimer(TimeSpan.FromSeconds(30.0), TimeSpan.FromSeconds(30.0), Announce_Callback);
}
Timer.DelayCall(TimeSpan.FromSeconds(30.0), TimeSpan.FromSeconds(30.0), Announce_Callback);
}
}

View file

@ -1,25 +1,25 @@
using System.Collections.Generic;
using ModernUO.Serialization;
using Server.Factions;
using Server.Gumps;
using Server.Mobiles;
namespace Server.Engines.ConPVP
namespace Server.Engines.ConPVP;
[SerializationGenerator(0, false)]
public partial class TournamentSignupItem : Item
{
public class TournamentSignupItem : Item
{
[SerializedCommandProperty(AccessLevel.GameMaster)]
[SerializableField(0)]
private TournamentController _tournament;
[SerializedCommandProperty(AccessLevel.GameMaster)]
[SerializableField(1)]
private Mobile _registrar;
[Constructible]
public TournamentSignupItem() : base(4029) => Movable = false;
public TournamentSignupItem(Serial serial) : base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public TournamentController Tournament { get; set; }
[CommandProperty(AccessLevel.GameMaster)]
public Mobile Registrar { get; set; }
public override string DefaultName => "tournament signup book";
public override void OnDoubleClick(Mobile from)
@ -37,10 +37,7 @@ namespace Server.Engines.ConPVP
return;
}
if (Registrar != null)
{
Registrar.Direction = Registrar.GetDirectionTo(this);
}
Registrar?.Direction = Registrar.GetDirectionTo(this);
switch (tourney.Stage)
{
@ -165,32 +162,4 @@ namespace Server.Engines.ConPVP
}
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
writer.Write(Tournament);
writer.Write(Registrar);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 0:
{
Tournament = reader.ReadEntity<TournamentController>();
Registrar = reader.ReadEntity<Mobile>();
break;
}
}
}
}
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.ArenasMoongate"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.BRBoard"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.BRBomb"
}

View file

@ -0,0 +1,14 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.BRGoal",
"properties": [
{
"name": "North",
"type": "bool",
"rule": "PrimitiveTypeMigrationRule",
"ruleArguments": [
""
]
}
]
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.CTFBoard"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.CTFFlag"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.DDBoard"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.DDWayPoint.DDStep"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.DDWayPoint"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.DuelContext.ArenaMoongate"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.DuelContext.InternalWall"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.DuelTeleporterAddon"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.EventController"
}

View file

@ -0,0 +1,14 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.HillOfTheKing",
"properties": [
{
"name": "ScoreInterval",
"type": "int",
"rule": "PrimitiveTypeMigrationRule",
"ruleArguments": [
"EncodedInt"
]
}
]
}

View file

@ -0,0 +1,11 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.KHBoard",
"properties": [
{
"name": "Controller",
"type": "Server.Engines.ConPVP.KHController",
"rule": "SerializableInterfaceMigrationRule"
}
]
}

View file

@ -0,0 +1,11 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.LadderItem",
"properties": [
{
"name": "Ladder",
"type": "Server.Engines.ConPVP.LadderController",
"rule": "SerializableInterfaceMigrationRule"
}
]
}

View file

@ -0,0 +1,11 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.TournamentBracketItem",
"properties": [
{
"name": "Tournament",
"type": "Server.Engines.ConPVP.TournamentController",
"rule": "SerializableInterfaceMigrationRule"
}
]
}

View file

@ -0,0 +1,11 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.TournamentRegistrar",
"properties": [
{
"name": "Tournament",
"type": "Server.Engines.ConPVP.TournamentController",
"rule": "SerializableInterfaceMigrationRule"
}
]
}

View file

@ -0,0 +1,16 @@
{
"version": 0,
"type": "Server.Engines.ConPVP.TournamentSignupItem",
"properties": [
{
"name": "Tournament",
"type": "Server.Engines.ConPVP.TournamentController",
"rule": "SerializableInterfaceMigrationRule"
},
{
"name": "Registrar",
"type": "Server.Mobile",
"rule": "SerializableInterfaceMigrationRule"
}
]
}