mirror of
https://gitlab.com/YuukiPS/GC-Proto.git
synced 2024-12-25 16:09:25 +03:00
add check sub proto
This commit is contained in:
parent
503921ad83
commit
9f1aeb4135
209
op.js
209
op.js
@ -423,11 +423,64 @@ function getPacketOpcodes(raw) {
|
|||||||
|
|
||||||
// C:\Users\Administrator\Desktop\Projek\Docker\GS\gs\Grasscutter-Yuuki\src\main\java\emu\grasscutter
|
// C:\Users\Administrator\Desktop\Projek\Docker\GS\gs\Grasscutter-Yuuki\src\main\java\emu\grasscutter
|
||||||
|
|
||||||
var file_toclean = [];
|
var file_proto = [];
|
||||||
var file_toaddmore = [];
|
var file_proto_more = [];
|
||||||
|
|
||||||
var found_noclean = 0;
|
var found_noclean = 0;
|
||||||
var found_needclean = 0;
|
var found_needclean = 0;
|
||||||
var found_maybe_related = 0;
|
var found_maybe_related = 0;
|
||||||
|
|
||||||
|
const regex_import = /\import "(.*?)\.proto"/g;
|
||||||
|
|
||||||
|
// find import in file
|
||||||
|
function find_import(file) {
|
||||||
|
var torequire = [];
|
||||||
|
|
||||||
|
var dir = path.parse(file).dir;
|
||||||
|
|
||||||
|
if (file.match("ModifierDurability")) {
|
||||||
|
//console.log("fff");
|
||||||
|
}
|
||||||
|
|
||||||
|
// read file
|
||||||
|
const read = fs.readFileSync(file);
|
||||||
|
var rd = read.toString();
|
||||||
|
|
||||||
|
while ((m = regex_import.exec(rd)) !== null) {
|
||||||
|
// This is necessary to avoid infinite loops with zero-width matches
|
||||||
|
if (m.index === regex_import.lastIndex) {
|
||||||
|
regex_import.lastIndex++;
|
||||||
|
}
|
||||||
|
// The result can be accessed through the `m`-variable.
|
||||||
|
m.forEach((match, groupIndex) => {
|
||||||
|
// only index 1 grup
|
||||||
|
if (groupIndex == 1) {
|
||||||
|
var found_rt = torequire.find((j) => j === match);
|
||||||
|
if (found_rt) {
|
||||||
|
//console.log(`Skip ${match}`);
|
||||||
|
} else {
|
||||||
|
if (match.match("Unk")) {
|
||||||
|
//console.log(file + " require " + match);
|
||||||
|
}
|
||||||
|
//var subdata = new Object();
|
||||||
|
//subdata["name"] = match;
|
||||||
|
var sub = find_import(dir + "/" + match + ".proto");
|
||||||
|
if (sub) {
|
||||||
|
sub.forEach(function (k) {
|
||||||
|
var v = torequire.find((j) => j === k);
|
||||||
|
if (!v) {
|
||||||
|
torequire.push(k);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
torequire.push(match);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return torequire;
|
||||||
|
}
|
||||||
|
|
||||||
function clean_proto_gen() {
|
function clean_proto_gen() {
|
||||||
//const files = getAllFiles(folder_proto_gc_gen);
|
//const files = getAllFiles(folder_proto_gc_gen);
|
||||||
const files = getAllFiles("./proto");
|
const files = getAllFiles("./proto");
|
||||||
@ -443,88 +496,130 @@ function clean_proto_gen() {
|
|||||||
"File proto: " + files.length + " | Need " + json_gc_needed.length
|
"File proto: " + files.length + " | Need " + json_gc_needed.length
|
||||||
);
|
);
|
||||||
|
|
||||||
const regex = /\import "(.*?)\.proto"/g;
|
|
||||||
|
|
||||||
// find all file import
|
// find all file import
|
||||||
files.forEach(function (file) {
|
files.forEach(function (file) {
|
||||||
// read file
|
var name_file = path.parse(file).name;
|
||||||
const read = fs.readFileSync(file);
|
|
||||||
var rd = read.toString();
|
|
||||||
|
|
||||||
if (file.match("Unk")) {
|
var toaddfile = new Object();
|
||||||
console.log("unk: " + file);
|
toaddfile["file"] = name_file;
|
||||||
|
toaddfile["import"] = find_import(file);
|
||||||
|
|
||||||
|
file_proto.push(toaddfile);
|
||||||
|
});
|
||||||
|
|
||||||
|
//console.log(file_proto);
|
||||||
|
|
||||||
|
function find_json_proto(name_file, newnew = null) {
|
||||||
|
var noe = [];
|
||||||
|
if (newnew) {
|
||||||
|
noe = newnew;
|
||||||
}
|
}
|
||||||
|
|
||||||
// find import
|
var found_proto = file_proto.find((j) => name_file === j.file); // must same file
|
||||||
while ((m = regex.exec(rd)) !== null) {
|
if (found_proto) {
|
||||||
// This is necessary to avoid infinite loops with zero-width matches
|
// if found import
|
||||||
if (m.index === regex.lastIndex) {
|
if (found_proto.import) {
|
||||||
regex.lastIndex++;
|
found_proto.import.forEach(function (s) {
|
||||||
|
var f = noe.find((j) => j === s);
|
||||||
|
if (!f) {
|
||||||
|
noe.push(s);
|
||||||
|
// check sub
|
||||||
|
var sub = find_json_proto(s, noe);
|
||||||
|
sub.forEach(function (k) {
|
||||||
|
var v = noe.find((j) => j === k);
|
||||||
|
if (!v) {
|
||||||
|
noe.push(k);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var ss = noe.find((j) => j === name_file);
|
||||||
|
if (!ss) {
|
||||||
|
noe.push(name_file);
|
||||||
}
|
}
|
||||||
// The result can be accessed through the `m`-variable.
|
|
||||||
m.forEach((match, groupIndex) => {
|
|
||||||
// only index 1 grup
|
|
||||||
if (groupIndex == 1) {
|
|
||||||
var found_rt = file_toaddmore.find((j) => j.name === match);
|
|
||||||
if (found_rt) {
|
|
||||||
//console.log(`Skip ${match}`);
|
|
||||||
} else {
|
} else {
|
||||||
if (match.match("Unk") || file.match("Unk")) {
|
// skip
|
||||||
console.log(file + " require " + match);
|
|
||||||
}
|
}
|
||||||
var subdata = new Object();
|
return noe;
|
||||||
subdata["name"] = match;
|
|
||||||
file_toaddmore.push(subdata);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// last try
|
//console.log(find_json_proto("ActivityInfo"));
|
||||||
|
|
||||||
|
// try with proto json
|
||||||
|
var filedonotdelete = [];
|
||||||
files.forEach(function (file) {
|
files.forEach(function (file) {
|
||||||
var todoremove = false;
|
var name_file = path.parse(file).name;
|
||||||
|
|
||||||
|
var findme = false;
|
||||||
|
|
||||||
|
// find main file
|
||||||
|
var found = json_gc_needed.find((j) => name_file.match(j.name));
|
||||||
|
if (found) {
|
||||||
|
findme = true;
|
||||||
|
} else {
|
||||||
|
// skip
|
||||||
|
}
|
||||||
|
|
||||||
|
// find miss scan
|
||||||
|
var found2 = json_gc_needed2.find((j) => name_file.match(j.name));
|
||||||
|
if (found2) {
|
||||||
|
findme = true;
|
||||||
|
} else {
|
||||||
|
// skip
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModifierDurability >AbilityAppliedModifier -> AbilitySyncStateInfo -> AvatarEnterSceneInfo and multi file
|
||||||
|
|
||||||
// main file
|
// main file
|
||||||
var found = json_gc_needed.find((j) => file.match(j.name));
|
if (findme) {
|
||||||
if (found) {
|
var tosub = find_json_proto(name_file);
|
||||||
// skip
|
tosub.forEach(function (k) {
|
||||||
|
var oo = filedonotdelete.find((j) => j === k);
|
||||||
|
if (!oo) {
|
||||||
|
filedonotdelete.push(k);
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
var found1 = file_toaddmore.find((j) => file.match(j.name)); // find import
|
// not main file
|
||||||
if (found1) {
|
/*
|
||||||
// skip
|
if (name_file.match("ModifierDurability")) {
|
||||||
//console.log("Files sub are required: "+file);
|
console.log("3");
|
||||||
found_maybe_related++;
|
}
|
||||||
} else {
|
*/
|
||||||
if (file.match("Retcode")) {
|
if (file.match("ChannelerSlabChallenge")) {
|
||||||
console.log("found");
|
console.log(file);
|
||||||
} else {
|
|
||||||
var found2 = json_gc_needed2.find((j) => file.match(j.name)); // find miss scan
|
|
||||||
if (found2) {
|
|
||||||
// skip
|
|
||||||
found_maybe_related++;
|
|
||||||
} else {
|
|
||||||
todoremove = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (todoremove) {
|
// ModifierDurability
|
||||||
|
//console.log(filedonotdelete);
|
||||||
|
|
||||||
|
// last
|
||||||
|
files.forEach(function (file) {
|
||||||
|
var name_file = path.parse(file).name;
|
||||||
|
var toskip = filedonotdelete.find((j) => name_file === j);
|
||||||
|
if (toskip) {
|
||||||
|
found_noclean++;
|
||||||
|
} else {
|
||||||
found_needclean++;
|
found_needclean++;
|
||||||
console.log("Remove file: "+file);
|
// ActivityInfo
|
||||||
|
if (file.match("ChannelerSlabChallenge")) {
|
||||||
|
console.log("ChannelerSlabChallenge");
|
||||||
|
}
|
||||||
|
//console.log(name_file);
|
||||||
|
//console.log("Remove file: " + file);
|
||||||
try {
|
try {
|
||||||
fs.unlinkSync(file);
|
fs.unlinkSync(file);
|
||||||
//file removed
|
//file removed
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
found_noclean++;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//console.log(file_toaddmore);
|
//console.log(filedonotdelete);
|
||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"No clean: " +
|
"No clean: " +
|
||||||
|
Loading…
Reference in New Issue
Block a user