Skip to content

Commit

Permalink
fix: Stages faction code for serialization conversion (#1835)
Browse files Browse the repository at this point in the history
  • Loading branch information
kamronbatman committed Jun 16, 2024
1 parent 20596e5 commit 221312b
Show file tree
Hide file tree
Showing 43 changed files with 5,244 additions and 5,374 deletions.
761 changes: 380 additions & 381 deletions Projects/UOContent/Engines/Factions/Core/Election.cs

Large diffs are not rendered by default.

2,150 changes: 1,062 additions & 1,088 deletions Projects/UOContent/Engines/Factions/Core/Faction.cs

Large diffs are not rendered by default.

209 changes: 104 additions & 105 deletions Projects/UOContent/Engines/Factions/Core/FactionItem.cs
Original file line number Diff line number Diff line change
@@ -1,154 +1,153 @@
using System;

namespace Server.Factions
namespace Server.Factions;

public interface IFactionItem
{
public interface IFactionItem
FactionItem FactionItemState { get; set; }
}

public class FactionItem
{
public static readonly TimeSpan ExpirationPeriod = TimeSpan.FromDays(21.0);

public FactionItem(Item item, Faction faction)
{
FactionItem FactionItemState { get; set; }
Item = item;
Faction = faction;
}

public class FactionItem
public FactionItem(IGenericReader reader, Faction faction)
{
public static readonly TimeSpan ExpirationPeriod = TimeSpan.FromDays(21.0);
var version = reader.ReadEncodedInt();

public FactionItem(Item item, Faction faction)
switch (version)
{
Item = item;
Faction = faction;
case 0:
{
Item = reader.ReadEntity<Item>();
Expiration = reader.ReadDateTime();
break;
}
}

public FactionItem(IGenericReader reader, Faction faction)
{
var version = reader.ReadEncodedInt();

switch (version)
{
case 0:
{
Item = reader.ReadEntity<Item>();
Expiration = reader.ReadDateTime();
break;
}
}

Faction = faction;
}
Faction = faction;
}

public Item Item { get; }
public Item Item { get; }

public Faction Faction { get; }
public Faction Faction { get; }

public DateTime Expiration { get; private set; }
public DateTime Expiration { get; private set; }

public bool HasExpired
public bool HasExpired
{
get
{
get
if (Item?.Deleted != false)
{
if (Item?.Deleted != false)
{
return true;
}

return Expiration != DateTime.MinValue && Core.Now >= Expiration;
return true;
}
}

public void StartExpiration()
{
Expiration = Core.Now + ExpirationPeriod;
return Expiration != DateTime.MinValue && Core.Now >= Expiration;
}
}

public void StartExpiration()
{
Expiration = Core.Now + ExpirationPeriod;
}

public void CheckAttach()
public void CheckAttach()
{
if (!HasExpired)
{
if (!HasExpired)
{
Attach();
}
else
{
Detach();
}
Attach();
}

public void Attach()
else
{
if (Item is IFactionItem item)
{
item.FactionItemState = this;
}

Faction?.State.FactionItems.Add(this);
Detach();
}
}

public void Detach()
public void Attach()
{
if (Item is IFactionItem item)
{
if (Item is IFactionItem item)
{
item.FactionItemState = null;
}

if (Faction?.State.FactionItems.Contains(this) == true)
{
Faction.State.FactionItems.Remove(this);
}
item.FactionItemState = this;
}

public void Serialize(IGenericWriter writer)
{
writer.WriteEncodedInt(0);
Faction?.State.FactionItems.Add(this);
}

writer.Write(Item);
writer.Write(Expiration);
public void Detach()
{
if (Item is IFactionItem item)
{
item.FactionItemState = null;
}

public static int GetMaxWearables(Mobile mob)
if (Faction?.State.FactionItems.Contains(this) == true)
{
var pl = PlayerState.Find(mob);

return pl == null ? 0 :
pl.Faction.IsCommander(mob) ? 9 : pl.Rank.MaxWearables;
Faction.State.FactionItems.Remove(this);
}
}

public static FactionItem Find(Item item)
{
if (item is IFactionItem factionItem)
{
var state = factionItem.FactionItemState;
public void Serialize(IGenericWriter writer)
{
writer.WriteEncodedInt(0);

if (state?.HasExpired == true)
{
state.Detach();
state = null;
}
writer.Write(Item);
writer.Write(Expiration);
}

return state;
}
public static int GetMaxWearables(Mobile mob)
{
var pl = PlayerState.Find(mob);

return null;
}
return pl == null ? 0 :
pl.Faction.IsCommander(mob) ? 9 : pl.Rank.MaxWearables;
}

public static Item Imbue(Item item, Faction faction, bool expire, int hue)
public static FactionItem Find(Item item)
{
if (item is IFactionItem factionItem)
{
if (item is not IFactionItem)
{
return item;
}

var state = Find(item);
var state = factionItem.FactionItemState;

if (state == null)
if (state?.HasExpired == true)
{
state = new FactionItem(item, faction);
state.Attach();
state.Detach();
state = null;
}

if (expire)
{
state.StartExpiration();
}
return state;
}

return null;
}

item.Hue = hue;
public static Item Imbue(Item item, Faction faction, bool expire, int hue)
{
if (item is not IFactionItem)
{
return item;
}

var state = Find(item);

if (state == null)
{
state = new FactionItem(item, faction);
state.Attach();
}

if (expire)
{
state.StartExpiration();
}

item.Hue = hue;
return item;
}
}

0 comments on commit 221312b

Please sign in to comment.