From 06321367a92b272f745ab482e470a6f3adb85729 Mon Sep 17 00:00:00 2001 From: ShakeFlower Date: Thu, 8 May 2025 09:54:20 +0800 Subject: [PATCH] fix: fix some type --- project/plugins.js | 80 ++++++++++++++++++++++++---------------------- runtime.d.ts | 11 +++++++ 2 files changed, 53 insertions(+), 38 deletions(-) diff --git a/project/plugins.js b/project/plugins.js index 313e312e..a04f605d 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -313,22 +313,22 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = // 创建新图层 function createCanvas(name, zIndex) { if (!name) return; - var canvas = document.createElement('canvas'); + const canvas = document.createElement('canvas'); canvas.id = name; canvas.className = 'gameCanvas'; // 编辑器模式下设置zIndex会导致加入的图层覆盖优先级过高 if (main.mode != "editor") canvas.style.zIndex = zIndex || 0; // 将图层插入进游戏内容 - document.getElementById('gameDraw').appendChild(canvas); - var ctx = canvas.getContext('2d'); - core.canvas[name] = ctx; + document.getElementById('gameDraw')?.appendChild(canvas); + const ctx = canvas.getContext('2d'); + if (ctx) core.canvas[name] = ctx; canvas.width = core.__PIXELS__; canvas.height = core.__PIXELS__; return canvas; } - var bg2Canvas = createCanvas('bg2', 20); - var fg2Canvas = createCanvas('fg2', 63); + const bg2Canvas = createCanvas('bg2', 20); + const fg2Canvas = createCanvas('fg2', 63); // 大地图适配 core.bigmap.canvas = ["bg2", "fg2", "bg", "event", "event2", "fg", "damage"]; core.initStatus.bg2maps = {}; @@ -338,9 +338,9 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = /*插入编辑器的图层 不做此步新增图层无法在编辑器显示*/ // 编辑器图层覆盖优先级 eui > efg > fg(前景层) > event2(48*32图块的事件层) > event(事件层) > bg(背景层) // 背景层2(bg2) 插入事件层(event)之前(即bg与event之间) - document.getElementById('mapEdit').insertBefore(bg2Canvas, document.getElementById('event')); + if (bg2Canvas) document.getElementById('mapEdit')?.insertBefore(bg2Canvas, document.getElementById('event')); // 前景层2(fg2) 插入编辑器前景(efg)之前(即fg之后) - document.getElementById('mapEdit').insertBefore(fg2Canvas, document.getElementById('ebm')); + if (fg2Canvas) document.getElementById('mapEdit')?.insertBefore(fg2Canvas, document.getElementById('ebm')); // 原本有三个图层 从4开始添加 var num = 4; // 新增图层存入editor.dom中 @@ -352,13 +352,13 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = editor.dom.canvas.push('bg2', 'fg2'); // 创建编辑器上的按钮 - var createCanvasBtn = function (name) { + const createCanvasBtn = function (name) { // 电脑端创建按钮 - var input = document.createElement('input'); + const input = document.createElement('input'); // layerMod4/layerMod5 - var id = 'layerMod' + num++; + const id = 'layerMod' + num++; // bg2map/fg2map - var value = name + 'map'; + const value = name + 'map'; input.type = 'radio'; input.name = 'layerMod'; input.id = id; @@ -370,44 +370,48 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = return input; }; - var createCanvasBtn_mobile = function (name) { + const createCanvasBtn_mobile = function (name) { // 手机端往选择列表中添加子选项 - var input = document.createElement('option'); - var id = 'layerMod' + num++; - var value = name + 'map'; + const input = document.createElement('option'); + const id = 'layerMod' + num++; + const value = name + 'map'; input.name = 'layerMod'; input.value = value; editor.dom[id] = input; return input; }; if (!editor.isMobile) { - var input = createCanvasBtn('bg2'); - var input2 = createCanvasBtn('fg2'); + const input = createCanvasBtn('bg2'); + const input2 = createCanvasBtn('fg2'); // 获取事件层及其父节点 - var child = document.getElementById('layerMod'), - parent = child.parentNode; - // 背景层2插入事件层前 - parent.insertBefore(input, child); - // 不能直接更改背景层2的innerText 所以创建文本节点 - var txt = document.createTextNode('bg2'); - // 插入事件层前(即新插入的背景层2前) - parent.insertBefore(txt, child); - // 向最后插入前景层2(即插入前景层后) - parent.appendChild(input2); - var txt2 = document.createTextNode('fg2'); - parent.appendChild(txt2); - parent.childNodes[2].replaceWith("bg"); - parent.childNodes[6].replaceWith("事件"); - parent.childNodes[8].replaceWith("fg"); + const child = document.getElementById('layerMod'), + parent = child?.parentNode; + if (parent) { + // 背景层2插入事件层前 + parent.insertBefore(input, child); + // 不能直接更改背景层2的innerText 所以创建文本节点 + var txt = document.createTextNode('bg2'); + // 插入事件层前(即新插入的背景层2前) + parent.insertBefore(txt, child); + // 向最后插入前景层2(即插入前景层后) + parent.appendChild(input2); + var txt2 = document.createTextNode('fg2'); + parent.appendChild(txt2); + parent.childNodes[2].replaceWith("bg"); + parent.childNodes[6].replaceWith("事件"); + parent.childNodes[8].replaceWith("fg"); + } } else { - var input = createCanvasBtn_mobile('bg2'); - var input2 = createCanvasBtn_mobile('fg2'); + const input = createCanvasBtn_mobile('bg2'); + const input2 = createCanvasBtn_mobile('fg2'); // 手机端因为是选项 所以可以直接改innerText input.innerText = '背景层2'; input2.innerText = '前景层2'; - var parent = document.getElementById('layerMod'); - parent.insertBefore(input, parent.children[1]); - parent.appendChild(input2); + const parent = document.getElementById('layerMod'); + if (parent) { + parent.insertBefore(input, parent.children[1]); + parent.appendChild(input2); + } } } diff --git a/runtime.d.ts b/runtime.d.ts index 73b5b9ba..41affd9d 100644 --- a/runtime.d.ts +++ b/runtime.d.ts @@ -979,6 +979,7 @@ interface events { __action_checkReplaying(): boolean _action_sleep(data: { time: number }, x?: undefined, y?: undefined, prefix?: undefined): void _startGame_start(hard: string, seed: number, route: string, callback: Function): void + _startGame_afterStart(callback: Function): void /** * 开始新游戏 @@ -1644,10 +1645,19 @@ interface enemys { } } +type mapsConfig = { + onMap: boolean, ctx?: CanvasRenderingContext2D, + redraw?: boolean, postDraw?: (() => void)[] +} + /** @file maps.js负责一切和地图相关的处理内容 */ interface maps { _loadFloor_doNotCopy(): string[] _getAndRemoveBlock(x: number, y: number): [Block, any] + _drawBg_draw(floorId: string, toDrawCtx: CanvasRenderingContext2D, cacheCtx: CanvasRenderingContext2D, + config: mapsConfig): void + _drawBgFgMap(floorId: string, name: string, config: mapsConfig): void + _drawBg_drawBackground(floorId: string, config: mapsConfig): void /** * 获取初始core.maps.blockInfo的一个拷贝 @@ -2339,6 +2349,7 @@ interface ui { _buildFont(fontSize?: number | string, bold?: boolean, italic?: boolean, font?: string): string _createUIEvent(): void _drawBook_drawName(index: number, enemy: Enemy, top: number, left: number, width: number): void + _drawBook_drawRow1(index: number, enemy: Enemy, top: number, left: number, width: number, position: number): void /** * 根据画布名找到一个画布的context;支持系统画布和自定义画布。如果不存在画布返回null。