Exemple #1
0
    public void showItem(GameItem m, GameBattleUnit u, GameBattleAttackMapDirection dir, List <GameBattleAttackResultItem> ri, List <GameBattleAttackResultSkill> r, OnEventOver over)
    {
        clear();

        item  = m;
        skill = null;

        unit        = u;
        direction   = dir;
        onEventOver = over;

        resultItem = ri;
        result     = r;

        GameUserData.instance.LastItemID = item.ID;

        if (item.UseSkillID != GameDefine.INVALID_ID)
        {
            skill = GameSkillData.instance.getData(item.UseSkillID);

            showSkill(skill, u, dir, r, over);
        }
        else
        {
            onAttackOverItem();
        }
    }
Exemple #2
0
    public void setAttackAI(GameBattleUnit unit, int x, int y)
    {
        attackDirection = GameBattleAttackMapDirection.Count;
        attackUnits.Clear();

        attackUnits.Add(unit);

        attackCell.x = x;
        attackCell.y = y;
    }
Exemple #3
0
    public void showRes(List <GameBattleAttackResultSkill> r, OnEventOver over)
    {
        skill       = null;
        unit        = null;
        result      = r;
        direction   = GameBattleAttackMapDirection.Count;
        onEventOver = over;

        onAttackOver();
    }
Exemple #4
0
    public void showSkillMap(GameSkill sk, GameBattleUnit u, GameBattleAttackMapDirection dir, List <GameBattleAttackResultSkill> r, OnEventOver over)
    {
        clear();

        skill       = sk;
        unit        = u;
        result      = r;
        direction   = dir;
        onEventOver = over;

        GameUserData.instance.LastSkillID = skill.ID;

        //         string path = "Prefab/Sprite/man" + GameDefine.getString3( u.Sprite ) + "/" +
        //     GameDefine.getString3( u.Sprite );
        //         path += ( m.BattleSprite > 0 ? "-" + m.BattleSprite : "" );
        //         path += "sm";
        //
        //         GameObject obj = Instantiate<GameObject>( Resources.Load<GameObject>( path ) );
        //         GameAnimation attackerAnimation = obj.GetComponent<GameAnimation>();
        //         Transform trans = obj.transform;
        //         trans.SetParent( transform );
        //         trans.localScale = Vector3.one;
        //         trans.localPosition = Vector3.zero;
        //
        //         transform.localPosition = new Vector3( GameSceneMovement.instance.posXReal ,
        //             GameSceneMovement.instance.posYReal + GameBattleManager.instance.LayerHeight ,
        //             transform.localPosition.z );
        //
        //         float x = GameCameraManager.instance.sceneWidth / GameDefine.SCENE_WIDTH;
        //         transform.localScale = new Vector3( x , 1.0f , 1.0f );
        //
        //         if ( dir != GameBattleAttackMapDirection.Count )
        //         {
        //             int c = attackerAnimation.safHead.count3[ 0 ];
        //             int f = c * (int)dir;
        //
        //             attackerAnimation.playAnimation( f , f + c , false , onAttackOver );
        //         }
        //         else
        //         {
        //             attackerAnimation.playAnimation( 0 , GameDefine.INVALID_ID , false , onAttackOver );
        //         }

        if (skill.AttackRangeType == GameAttackRangeType.Line)
        {
            GameBattleSceneMovement.instance.moveTo(unit.PosX - GameCameraManager.instance.xCell,
                                                    unit.PosY - GameCameraManager.instance.yCell, 50, 50, onStartMoveOver);
        }
        else
        {
            GameBattleSceneMovement.instance.moveTo(GameBattleCursor.instance.PosX - GameCameraManager.instance.xCell,
                                                    GameBattleCursor.instance.PosY - GameCameraManager.instance.yCell, 50, 50, onStartMoveOver);
        }
    }
