Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
62e702b9fa | |||
428ea1d660 | |||
0def56d476 | |||
85f2815b6a | |||
7b43a86b99 | |||
1dc54f8590 | |||
d6ac86ed8c | |||
afd850fbca | |||
bdc076b664 | |||
47e250ba89 | |||
14efed32e3 | |||
90236c665d | |||
89a93407f1 | |||
2ca5a9e704 | |||
c6c9c99c31 |
6
.gitmodules
vendored
6
.gitmodules
vendored
@ -1,8 +1,8 @@
|
||||
[submodule "Js/Translations"]
|
||||
path = Js/Translations
|
||||
url = https://git.poweris.moe/xdutranslations.git
|
||||
branch = .
|
||||
url = https://git.poweris.moe/yttt-xdu/xdutranslations.git
|
||||
branch = master
|
||||
[submodule "CustomData"]
|
||||
path = CustomData
|
||||
url = https://git.poweris.moe/customdata.git
|
||||
url = https://git.poweris.moe/yttt-xdu/customdata.git
|
||||
branch = .
|
||||
|
@ -43,4 +43,8 @@ Fix MoveCamera macro
|
||||
|
||||
## V1.4.0 (2019-09-29)
|
||||
|
||||
Updated Pixi.js to v5
|
||||
Updated Pixi.js to v5
|
||||
|
||||
## V1.5.0 (2020-07-31)
|
||||
|
||||
XDU Global support
|
||||
|
@ -84,6 +84,8 @@ body { margin: 0; height: 100%; }
|
||||
|
||||
#text-container.rus { font-family: 'PTSans'; }
|
||||
|
||||
#text-container.cze { font-family: 'PTSans'; }
|
||||
|
||||
#text-container #fullscreen-button { position: absolute; top: 0.5rem; left: 0.5rem; font-size: 30px; line-height: 30px; opacity: 0.35; z-index: 11; }
|
||||
|
||||
#text-container #title { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; font-size: 20px; transition: opacity 0.3s; cursor: default; user-select: none; }
|
||||
|
1354
Js/BgmLoop.json
1354
Js/BgmLoop.json
File diff suppressed because it is too large
Load Diff
18
Js/Main.js
18
Js/Main.js
@ -10,8 +10,8 @@ const shaders = new Shaders();
|
||||
const textFunc = new TextFunctions();
|
||||
let audio = undefined; //Cant create a audio context without user input.
|
||||
const player = new Player(pixiApp, utage, textFunc, audio, shaders);
|
||||
const languages = ["eng", "jpn", "rus"];
|
||||
const version = "YameteTomete XDUPlayer V1.4.0";
|
||||
const languages = ["eng", "jpn", "rus", "cze", "enm", "kor", "zho"];
|
||||
const version = "YameteTomete XDUPlayer V1.5.0";
|
||||
let bodyLoaded = false;
|
||||
let utageLoaded = false;
|
||||
let languagesLoaded = false;
|
||||
@ -142,7 +142,7 @@ function buildQuestSelectList() {
|
||||
let tl_key = utage.questTranslations[cust][q.QuestMstId];
|
||||
if (!tl_key) {
|
||||
console.log("Failed to build quest list: missing translations");
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
if (!tl_key.Enabled && !utage.quests[cust][q.QuestMstId].Scenes.some((s) => { return utage.sceneTranslations[cust][s].Enabled === true })) {
|
||||
continue;
|
||||
@ -191,7 +191,7 @@ function buildSceneSelectList() {
|
||||
let tl_key = utage.sceneTranslations[cust][questSceneMstId];
|
||||
if (!tl_key) {
|
||||
console.log("Failed to build scene list: missing translations");
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
if (!tl_key.Enabled) {
|
||||
continue;
|
||||
@ -285,6 +285,10 @@ function sceneDropDownChanged(event) {
|
||||
|
||||
let name = scene.Name;
|
||||
let summary = scene.SummaryText;
|
||||
let image = questSceneMstId;
|
||||
if ("Image" in scene) {
|
||||
image = scene.Image;
|
||||
}
|
||||
let credits = "";
|
||||
let tl_key = utage.sceneTranslations[cust][questSceneMstId];
|
||||
|
||||
@ -307,8 +311,8 @@ function sceneDropDownChanged(event) {
|
||||
chapterSelect += `<option value="${p}">${p}</option>`
|
||||
}
|
||||
|
||||
let detailSrc = `${utage.rootDirectory}${(scene.IsCustom ? "CustomData" : "XDUData")}/Asset/Image/Quest/Snap/Detail/${questSceneMstId}.png`;
|
||||
let iconSrc = `${utage.rootDirectory}${(scene.IsCustom ? "CustomData" : "XDUData")}/Asset/Image/Quest/Snap/Icon/${questSceneMstId}.png`;
|
||||
let detailSrc = `${utage.rootDirectory}${(scene.IsCustom ? "CustomData" : "XDUData")}/Asset/Image/Quest/Snap/Detail/${image}.png`;
|
||||
let iconSrc = `${utage.rootDirectory}${(scene.IsCustom ? "CustomData" : "XDUData")}/Asset/Image/Quest/Snap/Icon/${image}.png`;
|
||||
chapterSelect += '</select></div>';
|
||||
cont.innerHTML = `
|
||||
<div id="mission-modal" class="modal">
|
||||
@ -543,7 +547,7 @@ function openHelpModal(event) {
|
||||
<div style="margin-top: auto; text-align: center;">All Symphogear content belongs to its respective owners</div>
|
||||
<div id="modal-buttons">
|
||||
<button onclick="closeModal(event)">Close</button>
|
||||
<a href="https://git.poweris.moe/xduplayer.git/" target="_blank">Source</a>
|
||||
<a href="https://git.poweris.moe/yttt-xdu/XDUPlayer" target="_blank">Source</a>
|
||||
</div>
|
||||
</div>`;
|
||||
document.getElementById("click-catcher").style.cssText = 'display: flex;';
|
||||
|
26
Js/Player.js
26
Js/Player.js
@ -27,6 +27,7 @@ class Player {
|
||||
this.waitTime = 0;
|
||||
this.manualNext = false;
|
||||
this.hasMoreText = false;
|
||||
this.hasFadedOut = false;
|
||||
this.uiHidden = false;
|
||||
this.center = {x: ((baseDimensions.width / 2) * this.resolutionScale), y: ((baseDimensions.height / 2) * this.resolutionScale) };
|
||||
this.assetLoadPercent = 0;
|
||||
@ -504,6 +505,8 @@ class Player {
|
||||
//FadeTo
|
||||
case "divaeffectcontinue":
|
||||
case "fadeout": {
|
||||
if(this.hasFadedOut) { break; }
|
||||
this.hasFadedOut = true;
|
||||
if(cur.Command.toLowerCase() === "divaeffectcontinue") {
|
||||
cur.Arg1 = 'black';
|
||||
cur.Arg6 = 1;
|
||||
@ -520,6 +523,7 @@ class Player {
|
||||
}
|
||||
//FadeFrom
|
||||
case "fadein": {
|
||||
this.hasFadedOut = false;
|
||||
this.waitTime = Number(cur.Arg6) * 1000;
|
||||
if(!cur.Arg1)
|
||||
cur.Arg1 = 'white';
|
||||
@ -956,7 +960,12 @@ class Player {
|
||||
let text = cur.English ? (this.utage.translations ? (this.utage.translations[cur.English] || cur.Text) : cur.Text) : cur.Text;
|
||||
text = commonFunctions.convertUtageTextTags(text);
|
||||
if(cur.Arg2 && cur.Arg2.toLowerCase() === "<off>") {
|
||||
this.text.characterName(true, this.utage.charTranslations[cur.Arg1] || cur.Arg1);
|
||||
let nameFullWidth = cur.Arg1.replace(/[A-Za-z0-9]/g, function(s) {return String.fromCharCode(s.charCodeAt(0) + 0xFEE0);});
|
||||
let nameHalfWidth = cur.Arg1.replace(/[A-Za-z0-9]/g, function(s) {return String.fromCharCode(s.charCodeAt(0) - 0xFEE0)});
|
||||
this.text.characterName(true, this.utage.charTranslations[cur.Arg1]
|
||||
|| this.utage.charTranslations[nameFullWidth]
|
||||
|| this.utage.charTranslations[nameHalfWidth]
|
||||
|| cur.Arg1);
|
||||
this.text.dialogText(true, commonFunctions.convertUtageTextTags(text));
|
||||
} else {
|
||||
let found = false;
|
||||
@ -971,7 +980,12 @@ class Player {
|
||||
if(cur.Character) {
|
||||
nameToUse = cur.Arg1;
|
||||
}
|
||||
this.text.characterName(true, this.utage.charTranslations[nameToUse] || nameToUse);
|
||||
let nameFullWidth = nameToUse.replace(/[A-Za-z0-9]/g, function(s) {return String.fromCharCode(s.charCodeAt(0) + 0xFEE0);});
|
||||
let nameHalfWidth = nameToUse.replace(/[A-Za-z0-9]/g, function(s) {return String.fromCharCode(s.charCodeAt(0) - 0xFEE0)});
|
||||
this.text.characterName(true, this.utage.charTranslations[nameToUse]
|
||||
|| this.utage.charTranslations[nameFullWidth]
|
||||
|| this.utage.charTranslations[nameHalfWidth]
|
||||
|| nameToUse);
|
||||
this.text.dialogText(true, text);
|
||||
//restoreTint is set from a colorTo command.
|
||||
//We want to maintain the tint change from colorTo during speaking still.
|
||||
@ -1009,7 +1023,12 @@ class Player {
|
||||
}
|
||||
//If we didnt find the character just dump the text anyways with Arg1 as the name
|
||||
if(!found) {
|
||||
this.text.characterName(true, this.utage.charTranslations[cur.Arg1] || cur.Arg1);
|
||||
let nameFullWidth = cur.Arg1.replace(/[A-Za-z0-9]/g, function(s) {return String.fromCharCode(s.charCodeAt(0) + 0xFEE0);});
|
||||
let nameHalfWidth = cur.Arg1.replace(/[A-Za-z0-9]/g, function(s) {return String.fromCharCode(s.charCodeAt(0) - 0xFEE0)});
|
||||
this.text.characterName(true, this.utage.charTranslations[cur.Arg1]
|
||||
|| this.utage.charTranslations[nameFullWidth]
|
||||
|| this.utage.charTranslations[nameHalfWidth]
|
||||
|| cur.Arg1);
|
||||
this.text.dialogText(true, text);
|
||||
}
|
||||
}
|
||||
@ -1378,6 +1397,7 @@ class Player {
|
||||
this.lerpTargets = [];
|
||||
this.manualNext = false;
|
||||
this.hasMoreText = false;
|
||||
this.hasFadedOut = false;
|
||||
this.audioLoadPercent = 0;
|
||||
this.assetLoadPercent = 0;
|
||||
this.playingVoice = undefined;
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit c8e9be400b68111bd1abfb879205e2f07d91d1a5
|
||||
Subproject commit ac0bfbd699431e9befdd843379e7c91ad1014cec
|
@ -36,7 +36,7 @@ class UtageInfo {
|
||||
//commonFunctions.getFileText(`${this.rootDirectory}XDUData/Utage/Diva/Settings/Scenario.tsv`),
|
||||
commonFunctions.getFileText(`${this.rootDirectory}XDUData/Utage/Diva/Settings/Sound.tsv`), //5
|
||||
commonFunctions.getFileText(`${this.rootDirectory}XDUData/Utage/Diva/Settings/Texture.tsv`), //6
|
||||
commonFunctions.getFileJson(`${this.rootDirectory}Js/BgmLoop.json`), //7
|
||||
commonFunctions.getFileJson(`${this.rootDirectory}XDUData/Bgm/BgmLoop.json`), //7
|
||||
commonFunctions.getFileJson(`${this.rootDirectory}Js/Translations/XduQuestCustom.json`), //8
|
||||
commonFunctions.getFileJson(`${this.rootDirectory}Js/Translations/XduSceneCustom.json`), //9
|
||||
commonFunctions.getFileText(`${this.rootDirectory}CustomData/Utage/Diva/Settings/CustomCharacter.tsv`), //10
|
||||
@ -141,7 +141,12 @@ class UtageInfo {
|
||||
for (const k of Object.keys(this.questTranslationsInner[this.currentTranslation][c])) {
|
||||
if (this.questTranslationsInner[this.currentTranslation][c][k].Enabled) {
|
||||
for (const s of this.quests[c][k].Scenes) {
|
||||
this.sceneTranslationsInner[this.currentTranslation][c][s].Enabled = true;
|
||||
// only propagate if exists in translation file (THANKS GLOBAL) and translated name is supplied
|
||||
if (c in this.sceneTranslationsInner[this.currentTranslation]
|
||||
&& s in this.sceneTranslationsInner[this.currentTranslation][c]
|
||||
&& this.sceneTranslationsInner[this.currentTranslation][c][s].Name != "") {
|
||||
this.sceneTranslationsInner[this.currentTranslation][c][s].Enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
10
gulpfile.js
10
gulpfile.js
@ -26,9 +26,6 @@ const cssToCopy = [
|
||||
"Css/main.min.css",
|
||||
"Css/generic.min.css"
|
||||
];
|
||||
const jsonFiles = [
|
||||
"Js/BgmLoop.json",
|
||||
];
|
||||
const translations = [
|
||||
"Js/Translations/**"
|
||||
];
|
||||
@ -50,7 +47,6 @@ gulp.task('dist', gulp.series(
|
||||
buildCss,
|
||||
copyCss
|
||||
),
|
||||
buildJson,
|
||||
buildJsonTranslations,
|
||||
copyHtml,
|
||||
copyImages,
|
||||
@ -117,12 +113,6 @@ function copyCustomData() {
|
||||
.pipe(gulp.dest('Dist/CustomData'));
|
||||
}
|
||||
|
||||
function buildJson() {
|
||||
return gulp.src(jsonFiles)
|
||||
.pipe(jsonmin())
|
||||
.pipe(gulp.dest('Dist/Js'));
|
||||
}
|
||||
|
||||
function buildJsonTranslations() {
|
||||
return gulp.src(translations)
|
||||
.pipe(jsonmin())
|
||||
|
3301
package-lock.json
generated
3301
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user