namespace PKHeX.Core { /// <summary> /// GameCube save file interface for memory cards. /// </summary> public interface IGCSaveFile { /// <summary> /// GameCube Memory Card the save file was read from. /// </summary> SAV3GCMemoryCard? MemoryCard { get; } } public static class GCSaveExtensions { /// <summary> /// Gets an export filter for a GameCube file. /// </summary> public static string GCFilter(this IGCSaveFile gc) { const string regular = "GameCube Save File|*.gci|All Files|*.*"; const string memcard = "Memory Card Raw File|*.raw|Memory Card Binary File|*.bin|"; return gc.MemoryCard is not null ? memcard + regular : regular; } /// <summary> /// Gets the export extension for a GameCube file. /// </summary> public static string GCExtension(this IGCSaveFile gc) => gc.MemoryCard is not null ? ".raw" : ".gci"; } }