pkNX/pkNX.Structures/Legality/GameInfo.cs
Matt 7fc8f967dd
Add Big Shiny Sprites (#62)
* Add Big Shiny Sprites
Also addresses Trainer Meltan failing to evolve if requirements are met.
Fix Personal Held Item randomization.

* Fix silly typo
Copy/paste is a curse.

* Add Double Battle Classes to blacklist
Don't allow them to be set to any Trainers for crashes.
2020-04-24 07:52:01 -07:00

112 lines
3.4 KiB
C#

using System;
namespace pkNX.Structures
{
/// <summary>
/// Misc information pertaining to the game.
/// </summary>
public class GameInfo
{
public readonly GameVersion Game;
public readonly int Generation;
public int MaxSpeciesID { get; private set; }
public int MaxItemID { get; private set; }
public int MaxMoveID { get; private set; }
public ushort[] HeldItems { get; private set; }
public int MaxAbilityID { get; private set; }
public bool XY { get; private set; }
public bool AO { get; private set; }
public bool SM { get; private set; }
public bool USUM { get; private set; }
public bool GG { get; private set; }
public bool SWSH { get; private set; }
public GameInfo(GameVersion game)
{
Game = game;
Generation = game.GetGeneration();
GetInitMethod(game)();
}
private Action GetInitMethod(GameVersion game)
{
return game switch
{
GameVersion.XY => (Action) LoadXY,
GameVersion.ORASDEMO => LoadAO,
GameVersion.ORAS => LoadAO,
GameVersion.SMDEMO => LoadSM,
GameVersion.SM => LoadSM,
GameVersion.USUM => LoadUSUM,
GameVersion.GG => LoadGG,
GameVersion.SW => LoadSWSH,
GameVersion.SH => LoadSWSH,
GameVersion.SWSH => LoadSWSH,
_ => throw new ArgumentException(nameof(game))
};
}
private void LoadXY()
{
XY = true;
MaxSpeciesID = Legal.MaxSpeciesID_6;
MaxMoveID = Legal.MaxMoveID_6_XY;
MaxItemID = Legal.MaxItemID_6_XY;
HeldItems = Legal.HeldItem_XY;
MaxAbilityID = Legal.MaxAbilityID_6_XY;
}
private void LoadAO()
{
AO = true;
MaxSpeciesID = Legal.MaxSpeciesID_6;
MaxMoveID = Legal.MaxMoveID_6_AO;
MaxItemID = Legal.MaxItemID_6_AO;
HeldItems = Legal.HeldItem_AO;
MaxAbilityID = Legal.MaxAbilityID_6_AO;
}
private void LoadSM()
{
SM = true;
MaxSpeciesID = Legal.MaxSpeciesID_7_SM;
MaxMoveID = Legal.MaxMoveID_7_SM;
MaxItemID = Legal.MaxItemID_7_SM;
HeldItems = Legal.HeldItems_SM;
MaxAbilityID = Legal.MaxAbilityID_7_SM;
}
private void LoadUSUM()
{
USUM = true;
MaxSpeciesID = Legal.MaxSpeciesID_7_USUM;
MaxMoveID = Legal.MaxMoveID_7_USUM;
MaxItemID = Legal.MaxItemID_7_USUM;
HeldItems = Legal.HeldItems_USUM;
MaxAbilityID = Legal.MaxAbilityID_7_USUM;
}
private void LoadGG()
{
GG = true;
MaxSpeciesID = Legal.MaxSpeciesID_7_GG;
MaxMoveID = Legal.MaxMoveID_7_GG;
MaxItemID = Legal.MaxItemID_7_GG;
HeldItems = new ushort[1];
MaxAbilityID = Legal.MaxAbilityID_7_GG;
}
private void LoadSWSH()
{
SWSH = true;
MaxSpeciesID = Legal.MaxSpeciesID_8;
MaxMoveID = Legal.MaxMoveID_8;
MaxItemID = Legal.MaxItemID_8;
HeldItems = Legal.HeldItems_SWSH;
MaxAbilityID = Legal.MaxAbilityID_8;
}
}
}