diff --git a/GUI/index.html b/GUI/index.html
index a99aa61..0cb2785 100644
--- a/GUI/index.html
+++ b/GUI/index.html
@@ -618,20 +618,6 @@
-
-
diff --git a/GUI/js/install.js b/GUI/js/install.js
index ae3e363..4208a5e 100644
--- a/GUI/js/install.js
+++ b/GUI/js/install.js
@@ -40,18 +40,6 @@ export function setupInstallation() {
});
}
- // Setup installation effects listeners
- if (window.electronAPI && window.electronAPI.onInstallationStart) {
- window.electronAPI.onInstallationStart(() => {
- showInstallationEffects();
- });
- }
-
- if (window.electronAPI && window.electronAPI.onInstallationEnd) {
- window.electronAPI.onInstallationEnd(() => {
- hideInstallationEffects();
- });
- }
}
export async function installGame() {
@@ -67,6 +55,7 @@ export async function installGame() {
if (window.LauncherUI) window.LauncherUI.showProgress();
isDownloading = true;
+ lockInstallForm();
if (installBtn) {
installBtn.disabled = true;
installText.textContent = window.i18n ? window.i18n.t('install.installing') : 'INSTALLING...';
@@ -97,12 +86,7 @@ export async function installGame() {
} catch (error) {
const errorMsg = window.i18n ? window.i18n.t('progress.installationFailed').replace('{error}', error.message) : `Installation failed: ${error.message}`;
- // Hide installation effects on error
- if (window.hideInstallationEffects) {
- window.hideInstallationEffects();
- }
-
- // Reset button state on error
+ // Reset button state and unlock form on error
resetInstallButton();
if (window.LauncherUI) {
@@ -157,6 +141,35 @@ function resetInstallButton() {
installBtn.disabled = false;
installText.textContent = 'INSTALL HYTALE';
}
+ unlockInstallForm();
+}
+
+function lockInstallForm() {
+ const playerNameInput = document.getElementById('installPlayerName');
+ const installPathInput = document.getElementById('installPath');
+ const customCheckbox = document.getElementById('installCustomCheck');
+ const branchRadios = document.querySelectorAll('input[name="installBranch"]');
+ const browseBtn = document.querySelector('.browse-btn');
+
+ if (playerNameInput) playerNameInput.disabled = true;
+ if (installPathInput) installPathInput.disabled = true;
+ if (customCheckbox) customCheckbox.disabled = true;
+ if (browseBtn) browseBtn.disabled = true;
+ branchRadios.forEach(radio => radio.disabled = true);
+}
+
+function unlockInstallForm() {
+ const playerNameInput = document.getElementById('installPlayerName');
+ const installPathInput = document.getElementById('installPath');
+ const customCheckbox = document.getElementById('installCustomCheck');
+ const branchRadios = document.querySelectorAll('input[name="installBranch"]');
+ const browseBtn = document.querySelector('.browse-btn');
+
+ if (playerNameInput) playerNameInput.disabled = false;
+ if (installPathInput) installPathInput.disabled = false;
+ if (customCheckbox) customCheckbox.disabled = false;
+ if (browseBtn) browseBtn.disabled = false;
+ branchRadios.forEach(radio => radio.disabled = false);
}
export async function browseInstallPath() {
diff --git a/GUI/js/ui.js b/GUI/js/ui.js
index 0223054..5e47283 100644
--- a/GUI/js/ui.js
+++ b/GUI/js/ui.js
@@ -581,8 +581,7 @@ window.LauncherUI = {
};
// Make installation effects globally available
-window.showInstallationEffects = showInstallationEffects;
-window.hideInstallationEffects = hideInstallationEffects;
+
// Draggable progress bar functionality
function setupProgressDrag() {
@@ -642,21 +641,6 @@ function setupProgressDrag() {
}
}
-// Show/hide installation effects
-function showInstallationEffects() {
- const installationEffects = document.getElementById('installationEffects');
- if (installationEffects) {
- installationEffects.style.display = 'block';
- }
-}
-
-function hideInstallationEffects() {
- const installationEffects = document.getElementById('installationEffects');
- if (installationEffects) {
- installationEffects.style.display = 'none';
- }
-}
-
// Toggle maximize/restore window function
function toggleMaximize() {
if (window.electronAPI && window.electronAPI.maximizeWindow) {
diff --git a/GUI/style.css b/GUI/style.css
index 99700dd..acdc079 100644
--- a/GUI/style.css
+++ b/GUI/style.css
@@ -1846,70 +1846,6 @@ body {
}
/* Installation effects */
-.installation-effects {
- position: fixed;
- top: 0;
- left: 80px;
- width: calc(100% - 80px);
- height: 100%;
- background: rgba(0, 0, 0, 0.5);
- backdrop-filter: blur(10px);
- z-index: 40;
- pointer-events: auto;
- overflow: hidden;
-}
-
-.space-effects {
- position: absolute;
- width: 100%;
- height: 100%;
- perspective: 1000px;
-}
-
-.warp-line {
- position: absolute;
- width: 2px;
- height: 100%;
- background: linear-gradient(180deg,
- transparent 0%,
- rgba(147, 51, 234, 0.8) 50%,
- transparent 100%);
- box-shadow: 0 0 10px rgba(147, 51, 234, 0.8),
- 0 0 20px rgba(147, 51, 234, 0.4);
- animation: warpSpeed 1.5s linear infinite;
- opacity: 0;
-}
-
-.warp-line:nth-child(1) { left: 10%; animation-delay: 0s; }
-.warp-line:nth-child(2) { left: 25%; animation-delay: 0.2s; }
-.warp-line:nth-child(3) { left: 40%; animation-delay: 0.4s; }
-.warp-line:nth-child(4) { left: 55%; animation-delay: 0.6s; }
-.warp-line:nth-child(5) { left: 70%; animation-delay: 0.8s; }
-.warp-line:nth-child(6) { left: 85%; animation-delay: 1s; }
-.warp-line:nth-child(7) { left: 15%; animation-delay: 0.3s; }
-.warp-line:nth-child(8) { left: 60%; animation-delay: 0.7s; }
-
-@keyframes warpSpeed {
- 0% {
- transform: translateY(-100%) scaleY(0);
- opacity: 0;
- }
- 10% {
- opacity: 1;
- }
- 50% {
- opacity: 1;
- transform: translateY(0%) scaleY(1);
- }
- 90% {
- opacity: 1;
- }
- 100% {
- transform: translateY(100%) scaleY(2);
- opacity: 0;
- }
-}
-
.mods-manager {
display: flex;