Exemple #1
0
        private void UpdateSelectedCell(IContext context, Camera camera,
                                        ConquerGameField gameField, ConquerPlayerModel playerModel)
        {
            var mousePosition = Input.mousePosition;
            var ray           = camera.ScreenPointToRay(mousePosition);
            var hitResult     = Physics.Raycast(ray, out var hit, _layerMask);

            if (!hitResult || gameField.transform != hit.transform)
            {
                return;
            }

            var turn = playerModel.TurnModel.Value;
            var cell = gameField.GetCell(hit.point);

            if (cell == null)
            {
                return;
            }

            turn.SelectedCell.Value = cell;
            turn.GameFieldHit.Value = hit;

            var message = new InputUnderCellSelectedMessage()
            {
                Hit  = hit,
                Cell = cell,
            };

            context.Publish(message);
        }
        protected override IEnumerator ExecuteState(IContext context)
        {
            var gameField = context.Get <ConquerGameField>();

            var gameModel = new ConquerGameData(_fieldInfo);

            gameField.Initialize(gameModel.FieldModel);

            var playerModel      = new ConquerPlayerModel();
            var fieldCellFactory = new GameFieldCellFactory(_fieldInfo.CellsMap);

            var turn = playerModel.TurnModel.Value;

            turn.SelectedCell.Value = gameField.GetCell(0, 0);

            context.Add <IGameFieldCellFactory>(fieldCellFactory);
            context.Add(_fieldInfo);
            context.Add(playerModel);
            context.Add(gameModel);

            OutputContext.Add(context);

            yield break;
        }