You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.6 KiB
Nix
64 lines
1.6 KiB
Nix
{ wowClient, trinityCoreTools, stdenv, lib, symlinkJoin }:
|
|
let
|
|
extractor = assetVariant:
|
|
let
|
|
tool = {
|
|
"map" = "mapextractor";
|
|
"dbc" = "mapextractor";
|
|
"camera" = "mapextractor";
|
|
"vmaps" = "vmap4extractor";
|
|
"mmaps" = "mmaps_generator";
|
|
}.${assetVariant};
|
|
toolInvocation = {
|
|
"map" = "${tool} -i ${toString wowClient} -o $out -e 1";
|
|
"dbc" = "${tool} -i ${toString wowClient} -o $out -e 2";
|
|
"camera" = "${tool} -i ${toString wowClient} -o $out -e 4";
|
|
"vmaps" = "${tool}";
|
|
"mmaps" = "${tool}";
|
|
}.${assetVariant};
|
|
assembleInvocation = {
|
|
"vmaps" = "vmap4assembler Buildings $out/vmaps";
|
|
"mmaps" = "rm -rf $out/mmaps && mv mmaps $out/mmaps";
|
|
}.${assetVariant} or null;
|
|
targetDirectory = {
|
|
"map" = "maps";
|
|
"dbc" = "dbc";
|
|
"camera" = "Cameras";
|
|
"vmaps" = "vmaps";
|
|
"mmaps" = "mmaps";
|
|
}.${assetVariant};
|
|
in
|
|
stdenv.mkDerivation {
|
|
pname = "${assetVariant}-${wowClient.passthru.locale}";
|
|
version = wowClient.version;
|
|
|
|
src = if assetVariant == "mmaps"
|
|
then
|
|
symlinkJoin {
|
|
name = "${wowClient.name}-with-extracted-maps-and-vmaps-and-dbc";
|
|
paths = [
|
|
wowClient
|
|
(extractor "dbc")
|
|
(extractor "map")
|
|
(extractor "vmaps")
|
|
];
|
|
} else wowClient;
|
|
|
|
preferLocalBuild = assetVariant != "mmaps";
|
|
|
|
nativeBuildInputs = [
|
|
trinityCoreTools
|
|
];
|
|
|
|
buildPhase = ''
|
|
mkdir -p $out/${targetDirectory}
|
|
${toolInvocation}
|
|
'';
|
|
|
|
installPhase = lib.optionalString (assembleInvocation != null) ''
|
|
${assembleInvocation}
|
|
'';
|
|
};
|
|
in
|
|
extractor
|