Exemple #5
0
    void onMoveOver()
    {
        clearJumpHP();
        clear();

        jumpHPlist.Clear();

        if (onEventOver != null)
        {
            onEventOver();
        }

        onEventOver = null;
        skill       = null;
        item        = null;
        unit        = null;
        result      = null;
        direction   = GameBattleAttackMapDirection.Count;
    }
Exemple #6
0
    public bool checkCell(int x, int y, out GameBattleAttackMapDirection dir)
    {
        dir = GameBattleAttackMapDirection.Count;

        for (int i = 0; i < list.Count; i++)
        {
            if (list[i].x == x && list[i].y == y)
            {
                if (rangeType == GameAttackRangeType.Line)
                {
                    dir = GameDefine.getDirectionMap(posX, posY, x, y);
                }

                return(true);
            }
        }

        return(false);
    }
Exemple #7
0
    public void showSkill(GameSkill m, GameBattleUnit u, GameBattleAttackMapDirection dir, List <GameBattleAttackResultSkill> r, OnEventOver over)
    {
        clear();

        skill = m;
        item  = null;

        unit        = u;
        result      = r;
        direction   = dir;
        onEventOver = over;

        GameUserData.instance.LastSkillID = skill.ID;

        string path = "Prefab/Misc/Mag_misc";

        GameObject    obj           = Instantiate <GameObject>(Resources.Load <GameObject>(path));
        GameAnimation gameAnimation = obj.GetComponent <GameAnimation>();

        gameAnimation.offsetX = GameDefine.BATTLE_OFFSET_X;
        gameAnimation.offsetY = GameDefine.BATTLE_OFFSET_Y - 18;

        unit.playAnimationBattle(GameAnimationType.Skill, u.Direction, null);

        Transform trans = obj.transform;

        trans.SetParent(transform);
        trans.localScale    = Vector3.one;
        trans.localPosition = Vector3.zero;

        transform.localPosition = new Vector3(unit.PosBattleX,
                                              unit.PosBattleY + GameBattleManager.instance.LayerHeight,
                                              transform.localPosition.z);

        gameAnimation.playAnimation(1, GameDefine.INVALID_ID, false, onStartOver);
    }
Exemple #8
0
    public void getUnitsLine(int x, int y, GameItem m, GameUnitCampType camp)
    {
        List <GameBattleUnit> list = new List <GameBattleUnit>();

        for (int i = 0; i < (int)GameBattleAttackMapDirection.Count; i++)
        {
            int x1 = 0;
            int y1 = 0;

            switch (i)
            {
            case (int)GameBattleAttackMapDirection.North:
                y1 = -1;
                break;

            case (int)GameBattleAttackMapDirection.East:
                x1 = 1;
                break;

            case (int)GameBattleAttackMapDirection.South:
                y1 = 1;
                break;

            case (int)GameBattleAttackMapDirection.West:
                x1 = -1;
                break;
            }


            for (int j = 0; j < m.AttackRangeMax; j++)
            {
                GameBattleUnit u = GameBattleUnitManager.instance.getUnit(x + i * x1, y + i * y1);

                switch (m.UseTargetType)
                {
                case GameTargetType.User:
                {
                    if (u != null &&
                        u.UnitCampType == camp)
                    {
                        list.Add(u);
                    }
                }
                break;

                case GameTargetType.Enemy:
                {
                    if (u != null &&
                        u.UnitCampType != camp)
                    {
                        list.Add(u);
                    }
                }
                break;

                case GameTargetType.Summon:
                {
                    if (u == null)
                    {
                        list.Add(u);
                    }
                }
                break;
                }

                if (list.Count > attackUnits.Count)
                {
                    attackCell.x = x + x1;
                    attackCell.y = y + y1;

                    attackDirection = (GameBattleAttackMapDirection)i;

                    attackUnits.Clear();

                    for (int k = 0; k < list.Count; k++)
                    {
                        attackUnits.Add(list[k]);
                    }
                }

                list.Clear();
            }
        }
    }
