public void Execute()
        {
            if (matchStartTime == null)
            {
                matchStartTime = tickStartTimeStorage.GetTickStartTime();
                log.Info($"Установка времени старта матча {matchStartTime}");
            }

            float            matchTime        = (float)(tickStartTimeStorage.GetTickStartTime() - matchStartTime.Value).TotalSeconds;
            int              tickNumber       = serverSnapshotHistory.GetLastTickNumber() + 1;
            var              snapshot         = snapshotFactory.Create();
            SnapshotWithTime snapshotWithTime = new SnapshotWithTime(tickNumber, matchTime);

            snapshotWithTime.Modify(snapshot);
            serverSnapshotHistory.Add(snapshotWithTime);
        }
示例#2
0
        public void Execute()
        {
            timeMachine.SetActualGameState(serverSnapshotHistory.GetActualGameState());


            List <TimeTravelMap.Bucket> buckets = travelMap.RefillBuckets(contexts);

            for (int bucketIndex = 0; bucketIndex < buckets.Count; bucketIndex++)
            {
                TimeTravelMap.Bucket bucket = buckets[bucketIndex];
                ProcessBucket(bucket);
            }

            //В конце лагкомпенсации мы восстанавливаем физический мир
            //в исходное состояние
            int tickNumber = serverSnapshotHistory.GetLastTickNumber();

            timeMachine.TravelToTime(tickNumber);
        }