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; }
public void CanCreateAsciiRun() { var buffer = new byte[0x200]; var model = new PokemonModel(buffer); model[0x10] = (byte)'a'; model[0x11] = (byte)'b'; model[0x12] = (byte)'c'; model[0x13] = (byte)'d'; var viewPort = new ViewPort("file.txt", model) { Width = 0x10, Height = 0x10 }; viewPort.SelectionStart = new Point(0, 1); viewPort.Edit("^data`asc`4 "); var format = (Ascii)viewPort[1, 1].Format; Assert.Equal('b', format.ThisCharacter); }
public void CopyAnUnnamedStringInsertsAName() { var text = "This is the song that never ends."; var bytes = PCSString.Convert(text).ToArray(); var buffer = new byte[0x200]; Array.Copy(bytes, 0, buffer, 0x30, bytes.Length); Array.Copy(new byte[] { 0x30, 0, 0, 0x08 }, 0, buffer, 0x10, 4); // the pointer to the data. Pointer is aligned, but data is not. var model = new PokemonModel(buffer); var viewPort = new ViewPort("test.gba", model) { Width = 0x10, Height = 0x10 }; var fileSystem = new StubFileSystem(); viewPort.SelectionStart = new Point(0, 3); viewPort.ExpandSelection(0, 3); viewPort.Copy.Execute(fileSystem); Assert.Contains("^This", fileSystem.CopyText); Assert.Contains("\"\" \"This", fileSystem.CopyText); // format, then space, then start of text }
public void CanNameExistingStringAnchor() { var buffer = Enumerable.Repeat((byte)0xFF, 0x200).ToArray(); var bytes = PCSString.Convert("Hello World!").ToArray(); buffer[0] = 0x08; buffer[1] = 0x00; buffer[2] = 0x00; buffer[3] = 0x08; Array.Copy(bytes, 0, buffer, 0x08, bytes.Length); var model = new PokemonModel(buffer); var viewPort = new ViewPort("test.txt", model) { Width = 0x10, Height = 0x10 }; viewPort.SelectionStart = new Point(0x08, 0); viewPort.Edit("^"); viewPort.Edit("bob\"\" "); Assert.Equal("bob", ((Pointer)viewPort[0, 0].Format).DestinationName); }
public void CanCopyStrings() { var buffer = Enumerable.Repeat((byte)0xFF, 0x200).ToArray(); for (int i = 0; i < 0x10; i++) { buffer[i] = 0x00; } var model = new PokemonModel(buffer); var viewPort = new ViewPort("test.txt", model) { Width = 0x10, Height = 0x10 }; var fileSystem = new StubFileSystem(); viewPort.Edit("^bob\"\" \"Hello World!\""); viewPort.SelectionStart = new Point(0, 0); viewPort.SelectionEnd = new Point(12, 0); viewPort.Copy.Execute(fileSystem); Assert.Equal("^bob\"\" \"Hello World!\"", fileSystem.CopyText); }
public void UsingBackspaceMidStringMakesTheStringEndThere() { var buffer = Enumerable.Repeat((byte)0xFF, 0x200).ToArray(); for (int i = 0; i < 0x10; i++) { buffer[i] = 0x00; } var model = new PokemonModel(buffer); var viewPort = new ViewPort("test.txt", model) { Width = 0x10, Height = 0x10 }; // add an anchor with some data on the 2nd line viewPort.SelectionStart = new Point(0, 1); viewPort.Edit("^bob\"\" \"Hello World!\""); viewPort.SelectionStart = new Point(6, 1); viewPort.Edit(ConsoleKey.Backspace); Assert.Equal("\"Hello \"", PCSString.Convert(model, 0x10, PCSString.ReadString(model, 0x10, true))); }
void SetArena() { //set only if there are pokemons (because this is called at start game before deactive fightManager, but the enemy has no pokemons until player find one in the grass) if (GameManager.instance.Player.PlayerPokemons.Count <= 0 || fightManager.enemyPokemons.Count <= 0) { return; } PokemonModel playerPokemon = null; //find first pokemon alive foreach (PokemonModel pokemon in GameManager.instance.Player.PlayerPokemons) { if (pokemon.CurrentHealth > 0) { playerPokemon = pokemon; break; } } //if no pokemon alive, show the first if (playerPokemon == null) { playerPokemon = GameManager.instance.Player.PlayerPokemons[0]; } PokemonModel enemyPokemon = fightManager.enemyPokemons[0]; //reset pokemons who fought fightManager.ResetPokemonsWhoFought(); //set currents pokemon in arena fightManager.SetCurrentPlayerPokemon(playerPokemon); fightManager.SetCurrentEnemyPokemon(enemyPokemon); //and set arena UI fightManager.FightUIManager.SetArena(); }
public void ThumbCompilerLabelTest() { var model = new PokemonModel(new byte[0x200]); model.ObserveAnchorWritten(new ModelDelta(), "DoStuff", new NoInfoRun(0x40)); var result = parser.Compile(model, 0x100 // sums all numbers from 1 to 10 in a loop // then calls the routine at "DoStuff" // then returns , "push lr, {}" , "mov r1, #1" , "mov r0, #0" , "Loop:" , "add r0, r0, r1" , "cmp r1, #10" , "bne <loop>" , "bl <DoStuff>" , "pop pc, {}" ); var expected = new byte[] { 0x00, 0b10110101, 0x01, 0b00100_001, 0x00, 0b00100_000, // loop 0b01_000_000, 0b0001100_0, // 0001100_001_000_000 0x0A, 0b00101_001, 0xFC, 0b1101_0001, 0xFF, 0b11110_111, 0x98, 0b11111_111, // (sbyte)0x98 = -68 0x00, 0b10111101, }; Assert.Equal(expected.Length, result.Count); for (int i = 0; i < expected.Length; i++) { Assert.Equal(expected[i], result[i]); } }
public void StartingAnAnchorAndGivingItNoNameClearsAnyAnchorNameAtThatPosition() { var buffer = new byte[0x100]; var model = new PokemonModel(buffer); var viewPort = new ViewPort("file.txt", model) { Width = 0x10, Height = 0x10 }; viewPort.SelectionStart = new Point(0, 1); viewPort.Edit("<bob>"); viewPort.SelectionStart = new Point(0, 2); viewPort.Edit("^bob "); viewPort.Edit("^ "); var format = (Pointer)viewPort[0, 1].Format; Assert.Equal(0x20, format.Destination); Assert.Equal(string.Empty, format.DestinationName); var address = model.GetAddressFromAnchor(new ModelDelta(), -1, string.Empty); Assert.Equal(Pointer.NULL, address); }
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { DataTemplate template = null; PokemonModel pokemon = item as PokemonModel; if (pokemon != null) { if (pokemon.TimesEncountered > 0) { template = pokemon.TimesCaptured == 0 ? PokemonSeen : PokemonCaptured; } else { template = PokemonUnseen; } } else { template = PokemonUnseen; } return(template); }
public void AnchorWithNoNameIsNotValidIfNothingPointsToIt() { var buffer = Enumerable.Repeat((byte)0xFF, 0x200).ToArray(); var model = new PokemonModel(buffer); var viewPort = new ViewPort("test.txt", model) { Width = 0x10, Height = 0x10 }; var errors = new List <string>(); viewPort.OnError += (sender, e) => errors.Add(e); viewPort.Edit("^ "); Assert.Equal(NoInfoRun.NullRun, model.GetNextRun(0)); Assert.Single(errors); Assert.IsType <None>(viewPort[0, 0].Format); errors.Clear(); viewPort.Edit("^\"\" "); Assert.Equal(NoInfoRun.NullRun, model.GetNextRun(0)); Assert.Single(errors); }
public void TableToolNotOfferedOnNormalText() { // Arrange var data = Enumerable.Range(0, 0x200).Select(i => (byte)0xFF).ToArray(); var model = new PokemonModel(data); var viewPort = new ViewPort("name.txt", model) { Width = 0x10, Height = 0x10 }; viewPort.Edit("^array[name\"\"16]3 "); viewPort.SelectionStart = new Point(0, 4); viewPort.Edit("^text\"\" Some Text\""); // Act viewPort.SelectionStart = new Point(2, 4); var items = viewPort.GetContextMenuItems(viewPort.SelectionStart); // Assert var matches = items.Where(item => item.Text.Contains("Table")); Assert.Empty(matches); }
public void TableToolUpdatesWhenTextToolDataChanges() { // Arrange var data = Enumerable.Range(0, 0x200).Select(i => (byte)0xFF).ToArray(); var model = new PokemonModel(data); var viewPort = new ViewPort("name.txt", model) { Width = 0x10, Height = 0x10 }; viewPort.Edit("^array[name\"\"16]3 "); viewPort.SelectionStart = new Point(8, 1); // Act: Update via the Text Tool viewPort.Tools.SelectedIndex = Enumerable.Range(0, 10).First(i => viewPort.Tools[i] == viewPort.Tools.StringTool); viewPort.Tools.StringTool.Content = Environment.NewLine + "Larry"; // Assert: Table Tool is updated viewPort.Tools.SelectedIndex = Enumerable.Range(0, 10).First(i => viewPort.Tools[i] == viewPort.Tools.TableTool); var field = (FieldArrayElementViewModel)viewPort.Tools.TableTool.Children[0]; Assert.Equal("Larry", field.Content); }
public void CanUndoStringTruncate() { var buffer = Enumerable.Repeat((byte)0xFF, 0x200).ToArray(); var bytes = PCSString.Convert("Hello World!").ToArray(); Array.Copy(bytes, 0, buffer, 0x08, bytes.Length); buffer[0] = 0x08; buffer[1] = 0x00; buffer[2] = 0x00; buffer[3] = 0x08; var model = new PokemonModel(buffer); var viewPort = new ViewPort("test.txt", model) { Width = 0x10, Height = 0x10 }; viewPort.SelectionStart = new Point(0x0C, 0); viewPort.Edit(ConsoleKey.Backspace); viewPort.Undo.Execute(); Assert.Equal(13, model.GetNextRun(0x08).Length); Assert.Equal("\"Hello World!\"", ((PCS)viewPort[0x0C, 0].Format).FullString); }
public void FormatIsRemovedWhenEditingAnAnchor() { var buffer = Enumerable.Repeat((byte)0xFF, 0x200).ToArray(); var bytes = PCSString.Convert("Hello World!").ToArray(); buffer[0] = 0x08; buffer[1] = 0x00; buffer[2] = 0x00; buffer[3] = 0x08; Array.Copy(bytes, 0, buffer, 0x08, bytes.Length); var model = new PokemonModel(buffer); var viewPort = new ViewPort("test.txt", model) { Width = 0x10, Height = 0x10 }; viewPort.SelectionStart = new Point(0x08, 0); viewPort.Edit("^"); var underEdit = (UnderEdit)viewPort[8, 0].Format; Assert.Equal("^", underEdit.CurrentText); }
public void StartBattele(PokemonModel myPokemonModel) { IsBattle = true; BattleVissibility(IsBattle); GameObject player = Instantiate(BattelePokemonPrefab[(int)_playerHelper.MyPokemonModel.PokemonType]); player.transform.SetParent(PlayerBattlePossition, false); player.transform.localScale = new Vector3(Scale / 2, Scale / 2, Scale / 2); PlayerBattleHelper = player.GetComponent <BattlePokemonHelper>(); PlayerBattleHelper.Load(_playerHelper.MyPokemonModel); GameObject enemy = Instantiate(BattelePokemonPrefab[(int)myPokemonModel.PokemonType]); enemy.transform.SetParent(BattlePossition, false); enemy.transform.localScale = new Vector3(Scale, Scale, Scale); EnemyBattleHelper = enemy.GetComponent <BattlePokemonHelper>(); EnemyBattleHelper.Load(myPokemonModel); StartCoroutine(CloseBattle()); }
public async Task <PokemonModel> GetOnePokemon(string pokemonName) { using (var http = new HttpClient()) { PokemonModel pokemon = null; var url = $"{baseUri}{pokemonName}"; http.BaseAddress = new Uri(url); if (http.BaseAddress == null) { throw new Exception("Sem conexão com a internet."); } var resultGet = await http.GetAsync(url); if (resultGet.IsSuccessStatusCode) { pokemon = JsonConvert.DeserializeObject <PokemonModel>(await resultGet.Content.ReadAsStringAsync()); } return(pokemon); } }
public void SetPokemonInArena(bool isPlayer) { //get player or enemy pokemon PokemonModel pokemon = isPlayer ? fightManager.currentPlayerPokemon : fightManager.currentEnemyPokemon; if (isPlayer) { //set player sprite, life and all playerImage.sprite = pokemon.pokemonData.PokemonBack; playerName.text = pokemon.GetObjectName(); playerLevel.text = playerLevelString + pokemon.CurrentLevel; SetHealthUI(true, 0, 1); playerExpSlider.value = (pokemon.CurrentExp - pokemon.ExpCurrentLevel) / (pokemon.ExpNextLevel - pokemon.ExpCurrentLevel); } else { //set enemy sprite, life and all enemyImage.sprite = pokemon.pokemonData.PokemonFront; enemyName.text = pokemon.GetObjectName(); enemyLevel.text = enemyLevelString + pokemon.CurrentLevel; SetHealthUI(false, 0, 1); enemyExpSlider.value = (pokemon.CurrentExp - pokemon.ExpCurrentLevel) / (pokemon.ExpNextLevel - pokemon.ExpCurrentLevel); } }
void ChangePokemon(Button button, PokemonModel pokemon) { //don't change if dead if (pokemon.CurrentHealth <= 0) { return; } //call it in fight manager fightManager.ChangePokemon(pokemon); //reset interactable of previous button foreach (Button poolButton in pokemonsPooling.PooledObjects) { if (poolButton.interactable == false) { poolButton.interactable = true; break; } } //set not interactable this new one button.interactable = false; }
//选择Pokemon private void OnSelectPokemon() { string id = pokemonDP.captionText.text.Substring(0, 3); pokemon = PublicDataManager.instance.GetPokemonModel(int.Parse(id)); pokemonImage.sprite = Resources.Load <Sprite>("PokemonSprites/" + id + "/Front/IMG00000"); //特性 charactersTemp.Clear(); string[] chIds = PublicDataManager.instance.GetCharacterIds(pokemon.id).Split('|'); foreach (string s in chIds) { int n = int.Parse(s); string name = PublicDataManager.instance.GetCharacterModelNameCh(n); charactersTemp.Add(StringUtil.FormatIdName(n, name)); } characterDP.ClearOptions(); characterDP.AddOptions(charactersTemp); //技能 string[] skillIds = pokemon.skills.Split('|'); skillsTemp.Clear(); foreach (string s in skillIds) { int n = int.Parse(s); string name = PublicDataManager.instance.GetSkillModelNameCh(n); skillsTemp.Add(StringUtil.FormatIdName(n, name)); } for (int i = 0; i < skillDPs.Length; i++) { skillDPs[i].ClearOptions(); skillDPs[i].AddOptions(skillsTemp); skillDPs[i].value = i; skillDPs[i].RefreshShownValue(); } RefreshAbilityValue(); }
public BattleStartMessage(Pokemon _pokemon, int _index) { index = _index; PokemonModel pM = _pokemon.GetModel(); CharacterModel cM = _pokemon.GetCharacter().GetModel(); PersonalityModel perM = _pokemon.GetPersonality().GetModel(); ItemModel iM = _pokemon.GetItem().GetModel(); Skill[] skM = _pokemon.GetSkills();//固定为4个技能 pokemonId = pM.id; hpAv = pM.hp; attackAv = pM.attack; defenceAv = pM.defense; sp_attackAv = pM.sp_attack; sp_defenceAv = pM.sp_defense; speedAv = pM.speed; charavterId = cM.id; personalityId = perM.id; itemId = iM.id; for (int i = 0; i < 4; i++) { skillIds[i] = skM[i].GetModel().id; } }
public void CanUseViewPortToAutoFindTextWithoutKnowingAboutPointersToIt() { var text = PCSString.Convert("This is some text."); var buffer = Enumerable.Range(0, 0x200).Select(i => (byte)0xFF).ToArray(); text.CopyTo(buffer, 0x10); var model = new PokemonModel(buffer); model.WritePointer(new ModelDelta(), 0x00, 0x10); var viewPort = new ViewPort("file.txt", model) { Width = 0x10, Height = 0x10 }; viewPort.SelectionStart = new Point(3, 1); // just a random byte in the middle of the text var errors = new List <string>(); viewPort.OnError += (sender, e) => errors.Add(e); viewPort.IsText.Execute(); // this line should find the start of the text and add a run, even with no pointer to it Assert.IsType <PCS>(viewPort[3, 1].Format); }
public override void Open() { //初始化Pokemon阵容 for (int i = 0; i < slots.Length; i++) { PokemonModel p = RuntimeData.GetMyPokemonByIndex(i).GetModel(); Sprite icon = Resources.Load <Sprite>("PokemonSprites/" + StringUtil.FormatId(p.id) + "/Icon/IMG00000"); slots[i].SetProperty(icon, p.name_ch, p.hp); int index = i; //更换Pokemon slots[i].gameObject.GetComponent <Button>().onClick.AddListener(() => { RuntimeData.SetCurrentMyIndex(index); ChangePokemon(RuntimeData.GetCurrentMyPokemon(), true); }); } //默认第一个Pokemon先上场 ChangePokemon(RuntimeData.GetCurrentMyPokemon(), true); ChangePokemon(RuntimeData.GetCurrentOppPokemon(), false); UIDelegateManager.AddObserver(UIMessageType.RefreshMyHpText, RefreshMyHpText); UIDelegateManager.AddObserver(UIMessageType.RefreshMyHpBar, RefreshMyHpBar); UIDelegateManager.AddObserver(UIMessageType.RefreshOpponentHpBar, RefreshOpponentHpBar); base.Open(); }
public void PointerGetsSetToZeroAfterAnchorGetsDeleted() { var buffer = new byte[0x100]; var model = new PokemonModel(buffer); var viewPort = new ViewPort("file.txt", model) { Width = 0x10, Height = 0x10 }; var token = new ModelDelta(); viewPort.SelectionStart = new Point(0, 1); viewPort.Edit("^bob "); viewPort.SelectionStart = new Point(0, 2); viewPort.Edit("<bob>"); viewPort.SelectionStart = new Point(0, 1); // as an alternative to being able to delete an anchor from the viewPort, // just edit the model directly and then scroll to force the viewPort to refresh model.ClearFormatAndData(token, 0xF, 2); viewPort.ScrollValue = 1; viewPort.ScrollValue = 0; Assert.Equal(Pointer.NULL, ((Pointer)viewPort[0, 2].Format).Destination); }
public void UndoRedoRestoresSaveStar() { var buffer = Enumerable.Repeat((byte)0xFF, 0x200).ToArray(); var model = new PokemonModel(buffer); var viewPort = new ViewPort("file.txt", model) { Width = 0x10, Height = 0x10 }; int nameChangedCount = 0; viewPort.PropertyChanged += (sender, e) => { if (e.PropertyName == nameof(viewPort.Name)) { nameChangedCount++; } }; var fileSystem = new StubFileSystem(); viewPort.Edit("AA"); // notify 1 -> adding the star viewPort.Undo.Execute(); // notify 2 -> removing the star viewPort.Redo.Execute(); // notify 3 -> re-adding the star Assert.Contains("*", viewPort.Name); Assert.Equal(3, nameChangedCount); }
public void UndoCanHandleNameMove() { var buffer = Enumerable.Repeat((byte)0xFF, 0x200).ToArray(); var model = new PokemonModel(buffer); var viewPort = new ViewPort("file.txt", model) { Width = 0x10, Height = 0x10 }; // operation 1 viewPort.Edit("<bob> 03 08 24 16 <bob>"); // operation 2 viewPort.SelectionStart = new Point(0, 1); viewPort.Edit("^bob "); Assert.Equal(0x10, model.ReadPointer(0x00)); Assert.Equal("bob", ((Pointer)viewPort[0, 0].Format).DestinationName); // undo operation 2 viewPort.Undo.Execute(); Assert.Equal(Pointer.NULL, model.ReadPointer(0x00)); Assert.Equal("bob", ((Pointer)viewPort[0, 0].Format).DestinationName); // operation 3 viewPort.SelectionStart = new Point(0, 2); viewPort.Edit("^bob "); Assert.Equal(0x20, model.ReadPointer(0x00)); Assert.Equal("bob", ((Pointer)viewPort[0, 0].Format).DestinationName); // undo operation 3 viewPort.Undo.Execute(); Assert.Equal(Pointer.NULL, model.ReadPointer(0x00)); Assert.Equal("bob", ((Pointer)viewPort[0, 0].Format).DestinationName); }
public ActionResult Create(FormCollection collection) { try { var pokemon = new PokemonModel { Name = collection["Name"], Number = int.Parse(collection["Number"]) }; if (pokemon.Save()) { return(RedirectToAction("Index")); } else { return(View(pokemon)); } } catch { return(View()); } }
void AddPokemon(int index) { //remove menu fightManager.FightUIManager.HideCatchPokemonMenu(); //get pokemon to replace PokemonModel pokemonToReplace = index < GameManager.instance.Player.PlayerPokemons.Count ? GameManager.instance.Player.PlayerPokemons[index] : null; //add or replace pokemon GameManager.instance.Player.AddPokemon(fightManager.currentEnemyPokemon, index); //if need to replace a pokemon, show replacePokemonDescription before confirm if (pokemonToReplace != null) { string s = Utility.Parse(replacePokemonDescription, pokemonToReplace.GetObjectName()); fightManager.FightUIManager.SetDescription(s, ConfirmPokemonDescription); } //else show immediatly the confirm else { ConfirmPokemonDescription(); } }
public void LoadRegisterCommmandsLoadWordAligned() { //01101 # rn rd var code = new ushort[] { 0b0000_0000_0000_0000, // nop 0b01001_000_00000001, // ldr #1 <-- 8, not 10 0b10111101_00000000, // pop pc {} 0b00000000_00000000, // nop 0xBEEF, // .word 0xDEAD, }; var bytes = code.SelectMany(pair => new[] { (byte)pair, (byte)(pair >> 8) }).ToArray(); var model = new PokemonModel(bytes); var lines = parser.Parse(model, 0, bytes.Length).Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); Assert.Equal(6, lines.Length); Assert.Equal("000000:", lines[0]); Assert.Equal(" nop", lines[1]); Assert.Equal(" ldr r0, [pc, <000008>]", lines[2]); Assert.Equal(" pop {pc}", lines[3]); Assert.Equal("000008:", lines[4]); Assert.Equal(" .word 0xDEADBEEF", lines[5]); }
public void AddPokemon(PokemonModel model) { _pokemonModel.Add(model); }
public ActionResult Create() { var model = new PokemonModel(); return(View(model)); }
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]; }
public Pokemon(GameMode gameMode, PokemonModel dataModel, PokemonSaveModel saveModel) { _gameMode = gameMode; _dataModel = dataModel; _saveModel = saveModel; }
public (int pAHP, int pBHP) HandleRound(PokemonModel startingPokemon, PokemonModel pA, int pAHP, PokemonModel pB, int pBHP) { if (startingPokemon == pA) { pBHP -= (pA.Props["Attack"] - pB.Props["Defense"]); if (pBHP <= 0) { return(pAHP, pBHP); } pAHP -= (pB.Props["Attack"] - pA.Props["Defense"]); } else { pAHP -= (pB.Props["Attack"] - pA.Props["Defense"]); if (pAHP <= 0) { return(pAHP, pBHP); } pBHP -= (pA.Props["Attack"] - pB.Props["Defense"]); } return(pAHP, pBHP); }