예제 #1
0
        public static Pokemon Get(PokemonSaveData saveData)
        {
            var data = PokemonData.Get(saveData.id);
            var p    = new Pokemon(data, saveData);

            p.Level = PokemonStatHelper.GetLevelForExperience(p._data.ExperienceType, p._saveData.experience);
            return(p);
        }
예제 #2
0
        private void SetPokemon()
        {
            var entry = Controller.ActivePlayer.HallOfFame[_index];
            var data  = PokemonSaveData.GenerateNew();

            data.dv         = entry.dv;
            data.id         = entry.id;
            data.nickname   = entry.nickname;
            data.experience = entry.experience;
            _pokemon        = Pokemon.Get(data);
        }
예제 #3
0
        public static Pokemon Get(int id, int level)
        {
            // generate save data
            var saveData = PokemonSaveData.GenerateNew();

            saveData.id = id;
            var p = Get(saveData);

            p.Experience = PokemonStatHelper.GetExperienceForLevel(p._data.ExperienceType, level);
            p.HP         = p.MaxHP;

            // learn moves up to level
            var moves = p._data.moves
                        .Where(m => !m.breeding && !m.tm && m.level <= level)
                        .Select(m => m.ToPokemonMoveData());
            var learned = p._saveData.moves.ToList();
            var i       = learned.Count;

            if (i == MAX_MOVES)
            {
                i = 0;
            }
            foreach (var learnMove in moves)
            {
                if (learned.All(m => m.name != learnMove.name))
                {
                    if (learned.Count < MAX_MOVES)
                    {
                        learned.Add(learnMove);
                    }
                    else
                    {
                        learned[i] = learnMove;
                    }
                    i++;
                    if (i == MAX_MOVES)
                    {
                        i = 0;
                    }
                }
            }
            p._saveData.moves = learned.ToArray();

            return(p);
        }
예제 #4
0
 private Pokemon(PokemonData data, PokemonSaveData saveData)
 {
     _data     = data;
     _saveData = saveData;
 }