Prevent hovering tooltiip from causing perspective switching during replays
							parent
							
								
									594baa7546
								
							
						
					
					
						commit
						77fea785f1
					
				|  | @ -0,0 +1,38 @@ | |||
| import ModUtils from "../modUtils.js" | ||||
| 
 | ||||
| export default (/** @type {ModUtils} */ { insertCode, replaceRawCode, waitForMinification }) => { | ||||
| 
 | ||||
|     insertCode(`/* here */
 | ||||
|         this.click = function(lK, lL, a1m) { | ||||
|         var gy = bL.gz(lK); | ||||
|         var h0 = bL.h1(lL); | ||||
|         var eV = bL.f7(gy, h0); | ||||
|         var eN = bL.eZ(eV); | ||||
|         if (!bL.isInMapBounds(gy, h0)) { return false; } | ||||
|         var a5C = (Device.a1.largeUIEnabled() ? 0.025 : 0.0144) * h___.hu; | ||||
|         var dp = performance.now(); | ||||
|         if (Math.abs(lK - a4t) > a5C || Math.abs(lL - a4u) > a5C || dp > time + 500) { return false; } | ||||
|         time = dp; | ||||
|         if (a1m) { a5D(lK, lL, eN); return false; } | ||||
|         /*...*/}`,
 | ||||
|         `__fx.hoveringTooltip.display = function(mouseX, mouseY) {
 | ||||
|             var coordX = bL.gz(mouseX), coordY = bL.h1(mouseY), | ||||
|                 coord = bL.f7(coordX, coordY), point = bL.eZ(coord); | ||||
|             // if (coordX < 0 || coordY < 0) return;
 | ||||
|             if (bL.isInMapBounds(coordX, coordY)) (function(lK, lL, eN) { | ||||
|                 a5D(lK, lL, eN) | ||||
|             }(mouseX, mouseY, point)) | ||||
|         }`)
 | ||||
|     insertCode(`player = aQ.eF(eR);
 | ||||
| 		if (game.gIsReplay /* here */) { game.playerId = player; } | ||||
| 		str = L(58, /* Player: {0} */ [b0.context.truncateAndFillText(playerData.rawPlayerNames[player], b0.qZ.sN(0, 10), 150)]) + "   "; | ||||
| 		str += L(59, /* Strength: {10} */ [b0.rY.formatNumber(playerData.playerBalances[player])]) + "   "; | ||||
| 		str += L(60, /* Territory: {10} */ [b0.rY.formatNumber(playerData.playerTerritories[player])]) + "   ";`,
 | ||||
|     `&& __fx.hoveringTooltip.active === false`) | ||||
|      | ||||
|     waitForMinification(() => { | ||||
|         replaceRawCode("aK.nH=(window.devicePixelRatio||1)*aEr,", | ||||
|             `aK.nH = (window.devicePixelRatio || 1) * aEr, __fx.hoveringTooltip.canvasPixelScale = aK.nH,`) | ||||
|     }) | ||||
| 
 | ||||
| } | ||||
|  | @ -11,29 +11,6 @@ export default (/** @type {ModUtils} */ modUtils) => { | |||
|         return alert("Error:\\n" + e.filename + " " + e.lineno + " " + e.colno + " " + e.message);` | ||||
|     ) | ||||
| 
 | ||||
|     // Hovering tooltip
 | ||||
|     modUtils.insertCode(`/* here */
 | ||||
|         this.click = function(lK, lL, a1m) { | ||||
| 		var gy = bL.gz(lK); | ||||
| 		var h0 = bL.h1(lL); | ||||
| 		var eV = bL.f7(gy, h0); | ||||
| 		var eN = bL.eZ(eV); | ||||
| 		if (!bL.isInMapBounds(gy, h0)) { return false; } | ||||
| 		var a5C = (Device.a1.largeUIEnabled() ? 0.025 : 0.0144) * h___.hu; | ||||
| 		var dp = performance.now(); | ||||
| 		if (Math.abs(lK - a4t) > a5C || Math.abs(lL - a4u) > a5C || dp > time + 500) { return false; } | ||||
| 		time = dp; | ||||
| 		if (a1m) { a5D(lK, lL, eN); return false; } | ||||
|         /*...*/}`,
 | ||||
|         `__fx.hoveringTooltip.display = function(mouseX, mouseY) {
 | ||||
| 			var coordX = bL.gz(mouseX), coordY = bL.h1(mouseY), | ||||
| 				coord = bL.f7(coordX, coordY), point = bL.eZ(coord); | ||||
| 			// if (coordX < 0 || coordY < 0) return;
 | ||||
|             if (bL.isInMapBounds(coordX, coordY)) (function(lK, lL, eN) { | ||||
| 				a5D(lK, lL, eN) | ||||
| 			}(mouseX, mouseY, point)) | ||||
|         }`)
 | ||||
| 
 | ||||
|     modUtils.waitForMinification(() => applyPatches(modUtils)) | ||||
| } | ||||
| //export const requiredVariables = ["game", "playerId", "playerData", "rawPlayerNames", "gIsSingleplayer", "playerTerritories"];
 | ||||
|  | @ -309,11 +286,6 @@ canvas.font=aY.g0.g1(1,fontSize),canvas.fillStyle="rgba("+gR+","+tD+","+hj+",0.6 | |||
|             `this.uI=function(username){var uK,uJ=username.indexOf("[");return!(uJ<0)&&1<(uK=username.indexOf("]"))-uJ&&uK-uJ<=8?username.substring(uJ+1,uK).toUpperCase().trim():null}, __fx.leaderboardFilter.parseClanFromPlayerName = this.uI;`); | ||||
|     } | ||||
| 
 | ||||
|     { // Hovering tooltip
 | ||||
|         replaceRawCode("aK.nH=(window.devicePixelRatio||1)*aEr,", | ||||
|             `aK.nH = (window.devicePixelRatio || 1) * aEr, __fx.hoveringTooltip.canvasPixelScale = aK.nH,`) | ||||
|     } | ||||
| 
 | ||||
|     // Detailed team pie chart percentage
 | ||||
|     replaceRawCode(`qr=Math.floor(100*f0+.5)+"%"`, | ||||
|         `qr = (__fx.settings.detailedTeamPercentage ? (100*f0).toFixed(2) : Math.floor(100*f0+.5)) + "%"`) | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ import { getVar } from "./gameInterface.js"; | |||
| const hoveringTooltip = new (function() { | ||||
|     let recentlyShown = false; | ||||
|     this.display = () => {}; // this gets populated by the modified game script
 | ||||
|     this.active = false; | ||||
|     this.canvasPixelScale = 1; | ||||
|     function handler(e) { | ||||
|         if (!getSettings().hoveringTooltip || !getVar("gameState") || recentlyShown) return; | ||||
|  | @ -21,7 +22,9 @@ const hoveringTooltip = new (function() { | |||
| 
 | ||||
|         recentlyShown = true; | ||||
|         try { | ||||
|             this.active = true; | ||||
|             this.display(this.canvasPixelScale * x, this.canvasPixelScale * y); | ||||
|             this.active = false; | ||||
|         } catch (e) { console.error(e) } | ||||
|         // for better performance, reduce the tooltip display frequency to no more than once every 100 ms
 | ||||
|         setTimeout(() => recentlyShown = false, 100); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue