public void addPurchasedChampion(int prefabIndex)
    {
        ChampionSpawner SubSpawner = getFirstAvailableSubsituteSpawnPoint();

        if (SubSpawner != null)
        {
            GameObject instanceP = SubSpawner.spawnChampion(GameManager.instance.GetChampions()[prefabIndex]);
            playerData.GetPlacementData().addChampionInstance(
                SubSpawner.gameObject.name, SubSpawner.transform.position,
                instanceP, prefabIndex, false);
        }
    }
    public bool switchChampionsInstances(GameObject From, GameObject To)
    {
        bool            foundFrom  = false;
        bool            foundTo    = false;
        ChampionSpawner FromScript = From.GetComponent <ChampionSpawner>();
        ChampionSpawner ToScript   = To.GetComponent <ChampionSpawner>();

        foundFrom = playerData.GetPlacementData().findBySpawnerName(From.name);
        if (foundFrom)
        {
            // SpawnFrom contient un champion
            if (!playerData.canMoveBasedOnLevel(FromScript.FightingSpawner, ToScript.FightingSpawner, ToScript.spawnPointIsActive()))
            {
                return(false);
            }
            // Le player a placé autant de champions sur le terrain qu'autorisés par son level

            foundTo = playerData.GetPlacementData().findBySpawnerName(To.name);
            if (!foundTo)
            {
                // SpawnFrom contient un champion mais pas SpawnTo
                FromScript.desactivateSpawnPoint();
                ToScript.activateSpawnPoint();
                playerData.GetPlacementData().setSpawner(From.name, To.name, To.transform.position, ToScript.FightingSpawner);
            }
            else
            {
                // SpawnFrom Et SpawnTo contiennent un champion
                // Check if found
                // From and To : Switch the SpawnNames
                // From and !To : Change the SpawnName
                // !From : Error
                if (From.name == To.name)
                {
                    return(false);
                }
                playerData.GetPlacementData().switchSpawners(From, To);
            }
            return(true);
        }
        else
        {
            Debug.Log("SpawnFrom ne contient pas de champion");
        }
        return(false);
    }
예제 #3
0
    private GameObject checkNearestActiveSpawner(Vector3 clickPos)
    {
        float     distanceToClosestSpawnPoint = 10f;
        Transform closestSpawner         = null;
        Transform allySubsSpawnPositions = gameManagerTransform.Find("SubsSpawnPositions");

        foreach (Transform AllySSP in allySubsSpawnPositions)
        {
            float distanceToclick = Vector3.Distance(AllySSP.position, clickPos);
            if (distanceToclick < distanceToClosestSpawnPoint)
            {
                ChampionSpawner championSpawner = AllySSP.gameObject.GetComponent <ChampionSpawner>();
                if (championSpawner != null && championSpawner.spawnedChampionIsDraggable())
                {
                    distanceToClosestSpawnPoint = distanceToclick;
                    closestSpawner = AllySSP;
                }
            }
        }
        Transform allySpawnPositions = gameManagerTransform.Find("SpawnPositions");

        foreach (Transform AllySP in allySpawnPositions)
        {
            float distanceToclick = Vector3.Distance(AllySP.position, clickPos);
            if (distanceToclick < distanceToClosestSpawnPoint)
            {
                ChampionSpawner championSpawner = AllySP.gameObject.GetComponent <ChampionSpawner>();
                if (championSpawner != null && championSpawner.spawnedChampionIsDraggable())
                {
                    distanceToClosestSpawnPoint = distanceToclick;
                    closestSpawner = AllySP;
                }
            }
        }
        return(closestSpawner == null ? null : closestSpawner.gameObject);
    }