From 553ba53f4446c8015fd88f4c54d088c425d6e151 Mon Sep 17 00:00:00 2001 From: Daniel Wong Date: Sun, 28 May 2023 11:49:36 +1000 Subject: [PATCH] Add Umineko Alternate Mod Recommendation (See #212) --- httpGUI/installer.html | 20 --- httpGUI/python-patcher-index.js | 2 +- httpGUI/python-patcher-rest-lib.js | 4 +- httpGUI/python-patcher-umineko-warning.js | 86 +++++++++++ httpGUI/style.css | 22 +++ httpGUI/umineko-warning.html | 167 ++++++++++++++++++++++ 6 files changed, 278 insertions(+), 23 deletions(-) create mode 100644 httpGUI/python-patcher-umineko-warning.js create mode 100644 httpGUI/umineko-warning.html diff --git a/httpGUI/installer.html b/httpGUI/installer.html index ee1007e8..eb01e006 100644 --- a/httpGUI/installer.html +++ b/httpGUI/installer.html @@ -283,16 +283,6 @@

Choose Patch

{{selectedSubMod.modName}} ({{selectedSubMod.subModName}} Patch)

-
-
Alternate mod recommendation
-

While the 07th-Mod team attempts to provide the best Umineko experience possible within the engine of the PC release, - the ponscripter engine that Mangagamer chose to use for it is limiting, so some of the advanced features of the console game such as lip sync, - sprite/background/rain animations, song subtitles, line jump within the backlog, and several others, are unimplemented. - As these would require difficult to implement engine-level modifications, we have no intent to implement them.

- -

If you are able to emulate or hack a Nintendo Switch, and you do not rely on PC-specific features such as Ryukishi/Pachinko sprites or original backgrounds, we recommend patching the Switch game to run in English instead. You may find instructions on how to do so here.

-
-

2023-04-05: Experimental Script Feedback Wanted!

The Experimental Script Option mainly fixes the mod having no auto-advancement of text. We would like to make it the default script, but need to make sure there are no serious bugs.

@@ -453,16 +443,6 @@

-
-
Alternate mod recommendation
-

The 07th-Mod patches for Tsubasa, Hane and Saku were never fully completed. As of now, the Hane patch is the only one to have full voice and widescreen support, while the other two are simple graphic replacement packs with console sprites. All patches are also missing CGs and advanced features such as animations and lip sync.

- -

If you are able to emulate or hack a Nintendo Switch we recommend patching the Switch game to run in English instead. You may find instructions on how to do so here.

- -

The legacy patches will remain available for download in their unfinished state. If you are certain you would like to play with them, you may download them here.

-
-

This patch is only for the ponscripter release of Umineko Hane. diff --git a/httpGUI/python-patcher-index.js b/httpGUI/python-patcher-index.js index 02fe6cf4..354d0831 100644 --- a/httpGUI/python-patcher-index.js +++ b/httpGUI/python-patcher-index.js @@ -105,7 +105,7 @@ window.onload = function onWindowLoaded() { }, methods: { nav(gameName) { - setModNameAndNavigate(gameName); + setModNameAndNavigate(gameName, gameName.toLowerCase().includes('umineko') ? 'umineko-warning.html' : 'installer.html'); }, // if subModExtraProperties missing a game, use wrong image // to make it obvious that the table needs to be updated diff --git a/httpGUI/python-patcher-rest-lib.js b/httpGUI/python-patcher-rest-lib.js index e0a6ac55..e03f8d36 100644 --- a/httpGUI/python-patcher-rest-lib.js +++ b/httpGUI/python-patcher-rest-lib.js @@ -103,11 +103,11 @@ function doPost(requestType, requestData, onSuccessCallback, timeout, onErrorCal } // TODO: should always navigate to the same install page, as it is shared amongst all games -function setModNameAndNavigate(modName) { +function setModNameAndNavigate(modName, targetURL) { doPost('setModName', { modName }, (response) => { console.log(response); if (response.valid) { - window.location.href = 'installer.html'; + window.location.href = targetURL ?? 'installer.html'; } else { alert(`Error: "${modName}" is not the name of a mod in the JSON config file. Check web console for a list of valid mod names`); console.error('Invalid Mod Name! Valid names below:'); diff --git a/httpGUI/python-patcher-umineko-warning.js b/httpGUI/python-patcher-umineko-warning.js new file mode 100644 index 00000000..33719189 --- /dev/null +++ b/httpGUI/python-patcher-umineko-warning.js @@ -0,0 +1,86 @@ +'use strict'; + +let app = null; + +// +// TODO: use proper javascript import +// When the main window is loaded +// - Vue components are defined +// - Main Vue instance, called 'app', is initialized +// - the subModHandles are retrieved from the python server to populate the app.subModList property +window.onload = function onWindowLoaded() { + + // Forces all links which have been sanitized to open in new window (in this case, markdown links) + // See https://github.com/cure53/DOMPurify/issues/317#issuecomment-698800327 + DOMPurify.addHook('afterSanitizeAttributes', (node) => { + if ('target' in node) { + node.setAttribute('target', '_blank'); + node.setAttribute('rel', 'noopener'); + } + }); + + app = new Vue({ + el: '#app', + data: { + subModList: [], + masonryInitialized: false, + donationProgress: 'N months', + donationMonthsRemaining: 'XXX%', + metaInfo: { + buildInfo: '', // Installer Build Version and Date + installerIsLatest: [null, ''], // 2- Tuple of whether installer is latest, and description of version information + lockFileExists: false, // This indicates if a install is already running in a different instance, or a previous install was killed while running + operatingSystem: '', // The operating system - either 'windows', 'linux', or 'mac' + installAlreadyInProgress: false, // This is true if the install is currently running. Use to resume displaying an ongoing installation if the user accidentally closed the browser tab. + donationMonthsRemaining: '', // How many months the server can be paid for with current funding + donationProgressPercent: '', // How close funding is to the 12 month donation goal, in percent + }, + modalVisible: false, + }, + methods: { + nav(gameName) { + setModNameAndNavigate(gameName); + }, + clearModal() { + doPost('clearLatestInstallerWarning', [], () => {}); + this.modalVisible = false; + }, + }, + computed: { + versionInfoAvailable() { + return this.metaInfo.installerIsLatest[0] !== null; + }, + }, + watch: { + + }, + updated() { + // call initializeMasonry() from the theme's javascript js/script.js, on the first update call + if (!this.masonryInitialized) { + this.masonryInitialized = true; + initializeMasonry(); + } + }, + created() { + // populate the app.subModList with subMods from the python server + doPost('subModHandles', [], (responseData) => { + app.subModList = responseData.subModHandles; + const modNameToSubModHandleMap = {}; + console.log(responseData); + responseData.subModHandles.forEach((subModHandle) => { + modNameToSubModHandleMap[subModHandle.modName] = subModHandle; + }); + + app.metaInfo = responseData.metaInfo; + if (app.metaInfo.installerIsLatest[0] !== true) { + app.modalVisible = true; + } + + // Force user back to the install page if the tried to leave + if (app.metaInfo.installAlreadyInProgress) { + window.location = 'installer.html'; + } + }); + }, + }); +}; diff --git a/httpGUI/style.css b/httpGUI/style.css index 5188cde6..e9e7796c 100644 --- a/httpGUI/style.css +++ b/httpGUI/style.css @@ -386,3 +386,25 @@ The snackbar - position it at the bottom and in the middle of the screen */ font-weight: bold; color: black; } + +.button-tabs .warning-tab-title { + padding: 13px; + display: inline-block; + text-align: center; + min-width: 150px; + background: red; + color: #fff; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + transition: all 0.3s ease; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; +} + +.button-tabs .warning-tab-title:hover { + background: brown; +} \ No newline at end of file diff --git a/httpGUI/umineko-warning.html b/httpGUI/umineko-warning.html new file mode 100644 index 00000000..60000e40 --- /dev/null +++ b/httpGUI/umineko-warning.html @@ -0,0 +1,167 @@ + + + + + + + 07th-Mod Installer Index + + + + + + + + + + +
+ + + + +
+ +
+
+
+
+

Alternate Mod Recommendation

+
+
+ +
+
+
+
+ +
+
+ +

Please read the information below!

+ 07th-Mod is not the best way to experience Umineko. Our patches are missing some advanced features of the console game, and they also do not include any of the extra content that was added with the console releases. The Switch version of the game has a full translation patch available, which will provide a superior experience in most cases, and we strongly recommend using that version instead.

However, there are certain features which are exclusive to the 07th-Mod version of the game as well. A detailed breakdown is presented below to help you make your choice. +
+
+ + +
    +
  • The console patch relies on you actually having the Switch game's files, as well as the ability to set up a Switch emulator (or CFW).
    07th-Mod is native to PC, and requires you to own Umineko on Steam, GOG or Mangagamer.com, but has no requirements beyond game ownership. +
  • The console version has exclusive content. This is around 10-20 hours' worth of extra chapters, depending on your reading speed. They are not required to fully understand the main story, and they are completely external, housed in their own menu and not inserted into the main storyline, only made available after the main story is finished. However, they are well worth your time if you enjoyed the main story. +
  • The console patch uses an improved, more natural English translation.
    07th-Mod uses the translation which is shipped with the Steam version of the game, which is overly literal in places. +
  • The console version has animated backgrounds and sprites, lip sync, and general visual polish that is missing from 07th-Mod as it is completely impossible to replicate within the PC game's engine. +
  • The console game has more opening movies. +
  • The console game has higher audio quality, as well as support for features such as lowering music volume when voices are playing and panning voices depending on characters' on-screen position. The audio channels are also better balanced, making voices easier to make out and ensuring no music tracks are overly loud. +
  • The console game uses a larger, easier-to-read font which may be helpful if you are at a longer distance from your monitor. +
  • The console game has a better UI with features such as displaying the name of songs as they play, a better backlog which includes a chapter select and the ability to "jump" to any line of the script at any time, a visual notification for unlocking new "tips", and more user-friendly menus. +
  • The console game has been created with ADV-mode in mind. This means that all text is displayed in a textbox at the bottom of the screen, akin to subtitles.
    The PC game, and 07th-Mod, have instead been designed for NVL, which is a display mode where the text covers the entire screen, being displayed over the visuals.
    07th-Mod has partial ADV support, with text automatically being formatted to re-fit into an ADV textbox. However, the text has not actually been re-written for ADV in 07th-Mod, which means it can break awkwardly in the middle of lines. +
  • The console game uses a newer soundtrack, both replacing some royalty-free music with original compositions and adding new original songs. These changes are not generally seen as harmful to the experience, as the new compositions have been specifically designed for Umineko, provide a similar atmosphere to the ones they replace, are composed in similar styles, and the replaced songs are not among the popular/"famous" tracks.
    + 07th-Mod provides a choice between the console and the PC soundtracks. +
  • The console game does not support the original "Ryukishi" sprites, nor does it support the updated sprites from the Steam version.
    07th-Mod has full support for those two sets, as well as partial support for the console sprites (missing animations and some poses/facial expressions). +
+ +
+ + Once you have finished reading the above, please make your choice on which version of the game you'd like to play. + +
+
+ + + + +
+
+ +
+
+

Donation Status

+

+ Server time remaining: {{ metaInfo.donationMonthsRemaining }} months
+ This year's funding goal is {{ metaInfo.donationProgressPercent }}% complete.
+ Click Here to Donate!
+

+
+
{{ metaInfo.buildInfo }}
+
+
+
+ + + + + + + + + + + + + + + +