Пример #1
0
        /*
         * Алгоритм хода фигуры.
         * Принимаем шашку, которой необходимо сходить, и координаты клетки хода.
         * row < 8 и column < 8 (размеры поля)
         * Наше поле знает, как обновлять View при изменении модели поля(Active View)
         */

        public void Move(Checker checker, int row, int column)
        {
            if (checker == null)
            {
                return;
            }
            if (checker.Color == CurrentStepColor)
            {
                var result = SelectedChecker.TryToMove(row, column);

                if (result == MovesType.Attack)
                {
                    if (!checker.CanEat().res)
                    {
                        CurrentStepColor = checker.Color == CheckerColor.White ? CheckerColor.Black : CheckerColor.White;
                    }
                    else
                    {
                        CurrentStepColor = checker.Color;
                    }
                }
                else if (result == MovesType.Default)
                {
                    CurrentStepColor = checker.Color == CheckerColor.White ? CheckerColor.Black : CheckerColor.White;
                }
                if (result != MovesType.None)
                {
                    SelectedChecker = Board.Tiles[row, column].Checker;
                    FieldUpdated?.Invoke();
                }
            }
        }
Пример #2
0
 public void On(FieldUpdated @event, EnvelopeHeaders headers)
 {
     UpdateSchema(@event, headers, s =>
     {
         s.SchemaDef = s.SchemaDef.Apply(@event);
     });
 }
Пример #3
0
 public static void Apply(this Schema schema, FieldUpdated @event)
 {
     if (schema.FieldsById.TryGetValue(@event.FieldId.Id, out var field))
     {
         field.Update(@event.Properties);
     }
 }
 protected Task On(FieldUpdated @event, EnvelopeHeaders headers)
 {
     return(UpdateSchemaAsync(@event, headers, s =>
     {
         s.SchemaDef.Apply(@event);
     }));
 }
Пример #5
0
 private void RemoveShippingHandlers()
 {
     RowInserted.RemoveHandler <POOrder>(POOrder_RowInserted);
     FieldUpdated.RemoveHandler <POOrder.shipDestType>(POOrder_ShipDestType_FieldUpdated);
     FieldUpdated.RemoveHandler <POOrder.siteID>(POOrder_SiteID_FieldUpdated);
     FieldUpdated.RemoveHandler <POOrder.shipToLocationID>(POOrder_ShipToLocationID_FieldUpdated);
 }
Пример #6
0
 private void ClearCell(int x, int y)
 {
     if (IsCellFilled(x, y))
     {
         field[x, y] = noneColor;
     }
     buffer.Clear();
     FieldUpdated?.Invoke();
 }
 public DiscrepancyEnqGraphBase()
 {
     Rows.Cache.AllowDelete = false;
     Rows.Cache.AllowInsert = false;
     Rows.Cache.AllowUpdate = false;
     RowUpdated.AddHandler(typeof(TEnqFilter), FilterRowUpdated);
     FieldUpdated.AddHandler(typeof(TEnqFilter), typeof(DiscrepancyEnqFilter.periodFrom).Name, PeriodFromFieldUpdated);
     FieldUpdated.AddHandler(typeof(TEnqFilter), typeof(DiscrepancyEnqFilter.periodTo).Name, PeriodToFieldUpdated);
 }
Пример #8
0
        public bool Deploy(Point point, Color color)
        {
            if (color == noneColor || !IsCellFree(point))
            {
                return(false);
            }

            field[point.X, point.Y] = color;
            buffer.Clear();
            FieldUpdated?.Invoke();
            return(true);
        }
Пример #9
0
        /// <inheritdoc/>
        public void GameHasEnded(WcfGameInfo gameInfo, WcfChessPoint from, WcfChessPoint to)
        {
            var args = new FieldInfoArgs(
                gameInfo.GameField,
                gameInfo.TurnColor,
                @from.ToBusiness(),
                to.ToBusiness(),
                gameInfo.PlayerColor,
                null);

            FieldUpdated?.Invoke(this, args);
            GameEnded?.Invoke(this, new GameEndedArgs(gameInfo.WinnerColor));
        }
Пример #10
0
        /// <inheritdoc/>
        public void GameFieldUpdated(
            ChessPiece[][] virtualField,
            PlayerColor turnColor,
            WcfChessPoint from,
            WcfChessPoint to,
            PlayerColor playerColor,
            PlayerColor?checkedPlayer)
        {
            var args = new FieldInfoArgs(
                virtualField,
                turnColor,
                from.ToBusiness(),
                to.ToBusiness(),
                playerColor,
                checkedPlayer);

            FieldUpdated?.Invoke(
                this,
                args);
        }
Пример #11
0
 protected void On(FieldUpdated @event)
 {
     SchemaDef = SchemaDef.UpdateField(@event.FieldId.Id, @event.Properties, @event.ParentFieldId?.Id);
 }
Пример #12
0
 public void LoadFromState(GameState state)
 {
     field = state.Field;
     FieldUpdated?.Invoke();
 }
Пример #13
0
 public static Schema Dispatch(FieldUpdated @event, Schema schema)
 {
     return(schema.UpdateField(@event.FieldId.Id, @event.Properties));
 }
Пример #14
0
 protected void On(FieldUpdated @event)
 {
     schema = SchemaEventDispatcher.Dispatch(@event, schema);
 }
 protected Task On(FieldUpdated @event, EnvelopeHeaders headers)
 {
     return(UpdateSchema(@event, headers, s => SchemaEventDispatcher.Dispatch(@event, s)));
 }
Пример #16
0
 protected void On(FieldUpdated @event)
 {
     schema = schema.Apply(@event);
 }
Пример #17
0
 protected override void MarkCell(int x, int y, Player player)
 {
     base.MarkCell(x, y, player);
     FieldUpdated?.Invoke(GetField());
 }
Пример #18
0
 protected void On(FieldUpdated @event, FieldRegistry registry)
 {
     SchemaDef = SchemaDef.UpdateField(@event.FieldId.Id, @event.Properties);
 }
Пример #19
0
 public static Schema Apply(this Schema schema, FieldUpdated @event)
 {
     return(schema.UpdateField(@event.FieldId.Id, @event.Properties));
 }