Skip to content

Commit

Permalink
Improve TACTSharp integration
Browse files Browse the repository at this point in the history
  • Loading branch information
Marlamin committed Jan 8, 2025
1 parent d371acf commit 61f9f61
Show file tree
Hide file tree
Showing 9 changed files with 100 additions and 67 deletions.
15 changes: 12 additions & 3 deletions Controllers/CASCController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1257,9 +1257,18 @@ public string Json(uint fileDataID, string? build)
{
if (build == CASC.BuildName)
{
var casc = new CASCFileProvider();
casc.InitCasc(CASC.cascHandler);
FileProvider.SetProvider(casc, CASC.BuildName);
if (CASC.IsCASCLibInit)
{
var casc = new CASCFileProvider();
casc.InitCasc(CASC.cascHandler);
FileProvider.SetProvider(casc, CASC.BuildName);
}
else if (CASC.IsTACTSharpInit)
{
var tact = new TACTSharpFileProvider();
tact.InitTACT(CASC.buildInstance);
FileProvider.SetProvider(tact, CASC.BuildName);
}
}
else
{
Expand Down
15 changes: 12 additions & 3 deletions Controllers/ModelController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,18 @@ public string Info(int fileDataID)
{
if (!FileProvider.HasProvider(CASC.BuildName))
{
var casc = new CASCFileProvider();
casc.InitCasc(CASC.cascHandler);
FileProvider.SetProvider(casc, CASC.BuildName);
if (CASC.IsCASCLibInit)
{
var casc = new CASCFileProvider();
casc.InitCasc(CASC.cascHandler);
FileProvider.SetProvider(casc, CASC.BuildName);
}
else if (CASC.IsTACTSharpInit)
{
var tact = new TACTSharpFileProvider();
tact.InitTACT(CASC.buildInstance);
FileProvider.SetProvider(tact, CASC.BuildName);
}
}

FileProvider.SetDefaultBuild(CASC.BuildName);
Expand Down
6 changes: 5 additions & 1 deletion Controllers/NamingController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ public NamingController(IDBCManager dbcManager, IDBDProvider dbdProvider, IDBCPr
Namer.cacheDir = "caches";

Namer.SetProviders(dbcProvider, dbdProvider);
Namer.SetCASC(ref CASC.cascHandler, ref CASC.AvailableFDIDs);
if(CASC.IsCASCLibInit)
Namer.SetCASC(ref CASC.cascHandler, ref CASC.AvailableFDIDs);
else if (CASC.IsTACTSharpInit)
Namer.SetTACT(ref CASC.buildInstance, ref CASC.AvailableFDIDs);

Namer.SetGetExpansionFunction(SQLiteDB.GetFirstVersionNumberByFileDataID);
Namer.SetSetCreatureNameForFDIDFunction(SQLiteDB.SetCreatureNameForFDID);
Namer.SetGetCreatureNameByDisplayIDFunction(SQLiteDB.GetCreatureNameByDisplayID);
Expand Down
13 changes: 11 additions & 2 deletions Services/CASC.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public struct AvailableBuild

private static readonly HttpClient WebClient = new();

private static BuildInstance buildInstance;
public static BuildInstance buildInstance;

public static async void InitTACT(string wowFolder, string product)
{
Expand All @@ -80,6 +80,15 @@ public static async void InitTACT(string wowFolder, string product)
if (File.Exists("fakebuildconfig"))
Settings.BuildConfig = "fakebuildconfig";

Settings.Locale = SettingsManager.tactLocale;
Settings.Region = SettingsManager.region;

if (SettingsManager.showAllFiles)
Console.WriteLine("!!!! Warning: Show all files setting is not supported when using TACTSharp.");

if (SettingsManager.preferHighResTextures)
Console.WriteLine("!!!! Warning: High res textures setting is not supported when using TACTSharp.");

string buildConfig;
string cdnConfig;
if (wowFolder != null)
Expand Down Expand Up @@ -390,7 +399,7 @@ public static void InitCasc(string? basedir = null, string program = "wowt", Loc
CASCConfig.BuildConfigOverride = "fakebuildconfig";
CASCConfig.CDNConfigOverride = "fakecdnconfig";

locale = SettingsManager.locale;
locale = SettingsManager.cascLocale;

if (basedir == null)
{
Expand Down
15 changes: 12 additions & 3 deletions Services/FileLinker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,18 @@ static Linker()

if(!FileProvider.HasProvider(CASC.BuildName))
{
var casc = new CASCFileProvider();
casc.InitCasc(CASC.cascHandler);
FileProvider.SetProvider(casc, CASC.BuildName);
if (CASC.IsCASCLibInit)
{
var casc = new CASCFileProvider();
casc.InitCasc(CASC.cascHandler);
FileProvider.SetProvider(casc, CASC.BuildName);
}
else if (CASC.IsTACTSharpInit)
{
var tact = new TACTSharpFileProvider();
tact.InitTACT(CASC.buildInstance);
FileProvider.SetProvider(tact, CASC.BuildName);
}
}
}

Expand Down
97 changes: 45 additions & 52 deletions SettingsManager.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace wow.tools.local
using TACTSharp;

namespace wow.tools.local
{
public static class SettingsManager
{
Expand All @@ -10,7 +12,8 @@ public static class SettingsManager
public static string manifestFolder;
public static string wowProduct;
public static string region;
public static CASCLib.LocaleFlags locale;
public static CASCLib.LocaleFlags cascLocale;
public static RootInstance.LocaleFlags tactLocale;
public static bool showAllFiles = false;
public static string extractionDir;
public static bool preferHighResTextures = false;
Expand Down Expand Up @@ -94,7 +97,8 @@ public static void LoadSettings()
}
else
{
locale = CASCLib.LocaleFlags.enUS;
cascLocale = CASCLib.LocaleFlags.enUS;
tactLocale = RootInstance.LocaleFlags.enUS;
}

if (config.GetSection("config")["manifestFolder"] != null)
Expand All @@ -119,59 +123,48 @@ private static void SetLocale(string locValue)
{
if (locValue == null)
{
locale = CASCLib.LocaleFlags.enUS;
cascLocale = CASCLib.LocaleFlags.enUS;
tactLocale = RootInstance.LocaleFlags.enUS;
return;
}

switch (locValue)
cascLocale = locValue switch
{
case "deDE":
locale = CASCLib.LocaleFlags.deDE;
break;
case "enUS":
locale = CASCLib.LocaleFlags.enUS;
break;
case "enGB":
locale = CASCLib.LocaleFlags.enGB;
break;
case "ruRU":
locale = CASCLib.LocaleFlags.ruRU;
break;
case "zhCN":
locale = CASCLib.LocaleFlags.zhCN;
break;
case "zhTW":
locale = CASCLib.LocaleFlags.zhTW;
break;
case "enTW":
locale = CASCLib.LocaleFlags.enTW;
break;
case "esES":
locale = CASCLib.LocaleFlags.esES;
break;
case "esMX":
locale = CASCLib.LocaleFlags.esMX;
break;
case "frFR":
locale = CASCLib.LocaleFlags.frFR;
break;
case "itIT":
locale = CASCLib.LocaleFlags.itIT;
break;
case "koKR":
locale = CASCLib.LocaleFlags.koKR;
break;
case "ptBR":
locale = CASCLib.LocaleFlags.ptBR;
break;
case "ptPT":
locale = CASCLib.LocaleFlags.ptPT;
break;
default:
Console.WriteLine("Locale " + locValue + " not found, defaulting to enUS");
locale = CASCLib.LocaleFlags.enUS;
break;
}
"deDE" => CASCLib.LocaleFlags.deDE,
"enUS" => CASCLib.LocaleFlags.enUS,
"enGB" => CASCLib.LocaleFlags.enGB,
"ruRU" => CASCLib.LocaleFlags.ruRU,
"zhCN" => CASCLib.LocaleFlags.zhCN,
"zhTW" => CASCLib.LocaleFlags.zhTW,
"enTW" => CASCLib.LocaleFlags.enTW,
"esES" => CASCLib.LocaleFlags.esES,
"esMX" => CASCLib.LocaleFlags.esMX,
"frFR" => CASCLib.LocaleFlags.frFR,
"itIT" => CASCLib.LocaleFlags.itIT,
"koKR" => CASCLib.LocaleFlags.koKR,
"ptBR" => CASCLib.LocaleFlags.ptBR,
"ptPT" => CASCLib.LocaleFlags.ptPT,
_ => throw new Exception("Invalid locale. Available locales: deDE, enUS, enGB, ruRU, zhCN, zhTW, enTW, esES, esMX, frFR, itIT, koKR, ptBR, ptPT"),
};

tactLocale = locValue switch
{
"deDE" => RootInstance.LocaleFlags.deDE,
"enUS" => RootInstance.LocaleFlags.enUS,
"enGB" => RootInstance.LocaleFlags.enGB,
"ruRU" => RootInstance.LocaleFlags.ruRU,
"zhCN" => RootInstance.LocaleFlags.zhCN,
"zhTW" => RootInstance.LocaleFlags.zhTW,
"enTW" => RootInstance.LocaleFlags.enTW,
"esES" => RootInstance.LocaleFlags.esES,
"esMX" => RootInstance.LocaleFlags.esMX,
"frFR" => RootInstance.LocaleFlags.frFR,
"itIT" => RootInstance.LocaleFlags.itIT,
"koKR" => RootInstance.LocaleFlags.koKR,
"ptBR" => RootInstance.LocaleFlags.ptBR,
"ptPT" => RootInstance.LocaleFlags.ptPT,
_ => throw new Exception("Invalid locale. Available locales: deDE, enUS, enGB, ruRU, zhCN, zhTW, enTW, esES, esMX, frFR, itIT, koKR, ptBR, ptPT"),
};
}

private static void HandleFlag(string flag, string? value)
Expand Down
2 changes: 1 addition & 1 deletion TACTSharp
2 changes: 1 addition & 1 deletion WoWNamingLib

0 comments on commit 61f9f61

Please sign in to comment.