void BaseCloseStrike(List <Player> baseList, Enemy thisEnemy) { if (thisEnemy.currentVigor == emptyVigor) { return; } foreach (var player in baseList) { if (_areaCheck.CanSee(player, thisEnemy)) { var playNearNode = _areaCheck.NearNode(player); var shortNode = ShortNode(GameUtility.Coordinate(thisEnemy.transform.position), playNearNode); if (shortNode != null) { StartCoroutine(AttackClose(player, thisEnemy, shortNode)); } thisEnemy.currentVigor = emptyVigor; break; } } }
void MoveRangeStrike(List <Player> moveList, Enemy thisEnemy) { if (thisEnemy.currentVigor == emptyVigor) { return; } Player targetPlayer = null; TileNode targetTileNode = null; // Check Player and TileNode foreach (var player in moveList) { var tileList = _gameManager.areaCheck.ShootTileList(player, thisEnemy); GameUtility.ShuffleList(tileList); foreach (var node in tileList) { if (_areaCheck.CanMove(thisEnemy, node)) { if (_areaCheck.CanRange(player, node)) { targetPlayer = player; targetTileNode = node; break; } } } } if (targetPlayer != null && targetTileNode != null) { print("ShootRange"); thisEnemy.currentVigor = emptyVigor; StartCoroutine(ShootRange(targetPlayer, targetTileNode, thisEnemy)); } }
IEnumerator CloseSelectEnemy(List <Enemy> currentEnemyList, float farFrom = 2f) { StartAllEnemy(); GameUtility.ShuffleList(currentEnemyList); var enemy = currentEnemyList[0]; animator.SetTrigger(BaseAttack); transform.LookAt(enemy.transform); if (enemy != currentEnemyList[0]) { _cameraController.RotateButton(1); } StartCoroutine(WaitCloseSkill(enemy, farFrom)); while (giveHit == GiveHit.GiveHit) { yield return(null); } var victory = _gameManager.CheckVictory(); EndAllEnemy(); while (enemy.getHit == GetHit.GetHit) { yield return(null); } if (!victory) { CheckPlayerTurn(); } }
public void ResetBoundary() { GameUtility.ResetObjects(boundary, _gameManager.holder); }
IEnumerator StartEnemies() { currentEnemy = null; GameUtility.ShuffleList(_gameManager.activeEnemyList); var gameOver = false; foreach (var thisEnemy in _gameManager.activeEnemyList.ToList()) { currentEnemy = thisEnemy; print("Current enemy is " + currentEnemy.name); var doSomething = this.currentEnemy.baseVigor; var something = doSomething; var oneMore = new WaitUntil(() => this.currentEnemy.currentVigor < something); if (currentEnemy.characterType == CharacterType.SwordMaster) { var baseList = _areaCheck.BaseList(currentEnemy); var doubleList = _areaCheck.DoubleList(currentEnemy, baseList); print(currentEnemy + " base count : " + baseList.Count + ", double count : " + doubleList.Count); // hit if (baseList.Count != emptyCount && currentEnemy.currentVigor >= halfVigor) { GameUtility.ShuffleList(baseList); BaseCloseStrike(baseList, currentEnemy); if (currentEnemy.currentVigor >= fullVigor) { BaseCloseObstacle(baseList, currentEnemy); } } else if (doubleList.Count != emptyCount && currentEnemy.currentVigor >= fullVigor) { DoubleCloseStrike(doubleList, currentEnemy); if (currentEnemy.currentVigor >= fullVigor) { DoubleCloseObstacle(doubleList, currentEnemy); } } // chase if (currentEnemy.currentVigor >= fullVigor) { var chaseList = _areaCheck.ChasePlayerList(_gameManager.activePlayerList, currentEnemy); print(currentEnemy + " chase count : " + chaseList.Count); GameUtility.ShuffleList(chaseList); ChaseCloseStrike(chaseList, currentEnemy); } // protect friends if (currentEnemy.currentVigor >= fullVigor) { GoNear(currentEnemy); } RandomBase(currentEnemy); currentEnemy.currentVigor = emptyVigor; } else if (currentEnemy.characterType == CharacterType.Ranger) { var doubleList = _areaCheck.DoubleList(currentEnemy); var moveList = _areaCheck.ShootPlayerList(_gameManager.activePlayerList, currentEnemy); print(currentEnemy + " range count : " + doubleList.Count + ", move and shoot count : " + moveList.Count); if (doubleList.Count != emptyCount && currentEnemy.currentVigor >= halfVigor) { GameUtility.ShuffleList(doubleList); DoubleRangeStrike(doubleList, currentEnemy); } if (moveList.Count != emptyCount && currentEnemy.currentVigor >= fullVigor) { GameUtility.ShuffleList(moveList); MoveRangeStrike(moveList, currentEnemy); } else if (currentEnemy.currentVigor >= halfVigor) { GoNear(currentEnemy); } RandomBase(currentEnemy); currentEnemy.currentVigor = emptyVigor; } // if you make skill set, it'll need to change var condition = new WaitUntil(() => this.currentEnemy.currentVigor <= emptyVigor); yield return(condition); while (currentEnemy.activeState == ActiveState.Moving) { yield return(null); } while (currentEnemy.buyHit == BuyHit.BuyHit) { yield return(null); } currentEnemy.turnState = TurnState.Ending; gameOver = _gameManager.CheckGameOver(); if (gameOver) { break; } } foreach (var player in _gameManager.activePlayerList.ToList()) { while (player.beHit == BeHit.BeHit) { yield return(null); } } if (!gameOver) { _gameManager.EnemyTurnEnding(); } }
void DoubleCloseObstacle(List <Player> doubleList, Enemy thisEnemy) { if (thisEnemy.currentVigor == emptyVigor) { return; } if (thisEnemy.currentVigor >= fullVigor) { print("No one can see!"); Player targetPlayer = null; TileNode middleNode = null; TileNode endTileNode = null; GameUtility.ShuffleList(doubleList); // Check Player and TileNode foreach (var player in doubleList) { if (player.marked <= emptyCount) { continue; } var rushTileList = _gameManager.areaCheck.RushTileList(player, thisEnemy); GameUtility.ShuffleList(rushTileList); foreach (var node in rushTileList) { if (_areaCheck.CanMove(thisEnemy, node)) { if (_areaCheck.CanMove(player, node)) { var playNearNode = _areaCheck.NearNode(player); foreach (var nearNode in playNearNode) { GameUtility.ShuffleList(playNearNode); if (_areaCheck.CanMove(node, nearNode)) { targetPlayer = player; middleNode = node; endTileNode = nearNode; break; } } } } } } if (targetPlayer != null && middleNode != null && endTileNode != null) { StartCoroutine(RushClose(targetPlayer, thisEnemy, middleNode, endTileNode)); thisEnemy.currentVigor = emptyVigor; } else { print("They are over the wall!"); } } }
public void ResetClose() { GameUtility.ResetObjects(close, holder); }
void DoByType() { if (_gameManager.currentPlayer.characterType == CharacterType.SwordMaster) { if (skillState == SkillState.BaseCloseAttack || CheckSign("Enemy", _sword)) { if (_gameManager.doubleClose) { if (_gameManager.currentPlayer.currentVigor > 0) { Moving(true); StartCoroutine(AfterMoving(true)); } } else { if (_gameManager.currentPlayer.currentVigor > 1) { Moving(true); StartCoroutine(AfterMoving(true)); } } } if (skillState == SkillState.Non) { Moving(false); StartCoroutine(AfterMoving(false)); } } else if (_gameManager.currentPlayer.characterType == CharacterType.Ranger) { var currentEnemy = _gameManager.activeEnemyList.Find(i => GameUtility.Coordinate(transform.position) == GameUtility.Coordinate(i.transform.position)); if (skillState == SkillState.Non) { Moving(false); StartCoroutine(AfterMoving(false)); } } }
public List <Enemy> RangeEnemyList(Player player, AreaCheckOption checkOption, Vector3 position) { var rangeEnemyList = new List <Enemy>(); var areaList = new List <TileNode>(); _board.ResetBoard(); if (checkOption == AreaCheckOption.Round) { player.rangeArea.transform.position = position; player.rangeArea.SetActive(true); } else if (checkOption == AreaCheckOption.Player) { player.rangeArea.transform.position = player.transform.position; player.rangeArea.SetActive(true); } foreach (var node in _board.NodeList) { if (Physics.CheckBox(node.transform.position, GameUtility.Box, Quaternion.identity, LayerMask.GetMask("RangeArea"))) { areaList.Add(node); } } if (checkOption == AreaCheckOption.Round) { player.rangeArea.transform.position = player.transform.position; player.rangeArea.SetActive(false); } else if (checkOption == AreaCheckOption.Player) { player.rangeArea.transform.position = player.transform.position; player.rangeArea.SetActive(false); } foreach (var node in areaList) { if (Physics.CheckBox(node.transform.position, GameUtility.Box, Quaternion.identity, LayerMask.GetMask("Enemy"))) { rangeEnemyList.Add(_gameManager.activeEnemyList.Find(enemy => GameUtility.Coordinate(enemy.transform.position) == GameUtility.Coordinate(node.transform.position))); } } return(rangeEnemyList); }