Exemple #1
0
        void DoubleCloseStrike(List <Player> doubleList, Enemy thisEnemy)
        {
            if (thisEnemy.currentVigor == emptyVigor)
            {
                return;
            }

            if (_gameManager.doubleClose)
            {
                GameUtility.ShuffleList(doubleList);

                foreach (var player in doubleList)
                {
                    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;
                    }
                }
            }
        }
Exemple #2
0
        private bool MovingSkill(TileNode endNode, List <TileNode> allNodeList, AreaOrder areaOrder, WalkOrder walkOrder)
        {
            if (endNode == null)
            {
                print("EndNode : " + endNode);
                return(false);
            }

            var enemy = enemyAi.currentEnemy;

            if (enemy == null)
            {
                print("Enemy : " + enemy);
                return(false);
            }

            var startNode = allNodeList.Find(i => i.Coordinate == GameUtility.Coordinate(enemy.transform.position));

            if (startNode == null)
            {
                print("StartNode : " + startNode);
                return(false);
            }

            var way = _board.PathFinding.GreedPathFinding(startNode, endNode, _board.NodeList);

            if (way == null)
            {
                return(false);
            }

            enemy.enemyMove.IndicateUnit(way, areaOrder, walkOrder);
            return(true);
        }
Exemple #3
0
        void Moving(bool skill)
        {
            if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
            {
                return;
            }
            if (_gameManager.currentPlayer == null)
            {
                return;
            }
            if (_board.startNode == null)
            {
                return;
            }
            if (_board.currentWay == null)
            {
                return;
            }

            var roundTile = _board.NodeList.Find(i => i.Coordinate == GameUtility.Coordinate(_gameManager.round.transform.position));

            if (roundTile.tileStyle == TileStyle.OneArea || roundTile.tileStyle == TileStyle.TwoArea)
            {
                _gameManager.currentPlayer.MovingSkill(roundTile);
                _gameManager.currentPlayer.playerMove.IndicateUnit(_board.currentWay, skill);
                _board.currentWay = null;
            }
        }
Exemple #4
0
        void FindEnemyNode(Enemy enemy)
        {
            if (_gameManager.currentPlayer == null)
            {
                return;
            }

            startNode = NodeList.Find(i => i.Coordinate == GameUtility.Coordinate(enemy.transform.position));
        }
Exemple #5
0
        void FindPlayerNode(Player player)
        {
            if (_gameManager.currentPlayer == null)
            {
                return;
            }

            startNode = NodeList.Find(i => i.Coordinate == GameUtility.Coordinate(player.transform.position));
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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));
                }
            }
        }