public Constructor(GameStateSlot prototype, string id, GameStateMap state = null,
                    OnClicked onClicked = null, OnDeleteClicked onDeleteClicked = null)
     : base(prototype, id, onClicked)
 {
     ConstructedSlot.State = state;
     ConstructedSlot.onDeleteClickedAction = onDeleteClicked;
 }
示例#2
0
        protected override async UniTask DeserializeState(GameStateMap stateMap)
        {
            // Invoked when the game is loaded.

            await base.DeserializeState(stateMap);

            RemoveAllItems();

            var state = stateMap.GetState <GameState>();

            if (state is null)
            {
                return;                // empty state, do nothing
            }
            // Restore UI state.
            if (state.Slots?.Length > 0)
            {
                var tasks = new List <UniTask>();
                for (int i = 0; i < state.Slots.Length; i++)
                {
                    if (!string.IsNullOrEmpty(state.Slots[i].ItemId))
                    {
                        tasks.Add(AddItemAtAsync(state.Slots[i].ItemId, i, state.Slots[i].StackCount));
                    }
                }
                await UniTask.WhenAll(tasks);
            }
            content.transform.position = state.Position;
        }
示例#3
0
        protected override async UniTask DeserializeState(GameStateMap stateMap)
        {
            await base.DeserializeState(stateMap);

            var state = stateMap.GetState <GameState>(name);

            if (state is null)
            {
                return;
            }

            var existingButtonIds = choiceButtons.Select(b => b.ChoiceState.Id).ToList();

            foreach (var buttonId in existingButtonIds)
            {
                if (state.Buttons.All(s => s.Id != buttonId))
                {
                    RemoveChoiceButton(buttonId);
                }
            }

            foreach (var buttonState in state.Buttons)
            {
                if (choiceButtons.All(b => b.ChoiceState != buttonState))
                {
                    AddChoiceButton(buttonState);
                }
            }

            removeAllButtonsPending = state.RemoveAllButtonsPending;
        }
        private UniTask DeserializeState(GameStateMap stateMap)
        {
            var state = stateMap.GetState <GameState>(name);

            if (state is null)
            {
                return(UniTask.CompletedTask);
            }

            var existingButtonIds = choiceButtons.Select(b => b.ChoiceState.Id).ToList();

            foreach (var buttonId in existingButtonIds)
            {
                if (!state.Buttons.Any(s => s.Id == buttonId))
                {
                    RemoveChoiceButton(buttonId);
                }
            }

            foreach (var buttonState in state.Buttons)
            {
                if (!choiceButtons.Any(b => b.ChoiceState == buttonState))
                {
                    AddChoiceButton(buttonState);
                }
            }

            removeAllButtonsPending = state.RemoveAllButtonsPending;

            return(UniTask.CompletedTask);
        }
        public virtual void SetEmptyState()
        {
            deleteButton.gameObject.SetActive(false);
            titleText.text         = $"{NumberInGrid}. {EmptySlotLabel}";
            thumbnailImage.texture = emptySlotThambnail;

            State = null;
        }
示例#6
0
        protected override void SerializeState(GameStateMap stateMap)
        {
            base.SerializeState(stateMap);
            var state = new GameState {
                Messages = messages.TakeLast(SaveCapacity).Select(m => m.GetState()).ToList()
            };

            stateMap.SetState(state);
        }
        private void SerializeState(GameStateMap stateMap)
        {
            var state = new GameState()
            {
                RemoveAllButtonsPending = removeAllButtonsPending,
                Buttons = choiceButtons.Select(b => b.ChoiceState).ToList()
            };

            stateMap.SetState(state, name);
        }
        private Task SerializeState(GameStateMap stateMap)
        {
            var state = new GameState()
            {
                RemoveAllButtonsPending = removeAllButtonsPending
            };

            stateMap.SetState(state, name);
            return(Task.CompletedTask);
        }
示例#9
0
 protected virtual void SerializeState(GameStateMap stateMap)
 {
     if (SaveVisibilityState)
     {
         var state = new GameState {
             Visible = Visible
         };
         stateMap.SetState(state, name);
     }
 }
示例#10
0
        private Task DeserializeState(GameStateMap stateMap)
        {
            var state = stateMap.GetState <GameState>(name);

            if (state is null)
            {
                return(Task.CompletedTask);
            }
            removeAllButtonsPending = state.RemoveAllButtonsPending;
            return(Task.CompletedTask);
        }
        protected virtual void SerializeState(GameStateMap stateMap)
        {
            var state = new GameState()
            {
                Visible         = Visible,
                HideOnClick     = hideOnClick,
                AllowedSamplers = allowedSamplers
            };

            stateMap.SetState(state, name);
        }
示例#12
0
        protected override void SerializeState(GameStateMap stateMap)
        {
            base.SerializeState(stateMap);

            var state = new GameState {
                RemoveAllButtonsPending = removeAllButtonsPending,
                Buttons = choiceButtons.Select(b => b.ChoiceState).ToList()
            };

            stateMap.SetState(state, name);
        }
示例#13
0
        protected override void SerializeState(GameStateMap stateMap)
        {
            base.SerializeState(stateMap);

            var state = new GameState()
            {
                CurrentDate = varMan.GetVariableValue(date)
            };

            stateMap.SetState(state);
        }