Exemple #9
0
    public void getUnitsCircle(int ux, int uy, int x, int y, GameItem m, GameUnitCampType camp)
    {
        attackDirection = GameBattleAttackMapDirection.Count;

        List <GameBattleUnit> list = new List <GameBattleUnit>();

        int size = m.AttackRange;

        for (int i = -size; i <= size; i++)
        {
            for (int j = -size; j <= size; j++)
            {
                int xx = Mathf.Abs(j);
                int yy = Mathf.Abs(i);

                if (xx + yy <= size)
                {
                    GameBattleUnit unit = GameBattleUnitManager.instance.getUnit(x + j, y + i);

                    if (unit != null)
                    {
                        switch (m.UseTargetType)
                        {
                        case GameTargetType.User:
                        {
                            if (unit.UnitCampType == camp)
                            {
                                list.Add(unit);
                            }
                        }
                        break;

                        case GameTargetType.Enemy:
                        {
                            if (unit.UnitCampType != camp)
                            {
                                list.Add(unit);
                            }
                        }
                        break;

                        case GameTargetType.Summon:
                        {
                            if (unit.IsSummon &&
                                unit.UnitCampType != camp)
                            {
                                list.Add(unit);
                            }
                        }
                        break;
                        }
                    }
                    else
                    {
                        switch (m.UseTargetType)
                        {
                        case GameTargetType.Summon:
                        {
                            list.Add(unit);
                        }
                        break;
                        }
                    }
                }
            }
        }

        if (list.Count > attackUnits.Count ||
            (list.Count > 0 && list.Count == attackUnits.Count &&
             Mathf.Abs(ux - x) + Mathf.Abs(uy - y) < Mathf.Abs(ux - attackCell.x) + Mathf.Abs(uy - attackCell.y)))
        {
            attackCell.x = x;
            attackCell.y = y;

            attackUnits.Clear();

            for (int i = 0; i < list.Count; i++)
            {
                attackUnits.Add(list[i]);
            }
        }

        list.Clear();
    }
Exemple #10
0
    public void getUnits(GameBattleUnit unit, GameItem item, GameBattleAttackMapDirection dir)
    {
        selectionUnits.Clear();

        switch (item.UseRangeType)
        {
        case GameAttackRangeType.Circle:
        {
            int size = GameBattleCursor.instance.Size;

            for (int i = -size; i <= size; i++)
            {
                for (int j = -size; j <= size; j++)
                {
                    int xx = Mathf.Abs(j);
                    int yy = Mathf.Abs(i);

                    if (xx + yy <= size)
                    {
                        GameBattleUnit u = GameBattleUnitManager.instance.getUnit(GameBattleCursor.instance.PosX + j,
                                                                                  GameBattleCursor.instance.PosY + i);

                        switch (item.UseTargetType)
                        {
                        case GameTargetType.User:
                        {
                            if (u != null &&
                                u.UnitCampType == unit.UnitCampType)
                            {
                                selectionUnits.Add(u);
                            }
                        }
                        break;

                        case GameTargetType.Enemy:
                        {
                            if (u != null &&
                                u.UnitCampType != unit.UnitCampType)
                            {
                                selectionUnits.Add(u);
                            }
                        }
                        break;

                        case GameTargetType.Summon:
                        {
                            if (u == null)
                            {
                                selectionUnits.Add(u);
                            }
                        }
                        break;
                        }
                    }
                }
            }
        }
        break;

        case GameAttackRangeType.Line:
        {
            int x = 0;
            int y = 0;

            switch (dir)
            {
            case GameBattleAttackMapDirection.North:
                y = -1;
                break;

            case GameBattleAttackMapDirection.East:
                x = 1;
                break;

            case GameBattleAttackMapDirection.South:
                y = 1;
                break;

            case GameBattleAttackMapDirection.West:
                x = -1;
                break;
            }

            for (int i = 1; i <= item.AttackRangeMax; i++)
            {
                GameBattleUnit u = GameBattleUnitManager.instance.getUnit(unit.PosX + i * x, unit.PosY + i * y);

                switch (item.UseTargetType)
                {
                case GameTargetType.User:
                {
                    if (u != null &&
                        u.UnitCampType == unit.UnitCampType)
                    {
                        selectionUnits.Add(u);
                    }
                }
                break;

                case GameTargetType.Enemy:
                {
                    if (u != null &&
                        u.UnitCampType != unit.UnitCampType)
                    {
                        selectionUnits.Add(u);
                    }
                }
                break;

                case GameTargetType.Summon:
                {
                    if (u == null)
                    {
                        selectionUnits.Add(u);
                    }
                }
                break;
                }
            }
        }
        break;
        }
    }
