Esempio n. 1
0
        public Pokemon(GameMode gameMode, PokemonModel dataModel, PokemonSaveModel saveModel)
        {
            _gameMode = gameMode;

            _dataModel = dataModel;
            _saveModel = saveModel;
        }
Esempio n. 2
0
        private Pokemon CreatePokemon(PokemonModel dataModel, int level)
        {
            var saveModel = new PokemonSaveModel();
            PopulateSaveModel(dataModel, saveModel, level);
            var pokemon = new Pokemon(_gameMode, dataModel, saveModel);

            pokemon.LearnStartupMoves();
            if (level > 1)
                pokemon.LevelUp(true, level);

            return pokemon;
        }
Esempio n. 3
0
        private Pokemon CreatePokemon(PokemonModel dataModel, int level)
        {
            var saveModel = new PokemonSaveModel();

            PopulateSaveModel(dataModel, saveModel, level);
            var pokemon = new Pokemon(_gameMode, dataModel, saveModel);

            pokemon.LearnStartupMoves();
            if (level > 1)
            {
                pokemon.LevelUp(true, level);
            }

            return(pokemon);
        }
Esempio n. 4
0
        public Pokemon GetPokemon(PokemonSaveModel saveModel)
        {
            PokemonModel dataModel;

            if (!_pokemonModelCache.TryGetValue(saveModel.Id, out dataModel))
            {
                var d = _gameMode.FileLoader.GetFile(_gameMode.GetPokemonFilePath(saveModel.Id), false);
                if (!_pokemonModelCache.ContainsKey(saveModel.Id))
                {
                    dataModel = DataModel<PokemonModel>.FromByteArray(d.Data);
                    _pokemonModelCache.Add(saveModel.Id, dataModel);
                }
                else
                {
                    dataModel = _pokemonModelCache[saveModel.Id];
                }
                return new Pokemon(_gameMode, dataModel, saveModel);
            }
            else
            {
                return new Pokemon(_gameMode, dataModel, saveModel);
            }
        }
Esempio n. 5
0
        public Pokemon GetPokemon(PokemonSaveModel saveModel)
        {
            PokemonModel dataModel;

            if (!_pokemonModelCache.TryGetValue(saveModel.Id, out dataModel))
            {
                var d = _gameMode.FileLoader.GetFile(_gameMode.GetPokemonFilePath(saveModel.Id), false);
                if (!_pokemonModelCache.ContainsKey(saveModel.Id))
                {
                    dataModel = DataModel <PokemonModel> .FromByteArray(d.Data);

                    _pokemonModelCache.Add(saveModel.Id, dataModel);
                }
                else
                {
                    dataModel = _pokemonModelCache[saveModel.Id];
                }
                return(new Pokemon(_gameMode, dataModel, saveModel));
            }
            else
            {
                return(new Pokemon(_gameMode, dataModel, saveModel));
            }
        }
