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; }