Skip to content

Commit 2dff3e4

Browse files
committed
feat: 鼠标控制链路优化
1 parent ef894be commit 2dff3e4

1 file changed

Lines changed: 57 additions & 14 deletions

File tree

dist/ra2web.min.js

Lines changed: 57 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5882,6 +5882,7 @@ System.register("data/CsfFile", [], function (t, e) {
58825882
}
58835883
fromVirtualFile(e) {
58845884
let t = e.stream;
5885+
t.seek(0);
58855886
(t.readInt32(), t.readInt32());
58865887
var i = t.readInt32();
58875888
(t.readInt32(), t.readInt32(), (this.language = t.readInt32()));
@@ -65197,17 +65198,26 @@ System.register(
6519765198
timeStamp: t.timeStamp
6519865199
};
6519965200
}
65200-
computeTouchPosition(e) {
65201-
let t = {
65202-
x: (e.pageX - this.canvasMetrics.x) * (this.canvasMetrics.scaleX ?? 1),
65203-
y: (e.pageY - this.canvasMetrics.y) * (this.canvasMetrics.scaleY ?? 1)
65201+
computeCanvasPosition(e, t) {
65202+
let r = {
65203+
x: (e - this.canvasMetrics.x) * (this.canvasMetrics.scaleX ?? 1),
65204+
y: (t - this.canvasMetrics.y) * (this.canvasMetrics.scaleY ?? 1)
6520465205
};
6520565206
return (
65206-
(t.x = i.clamp(t.x, 0, this.canvasMetrics.width - 1)),
65207-
(t.y = i.clamp(t.y, 0, this.canvasMetrics.height - 1)),
65208-
t
65207+
(r.x = i.clamp(r.x, 0, this.canvasMetrics.width - 1)),
65208+
(r.y = i.clamp(r.y, 0, this.canvasMetrics.height - 1)),
65209+
r
6520965210
);
6521065211
}
65212+
computeTouchPosition(e) {
65213+
return this.computeCanvasPosition(e.pageX, e.pageY);
65214+
}
65215+
computeMousePosition(e) {
65216+
var t = this.document?.defaultView,
65217+
r = "number" == typeof e.pageX ? e.pageX : (e.clientX ?? 0) + (t?.scrollX ?? 0),
65218+
s = "number" == typeof e.pageY ? e.pageY : (e.clientY ?? 0) + (t?.scrollY ?? 0);
65219+
return this.computeCanvasPosition(r, s);
65220+
}
6521165221
onMouseEvent(t, r) {
6521265222
let s = this.getPointerPosition(r);
6521365223
var a = this.findObjectUnderPointer(s);
@@ -65246,10 +65256,9 @@ System.register(
6524665256
getPointerPosition(e) {
6524765257
return this.document.pointerLockElement
6524865258
? this.lockModePointer
65249-
: {
65250-
x: e.isTouch ? e.offsetX : e.offsetX * (this.canvasMetrics.scaleX ?? 1),
65251-
y: e.isTouch ? e.offsetY : e.offsetY * (this.canvasMetrics.scaleY ?? 1)
65252-
};
65259+
: e.isTouch
65260+
? { x: e.offsetX, y: e.offsetY }
65261+
: this.computeMousePosition(e);
6525365262
}
6525465263
findObjectUnderPointer(t) {
6525565264
let r = this.renderer.getScenes(),
@@ -112380,16 +112389,20 @@ System.register(
112380112389
(G.ImageContext.cdnBaseUrl = this.gameResConfig.isCdn() ? this.gameResConfig.getCdnBaseUrl() : void 0),
112381112390
(G.ImageContext.vfs = u.Engine.vfs));
112382112391
try {
112383-
let e = new X.CsfFile(u.Engine.vfs.openFile(u.Engine.getFileNameVariant("ra2.csf")));
112392+
let e,
112393+
n = u.Engine.getFileNameVariant("ra2.csf"),
112394+
o = this.getStringsFileLayers(n);
112395+
if (!o.length) throw new Error(`String file "${n}" not found in VFS`);
112396+
e = new X.CsfFile(this.resetVirtualFileStream(o[0].file));
112384112397
var l = e.getIsoLocale();
112385112398
if (void 0 !== l && l !== t)
112386112399
try {
112387112400
((i = await this.loadTranslations(l)), (this.locale = l));
112388112401
} catch (e) {
112389112402
console.warn(`Failed to load translation ${l}. Falling back to ${t}.`, e);
112390112403
}
112391-
((r = this.strings = new R.Strings(e)),
112392-
r.fromJson(i),
112404+
(1 < o.length && console.info("[strings] layered string sources", o.map((e) => e.archiveName)),
112405+
(r = this.strings = this.buildLayeredStrings(o, i)),
112393112406
u.Engine.loadRules(),
112394112407
this.sentry?.configureScope((e) => {
112395112408
(e.setTag("mod", u.Engine.getActiveMod() || "<none>"),
@@ -112424,6 +112437,36 @@ System.register(
112424112437
}
112425112438
(await e, a.destroy(), (this.splashScreen = void 0), this.initRouting());
112426112439
}
112440+
resetVirtualFileStream(e) {
112441+
return (e?.stream?.seek?.(0), e);
112442+
}
112443+
getStringsFileLayers(e) {
112444+
let t = [],
112445+
i = u.Engine.vfs,
112446+
r = i?.archivesByPriority,
112447+
s = i?.allArchives;
112448+
if (!Array.isArray(r) || !s?.entries) return t;
112449+
let a = new Map();
112450+
for (var [n, o] of s.entries()) a.set(o, n);
112451+
for (var l of r)
112452+
try {
112453+
if (l?.containsFile?.(e)) {
112454+
var c = l.openFile(e);
112455+
(this.resetVirtualFileStream(c),
112456+
t.push({ archiveName: a.get(l) || "(unknown)", file: c }));
112457+
}
112458+
} catch (t) {
112459+
throw new Error(`Failed to read string file "${e}" from VFS archive "${a.get(l) || "(unknown)"}"`, {
112460+
cause: t
112461+
});
112462+
}
112463+
return t;
112464+
}
112465+
buildLayeredStrings(e, t) {
112466+
let i = new R.Strings();
112467+
for (var r of [...e].reverse()) i.fromCsf(new X.CsfFile(this.resetVirtualFileStream(r.file)));
112468+
return (i.fromJson(t), i);
112469+
}
112427112470
async loadTranslations(e) {
112428112471
return await new T.ResourceLoader(ie.resPath).loadJson(`locale/${e}.json?v=` + this.getVersion());
112429112472
}

0 commit comments

Comments
 (0)