Ejemplo n.º 1
0
    public IEnumerator wildEncounter(WildPokemonInitialiser.Location encounterLocation)
    {
        if (accessedMapSettings.getEncounterList(encounterLocation).Length > 0)
        {
            if (Random.value <= accessedMapSettings.getEncounterProbability())
            {
                if (setCheckBusyWith(Scene.main.Battle.gameObject))
                {
                    BgmHandler.main.PlayOverlay(Scene.main.Battle.defaultWildBGM,
                                                Scene.main.Battle.defaultWildBGMLoopStart);

                    //SceneTransition sceneTransition = Dialog.transform.GetComponent<SceneTransition>();

                    yield return(StartCoroutine(ScreenFade.main.FadeCutout(false, ScreenFade.slowedSpeed, null)));

                    //yield return new WaitForSeconds(sceneTransition.FadeOut(1f));
                    Scene.main.Battle.gameObject.SetActive(true);
                    StartCoroutine(Scene.main.Battle.control(accessedMapSettings.getRandomEncounter(encounterLocation)));

                    while (Scene.main.Battle.gameObject.activeSelf)
                    {
                        yield return(null);
                    }

                    //yield return new WaitForSeconds(sceneTransition.FadeIn(0.4f));
                    yield return(StartCoroutine(ScreenFade.main.Fade(true, 0.4f)));

                    unsetCheckBusyWith(Scene.main.Battle.gameObject);
                }
            }
        }
    }
Ejemplo n.º 2
0
    public WildPokemonInitialiser[] getEncounterList(WildPokemonInitialiser.Location location)
    {
        WildPokemonInitialiser[] list = new WildPokemonInitialiser[encounters.Length];
        int listIndex = 0;

        float time = System.DateTime.Now.Hour + ((float)System.DateTime.Now.Minute / 60f);

        for (int i = 0; i < encounters.Length; i++)
        {
            if (encounters[i].encounterLocation == location)
            {
                if (time >= 20 || time < 3.5f)
                {
                    //night
                    if (encounters[i].encounterNight)
                    {
                        list[listIndex] = encounters[i];
                        listIndex      += 1;
                    }
                }
                else if (time < 10f)
                {
                    //morning
                    if (encounters[i].encounterMorning)
                    {
                        list[listIndex] = encounters[i];
                        listIndex      += 1;
                    }
                }
                else
                {
                    //day
                    if (encounters[i].encounterDay)
                    {
                        list[listIndex] = encounters[i];
                        listIndex      += 1;
                    }
                }
            }
        }

        WildPokemonInitialiser[] packedList = new WildPokemonInitialiser[listIndex];

        for (int i = 0; i < packedList.Length; i++)
        {
            packedList[i] = list[i];
        }

        return(packedList);
    }
Ejemplo n.º 3
0
    public IEnumerator wildEncounter(WildPokemonInitialiser.Location encounterLocation)
    {
        if (accessedMapSettings.getEncounterList(encounterLocation).Length > 0)
        {
            //Copiado de la funcion de maclaurin
            System.Random rand = new System.Random();
            double        u1   = 0.7 + rand.NextDouble();
            double        u2   = 0.7 + rand.NextDouble();

            double randValue1 = Math.Sqrt(-2.0 * Math.Log(u1)) *
                                Math.Sin(2.0 * Math.PI * u2);
            double randValue2 = Math.Sqrt(-2.0 * Math.Log(u1)) *
                                Math.Cos(2.0 * Math.PI * u2);
            double randValue = randValue1 + randValue2;

            if (randValue <= accessedMapSettings.getEncounterProbability())
            {
                if (setCheckBusyWith(Scene.main.Battle.gameObject))
                {
                    BgmHandler.main.PlayOverlay(Scene.main.Battle.defaultWildBGM,
                                                Scene.main.Battle.defaultWildBGMLoopStart);

                    //SceneTransition sceneTransition = Dialog.transform.GetComponent<SceneTransition>();

                    yield return(StartCoroutine(ScreenFade.main.FadeCutout(false, ScreenFade.slowedSpeed, null)));

                    //yield return new WaitForSeconds(sceneTransition.FadeOut(1f));
                    Scene.main.Battle.gameObject.SetActive(true);
                    StartCoroutine(Scene.main.Battle.control(accessedMapSettings.getRandomEncounter(encounterLocation)));

                    while (Scene.main.Battle.gameObject.activeSelf)
                    {
                        yield return(null);
                    }

                    //yield return new WaitForSeconds(sceneTransition.FadeIn(0.4f));
                    yield return(StartCoroutine(ScreenFade.main.Fade(true, 0.4f)));

                    unsetCheckBusyWith(Scene.main.Battle.gameObject);
                }
            }
        }
    }
Ejemplo n.º 4
0
    public Pokemon getRandomEncounter(WildPokemonInitialiser.Location location)
    {
        WildPokemonInitialiser[] list = getEncounterList(location);

        int totalEncounterLikelihood = 0; //add up the total Likelihood

        for (int i = 0; i < list.Length; i++)
        {
            totalEncounterLikelihood += list[i].encounterLikelihood;
        }

        WildPokemonInitialiser[] chanceSplitList = new WildPokemonInitialiser[totalEncounterLikelihood];
        int listIndex = 0;

        for (int i = 0; i < list.Length; i++)
        {
            //loop through each position of list
            for (int i2 = 0; i2 < list[i].encounterLikelihood; i2++)
            {
                //add encounter once for every Likelihood
                chanceSplitList[listIndex] = list[i];
                listIndex += 1;
            }
        }
        //randomly pick a number from the list's length
        int encounterIndex = Random.Range(0, chanceSplitList.Length);

        /*/		DEBUG
         *  string debugtext = "";
         *  for(int i = 0; i < chanceSplitList.Length; i++){
         *      debugtext += PokemonDatabase.getPokemon(chanceSplitList[i].ID).getName() + ", ";}
         *  Debug.Log(encounterIndex+": "+debugtext + "("+PokemonDatabase.getPokemon(chanceSplitList[encounterIndex].ID).getName()+")");
         *  //*/


        return(new Pokemon(chanceSplitList[encounterIndex].ID, Pokemon.Gender.CALCULATE,
                           Random.Range(chanceSplitList[encounterIndex].minLevel, chanceSplitList[encounterIndex].maxLevel + 1),
                           null, null, null, -1));
    }