示例#1
0
        private void CommitPosition(IContext context, CommitCellSelectionMessage message)
        {
            var gameField = context.Get <ConquerGameField>();
            var model     = context.Get <CellItemModel>();
            var player    = context.Get <ConquerPlayerModel>();

            var turn     = player.TurnModel.Value;
            var cellInfo = model.CellInfo;

            var size   = new Vector2Int(cellInfo.Width, cellInfo.Height);
            var result = gameField.Validate(new RectInt(turn.SelectedCell.Value.Position, size), player.Id.Value);

            if (result.valid)
            {
                gameField.UpdateCellDataAtRange(result.rect, player.Id.Value);
                model.Fixed.Value  = true;
                model.Column.Value = result.rect.x;
                model.Row.Value    = result.rect.y;

                var cellPlaced = new CellActorPlacedMessage()
                {
                    Cell    = result.rect.min,
                    ActorId = model.CellId.Value,
                };
                context.Publish(cellPlaced);
            }
        }
 private void OnCellItemPlaced(IContext context, CellActorPlacedMessage message)
 {
     context.Publish(new EndOfTurnMessage());
 }