All Projects → overtools → TACTLib

overtools / TACTLib

Licence: MIT license
A C# library for reading Blizzard's CASC storage

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to TACTLib

Rarity
Collectibles and statistics tracking addon for World of Warcraft: Shadowlands
Stars: ✭ 27 (-3.57%)
Mutual labels:  blizzard-games
Launchpad
Step up your non-Steam game! Generate Steam-compatible .exe files to effortlessly launch any game through Steam with overlay support.
Stars: ✭ 25 (-10.71%)
Mutual labels:  blizzard-games
HeroesOfTheStorm TryMode2.0
A modified Try Mode Map for Heroes of the Storm to create a better experience with enhanced functionalities.
Stars: ✭ 18 (-35.71%)
Mutual labels:  blizzard-games
CASC
A Go Lang / V Lang / Rust syntax approach in JVM language.
Stars: ✭ 16 (-42.86%)
Mutual labels:  casc
casc
CASC extractor for World of Warcraft data
Stars: ✭ 15 (-46.43%)
Mutual labels:  casc

TACTLib TACTLib

License: MIT


Usage:

Creating a ClientHandler

The ClientHandler is the base object that controls the CAS(C).

The path passed to ClientHandler should be the base path of the game install. E.g. where the game executables are. Upon creation, the client handler will load everything required for CASC operation.

string path = @"C:\ow\game\Overwatch";
ClientHandler clientHandler = new ClientHandler(path);

Logging:

Logging is handled through the TACTLib.Logger class. It has events that are triggered by TACTLib during runtime. Basic logging can be enabled by using TACTLib.Logger.RegisterBasic. That method also serves as an example of how to do custom logging. (see Logger.cs)

// enables the default basic logger. should be called *before* creating the client
Logger.RegisterBasic();

Product specific:

(none of this is true yet)

VFS: (Black Ops 4)
ClientHandler client = new ClientHandler(path);
if (client.VFS == null) {
    // invalid install
    return;
}
VFSFileTree vfs = client.VFS;
using (Stream stream = vfs.Open(@"zone\base.xpak")) {
    // do whatever
}
foreach (string fileName in vfs.Files.Where(x => x.StartsWith(@"zone\"))) {
    using(Stream stream = vfs.Open(fileName)) {
        // could do this too
    }
}
Tank: (Overwatch)

TACTLib is used internally in TankLib/DataTool.

ClientHandler client = new ClientHandler(path);
ProductHandler_Tank tankHandler = client.ProductHandler as ProdcuctHandler_Tank;
if (tankHandler == null) {
    // not a valid overwatch install
    return;
}
using (Stream stream = tankHandler.OpenFile(0xE00000000000895)) {  // open any asset you want
    // in this case, parse the material
}
WorldOfWarcraftV6: (World of Warcraft)

Not all features are implemented yet. Anything below is a concept.

ClientHandler client = new ClientHandler(path, new ClientCreateArgs {
  HandlerArgs = new ClientCreateArgs_WorldOfWarcraft {
    ListFile = "https://raw.githubusercontent.com/wowdev/wow-listfile/master/listfile.txt"
  }
});
ProductHandler_WorldOfWarcraftV6 wowHandler = client.ProductHandler as ProductHandler_WorldOfWarcraftV6;
if (wowHandler == null) {
    // not a valid warcraft install
    return;
}
using (Stream stream = wowHandler.OpenFile("world/maps/azuremyst isle (7.3 intro)/azuremyst isle (7.3 intro).wdt")) {  // open any asset you want
    // in this case, parse wdt
}
foreach(string file in wowHandler.GetFiles("world")) {
    // will be empty if listfile is invalid
}
foreach(string dir in wowHandler.GetDirectories("world")) {
    // will be empty if listfile is invalid
}

We can't wait to see the amazing things you will do with it

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].