using System; namespace ET.Client { [FriendOf(typeof(ReplayUpdater))] public static class ReplayComponentSystem { [ObjectSystem] public class AwakeSystem: AwakeSystem { protected override void Awake(ReplayUpdater self, Record record) { self.Record = record; self.GetParent().Init(self.Record.UnitInfos, TimeHelper.ServerFrameTime()); } } [ObjectSystem] public class UpdateSystem: UpdateSystem { protected override void Update(ReplayUpdater self) { self.Update(); } } private static void Update(this ReplayUpdater self) { Room room = self.GetParent(); long timeNow = TimeHelper.ServerFrameTime(); if (timeNow < room.FixedTimeCounter.FrameTime(room.AuthorityFrame + 1)) { return; } ++room.AuthorityFrame; OneFrameInputs oneFrameInputs = self.Record.FrameInputs[room.AuthorityFrame]; room.Update(oneFrameInputs, room.AuthorityFrame); } } }