@shockpkg/dir-projector
Version:
Package for creating Shockwave Director projectors
1 lines • 3.67 kB
Source Map (JSON)
{"version":3,"sources":["projector/windows/32.ts"],"names":["join","pathJoin","basename","fsWalk","windowsPatchShockwave3dInstalledDisplayDriversSize","ProjectorWindows","ProjectorWindows32","constructor","path","patchShockwave3dInstalledDisplayDriversSize","_modifySkeleton","_patchShockwave3dInstalledDisplayDriversSize","xtrasDir","xtrasPath","search","searchLower","toLowerCase","found","stat","isFile","fn","ignoreUnreadableDirectories","Error"],"mappings":"AAAA,SACCA,IAAI,IAAIC,QADT,EAECC,QAFD,QAGO,MAHP;AAKA,SACCC,MADD,QAEO,oCAFP;AAIA,SACCC,kDADD,QAEO,wBAFP;AAGA,SACCC,gBADD,QAEO,gBAFP;AAIA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,kBAAN,SAAiCD,gBAAjC,CAAkD;AACxD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGCE,EAAAA,WAAW,CAACC,IAAD,EAAe;AACzB,UAAMA,IAAN;AADyB,SAFnBC,2CAEmB,GAF2B,KAE3B;AAEzB;AAED;AACD;AACA;;;AACC,QAAgBC,eAAhB,GAAkC;AACjC,UAAM,MAAMA,eAAN,EAAN;AAEA,UAAM,KAAKC,4CAAL,EAAN;AACA;AAED;AACD;AACA;;;AACC,QAAgBA,4CAAhB,GAA+D;AAC9D,QAAI,CAAC,KAAKF,2CAAV,EAAuD;AACtD;AACA;;AAED,UAAMG,QAAQ,GAAG,KAAKC,SAAtB;AACA,UAAMC,MAAM,GAAG,wBAAf;AACA,UAAMC,WAAW,GAAGD,MAAM,CAACE,WAAP,EAApB;AAEA,QAAIC,KAAK,GAAG,KAAZ;AACA,UAAMd,MAAM,CAACS,QAAD,EAAW,OAAOJ,IAAP,EAAaU,IAAb,KAAsB;AAC5C,UAAI,CAACA,IAAI,CAACC,MAAL,EAAL,EAAoB;AACnB;AACA;;AAED,YAAMC,EAAE,GAAGlB,QAAQ,CAACM,IAAD,CAAnB;;AACA,UAAIY,EAAE,CAACJ,WAAH,OAAqBD,WAAzB,EAAsC;AACrC;AACA;;AAEDE,MAAAA,KAAK,GAAG,IAAR;AACA,YAAMb,kDAAkD,CACvDH,QAAQ,CAACW,QAAD,EAAWJ,IAAX,CAD+C,CAAxD;AAGA,KAdW,EAcT;AACFa,MAAAA,2BAA2B,EAAE;AAD3B,KAdS,CAAZ;;AAkBA,QAAI,CAACJ,KAAL,EAAY;AACX,YAAM,IAAIK,KAAJ,CAAW,kCAAiCR,MAAO,EAAnD,CAAN;AACA;AACD;;AA3DuD","sourcesContent":["import {\n\tjoin as pathJoin,\n\tbasename\n} from 'path';\n\nimport {\n\tfsWalk\n} from '@shockpkg/archive-files';\n\nimport {\n\twindowsPatchShockwave3dInstalledDisplayDriversSize\n} from '../../util/windows';\nimport {\n\tProjectorWindows\n} from '../windows';\n\n/**\n * ProjectorWindows32 constructor.\n *\n * @param path Output path.\n */\nexport class ProjectorWindows32 extends ProjectorWindows {\n\t/**\n\t * Patch the Shockave 3D Xtra to have a larger buffer to avoid a crash.\n\t * The buffer for resolving InstalledDisplayDrivers to a path is small.\n\t * Changes to the values stored in InstalledDisplayDrivers cause issues.\n\t * The value is now supposed to hold full paths on modern Windows.\n\t * In particular, Nvidia drivers which do this need this patch.\n\t *\n\t * @default false\n\t */\n\tpublic patchShockwave3dInstalledDisplayDriversSize = false;\n\n\tconstructor(path: string) {\n\t\tsuper(path);\n\t}\n\n\t/**\n\t * Modify the projector skeleton.\n\t */\n\tprotected async _modifySkeleton() {\n\t\tawait super._modifySkeleton();\n\n\t\tawait this._patchShockwave3dInstalledDisplayDriversSize();\n\t}\n\n\t/**\n\t * Patch projector, Shockwave 3D InstalledDisplayDrivers size.\n\t */\n\tprotected async _patchShockwave3dInstalledDisplayDriversSize() {\n\t\tif (!this.patchShockwave3dInstalledDisplayDriversSize) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst xtrasDir = this.xtrasPath;\n\t\tconst search = 'Shockwave 3D Asset.x32';\n\t\tconst searchLower = search.toLowerCase();\n\n\t\tlet found = false;\n\t\tawait fsWalk(xtrasDir, async (path, stat) => {\n\t\t\tif (!stat.isFile()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fn = basename(path);\n\t\t\tif (fn.toLowerCase() !== searchLower) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfound = true;\n\t\t\tawait windowsPatchShockwave3dInstalledDisplayDriversSize(\n\t\t\t\tpathJoin(xtrasDir, path)\n\t\t\t);\n\t\t}, {\n\t\t\tignoreUnreadableDirectories: true\n\t\t});\n\n\t\tif (!found) {\n\t\t\tthrow new Error(`Failed to locate for patching: ${search}`);\n\t\t}\n\t}\n}\n"],"file":"32.mjs","sourceRoot":"../../../src"}