コード例 #1
0
        private void PutHandInSlotTryData([NotNull] DataSlot slotLeftTop)
        {
            if (slotLeftTop.DataInventory == null)
            {
                throw GetExceptionUnBindInventoryComponent();
            }

            var entitySource  = HandData.EntitySource;
            var amountWantPut = HandData.DataEntityHand.Amount;

            HandData.ReturnAmountInSource();
            var slotLeftTopPrevious = DatabaseReadOnly.GetSlotOrNull(entitySource);

            if (slotLeftTopPrevious != slotLeftTop)
            {
                var command = Commands.CreateForHand <PutCommand>()
                              .EnterData(new PutInputData(entitySource, slotLeftTop, amountWantPut));
                var success = command.ExecuteTry();

                if (!success)
                {
                    var noValidOnlyForFilters = FactoryCommandNoValidOnlyForFilters.Create(command);

                    // event
                    if (noValidOnlyForFilters.IsCommandNoValidOnlyForFilters)
                    {
                        NoValidFiltersEvent.Invoke(noValidOnlyForFilters.GetImpossibleOnlyForThisFilters());
                    }
                }
            }
            HandData.Clear();
            StatusWasChanged.Invoke();
        }
コード例 #2
0
        private void SetButtonsActions()
        {
            if (!_holder.SaveButton.HasOnClickListeners)
            {
                _holder.SaveButton.Click += (s, e) =>
                {
                    SaveButtonClick?.Invoke(_holder.NameEditText.Text, _holder.LastnameEditText.Text, _holder.StatusEditText.Text);
                };
            }

            if (!_holder.CancelButton.HasOnClickListeners)
            {
                _holder.CancelButton.Click += (s, e) =>
                {
                    CancelButtonClick?.Invoke();
                };
            }

            _holder.NameEditText.TextChanged += (sender, args) =>
            {
                _iSNameChahged = true;
            };
            _holder.NameEditText.FocusChange += (sender, args) =>
            {
                if (_iSNameChahged && !args.HasFocus)
                {
                    NameWasChanged?.Invoke(_holder.NameEditText.Text);
                }
            };

            _holder.LastnameEditText.TextChanged += (sender, args) =>
            {
                _iSLastNameChahged = true;
            };
            _holder.LastnameEditText.FocusChange += (sender, args) =>
            {
                if (_iSLastNameChahged && !args.HasFocus)
                {
                    LastNameWasChanged?.Invoke(_holder.LastnameEditText.Text);
                }
            };

            _holder.StatusEditText.TextChanged += (sender, args) =>
            {
                _iSStatusChahged = true;
            };
            _holder.StatusEditText.FocusChange += (sender, args) =>
            {
                if (_iSStatusChahged && !args.HasFocus)
                {
                    StatusWasChanged?.Invoke(_holder.StatusEditText.Text);
                }
            };
        }
コード例 #3
0
        public void RemoveEntityInHand()
        {
            var entity = HandData.EntitySource;
            var amount = HandData.AmountInHand;

            UndoTakeEntityInHand();
            var removeCommand = Commands.CreateForHand <RemoveCommand>().EnterData(new RemoveInputData(entity, amount));

            removeCommand.ExecuteTry();
            DestroyView();
            StatusWasChanged.Invoke();
        }
コード例 #4
0
        public void AddAmountInHand(int amountAdd)
        {
            if (amountAdd <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(amountAdd));
            }
            if (HandData.IsEmpty)
            {
                throw new Exception("Hand is empty!");
            }
            if (HandData.EntitySource.Amount == 0)
            {
                return;
            }

            var canTake = Math.Min(HandData.EntitySource.Amount, amountAdd);

            HandData.EntitySource.Amount   -= canTake;
            HandData.DataEntityHand.Amount += canTake;

            StatusWasChanged.Invoke();
        }
コード例 #5
0
 private void UndoTakeEntityInHandData()
 {
     HandData.ReturnAmountInSource();
     HandData.Clear();
     StatusWasChanged.Invoke();
 }
コード例 #6
0
 public void UndoTakeEntityInHand()
 {
     UndoTakeEntityInHandData();
     DestroyView();
     StatusWasChanged.Invoke();
 }
コード例 #7
0
 partial void _statusTextField_DidEnd(UITextField sender)
 {
     StatusWasChanged?.Invoke(_statusTextField.Text);
 }