Esempio n. 6
0
        private void PopulateSaveModel(PokemonModel dataModel, PokemonSaveModel saveModel, int level)
        {
            // when generating a new Pokémon, the save model is empty, as it is a blank slate.
            // some values are generated by default or just set to their base values, so we do that here.

            saveModel.Id = dataModel.Id;

            // setting personality value:
            saveModel.PersonalityValue = GeneratePersonalityValue();

            // setting gender:
            if (dataModel.IsGenderless)
            {
                saveModel.Gender = PokemonGender.Genderless;
            }
            else
            {
                var r = GlobalRandomProvider.Instance.Rnd.NextDouble();
                if (r <= (dataModel.IsMale / 100))
                {
                    saveModel.Gender = PokemonGender.Male;
                }
                else
                {
                    saveModel.Gender = PokemonGender.Female;
                }
            }

            // presetting catch info with empty information:
            saveModel.CatchInfo = new PokemonCatchInfo()
            {
                BallItemId = "",
                Location = "",
                Method = "",
                TrainerName = "",
                OT = ""
            };

            // no egg, 0 experience:
            saveModel.EggSteps = 0;
            saveModel.Experience = 0;

            // set all effort values to 0:
            saveModel.EVs = new PokemonStatSetModel()
            {
                Atk = 0,
                Def = 0,
                SpAtk = 0,
                SpDef = 0,
                HP = 0,
                Speed = 0
            };
            // randomize IVs:
            saveModel.IVs = new PokemonStatSetModel()
            {
                Atk = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                Def = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                SpAtk = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                SpDef = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                HP = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                Speed = GlobalRandomProvider.Instance.Rnd.Next(0, 32)
            };

            // set to random nature:
            var natureModels = _gameMode.GetNatures();
            saveModel.NatureId = natureModels[_random.Next(natureModels.Length)].Id;

            // set to base friendship:
            saveModel.Friendship = dataModel.BaseFriendship;

            // chance of 1/4096 to be shiny:
            saveModel.IsShiny = (GlobalRandomProvider.Instance.Rnd.Next(0, 4096) == 0);

            saveModel.Nickname = "";

            saveModel.Status = PokemonStatus.None;

            saveModel.AdditionalData = "";

            saveModel.Moves = new PokemonMoveModel[0];
        }
Esempio n. 7
0
        public Pokemon(GameMode gameMode, PokemonModel dataModel, PokemonSaveModel saveModel)
        {
            _gameMode = gameMode;

            _dataModel = dataModel;
            _saveModel = saveModel;
        }
Esempio n. 8
0
        private void PopulateSaveModel(PokemonModel dataModel, PokemonSaveModel saveModel, int level)
        {
            // when generating a new Pokémon, the save model is empty, as it is a blank slate.
            // some values are generated by default or just set to their base values, so we do that here.

            saveModel.Id = dataModel.Id;

            // setting personality value:
            saveModel.PersonalityValue = GeneratePersonalityValue();

            // setting gender:
            if (dataModel.IsGenderless)
            {
                saveModel.Gender = PokemonGender.Genderless;
            }
            else
            {
                var r = GlobalRandomProvider.Instance.Rnd.NextDouble();
                if (r <= (dataModel.IsMale / 100))
                {
                    saveModel.Gender = PokemonGender.Male;
                }
                else
                {
                    saveModel.Gender = PokemonGender.Female;
                }
            }

            // presetting catch info with empty information:
            saveModel.CatchInfo = new PokemonCatchInfo()
            {
                BallItemId  = "",
                Location    = "",
                Method      = "",
                TrainerName = "",
                OT          = ""
            };

            // no egg, 0 experience:
            saveModel.EggSteps   = 0;
            saveModel.Experience = 0;

            // set all effort values to 0:
            saveModel.EVs = new PokemonStatSetModel()
            {
                Atk   = 0,
                Def   = 0,
                SpAtk = 0,
                SpDef = 0,
                HP    = 0,
                Speed = 0
            };
            // randomize IVs:
            saveModel.IVs = new PokemonStatSetModel()
            {
                Atk   = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                Def   = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                SpAtk = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                SpDef = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                HP    = GlobalRandomProvider.Instance.Rnd.Next(0, 32),
                Speed = GlobalRandomProvider.Instance.Rnd.Next(0, 32)
            };

            // set to random nature:
            var natureModels = _gameMode.GetNatures();

            saveModel.NatureId = natureModels[_random.Next(natureModels.Length)].Id;

            // set to base friendship:
            saveModel.Friendship = dataModel.BaseFriendship;

            // chance of 1/4096 to be shiny:
            saveModel.IsShiny = (GlobalRandomProvider.Instance.Rnd.Next(0, 4096) == 0);

            saveModel.Nickname = "";

            saveModel.Status = PokemonStatus.None;

            saveModel.AdditionalData = "";

            saveModel.Moves = new PokemonMoveModel[0];
        }