private void ShowWildPokemon(PBEBattlePokemon pkmn) { PkmnPosition pos = GetStuff(pkmn, pkmn.FieldPosition); UpdatePokemon(pkmn, pos, true, false); // Only set the info to visible because the sprite is already loaded and visible pos.InfoVisible = true; }
// Will cause double load for some cases (like status2 updating) // Because new animated image is created public void UpdateSprites(PkmnPosition pos, bool paused) { Mini = PokemonImageUtils.GetMini(Pkmn.KnownSpecies, Pkmn.KnownForm, Pkmn.KnownGender, Pkmn.KnownShiny, PartyPkmn.IsEgg); PBEStatus2 status2 = _useKnownInfo ? Pkmn.KnownStatus2 : Pkmn.Status2; AnimImage = PokemonImageUtils.GetPokemonImage(Pkmn.KnownSpecies, Pkmn.KnownForm, Pkmn.KnownGender, Pkmn.KnownShiny, _backImage, status2.HasFlag(PBEStatus2.Substitute), status2.HasFlag(PBEStatus2.Disguised) ? DisguisedPID : PartyPkmn.PID, PartyPkmn.IsEgg); AnimImage.IsPaused = paused; if (pos is null) { return; // Only for updating visibility below } if (!status2.HasFlag(PBEStatus2.Substitute)) { if (status2.HasFlag(PBEStatus2.Airborne) || status2.HasFlag(PBEStatus2.ShadowForce) || status2.HasFlag(PBEStatus2.Underground) || status2.HasFlag(PBEStatus2.Underwater)) { pos.PkmnVisible = false; } else { pos.PkmnVisible = true; } } }
// pkmn.FieldPosition must be updated before calling these private void ShowPokemon(PBEBattlePokemon pkmn) { PkmnPosition pos = GetStuff(pkmn, pkmn.FieldPosition); UpdatePokemon(pkmn, pos, true, true); pos.InfoVisible = true; pos.PkmnVisible = true; }
private void HidePokemon(PBEBattlePokemon pkmn, PBEFieldPosition oldPosition) { PkmnPosition pos = GetStuff(pkmn, oldPosition); AnimatedImage img = pos.SPkmn.AnimImage; pos.InfoVisible = false; pos.PkmnVisible = false; img.IsPaused = true; }
private void UpdatePokemon(PBEBattlePokemon pkmn, PkmnPosition pos, bool info, bool sprite) { SpritedBattlePokemon sPkmn = SpritedParties[pkmn.Trainer.Id][pkmn]; if (info) { sPkmn.UpdateInfoBar(); } if (sprite) { sPkmn.UpdateSprites(pos, false); } pos.SPkmn = sPkmn; }
public SpritedBattlePokemonParty(PBEList <PBEBattlePokemon> pBattle, Party p, bool backImage, bool useKnownInfo, BattleGUI battleGUI) { Party = p; BattleParty = pBattle; SpritedParty = new SpritedBattlePokemon[pBattle.Count]; for (int i = 0; i < pBattle.Count; i++) { PkmnPosition wildPos = null; PBEBattlePokemon pPkmn = pBattle[i]; if (pPkmn.IsWild) { wildPos = battleGUI.GetStuff(pPkmn, pPkmn.FieldPosition); } SpritedParty[i] = new SpritedBattlePokemon(pBattle[i], p[i], backImage, useKnownInfo, wildPos); } }
public BattleGUI(PBEBattleFormat format) { _positions = new PkmnPosition[2][]; switch (format) { case PBEBattleFormat.Single: { _positions[0] = new PkmnPosition[1] { new PkmnPosition(0.015f, 0.25f, 0.40f, 0.95f) // Center }; _positions[1] = new PkmnPosition[1] { new PkmnPosition(0.10f, 0.015f, 0.73f, 0.51f) // Center }; break; } case PBEBattleFormat.Double: { _positions[0] = new PkmnPosition[2] { new PkmnPosition(0.015f, 0.25f, 0.25f, 0.92f), // Left new PkmnPosition(0.295f, 0.27f, 0.58f, 0.96f) // Right }; _positions[1] = new PkmnPosition[2] { new PkmnPosition(0.38f, 0.035f, 0.85f, 0.53f), // Left new PkmnPosition(0.10f, 0.015f, 0.63f, 0.52f) // Right }; break; } case PBEBattleFormat.Triple: { _positions[0] = new PkmnPosition[3] { new PkmnPosition(0.015f, 0.25f, 0.12f, 0.96f), // Left new PkmnPosition(0.295f, 0.27f, 0.38f, 0.89f), // Center new PkmnPosition(0.575f, 0.29f, 0.7f, 0.94f) // Right }; _positions[1] = new PkmnPosition[3] { new PkmnPosition(0.66f, 0.055f, 0.91f, 0.525f), // Left new PkmnPosition(0.38f, 0.035f, 0.75f, 0.55f), // Center new PkmnPosition(0.10f, 0.015f, 0.56f, 0.53f) // Right }; break; } case PBEBattleFormat.Rotation: { _positions[0] = new PkmnPosition[3] { new PkmnPosition(0.015f, 0.25f, 0.06f, 0.99f), // Left new PkmnPosition(0.295f, 0.27f, 0.4f, 0.89f), // Center new PkmnPosition(0.575f, 0.29f, 0.88f, 1.025f) // Right }; _positions[1] = new PkmnPosition[3] { new PkmnPosition(0.66f, 0.055f, 0.97f, 0.48f), // Left new PkmnPosition(0.38f, 0.035f, 0.75f, 0.55f), // Center new PkmnPosition(0.10f, 0.015f, 0.5f, 0.49f) // Right }; break; } default: throw new ArgumentOutOfRangeException(nameof(format)); } }
private void UpdatePokemon(PBEBattlePokemon pkmn, bool info, bool sprite) { PkmnPosition pos = GetStuff(pkmn, pkmn.FieldPosition); UpdatePokemon(pkmn, pos, info, sprite); }
public SpritedBattlePokemon(PBEBattlePokemon pkmn, PartyPokemon pPkmn, bool backImage, bool useKnownInfo, PkmnPosition wildPos) { PartyPkmn = pPkmn; Pkmn = pkmn; DisguisedPID = pPkmn.PID; // By default, use our own PID (for example, wild disguised pkmn) _backImage = backImage; _useKnownInfo = useKnownInfo; InfoBarImg = new Image(100, useKnownInfo ? 30 : 42); UpdateInfoBar(); UpdateSprites(wildPos, wildPos is null); UpdateAnimationSpeed(); // Ensure the proper speed is set upon entering battle if (wildPos != null) { wildPos.InfoVisible = false; wildPos.PkmnVisible = true; wildPos.SPkmn = this; } }
private static unsafe void RenderPkmnInfo(uint *bmpAddress, int bmpWidth, int bmpHeight, PkmnPosition pos) { pos.SPkmn.InfoBarImg.DrawOn(bmpAddress, bmpWidth, bmpHeight, pos.BarX, pos.BarY); }
private static unsafe void RenderPkmn(uint *bmpAddress, int bmpWidth, int bmpHeight, PkmnPosition pos, bool ally) { SpritedBattlePokemon sPkmn = pos.SPkmn; AnimatedImage img = sPkmn.AnimImage; int width = img.Width; int height = img.Height; if (ally) { width *= 2; height *= 2; } img.DrawSizedOn(bmpAddress, bmpWidth, bmpHeight, RenderUtils.GetCoordinatesForCentering(bmpWidth, width, pos.MonX), RenderUtils.GetCoordinatesForEndAlign(bmpHeight, height, pos.MonY), width, height); }