Merge branch 'master' into renovate/axios-1.x-lockfile
All checks were successful
forgejo/Czech Quests/addon/pipeline/head This commit looks good
All checks were successful
forgejo/Czech Quests/addon/pipeline/head This commit looks good
This commit is contained in:
commit
86df5a085f
18 changed files with 9826 additions and 304 deletions
|
@ -13,6 +13,11 @@ const normalizeTranslation = (translation: string | null | undefined) => {
|
|||
return translation.replace(/\n/g, '\\n').replace(/"/g, "'");
|
||||
};
|
||||
|
||||
function getSplitByIndexes(input: string, indexes: number[]): string[] {
|
||||
const parts = input.split('_');
|
||||
return indexes.map((index) => parts[index]).filter((item) => item !== undefined);
|
||||
}
|
||||
|
||||
const prepareLuaWithFemaleVersion = (quest: Quest, type: keyof Quest, key: string) => {
|
||||
let text = '';
|
||||
const value = quest[type] as string;
|
||||
|
@ -70,6 +75,16 @@ const splitFirst = (text: string, delimiter: string) => {
|
|||
return text.slice(index + delimiter.length);
|
||||
};
|
||||
|
||||
const generateRoleTactic = (role: (string | null)[]) => {
|
||||
let luaQuestRecord = '';
|
||||
for (const ability of role) {
|
||||
if (ability == null) continue;
|
||||
const information = ability.split('\n');
|
||||
luaQuestRecord += `\t\t{"${information[0].trim()}","${information[1].trim()}","${information[2].trim()}","${information[3].trim()}"},\n`;
|
||||
}
|
||||
return luaQuestRecord;
|
||||
};
|
||||
|
||||
(async () => {
|
||||
const args = process.argv.slice(2);
|
||||
const addonDir = path.join(process.cwd(), `../Addon/Data/${args[0]}`);
|
||||
|
@ -92,7 +107,15 @@ const splitFirst = (text: string, delimiter: string) => {
|
|||
|
||||
// for each page from tolgee
|
||||
for (const tolgeeKey of translations) {
|
||||
addonData[tolgeeKey.keyName] = {
|
||||
let key = tolgeeKey.keyName;
|
||||
|
||||
if (tolgeeKey.keyNamespace === 'tactic') {
|
||||
key = key.split('_')[0];
|
||||
}
|
||||
|
||||
const instanceName = getSplitByIndexes(tolgeeKey.keyName, [1, 2]).join('_');
|
||||
|
||||
addonData[key] = {
|
||||
...addonData[tolgeeKey.keyName],
|
||||
...(tolgeeKey.keyNamespace === 'name' && {
|
||||
names: [
|
||||
|
@ -144,6 +167,25 @@ const splitFirst = (text: string, delimiter: string) => {
|
|||
tolgeeKey.translations.en.text,
|
||||
],
|
||||
}),
|
||||
...(tolgeeKey.keyNamespace === 'tactic' && {
|
||||
tactics: {
|
||||
[instanceName]: {
|
||||
...(addonData[key]?.tactics?.[instanceName] ?? {}),
|
||||
...(tolgeeKey.keyName.endsWith('_summary') && {
|
||||
summary: tolgeeKey.translations.cs.text,
|
||||
}),
|
||||
...(tolgeeKey.keyName.includes('_tank_') && {
|
||||
tank: [...(addonData[key].tactics?.[instanceName]?.tank ?? []), tolgeeKey.translations.cs.text],
|
||||
}),
|
||||
...(tolgeeKey.keyName.includes('_healer_') && {
|
||||
healer: [...(addonData[key].tactics?.[instanceName]?.healer ?? []), tolgeeKey.translations.cs.text],
|
||||
}),
|
||||
...(tolgeeKey.keyName.includes('_dps_') && {
|
||||
dps: [...(addonData[key].tactics?.[instanceName]?.dps ?? []), tolgeeKey.translations.cs.text],
|
||||
}),
|
||||
},
|
||||
},
|
||||
}),
|
||||
name: tolgeeKey.keyDescription,
|
||||
id: tolgeeKey.keyName.replace('q', '').replace('i', ''),
|
||||
isQuest: tolgeeKey.keyName.startsWith('q'),
|
||||
|
@ -192,12 +234,35 @@ const splitFirst = (text: string, delimiter: string) => {
|
|||
|
||||
if (czechQuest.speeches) {
|
||||
let luaQuestRecord = '';
|
||||
const key = splitFirst(normalizeTranslation(czechQuest.speeches?.[2]) ?? '', ':').trim();
|
||||
luaQuestRecord += `addon.data.speech["${key}"] = {\n`;
|
||||
const key = splitFirst(normalizeTranslation(czechQuest.speeches?.[2]) ?? '', ': ').trim();
|
||||
const npcNameKey = normalizeTranslation(czechQuest.name).trim();
|
||||
luaQuestRecord += `addon.data.speech["${npcNameKey}_${key}"] = {\n`;
|
||||
luaQuestRecord += '\ttext = "' + normalizeTranslation(czechQuest.speeches?.[0]).trim() + '", \n';
|
||||
luaQuestRecord += `}\n`;
|
||||
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
|
||||
}
|
||||
|
||||
if (czechQuest.tactics) {
|
||||
let luaQuestRecord = '';
|
||||
const npcNameKey = normalizeTranslation(czechQuest.name).trim();
|
||||
luaQuestRecord += `addon.data.tactic["${npcNameKey}"] = {\n`;
|
||||
for (const [instance, roles] of Object.entries(czechQuest.tactics)) {
|
||||
luaQuestRecord += `\t${instance} = {\n`;
|
||||
luaQuestRecord += `\t\tsummary = "${roles.summary}",\n`;
|
||||
luaQuestRecord += `\t\ttank = {\n`;
|
||||
if (roles.tank) luaQuestRecord += generateRoleTactic(roles.tank);
|
||||
luaQuestRecord += `\t\t},\n`;
|
||||
luaQuestRecord += `\t\theal = {\n`;
|
||||
if (roles.healer) luaQuestRecord += generateRoleTactic(roles.healer);
|
||||
luaQuestRecord += `\t\t},\n`;
|
||||
luaQuestRecord += `\t\tdps = {\n`;
|
||||
if (roles.dps) luaQuestRecord += generateRoleTactic(roles.dps);
|
||||
luaQuestRecord += `\t\t},\n`;
|
||||
luaQuestRecord += `\t},\n`;
|
||||
}
|
||||
luaQuestRecord += `}\n`;
|
||||
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
|
@ -207,6 +272,17 @@ const splitFirst = (text: string, delimiter: string) => {
|
|||
|
||||
type AddonData = Record<string, Quest>;
|
||||
|
||||
type Tactic = {
|
||||
summary?: string | null;
|
||||
tank?: (string | null)[];
|
||||
healer?: (string | null)[];
|
||||
dps?: (string | null)[];
|
||||
};
|
||||
|
||||
type InstanceTactic = {
|
||||
[key: string]: Tactic;
|
||||
};
|
||||
|
||||
type Quest = {
|
||||
id: string;
|
||||
name: string;
|
||||
|
@ -216,6 +292,7 @@ type Quest = {
|
|||
completions?: (string | null)[];
|
||||
objectives?: (string | null)[];
|
||||
speeches?: (string | null)[];
|
||||
tactics?: InstanceTactic;
|
||||
isQuest: boolean;
|
||||
isQuestItem: boolean;
|
||||
};
|
||||
|
|
|
@ -1,21 +1,30 @@
|
|||
#!/bin/bash
|
||||
|
||||
#wow_source_folder="retail"
|
||||
#wow_destiny_folder="retail"
|
||||
wow_source_folder="retail"
|
||||
wow_destiny_folder="retail"
|
||||
|
||||
#wow_source_folder="beta"
|
||||
#wow_destiny_folder="retail"
|
||||
# wow_source_folder="beta"
|
||||
# wow_destiny_folder="retail"
|
||||
|
||||
wow_source_folder="classic_era"
|
||||
wow_destiny_folder="classic_era"
|
||||
# wow_source_folder="classic_era"
|
||||
# wow_destiny_folder="classic_era"
|
||||
|
||||
src_folder="."
|
||||
src_folder="$(pwd)/./"
|
||||
dest_folder="/Applications/World of Warcraft/_${wow_destiny_folder}_/Interface/AddOns/CzechQuests"
|
||||
|
||||
fswatch -o "$src_folder" | while read -r change; do
|
||||
rsync -avu --delete "$src_folder" "$dest_folder" --exclude={'.*','*.png','*.sh','*.md','Addon/Data/**',"lib/**","Jenkinsfile"}
|
||||
rsync -au --delete "$src_folder/Addon/Data/$wow_source_folder/" "$dest_folder/Addon/Data/"
|
||||
echo "Dest: $dest_folder"
|
||||
cp "$src_folder/Addon/Data/other.lua" "$dest_folder/Addon/Data/"
|
||||
done
|
||||
mkdir -p "$dest_folder/Addon/Data/"
|
||||
|
||||
fswatch -o "$src_folder" | while read -r change; do
|
||||
rsync -auv --delete \
|
||||
"$src_folder/Addon/Data/$wow_source_folder/" \
|
||||
"$dest_folder/Addon/Data/"
|
||||
|
||||
cp "$src_folder/Addon/Data/other.lua" "$dest_folder/Addon/Data/"
|
||||
|
||||
rsync -auv --delete \
|
||||
--exclude '.*' \
|
||||
--exclude 'Addon/Data/**' \
|
||||
--exclude 'lib/**' \
|
||||
--exclude 'Jenkinsfile' \
|
||||
"$src_folder" "$dest_folder"
|
||||
done
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
"esModuleInterop": true,
|
||||
"skipLibCheck": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"resolveJsonModule": true
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue