using Supercell.GUT.Titan.Encoding; using Supercell.GUT.Titan.Encoding.Streamed; namespace Supercell.GUT.Logic.Base; public abstract class LogicBase { public int LogicDataVersion { get; set; } public LogicBase(int logicDataVersion) { this.LogicDataVersion = logicDataVersion; } public virtual void Encode(ChecksumEncoder checksumEncoder) { checksumEncoder.WriteInt(this.LogicDataVersion); } public virtual void Decode(ByteStream byteStream) { this.LogicDataVersion = byteStream.ReadInt(); } public virtual void Destruct() { this.LogicDataVersion = 0; } public virtual void Copy(LogicBase logicBase) { this.Destruct(); ByteStream byteStream = new ByteStream(0); logicBase.Encode(byteStream); byteStream.ResetOffset(); this.Decode(byteStream); byteStream.Destruct(); } }