[Assets] Implement
This commit is contained in:
parent
cc634c7805
commit
62b843f9f6
3 changed files with 57 additions and 0 deletions
18
src/def.d.ts
vendored
18
src/def.d.ts
vendored
|
@ -28,6 +28,15 @@ interface FindInTreeOptions {
|
|||
maxDepth?: number;
|
||||
}
|
||||
|
||||
interface Asset {
|
||||
name: string;
|
||||
id: number;
|
||||
}
|
||||
|
||||
interface Assets {
|
||||
[id: string]: Asset;
|
||||
}
|
||||
|
||||
interface VendettaObject {
|
||||
patcher: {
|
||||
after: typeof _spitroast.after;
|
||||
|
@ -49,6 +58,15 @@ interface VendettaObject {
|
|||
AsyncStorage: typeof _AsyncStorage;
|
||||
};
|
||||
};
|
||||
ui: {
|
||||
assets: {
|
||||
all: Assets;
|
||||
find: (filter: (a: any) => void) => Asset | null | undefined;
|
||||
getAssetByName: (name: string) => Asset;
|
||||
getAssetByID: (name: string) => Asset;
|
||||
getAssetIDByName: (name: string) => number;
|
||||
}
|
||||
};
|
||||
logger: Logger;
|
||||
}
|
||||
|
||||
|
|
12
src/index.ts
12
src/index.ts
|
@ -2,6 +2,8 @@ import patcher from "@lib/patcher";
|
|||
import logger from "@lib/logger";
|
||||
import * as metro from "@metro/filters";
|
||||
import * as common from "@metro/common";
|
||||
import { all, find, getAssetByID, getAssetByName, getAssetIDByName } from "@ui/assets";
|
||||
import patchAssets from "@ui/assets";
|
||||
import initSettings from "@ui/settings";
|
||||
import { patchLogHook } from "@lib/debug";
|
||||
|
||||
|
@ -10,12 +12,22 @@ let erroredOnLoad = false;
|
|||
|
||||
try {
|
||||
initSettings();
|
||||
patchAssets();
|
||||
patchLogHook();
|
||||
|
||||
window.vendetta = {
|
||||
patcher: patcher,
|
||||
metro: { ...metro, common: common },
|
||||
logger: logger,
|
||||
ui: {
|
||||
assets: {
|
||||
all: all,
|
||||
find: find,
|
||||
getAssetByID: getAssetByID,
|
||||
getAssetByName: getAssetByName,
|
||||
getAssetIDByName: getAssetIDByName,
|
||||
},
|
||||
},
|
||||
};
|
||||
} catch (e: Error | any) {
|
||||
erroredOnLoad = true;
|
||||
|
|
27
src/ui/assets.ts
Normal file
27
src/ui/assets.ts
Normal file
|
@ -0,0 +1,27 @@
|
|||
import { Asset, Assets } from "@types";
|
||||
import { after } from "@lib/patcher";
|
||||
import { findByProps } from "@metro/filters";
|
||||
|
||||
const assetsModule = findByProps("registerAsset");
|
||||
|
||||
export const all: Assets = {};
|
||||
|
||||
export default function patchAssets() {
|
||||
try {
|
||||
after("registerAsset", assetsModule, (args: Asset[], id: number) => {
|
||||
const asset = args[0];
|
||||
all[asset.name] = { ...asset, id };
|
||||
});
|
||||
|
||||
for (let id = 1; ; id++) {
|
||||
const asset = assetsModule.getAssetByID(id);
|
||||
if (!asset) break;
|
||||
if (all[asset.name]) continue;
|
||||
};
|
||||
} catch {};
|
||||
}
|
||||
|
||||
export const find = (filter: (a: any) => void): Asset | null | undefined => Object.values(all).find(filter);
|
||||
export const getAssetByName = (name: string): Asset => all[name];
|
||||
export const getAssetByID = (name: string): Asset => assetsModule.getAssetByID(name);
|
||||
export const getAssetIDByName = (name: string) => all[name].id;
|
Loading…
Reference in a new issue