public static void PutBlock(PlayerModel player, BlockModel block, CellPosition targetCell) { block.Put(targetCell); player.UseBlock(block.Id); var occupyCells = block.OccupyCells; var cellModels = Locator.CellManager.Occupy(occupyCells); var selfPlayer = Locator.PlayerManager.GetPlayer(GameTypes.PlayerType.SELF); var enemyPlayer = Locator.PlayerManager.GetPlayer(GameTypes.PlayerType.ENEMY); Locator.InGamePresenter.BlockPresenter.PutBlock(player.PlayerType, block); player.SetBlocks(new List <BlockModel>() { BlockCreator.GetRandomBlock(block.BlockSizeType) }); UpdatePlayerBlocks(); foreach (var cellModel in cellModels) { if (cellModel.HasSelfTreasure) { selfPlayer.DecreaseHp(); Locator.OutGamePresenter.BoardUIPresenter.DisappearLife(cellModel.SelfTreasureId); } if (cellModel.HasEnemyTreasure) { enemyPlayer.DecreaseHp(); Locator.OutGamePresenter.BoardUIPresenter.DisappearLife(cellModel.EnemyTreasureId); } } { var viewModel = new ViewModel.PlayerViewModel(selfPlayer); Locator.OutGamePresenter.PlayerUIPresenter.UpdatePlayer(viewModel); } { var viewModel = new ViewModel.PlayerViewModel(enemyPlayer); Locator.OutGamePresenter.PlayerUIPresenter.UpdatePlayer(viewModel); } Locator.TurnManager.FinishTurn(player.PlayerType); }