Exemple #11
0
    public void showSkill(byte f, GameSkill m, GameBattleUnit lt, GameBattleUnit rt, GameBattleAttackMapDirection dir, GameBattleAttackResultSide s, GameBattleAttackResultPhysical rs, OnEventOver over)
    {
        if (m.BattleType == GameSkillBattleType.Normal ||
            m.BattleType == GameSkillBattleType.Map)
        {
            return;
        }

        clear();

        skill     = m;
        direction = dir;

        onEventOver = over;
        result      = rs;
        resultSkill = null;
        side        = s;
        isShow      = true;
        overUnShow  = false;
        showAdd     = false;

        GameUserData.instance.LastSkillID = skill.ID;

        gameObject.SetActive(true);

        leftUnit  = lt;
        rightUnit = rt;

        string path = "Prefab/Stage/Stage" + GameDefine.getString2(GameUserData.instance.Stage) + "/FLOOR_";

        path += GameDefine.getString2(GameUserData.instance.Stage);

        GameObject gameObjectFloor = Instantiate <GameObject>(Resources.Load <GameObject>(path));

        floorAnimation    = gameObjectFloor.GetComponent <GameAnimation>();
        floorAnimation.UI = true;
        floorAnimation.showFrame(f);
        floorAnimation.transform.SetParent(floorTrans);
        floorAnimation.transform.localScale    = Vector3.one;
        floorAnimation.transform.localPosition = Vector3.zero;


        //        string ab = result.type == GameBattleAttackResultType.Block ? "ab" : "a";

        path  = "Prefab/Sprite/man" + GameDefine.getString3(rt.Sprite) + "/";
        path += (GameDefine.getString3(rt.Sprite) + "MISC");

        GameObject obj = Instantiate <GameObject>(Resources.Load <GameObject>(path));

        rightAnimation    = obj.GetComponent <GameAnimation>();
        rightAnimation.UI = true;
        rightAnimation.showFrame(6 + (rightAnimation.safHead.count3[0] == 0 ? 1 : rightAnimation.safHead.count3[0]));
        Transform trans = obj.transform;

        trans.SetParent(right.transform);
        trans.localScale    = Vector3.one;
        trans.localPosition = Vector3.zero;

        rightInfoUI.gameObject.SetActive(true);
        rightInfoUI.setValue(rt.HP, rt.HPMax, rt.Name);



        path  = "Prefab/Sprite/man" + GameDefine.getString3(lt.Sprite) + "/";
        path += (GameDefine.getString3(lt.Sprite) + "MISC");

        GameObject obj1 = Resources.Load <GameObject>(path);

        if (obj1 == null)
        {
            unShow();
            return;
        }

        obj              = Instantiate <GameObject>(obj1);
        leftAnimation    = obj.GetComponent <GameAnimation>();
        leftAnimation.UI = true;
        leftAnimation.showFrame(6 + (leftAnimation.safHead.count3[0] == 0 ? 1 : leftAnimation.safHead.count3[0]));
        trans = obj.transform;
        trans.SetParent(left.transform);
        trans.localScale    = Vector3.one;
        trans.localPosition = Vector3.zero;

        leftInfoUI.gameObject.SetActive(true);
        leftInfoUI.setValue(lt.HP, lt.HPMax, lt.Name);

        rangedAttack = (m.BattleRanged == GameSkillBattleRanged.Ranged);
        mapAttack    = (m.BattleType == GameSkillBattleType.UIMap);

        if (side == GameBattleAttackResultSide.Left)
        {
            path = "Prefab/Sprite/man" + GameDefine.getString3(lt.Sprite) + "/" +
                   GameDefine.getString3(lt.Sprite);
            path += (m.BattleSprite > 0 ? "-" + m.BattleSprite : "");
            path += (result.type == GameBattleAttackResultPhysical.Type.Block ? "sb" : "s");

            obj1 = Resources.Load <GameObject>(path);

            if (obj1 == null)
            {
                unShow();
                return;
            }

            obj = Instantiate <GameObject>(obj1);
            attackerAnimation    = obj.GetComponent <GameAnimation>();
            attackerAnimation.UI = true;
            attackerAnimation.onAnimationEvent = onAnimationEvent;
            trans = obj.transform;
            trans.SetParent(left.transform);
            trans.localScale    = Vector3.one;
            trans.localPosition = Vector3.zero;

            defencerAnimation = rightAnimation;

            RectTransform trans1 = left.GetComponent <RectTransform>();
            trans1.SetSiblingIndex(3);

            if (rangedAttack ||
                mapAttack)
            {
                rightAnimation.clearAnimation();
            }
        }
        else
        {
            path = "Prefab/Sprite/man" + GameDefine.getString3(rt.Sprite) + "/" +
                   GameDefine.getString3(rt.Sprite);
            path += (m.BattleSprite > 0 ? "-" + m.BattleSprite : "");
            path += (result.type == GameBattleAttackResultPhysical.Type.Block ? "sb" : "s");

            obj1 = Resources.Load <GameObject>(path);

            if (obj1 == null)
            {
                unShow();
                return;
            }

            obj = Instantiate <GameObject>(obj1);
            attackerAnimation    = obj.GetComponent <GameAnimation>();
            attackerAnimation.UI = true;
            attackerAnimation.onAnimationEvent = onAnimationEvent;
            trans = obj.transform;
            trans.SetParent(right.transform);
            trans.localScale    = Vector3.one;
            trans.localPosition = Vector3.zero;

            defencerAnimation = leftAnimation;

            RectTransform trans1 = right.GetComponent <RectTransform>();
            trans1.SetSiblingIndex(3);

            if (rangedAttack ||
                mapAttack)
            {
                leftAnimation.clearAnimation();
            }
        }

        attackerAnimation.otherGameAnimation = defencerAnimation;

        scale     = 2.0f;
        alpha     = 0.1f;
        time      = 0.0f;
        alphaAdd  = true;
        startFade = true;

        updateStage();
    }
