예제 #1
0
        public IStateSnippet GetState()
        {
            var state = new PlayerControllerStateSnippet
            {
                Clothes    = this.Clothes.ToList().ConvertAll(x => x.Id),
                Appliances = this.Appliances.ConvertAll(x => new MedicalBodyApplianceSnippet {
                    BodyPart = x.BodyPart, ItemId = x.Item.Id
                }),

                WarmthLevelTimeoutCounter  = _warmthLevelTimeoutCounter,
                WetnessLevelTimeoutCounter = _wetnessLevelTimeoutCounter,
                WarmthLerpTarget           = _warmthLerpTarget,
                WarmthLerpCounter          = _warmthLerpCounter,
                WarmthLerpBase             = _warmthLerpBase,
                SleepingCounter            = _sleepingCounter,
                SleepDurationGameHours     = _sleepDurationGameHours,
                SleepHealthCheckPeriod     = _sleepHealthCheckPeriod,
                SleepHealthChecksLeft      = _sleepHealthChecksLeft,
                SleepStartTime             = _sleepStartTime,
                FatigueValueAfterSleep     = _fatigueValueAfterSleep
            };

            state.ChildStates.Add("WetnessController", _wetnessController.GetState());

            return(state);
        }
예제 #2
0
        public static void RestoreState(IGameController gc, ZaraEngine.StateManaging.ZaraEngineState state, Action <DateTime> restoreWorldTime)
        {
            restoreWorldTime?.Invoke(state.WorldTime.ToDateTime());

            var inventoryData = new InventoryControllerStateSnippet(state.Inventory);
            var playerData    = new PlayerControllerStateSnippet(state.Body);

            playerData.SetInventoryData(inventoryData);

            gc.Health.RestoreState(new HealthControllerStateSnippet(state.Health));
            gc.Inventory.RestoreState(inventoryData);
            gc.Body.RestoreState(playerData);
        }