示例#14
0
        protected override async Task SerializeState(GameStateMap stateMap)
        {
            await base.SerializeState(stateMap);

            var state = new GameState()
            {
                Messages = messageStack.Take(saveCapacity).Select(m => m.GetState()).Reverse().ToList()
            };

            stateMap.SetState(state);
        }
示例#15
0
 protected virtual Task SerializeState(GameStateMap stateMap)
 {
     if (saveVisibilityState)
     {
         var state = new GameState()
         {
             IsVisible = IsVisible
         };
         stateMap.SetState(state, name);
     }
     return(Task.CompletedTask);
 }
示例#16
0
 protected virtual Task DeserializeState(GameStateMap stateMap)
 {
     if (saveVisibilityState)
     {
         var state = stateMap.GetState <GameState>(name);
         if (state is null)
         {
             return(Task.CompletedTask);
         }
         IsVisible = state.IsVisible;
     }
     return(Task.CompletedTask);
 }
示例#17
0
        protected override void SerializeState(GameStateMap stateMap)
        {
            base.SerializeState(stateMap);

            var state = new GameState {
                VariableName   = variableName,
                SummaryText    = summaryText.text,
                InputFieldText = inputField.text,
                PlayOnSubmit   = playOnSubmit
            };

            stateMap.SetState(state);
        }
示例#18
0
        public virtual void SetState(GameStateMap state)
        {
            if (state is null)
            {
                SetEmptyState(); return;
            }

            deleteButton.gameObject.SetActive(true);
            titleText.text         = $"{NumberInGrid}. {state.SaveDateTime:yyyy-MM-dd HH:mm:ss}";
            thumbnailImage.texture = state.Thumbnail;

            State = state;
        }
示例#19
0
        protected override void SerializeState(GameStateMap stateMap)
        {
            // Invoked when the game is saved.

            base.SerializeState(stateMap);

            // Serialize UI state.
            var state = new GameState {
                Position = content.transform.position,
                Slots    = grid.InventorySlots.Select(s => s.GetSate()).ToArray()
            };

            stateMap.SetState(state);
        }
示例#20
0
        protected override async UniTask DeserializeState(GameStateMap stateMap)
        {
            await base.DeserializeState(stateMap);

            var state = stateMap.GetState <GameState>();

            if (state is null)
            {
                return;
            }

            variableName = state.VariableName;
            SetSummary(state.SummaryText);
            InputField.text = state.InputFieldText;
            playOnSubmit    = state.PlayOnSubmit;
        }
示例#21
0
        protected override UniTask DeserializeState(GameStateMap stateMap)
        {
            base.DeserializeState(stateMap);

            var state = stateMap.GetState <GameState>();

            if (state is null)
            {
                return(UniTask.CompletedTask);
            }

            varMan.SetVariableValue(date, state.CurrentDate);
            ConvertDate();
            UpdateDate();

            return(UniTask.CompletedTask);
        }
        protected override async UniTask DeserializeState(GameStateMap stateMap)
        {
            await base.DeserializeState(stateMap);

            var state = stateMap.GetState <GameState>();

            if (state is null)
            {
                return;
            }

            variableName     = state.VariableName;
            summaryText.text = state.SummaryText;
            summaryText.gameObject.SetActive(!string.IsNullOrWhiteSpace(state.SummaryText));
            inputField.text = state.InputFieldText;
            playOnSubmit    = state.PlayOnSubmit;
        }
        protected virtual UniTask DeserializeState(GameStateMap stateMap)
        {
            var state = stateMap.GetState <GameState>(name);

            if (state is null)
            {
                return(UniTask.CompletedTask);
            }

            Hide();

            if (state.Visible) // TODO: Serialize onClick action.
            {
                Show(state.HideOnClick, null, state.AllowedSamplers);
            }

            return(UniTask.CompletedTask);
        }
示例#24
0
        public virtual void Bind(int slotNumber, GameStateMap state)
        {
            State      = state;
            SlotNumber = slotNumber;

            if (state is null)
            {
                DeleteButton.gameObject.SetActive(false);
                SetTitleText(titleTemplate.Replace("{N}", SlotNumber.ToString()).Replace("{D}", EmptySlotLabel));
                ThumbnailImage.texture = EmptySlotThumbnail;
            }
            else
            {
                DeleteButton.gameObject.SetActive(true);
                var date = state.SaveDateTime.ToString(dateFormat);
                SetTitleText(titleTemplate.Replace("{N}", SlotNumber.ToString()).Replace("{D}", date));
                ThumbnailImage.texture = state.Thumbnail;
            }
        }
示例#25
0
        protected override async Task DeserializeState(GameStateMap stateMap)
        {
            await base.DeserializeState(stateMap);

            Clear();

            var state = stateMap.GetState <GameState>();

            if (state is null)
            {
                return;
            }

            if (state.Messages?.Count > 0)
            {
                foreach (var messageState in state.Messages)
                {
                    SpawnMessage(messageState.MessageText, messageState.ActorNameText, messageState.VoiceClipNames);
                }
            }
        }
示例#26
0
 public virtual void BindSlot(int slotNumber, GameStateMap state)
 {
     Slots.FirstOrDefault(s => s.SlotNumber == slotNumber)?.Bind(slotNumber, state);
 }