diff --git a/assets/scripts/core/game-scene.js b/assets/scripts/core/game-scene.js index 9fdead19..ca854cd0 100644 --- a/assets/scripts/core/game-scene.js +++ b/assets/scripts/core/game-scene.js @@ -4231,7 +4231,7 @@ this._menuUpdateLogBtn = this.add.image(screenWidth - 30 - 50, 33, "GJ_WebSheet" onDragStart(ptr); if (isComingSoonPage()) return; const levelId = window.currentlevel?.[2]; - if (getLevelCoinRequirement(levelId) > (Number(window._totalsecretcoins) || 0)) return; + if (!window.unlockAllLevels && getLevelCoinRequirement(levelId) > (Number(window._totalsecretcoins) || 0)) return; this.tweens.killTweensOf(cardBounceContainer, "scale"); this.tweens.add({ targets: cardBounceContainer, scale: 1.26, duration: 300, ease: "Bounce.Out" }); }); @@ -4295,7 +4295,7 @@ this._menuUpdateLogBtn = this.add.image(screenWidth - 30 - 50, 33, "GJ_WebSheet" const requiredCoins = getLevelCoinRequirement(window.currentlevel?.[2]); const collectedCoins = Number(window._totalsecretcoins) || 0; - if (requiredCoins > collectedCoins) { + if (!window.unlockAllLevels && requiredCoins > collectedCoins) { return; } @@ -4358,7 +4358,7 @@ this._menuUpdateLogBtn = this.add.image(screenWidth - 30 - 50, 33, "GJ_WebSheet" const levelId = lvl[2] || "level_1"; const requiredCoins = getLevelCoinRequirement(levelId); const collectedCoins = Number(window._totalsecretcoins) || 0; - const levellocked = requiredCoins > collectedCoins; + const levellocked = !window.unlockAllLevels && requiredCoins > collectedCoins; const levelDifficultyMap = { "level_1": "diffIcon_01_btn_001", "level_2": "diffIcon_01_btn_001", @@ -5097,6 +5097,9 @@ _buildSettingsPopup() { } var infotextstrings = { + "Unlock All Levels": "Lets you play every main level without collecting the secret coins first.", + "No Wave Trail": "Hides the trail behind the wave. Was previously tied to Low Detail Mode.", + "Static Colors": "Skips recoloring objects on frames where their color has not changed. Speeds up busy levels, but colors may lag behind on levels that use pulse triggers.", "Enable Portal Guide": "Enables extra indicators on portals.", "Enable Orb Guide": "Enables extra indicators on orbs.", "Practice Music Bypass": "Plays normal mode music in practice mode.", @@ -5343,6 +5346,14 @@ _buildSettingsPopup() { false ); + createToggle(container, column2X, startY, "Unlock All Levels", + () => window.unlockAllLevels, + (v) => window.unlockAllLevels = v, + null, + 25, + true, + "Unlock All Levels" + ); createToggle(container, column2X, startY + spacingY, "Practice Music Sync", () => window.practiceMusicSync, (v) => { @@ -5487,6 +5498,30 @@ _buildSettingsPopup() { }; const buildPerformancePage = (container) => { + createToggle(container, column1X, startY + spacingY, "Low Detail Mode", + () => window.enableLDM, + (v) => window.enableLDM = v, + null, + 25, + true, + "Low Detail Mode" + ); + createToggle(container, column1X, startY + (spacingY * 2), "Static Colors", + () => window.optimizeColors, + (v) => window.optimizeColors = v, + null, + 25, + true, + "Static Colors" + ); + createToggle(container, column1X, startY + (spacingY * 3), "No Wave Trail", + () => window.noWaveTrail, + (v) => window.noWaveTrail = v, + null, + 25, + true, + "No Wave Trail" + ); createNumberInput(container, column1X, startY, "Cull Distance", () => (typeof window.cullDistance !== 'undefined' ? window.cullDistance : 3), (v) => window.cullDistance = v, @@ -5556,6 +5591,9 @@ _buildSettingsPopup() { cullDistance: window.cullDistance, settingInfoText: window.settingInfoText || {}, enableLDM: window.enableLDM, + optimizeColors: !!window.optimizeColors, + noWaveTrail: !!window.noWaveTrail, + unlockAllLevels: !!window.unlockAllLevels, }; localStorage.setItem("gd_settings", JSON.stringify(settings)); localStorage.setItem("gd_useDirectInternet", String(!!window.useDirectInternet)); @@ -5586,6 +5624,9 @@ _buildSettingsPopup() { enableOrbGuide: false, enableMiniIcon: false, enableLDM: false, + optimizeColors: false, + noWaveTrail: false, + unlockAllLevels: false, cullDistance: 3 }; @@ -5617,6 +5658,9 @@ _buildSettingsPopup() { window.useDirectInternet = !!data.useDirectInternet; localStorage.setItem("gd_useDirectInternet", String(!!window.useDirectInternet)); window.enableLDM = !!data.enableLDM; + window.optimizeColors = !!data.optimizeColors; + window.noWaveTrail = !!data.noWaveTrail; + window.unlockAllLevels = !!data.unlockAllLevels; } _buildMacroPopup() { if (this._macroPopup) return; @@ -9599,26 +9643,6 @@ _applyMirrorEffect() { this._showwippopup(); }); - const ldmX = _0x2a115c + 160; - const ldmY = 495; - const ldmCheckOffset = -120; - const ldmTextOffset = -80; - - var ldmIsOn = window.enableLDM; - var ldmCheckTexture = ldmIsOn ? "GJ_checkOn_001.png" : "GJ_checkOff_001.png"; - var ldmCheck = this.add.image(ldmX + ldmCheckOffset, ldmY, "GJ_GameSheet03", ldmCheckTexture).setScale(0.8).setInteractive(); - var ldmTxt = this.add.bitmapText(ldmX + ldmTextOffset, ldmY, "bigFont", "Low Detail Mode", 25).setOrigin(0, 0.5); - this._helplayer.add([ldmCheck, ldmTxt]); - - this._makeBouncyButton(ldmCheck, 0.8, () => { - var current = window.enableLDM; - window.enableLDM = !current; - var newTexture = window.enableLDM ? "GJ_checkOn_001.png" : "GJ_checkOff_001.png"; - ldmCheck.setTexture("GJ_GameSheet03", newTexture); - if (this._saveSettings) { - this._saveSettings(); - } - }); const reqbtnX = _0x2a115c + 655; const reqbtnY = 495; diff --git a/assets/scripts/core/level.js b/assets/scripts/core/level.js index 087b3249..203e1a6a 100644 --- a/assets/scripts/core/level.js +++ b/assets/scripts/core/level.js @@ -3335,6 +3335,7 @@ window.LevelObject = class LevelObject { return triggered; } resetColorTriggers() { + this._lastChanHex = {}; this._colorTriggerIdx = 0; this._touchColorTriggerActivated = new Set(); } @@ -3541,6 +3542,9 @@ window.LevelObject = class LevelObject { } } updateObjectDebugIds() { + const _want = !!(window.showObjectIds && !window.enableLDM); + if (this._debugIdsShown === _want) return; + this._debugIdsShown = _want; if (window.showObjectIds && !window.enableLDM) { if (this._debugIdTextsList && this._debugIdTextsList.length > 0) { for (const idText of this._debugIdTextsList) { @@ -4263,10 +4267,14 @@ window.LevelObject = class LevelObject { } applyColorChannels(colorManager) { + const _skipStatic = !!window.optimizeColors; + if (!this._lastChanHex) this._lastChanHex = {}; for (const chId in this._colorChannelSprites) { const sprites = this._colorChannelSprites[chId]; if (!sprites || !sprites.length) continue; const hex = colorManager.getHex(parseInt(chId, 10)); + if (_skipStatic && this._lastChanHex[chId] === hex) continue; + this._lastChanHex[chId] = hex; for (const spr of sprites) { if (!spr || !spr.active) continue; if (spr._cantColor) continue; diff --git a/assets/scripts/core/player.js b/assets/scripts/core/player.js index 0ee23f03..7f3059fb 100644 --- a/assets/scripts/core/player.js +++ b/assets/scripts/core/player.js @@ -1605,8 +1605,14 @@ class PlayerObject { this._shipDragActive = false; this._streak.stop(); this._streak.reset(); - this._waveTrail.stop(); - this._waveTrail.reset(); + if (window.noWaveTrail || this.p.isDead) { + this._waveTrail.stop(); + this._waveTrail.reset(); + } else { + this._waveTrail.setPosition(this._scene._playerWorldX, b(this.p.y)); + this._waveTrail.setMiniScale(this.p.isMini); + this._waveTrail.update(_0x5af874); + } return; } @@ -1641,8 +1647,13 @@ class PlayerObject { this._waveTrail.setPosition(_0x119eb7, _0x519d38); } this._streak.update(_0x5af874); - this._waveTrail.setMiniScale(this.p.isMini); - this._waveTrail.update(_0x5af874); + if (window.noWaveTrail) { + this._waveTrail.stop(); + this._waveTrail.reset(); + } else { + this._waveTrail.setMiniScale(this.p.isMini); + this._waveTrail.update(_0x5af874); + } const _0x3d69d2 = this.p.isFlying || this.p.isUfo; if (_0x3d69d2 && !this._flyParticleActive) { this._flyParticleEmitter.start(); @@ -3809,8 +3820,8 @@ if (this.p.isFlying || this.p.isUfo) { _updateUfoJump(_dt) { const _ufoJump = this.p.isMini ? 13.296 : 13.742; const _ufoMini = window.ufoMiniDiv !== undefined ? window.ufoMiniDiv : 0.85; - const _ufoFastBase = window.ufoFastGrav !== undefined ? window.ufoFastGrav : 0.525; - const _ufoSlowBase = window.ufoSlowGrav !== undefined ? window.ufoSlowGrav : 0.425; + const _ufoFastBase = window.ufoFastGrav !== undefined ? window.ufoFastGrav : 0.540121; + const _ufoSlowBase = window.ufoSlowGrav !== undefined ? window.ufoSlowGrav : 0.450101; const _ufoThreshold = 3.832796; const _ufoFastGrav = this.p.isMini ? _ufoFastBase / _ufoMini : _ufoFastBase; const _ufoSlowGrav = this.p.isMini ? _ufoSlowBase / _ufoMini : _ufoSlowBase; diff --git a/index.html b/index.html index 8d033615..7c54307b 100644 --- a/index.html +++ b/index.html @@ -40,12 +40,12 @@ - - + + - +