修复录像!

This commit is contained in:
unanmed 2023-04-25 20:50:23 +08:00
parent 4135d06ccd
commit bd4a7f946a
11 changed files with 140 additions and 51 deletions

1
.gitignore vendored
View File

@ -31,3 +31,4 @@ story.md
dist.rar
*.h5save
*.h5route
index.cjs

View File

@ -310,17 +310,38 @@ core.prototype.init = async function (coreData, callback) {
});
};
core.prototype.initSync = function (coreData, callback) {
this._forwardFuncs();
for (var key in coreData) core[key] = coreData[key];
this._init_flags();
this._init_platform();
this._init_others();
this._loadPluginSync();
core.loader._load(function () {
core.extensions._load(function () {
core._afterLoadResources(callback);
});
});
};
core.prototype._loadPluginSync = function () {
core.plugin = {};
if (main.useCompress) main.loadMod('project', 'plugin', () => 0);
else main.loadMod('project', 'plugin.min', () => 0);
};
core.prototype._loadPlugin = async function () {
const mainData = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.main;
core.plugin = {};
// 加载插件
if (!main.replayChecking && main.mode === 'play') {
if (main.mode === 'play') {
main.forward();
core.resetSettings();
core.plugin.showMarkedEnemy.value = true;
}
if (main.pluginUseCompress) {
await main.loadScript(`project/plugin.m.js?v=${main.version}`);
await main.loadScript(`project/plugin.min.js?v=${main.version}`);
} else {
await main.loadScript(
`project/plugin/index.js?v=${main.version}`,

View File

@ -25,8 +25,10 @@ events.prototype.resetGame = function (hero, hard, floorId, maps, values) {
events.prototype.startGame = function (hard, seed, route, callback) {
hard = hard || '';
core.dom.gameGroup.style.display = 'block';
core.plugin.startOpened.value = false;
core.plugin.loaded.value = false;
if (!main.replayChecking) {
core.plugin.startOpened.value = false;
core.plugin.loaded.value = false;
}
if (main.mode != 'play') return;
core.plugin.skillTree.resetSkillLevel();
@ -73,7 +75,9 @@ events.prototype._startGame_start = function (hard, seed, route, callback) {
core.events._startGame_afterStart(callback);
});
if (route != null) core.startReplay(route);
if (route != null) {
core.startReplay(route);
}
};
events.prototype._startGame_setHard = function () {

View File

@ -3202,7 +3202,7 @@ maps.prototype.removeBlock = function (x, y, floorId) {
const block = blocks[i];
this.removeBlockByIndex(i, floorId);
this._removeBlockFromMap(floorId, block);
core.updateShadow(true);
if (!main.replayChecking) core.updateShadow(true);
return true;
}
return false;
@ -3365,7 +3365,7 @@ maps.prototype.setBlock = function (number, x, y, floorId, noredraw) {
}
}
}
core.updateShadow(true);
if (!main.replayChecking) core.updateShadow(true);
};
maps.prototype.animateSetBlock = function (

View File

@ -942,40 +942,19 @@ ui.prototype.clearUI = function () {
////// 左上角绘制一段提示 //////
ui.prototype.drawTip = function (text, id, frame) {
text = core.replaceText(text) || '';
var realText = this._getRealContent(text);
var one = {
text: text,
textX: 21,
width: 26 + core.calWidth('data', realText, '16px Arial'),
opacity: 0.1,
stage: 1,
frame: frame || 0,
time: 0
};
if (id != null) {
var info = core.getBlockInfo(id);
if (info == null || !info.image || info.bigImage) {
// 检查状态栏图标
if (core.statusBar.icons[id] instanceof Image) {
info = {
image: core.statusBar.icons[id],
posX: 0,
posY: 0,
height: 32
};
} else info = null;
}
if (info != null) {
one.image = info.image;
one.posX = info.posX;
one.posY = info.posY;
one.height = info.height;
one.textX += 24;
one.width += 24;
}
}
core.animateFrame.tip = one;
let t =
text +
' [' +
core.status.hero.loc.x +
',' +
core.status.hero.loc.y +
',' +
core.status.floorId +
'] ';
if (core.status.floorId === 'tower6')
t += core.searchBlockWithFilter(v => v.event.cls === 'enemys').length;
console.log(t);
};
ui.prototype._drawTip_drawOne = function (tip) {
@ -4229,5 +4208,5 @@ ui.prototype.deleteAllCanvas = function () {
this.deleteCanvas(function () {
return true;
});
if (main.mode === 'play' && !core.isReplaying()) core.initShadowCanvas();
if (main.mode === 'play' && !main.replayChecking) core.initShadowCanvas();
};

View File

@ -219,7 +219,7 @@ function main() {
}
// >>>> body end
main.prototype.loadScript = async function (src, module) {
main.prototype.loadScript = function (src, module) {
const script = document.createElement('script');
script.src = src;
if (module) script.type = 'module';
@ -243,6 +243,67 @@ main.prototype.init = async function (mode, callback) {
return;
}
if (main.replayChecking) {
main.loadSync(mode, callback);
} else {
main.loadAsync(mode, callback);
}
};
main.prototype.loadSync = function (mode, callback) {
main.mode = mode;
if (main.useCompress) {
main.loadMod('project', 'project', () => 0);
} else {
main.pureData.forEach(v => {
main.loadMod('project', v, () => 0);
});
}
const mainData = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.main;
Object.assign(main, mainData);
if (main.useCompress) {
main.loadMod('libs', 'libs', () => 0);
} else {
main.loadList.forEach(v => {
main.loadMod('libs', v, () => 0);
});
}
for (const name of main.loadList) {
if (name === 'core') continue;
core[name] = new window[name]();
}
main.loadFloors(() => 0);
const coreData = {};
[
'dom',
'statusBar',
'canvas',
'images',
'tilesets',
'materials',
'animates',
'bgms',
'sounds',
'floorIds',
'floors',
'floorPartitions'
].forEach(function (t) {
coreData[t] = main[t];
});
core.initSync(coreData, callback);
core.resize();
main.core = core;
core.completeAchievement = () => 0;
};
main.prototype.loadAsync = async function (mode, callback) {
for (var i = 0; i < main.dom.gameCanvas.length; i++) {
main.canvas[main.dom.gameCanvas[i].id] =
main.dom.gameCanvas[i].getContext('2d');

View File

@ -13,6 +13,16 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
core.status = core.clone(core.initStatus, function (name) {
return name != 'hero' && name != 'maps';
});
const bgmaps = {};
const handler = {
set(target, p, v) {
if (core.status.floorId === 'tower6') console.trace();
target[p] = v;
return true;
}
};
core.status.bgmaps = new Proxy(bgmaps, handler);
core.control._bindRoutePush();
core.status.played = true;
// 初始化人物,图标,统计信息
@ -52,6 +62,10 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
if (main.mode === 'play' && !main.replayChecking) {
core.splitArea();
core.resetFlagSettings();
} else {
flags.autoSkill ??= true;
flags.itemDetail ??= true;
flags.autoLocate ??= true;
}
},
win: function (reason, norank, noexit) {
@ -141,7 +155,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
// ---------- 重绘新地图这一步将会设置core.status.floorId ---------- //
core.drawMap(floorId);
core.updateShadow();
if (!main.replayChecking) core.updateShadow();
// 切换楼层BGM
if (core.status.maps[floorId].bgm) {
@ -200,7 +214,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
core.visitFloor(floorId);
}
}
if (!flags.debug) core.checkVisitedFloor();
if (!flags.debug && !main.replayChecking) core.checkVisitedFloor();
},
flyTo: function (toId, callback) {
// 楼层传送器的使用从当前楼层飞往toId
@ -1119,7 +1133,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
return;
}
const [x, y] = flags.mouseLoc;
const [x, y] = flags.mouseLoc ?? [];
const mx = Math.round(x + core.bigmap.offsetX / 32);
const my = Math.round(y + core.bigmap.offsetY / 32);
@ -1408,6 +1422,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
// 更新全地图显伤
core.updateDamage();
if (main.replayChecking) return;
// 已学习的技能
if (
core.plugin.skillTree.getSkillLevel(11) > 0 &&

View File

@ -80,7 +80,7 @@ core.registerReplayAction('buy', name => {
const [type, id, num] = name
.split(':')
.map(v => (/^\d+$/.test(v) ? parseInt(v) : v));
const shop = core.status.shops[id];
const shop = core.status.shops[openedShopId];
const item = shop.choices.find(v => v.id === id);
if (!item) return false;
flags.itemShop ??= {};
@ -98,6 +98,7 @@ core.registerReplayAction('buy', name => {
if (cost > core.status.hero.money) return false;
core.status.hero.money -= cost;
flags.itemShop[openedShopId][id] += type === 'buy' ? num : -num;
core.addItem(id, type === 'buy' ? num : -num);
core.status.route.push(name);
core.replay();
return true;

View File

@ -2,10 +2,15 @@
export {};
(function () {
if (main.replayChecking) return (core.plugin.gameUi = {});
if (main.replayChecking)
return (core.plugin.gameUi = {
openItemShop: () => 0,
showChapter: () => 0,
openSkill: () => 0
});
function openItemShop(itemShopId) {
if (!main.replayChecking) {
if (!core.isReplaying()) {
core.plugin.openedShopId = itemShopId;
core.plugin.shopOpened.value = true;
}

View File

@ -51,3 +51,4 @@ core.plugin.utils = {
has,
maxGameScale
};
core.has = has;

View File

@ -109,7 +109,7 @@ import * as rollup from 'rollup';
name: 'CorePlugin'
});
const compressed = babel.transformSync(code.output[0].code)?.code!;
await fs.writeFile('./dist/project/plugin.m.js', compressed, 'utf-8');
await fs.writeFile('./dist/project/plugin.min.js', compressed, 'utf-8');
await fse.remove('./dist/project/plugin/');
} catch (e) {