Exemple #12
0
    public void showSkillMap(byte f, GameSkill m, GameBattleUnit lt, GameBattleUnit rt, GameBattleAttackMapDirection dir, GameBattleAttackResultSide s, List <GameBattleAttackResultSkill> r, OnEventOver over)
    {
        if (m.BattleType == GameSkillBattleType.Normal ||
            m.BattleType == GameSkillBattleType.Map)
        {
            return;
        }

        clear();

        skill     = m;
        direction = dir;

        onEventOver = over;
        resultSkill = r;
        result      = null;
        side        = s;
        isShow      = true;
        mapAttack   = true;
        overUnShow  = true;
        showAdd     = false;

        GameUserData.instance.LastSkillID = skill.ID;

        gameObject.SetActive(true);

        leftUnit  = lt;
        rightUnit = rt;


        string path = "Prefab/Stage/Stage" + GameDefine.getString2(GameUserData.instance.Stage) + "/FLOOR_";

        path += GameDefine.getString2(GameUserData.instance.Stage);

        GameObject gameObjectFloor = Instantiate <GameObject>(Resources.Load <GameObject>(path));

        floorAnimation    = gameObjectFloor.GetComponent <GameAnimation>();
        floorAnimation.UI = true;
        floorAnimation.showFrame(f);
        floorAnimation.transform.SetParent(floorTrans);
        floorAnimation.transform.localScale    = Vector3.one;
        floorAnimation.transform.localPosition = Vector3.zero;


        if (side == GameBattleAttackResultSide.Left)
        {
            path  = "Prefab/Sprite/man" + GameDefine.getString3(lt.Sprite) + "/";
            path += (GameDefine.getString3(lt.Sprite) + "MISC");

            GameObject obj = Instantiate <GameObject>(Resources.Load <GameObject>(path));
            leftAnimation    = obj.GetComponent <GameAnimation>();
            leftAnimation.UI = true;
            leftAnimation.showFrame(6 + (leftAnimation.safHead.count3[0] == 0 ? 1 : leftAnimation.safHead.count3[0]));
            Transform trans = obj.transform;
            trans.SetParent(left.transform);
            trans.localScale    = Vector3.one;
            trans.localPosition = Vector3.zero;

            leftInfoUI.gameObject.SetActive(true);
            leftInfoUI.setValue(lt.HP, lt.HPMax, lt.Name);
            rightInfoUI.gameObject.SetActive(false);


            path = "Prefab/Sprite/man" + GameDefine.getString3(lt.Sprite) + "/" +
                   GameDefine.getString3(lt.Sprite);
            path += (m.BattleSprite > 0 ? "-" + m.BattleSprite : "");
            path += "s";

            obj = Instantiate <GameObject>(Resources.Load <GameObject>(path));
            attackerAnimation    = obj.GetComponent <GameAnimation>();
            attackerAnimation.UI = true;
            attackerAnimation.onAnimationEvent = onAnimationEvent;
            trans = obj.transform;
            trans.SetParent(left.transform);
            trans.localScale    = Vector3.one;
            trans.localPosition = Vector3.zero;

            defencerAnimation = null;
        }
        else
        {
            path  = "Prefab/Sprite/man" + GameDefine.getString3(rt.Sprite) + "/";
            path += (GameDefine.getString3(rt.Sprite) + "MISC");

            GameObject obj = Instantiate <GameObject>(Resources.Load <GameObject>(path));
            rightAnimation    = obj.GetComponent <GameAnimation>();
            rightAnimation.UI = true;
            rightAnimation.showFrame(6 + (rightAnimation.safHead.count3[0] == 0 ? 1 : rightAnimation.safHead.count3[0]));
            Transform trans = obj.transform;
            trans.SetParent(right.transform);
            trans.localScale    = Vector3.one;
            trans.localPosition = Vector3.zero;

            rightInfoUI.gameObject.SetActive(true);
            rightInfoUI.setValue(rt.HP, rt.HPMax, rt.Name);
            leftInfoUI.gameObject.SetActive(false);


            path = "Prefab/Sprite/man" + GameDefine.getString3(rt.Sprite) + "/" +
                   GameDefine.getString3(rt.Sprite);
            path += (m.BattleSprite > 0 ? "-" + m.BattleSprite : "");
            path += "s";

            obj = Instantiate <GameObject>(Resources.Load <GameObject>(path));
            attackerAnimation    = obj.GetComponent <GameAnimation>();
            attackerAnimation.UI = true;
            attackerAnimation.onAnimationEvent = onAnimationEvent;
            trans = obj.transform;
            trans.SetParent(right.transform);
            trans.localScale    = Vector3.one;
            trans.localPosition = Vector3.zero;

            defencerAnimation = null;
        }

        scale     = 2.0f;
        alpha     = 0.1f;
        time      = 0.0f;
        alphaAdd  = true;
        startFade = true;

        updateStage();
    }
    public void getUnitsCircleAI(GameBattleUnit unit, int ux, int uy, int mx, int my, int x, int y, GameSkill sk, GameUnitCampType camp)
    {
        if (targetID != GameDefine.INVALID_ID)
        {
            for (int j = 0; j < attackUnits.Count; j++)
            {
                if (attackUnits[j].BattleManID == targetID)
                {
                    return;
                }
            }
        }

        attackDirection = GameBattleAttackMapDirection.Count;

        List <GameBattleUnit> list1 = new List <GameBattleUnit>();

        int size = sk.AttackRange;

        for (int i = -size; i <= size; i++)
        {
            for (int j = -size; j <= size; j++)
            {
                int xx = Mathf.Abs(j);
                int yy = Mathf.Abs(i);

                if (xx + yy <= size)
                {
                    GameBattleUnit u = GameBattleUnitManager.instance.getUnit(x + j, y + i);

                    if (checkSkillAI(unit, u, sk, camp))
                    {
                        list1.Add(u);
                    }
                }
            }
        }

        bool bTarget = false;

        if (targetID != GameDefine.INVALID_ID)
        {
            for (int j = 0; j < list1.Count; j++)
            {
                if (list1[j].BattleManID == targetID)
                {
                    bTarget = true;
                }
            }
        }

        if (bTarget || list1.Count > attackUnits.Count ||
            (list1.Count > 0 && list1.Count == attackUnits.Count &&
             Mathf.Abs(ux - x) + Mathf.Abs(uy - y) < Mathf.Abs(ux - attackCell.x) + Mathf.Abs(uy - attackCell.y)) ||

            (list1.Count > 0 && list1.Count == attackUnits.Count && Random.Range(0, 100) > 50 &&
             Mathf.Abs(ux - x) + Mathf.Abs(uy - y) == Mathf.Abs(ux - attackCell.x) + Mathf.Abs(uy - attackCell.y))
            )
        {
            attackCell.x = x;
            attackCell.y = y;

            attackMoveCell.x = mx;
            attackMoveCell.y = my;

            attackUnits.Clear();

            IsAttackUnits = true;

            for (int i = 0; i < list1.Count; i++)
            {
                attackUnits.Add(list1[i]);
            }
        }

        list1.Clear();
    }
    public void getUnitsLineAI(GameBattleUnit unit, int ux, int uy, GameSkill sk, GameUnitCampType camp)
    {
        if (targetID != GameDefine.INVALID_ID)
        {
            for (int j = 0; j < attackUnits.Count; j++)
            {
                if (attackUnits[j].BattleManID == targetID)
                {
                    return;
                }
            }
        }

        List <GameBattleUnit> list1 = new List <GameBattleUnit>();

        for (int i = 0; i < (int)GameBattleAttackMapDirection.Count; i++)
        {
            int x1 = 0;
            int y1 = 0;

            switch (i)
            {
            case (int)GameBattleAttackMapDirection.North:
                y1 = -1;
                break;

            case (int)GameBattleAttackMapDirection.East:
                x1 = 1;
                break;

            case (int)GameBattleAttackMapDirection.South:
                y1 = 1;
                break;

            case (int)GameBattleAttackMapDirection.West:
                x1 = -1;
                break;
            }


            for (int j = 0; j < sk.AttackRangeMax; j++)
            {
                GameBattleUnit u = GameBattleUnitManager.instance.getUnit(ux + i * x1, uy + i * y1);

                if (checkSkillAI(unit, u, sk, camp))
                {
                    list1.Add(u);
                }
            }

            bool bTarget = false;

            if (targetID != GameDefine.INVALID_ID)
            {
                for (int j = 0; j < list1.Count; j++)
                {
                    if (list1[j].BattleManID == targetID)
                    {
                        bTarget = true;
                    }
                }
            }


            if (list1.Count > attackUnits.Count || bTarget)
            {
                attackCell.x = ux + x1;
                attackCell.y = uy + y1;

                attackMoveCell.x = ux;
                attackMoveCell.y = uy;

                attackDirection = (GameBattleAttackMapDirection)i;

                attackUnits.Clear();

                IsAttackUnits = true;

                for (int k = 0; k < list1.Count; k++)
                {
                    attackUnits.Add(list1[k]);
                }
            }

            list1.Clear();
        }
    }