コード例 #1
0
    public void CommandFollowerInvade(NPCController follower)
    {
        if (!characterInBuffRange.Contains(follower))
        {
            return;
        }
        if (invadeCommand == InvadeCmd.DoNothing)
        {
            follower.Patrol(MainFlag);
            return;
        }
        follower.Patrol(null);
        follower.Garrison(null);

        Tower nearestCompanionTower = GetNearestTower(true, false) ?? GetNearestTower(true, true);
        Tower nearestEnemyTower     = GetNearestTower(false, false) ?? GetNearestTower(false, true);

        switch (invadeCommand)
        {
        case InvadeCmd.OccupyNearestTower:
            if (nearestEnemyTower == null)
            {
                return;
            }
            follower.Patrol(nearestEnemyTower.MainFlag);
            break;

        case InvadeCmd.DestroyNearestTower:
            if (nearestEnemyTower == null)
            {
                return;
            }
            follower.AttackTo(nearestEnemyTower.MainFlag);
            break;

        case InvadeCmd.SupportNearestTower:
            if (nearestCompanionTower == null)
            {
                return;
            }

            follower.Patrol(nearestCompanionTower.MainFlag);
            if (nearestCompanionTower != this)
            {
                ChangeFollower(nearestCompanionTower, follower);
            }

            //if(!nearestCompanionTower.Followers.Contains(follower))
            //    nearestCompanionTower.otherFollower.Add(follower);
            break;

        case InvadeCmd.DoNothing:
        default:
            break;
        }
    }