Files
YarikStudio/AssetStudio/GameManager.cs
2022-09-27 17:40:31 +04:00

149 lines
3.7 KiB
C#

using System;
using System.Linq;
using System.Reflection;
using System.Collections.Generic;
using System.Security.Cryptography;
namespace AssetStudio
{
public static class GameManager
{
private static Dictionary<int, Game> Games = new Dictionary<int, Game>();
static GameManager()
{
int count = 0;
foreach (Type type in
Assembly.GetAssembly(typeof(Game)).GetTypes()
.Where(myType => myType.IsClass && !myType.IsAbstract && myType.IsSubclassOf(typeof(Game))))
{
var format = (Game)Activator.CreateInstance(type);
Games.Add(count++, format);
}
}
public static Game GetGame(int index)
{
if (!Games.TryGetValue(index, out var format))
{
throw new ArgumentException("Invalid format !!");
}
return format;
}
public static Game GetGame(string name)
{
foreach(var game in Games)
{
if (game.Value.Name == name)
return game.Value;
}
return null;
}
public static Game[] GetGames() => Games.Values.ToArray();
public static string[] GetGameNames() => Games.Values.Select(x => x.Name).ToArray();
public static string SupportedGames() => $"Supported Games:\n{string.Join("\n", Games.Values.Select(x => $"{x.Name} ({x.DisplayName})"))}";
public static string ToString() => string.Join("\n", Games.Values);
}
public abstract class Game
{
public string Name;
public string DisplayName;
public string Extension;
public string MapName;
public string Path;
public override string ToString() => DisplayName;
}
public class GI : Game
{
public GI()
{
Name = "GI";
DisplayName = "GI";
MapName = "BLKMap";
Extension = ".blk";
Path = "GI_Data|YS_Data";
}
}
public class CB1 : Game
{
public CB1()
{
Name = "CB1";
DisplayName = "GI_CB1";
MapName = "CB1Map";
Extension = ".asb";
Path = "GS_Data";
}
}
public class CB2 : Game
{
public CB2()
{
Name = "CB2";
DisplayName = "GI_CB2";
MapName = "CB2Map";
Extension = ".blk";
Path = "G_Data";
}
}
public class CB3 : Game
{
public CB3()
{
Name = "CB3";
DisplayName = "GI_CB3";
MapName = "CB3Map";
Extension = ".blk";
Path = "YS_Data";
}
}
public class BH3 : Game
{
public BH3()
{
Name = "BH3";
DisplayName = "HI3";
MapName = "WMVMap";
Extension = ".wmv";
Path = "BH3_Data";
}
}
public class ZZZ : Game
{
public ZZZ()
{
Name = "ZZZ";
DisplayName = "ZZZ";
MapName = "ZZZMap";
Extension = ".bundle";
Path = "Win_Data/StreamingAssets/Bundles";
}
}
public class SR : Game
{
public SR()
{
Name = "SR";
DisplayName = "SR";
MapName = "ENCRMap";
Extension = ".unity3d";
Path = "SR_Data";
}
}
public class TOT : Game
{
public TOT()
{
Name = "TOT";
DisplayName = "ToT";
MapName = "TOTMap";
Extension = ".blk";
Path = "AssetbundlesCache";
}
}
}