2018-01-02 20:00:41 +00:00
|
|
|
|
namespace PKHeX.Core
|
|
|
|
|
{
|
|
|
|
|
public interface ILocation
|
|
|
|
|
{
|
|
|
|
|
int Location { get; set; }
|
|
|
|
|
int EggLocation { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static partial class Extensions
|
|
|
|
|
{
|
|
|
|
|
public static int GetLocation(this ILocation encounter)
|
|
|
|
|
{
|
|
|
|
|
if (encounter == null)
|
|
|
|
|
return -1;
|
2018-05-12 15:13:39 +00:00
|
|
|
|
return encounter.Location != 0
|
|
|
|
|
? encounter.Location
|
2018-01-02 20:00:41 +00:00
|
|
|
|
: encounter.EggLocation;
|
|
|
|
|
}
|
2018-08-03 03:11:42 +00:00
|
|
|
|
|
2018-01-31 04:24:45 +00:00
|
|
|
|
internal static string GetEncounterLocation(this ILocation Encounter, int gen, int version = -1)
|
2018-01-02 20:00:41 +00:00
|
|
|
|
{
|
|
|
|
|
int loc = Encounter.GetLocation();
|
|
|
|
|
if (loc < 0)
|
|
|
|
|
return null;
|
2018-01-31 04:24:45 +00:00
|
|
|
|
|
2018-08-26 23:29:52 +00:00
|
|
|
|
if (version == (int)GameVersion.CXD) // handle C/XD locations
|
2018-01-31 04:24:45 +00:00
|
|
|
|
{
|
|
|
|
|
var locs = GameInfo.Strings.metCXD_00000;
|
|
|
|
|
return loc >= locs.Length ? null : locs[loc];
|
|
|
|
|
}
|
|
|
|
|
|
2018-11-12 06:49:17 +00:00
|
|
|
|
if (GameVersion.GG.Contains(version) && Encounter.Location < 100)
|
|
|
|
|
{
|
|
|
|
|
var locs = GameInfo.Strings.metGG_00000;
|
|
|
|
|
return loc >= locs.Length ? null : locs[loc];
|
|
|
|
|
}
|
|
|
|
|
|
2018-01-02 20:00:41 +00:00
|
|
|
|
return GameInfo.GetLocationName(loc != Encounter.Location, loc, gen, gen);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|