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); }
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)); }