怪物指示物
This commit is contained in:
		
							parent
							
								
									d7b49eb037
								
							
						
					
					
						commit
						7edb48884c
					
				@ -118,7 +118,8 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
 | 
			
		||||
		"T362": 86,
 | 
			
		||||
		"T363": 87,
 | 
			
		||||
		"T364": 88,
 | 
			
		||||
		"T365": 89
 | 
			
		||||
		"T365": 89,
 | 
			
		||||
		"T397": 90
 | 
			
		||||
	},
 | 
			
		||||
	"animates": {
 | 
			
		||||
		"star": 0,
 | 
			
		||||
 | 
			
		||||
@ -295,6 +295,7 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
 | 
			
		||||
	"394": {"cls":"terrains","id":"T394"},
 | 
			
		||||
	"395": {"cls":"terrains","id":"T395"},
 | 
			
		||||
	"396": {"cls":"items","id":"I396"},
 | 
			
		||||
	"397": {"cls":"terrains","id":"T397"},
 | 
			
		||||
	"20034": {"cls":"tileset","id":"X20034","canPass":true},
 | 
			
		||||
	"20154": {"cls":"tileset","id":"X20154","canPass":true},
 | 
			
		||||
	"20216": {"cls":"tileset","id":"X20216","canPass":true},
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB  | 
@ -2736,7 +2736,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
 | 
			
		||||
		main.dom.boss7.style.height = obj.totalHeight + 3 + "px";
 | 
			
		||||
		main.dom.boss8.style.width = obj.totalWidth + 3 + "px";
 | 
			
		||||
		main.dom.boss8.style.height = obj.totalHeight + 3 + "px";
 | 
			
		||||
 | 
			
		||||
		main.dom.saveLoad.style.height = obj.totalHeight + 3 + "px";
 | 
			
		||||
		main.dom.boss.style.width = obj.totalWidth + 3 + "px";
 | 
			
		||||
		main.dom.boss.style.height = obj.totalHeight + 3 + "px";
 | 
			
		||||
 | 
			
		||||
@ -2907,6 +2907,9 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
 | 
			
		||||
			core.ui.cgText.update();
 | 
			
		||||
		if (main.dom.boss1 && main.dom.boss1.style.display === "block")
 | 
			
		||||
			core.ui.boss.update();
 | 
			
		||||
 | 
			
		||||
		if (main.dom.saveLoad && main.dom.saveLoad.style.display === "block")
 | 
			
		||||
			core.saveLoad.update();
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	class StatusBar {
 | 
			
		||||
@ -21131,88 +21134,87 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
    "开局选项悬停": function () {
 | 
			
		||||
    // 在此增加新插件
 | 
			
		||||
	// 在此增加新插件
 | 
			
		||||
	main.dom.playGame.addEventListener("mouseenter", () => {
 | 
			
		||||
		core.dom.playGame.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.playGame.addEventListener("mouseleave", () => {
 | 
			
		||||
		core.dom.playGame.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.playGame.addEventListener("touchmove", () => {
 | 
			
		||||
		core.dom.playGame.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.playGame.addEventListener("touchend", () => {
 | 
			
		||||
		core.dom.playGame.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.playGame.addEventListener("touchcancel", () => {
 | 
			
		||||
		core.dom.playGame.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
    main.dom.playGame.addEventListener("mouseenter", () => {
 | 
			
		||||
      core.dom.playGame.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.playGame.addEventListener("mouseleave", () => {
 | 
			
		||||
      core.dom.playGame.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.playGame.addEventListener("touchmove", () => {
 | 
			
		||||
      core.dom.playGame.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.playGame.addEventListener("touchend", () => {
 | 
			
		||||
      core.dom.playGame.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.playGame.addEventListener("touchcancel", () => {
 | 
			
		||||
      core.dom.playGame.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
	main.dom.loadGame.addEventListener("mouseenter", () => {
 | 
			
		||||
		core.dom.loadGame.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.loadGame.addEventListener("mouseleave", () => {
 | 
			
		||||
		core.dom.loadGame.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.loadGame.addEventListener("touchmove", () => {
 | 
			
		||||
		core.dom.loadGame.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.loadGame.addEventListener("touchend", () => {
 | 
			
		||||
		core.dom.loadGame.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.loadGame.addEventListener("touchcancel", () => {
 | 
			
		||||
		core.dom.loadGame.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
    main.dom.loadGame.addEventListener("mouseenter", () => {
 | 
			
		||||
      core.dom.loadGame.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.loadGame.addEventListener("mouseleave", () => {
 | 
			
		||||
      core.dom.loadGame.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.loadGame.addEventListener("touchmove", () => {
 | 
			
		||||
      core.dom.loadGame.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.loadGame.addEventListener("touchend", () => {
 | 
			
		||||
      core.dom.loadGame.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.loadGame.addEventListener("touchcancel", () => {
 | 
			
		||||
      core.dom.loadGame.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
	main.dom.CGMode.addEventListener("mouseenter", () => {
 | 
			
		||||
		core.dom.CGMode.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.CGMode.addEventListener("mouseleave", () => {
 | 
			
		||||
		core.dom.CGMode.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.CGMode.addEventListener("touchmove", () => {
 | 
			
		||||
		core.dom.CGMode.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.CGMode.addEventListener("touchend", () => {
 | 
			
		||||
		core.dom.CGMode.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.CGMode.addEventListener("touchcancel", () => {
 | 
			
		||||
		core.dom.CGMode.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
    main.dom.CGMode.addEventListener("mouseenter", () => {
 | 
			
		||||
      core.dom.CGMode.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.CGMode.addEventListener("mouseleave", () => {
 | 
			
		||||
      core.dom.CGMode.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.CGMode.addEventListener("touchmove", () => {
 | 
			
		||||
      core.dom.CGMode.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.CGMode.addEventListener("touchend", () => {
 | 
			
		||||
      core.dom.CGMode.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.CGMode.addEventListener("touchcancel", () => {
 | 
			
		||||
      core.dom.CGMode.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
	main.dom.musicMode.addEventListener("mouseenter", () => {
 | 
			
		||||
		core.dom.musicMode.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.musicMode.addEventListener("mouseleave", () => {
 | 
			
		||||
		core.dom.musicMode.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.musicMode.addEventListener("touchmove", () => {
 | 
			
		||||
		core.dom.musicMode.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.musicMode.addEventListener("touchend", () => {
 | 
			
		||||
		core.dom.musicMode.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.musicMode.addEventListener("touchcancel", () => {
 | 
			
		||||
		core.dom.musicMode.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
    main.dom.musicMode.addEventListener("mouseenter", () => {
 | 
			
		||||
      core.dom.musicMode.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.musicMode.addEventListener("mouseleave", () => {
 | 
			
		||||
      core.dom.musicMode.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.musicMode.addEventListener("touchmove", () => {
 | 
			
		||||
      core.dom.musicMode.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.musicMode.addEventListener("touchend", () => {
 | 
			
		||||
      core.dom.musicMode.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.musicMode.addEventListener("touchcancel", () => {
 | 
			
		||||
      core.dom.musicMode.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    main.dom.replayGame.addEventListener("mouseenter", () => {
 | 
			
		||||
      core.dom.replayGame.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.replayGame.addEventListener("mouseleave", () => {
 | 
			
		||||
      core.dom.replayGame.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.replayGame.addEventListener("touchmove", () => {
 | 
			
		||||
      core.dom.replayGame.style.backgroundColor = "#808080";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.replayGame.addEventListener("touchend", () => {
 | 
			
		||||
      core.dom.replayGame.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
    main.dom.replayGame.addEventListener("touchcancel", () => {
 | 
			
		||||
      core.dom.replayGame.style.backgroundColor = "transparent";
 | 
			
		||||
    });
 | 
			
		||||
  },
 | 
			
		||||
	main.dom.replayGame.addEventListener("mouseenter", () => {
 | 
			
		||||
		core.dom.replayGame.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.replayGame.addEventListener("mouseleave", () => {
 | 
			
		||||
		core.dom.replayGame.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.replayGame.addEventListener("touchmove", () => {
 | 
			
		||||
		core.dom.replayGame.style.backgroundColor = "#808080";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.replayGame.addEventListener("touchend", () => {
 | 
			
		||||
		core.dom.replayGame.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
	main.dom.replayGame.addEventListener("touchcancel", () => {
 | 
			
		||||
		core.dom.replayGame.style.backgroundColor = "transparent";
 | 
			
		||||
	});
 | 
			
		||||
},
 | 
			
		||||
    "天气叠加": function () {
 | 
			
		||||
    //使用方法:使用core.setWeather(天气,等级)来增加天气,使用core.setWeather()来清空天气
 | 
			
		||||
    // 天气叠加功能
 | 
			
		||||
@ -21899,34 +21901,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
 | 
			
		||||
					ctx.lineTo(enemynow - 5, 110);
 | 
			
		||||
					ctx.closePath();
 | 
			
		||||
					ctx.fill();
 | 
			
		||||
					core.drawIcon(ctx, 'T367', enemynow - 16, 74, 32, 32)
 | 
			
		||||
 | 
			
		||||
					if (enemyInfo.cls === "enemys") {
 | 
			
		||||
						core.drawImage(
 | 
			
		||||
							ctx,
 | 
			
		||||
							core.getBlockInfo(enemyInfo.id).image,
 | 
			
		||||
							32,
 | 
			
		||||
							core.getBlockInfo(enemyInfo.id).posY * 32,
 | 
			
		||||
							32,
 | 
			
		||||
							32,
 | 
			
		||||
							enemynow - 16,
 | 
			
		||||
							74,
 | 
			
		||||
							32,
 | 
			
		||||
							32
 | 
			
		||||
						);
 | 
			
		||||
					} else {
 | 
			
		||||
						core.drawImage(
 | 
			
		||||
							ctx,
 | 
			
		||||
							core.getBlockInfo(enemyInfo.id).image,
 | 
			
		||||
							32,
 | 
			
		||||
							core.getBlockInfo(enemyInfo.id).posY * 48,
 | 
			
		||||
							32,
 | 
			
		||||
							48,
 | 
			
		||||
							enemynow - 16,
 | 
			
		||||
							58,
 | 
			
		||||
							32,
 | 
			
		||||
							48
 | 
			
		||||
						);
 | 
			
		||||
					}
 | 
			
		||||
					core.drawLine(ctx, 100, 125, 315, 125, "#FFFFFF", 5);
 | 
			
		||||
					equipInfo.forEach(function (v) {
 | 
			
		||||
						if (!attack && !onAttack) v.now += v.speed;
 | 
			
		||||
@ -23681,5 +23657,488 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
 | 
			
		||||
 | 
			
		||||
		ctx.restore(); //恢复变换前的坐标,否则将连续转置
 | 
			
		||||
	}
 | 
			
		||||
},
 | 
			
		||||
    "存读档": function () {
 | 
			
		||||
	// 在此增加新插件
 | 
			
		||||
	const saveLoad = document.createElement("canvas"); //创建存读档画布
 | 
			
		||||
	saveLoad.style.position = "absolute";
 | 
			
		||||
	saveLoad.style.zIndex = 390;
 | 
			
		||||
	saveLoad.style.display = "none";
 | 
			
		||||
	saveLoad.id = "saveLoad";
 | 
			
		||||
	main.dom.gameGroup.insertAdjacentElement("afterend", saveLoad);
 | 
			
		||||
	saveLoad.style.top = "50%";
 | 
			
		||||
	saveLoad.style.left = "50%";
 | 
			
		||||
	saveLoad.style.transform = "translate(-50%,-50%)";
 | 
			
		||||
	const ctx = saveLoad.getContext("2d");
 | 
			
		||||
	main.dom.saveLoad = saveLoad
 | 
			
		||||
	//////存读档界面更新
 | 
			
		||||
	class SL {
 | 
			
		||||
		constructor() {
 | 
			
		||||
			this.index = -1;
 | 
			
		||||
			this.refresh = false
 | 
			
		||||
		}
 | 
			
		||||
		update() {}
 | 
			
		||||
		set() {}
 | 
			
		||||
	}
 | 
			
		||||
	core.saveLoad = new SL()
 | 
			
		||||
	////// 绘制存档/读档界面 //////
 | 
			
		||||
	ui.prototype._drawSLPanel = function (index, refresh) {
 | 
			
		||||
		core.control._loadFavoriteSaves();
 | 
			
		||||
		if (index == null) index = 1;
 | 
			
		||||
		if (index < 0) index = 0;
 | 
			
		||||
 | 
			
		||||
		var page = parseInt(index / 10),
 | 
			
		||||
			offset = index % 10;
 | 
			
		||||
		var max_page = main.savePages || 30;
 | 
			
		||||
		if (core.status.event.data && core.status.event.data.mode == 'fav')
 | 
			
		||||
			max_page = Math.ceil((core.saves.favorite || []).length / 5);
 | 
			
		||||
		if (page >= max_page) page = max_page - 1;
 | 
			
		||||
		if (offset > 5) offset = 5;
 | 
			
		||||
		if (core.status.event.data && core.status.event.data.mode == 'fav' && page == max_page - 1) {
 | 
			
		||||
			offset = Math.min(offset, (core.saves.favorite || []).length - 5 * page);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var last_page = -1;
 | 
			
		||||
		var mode = 'all';
 | 
			
		||||
		if (core.status.event.data) {
 | 
			
		||||
			last_page = core.status.event.data.page;
 | 
			
		||||
			mode = core.status.event.data.mode;
 | 
			
		||||
		}
 | 
			
		||||
		core.status.event.data = { 'page': page, 'offset': offset, 'mode': mode };
 | 
			
		||||
		core.status.event.ui = core.status.event.ui || [];
 | 
			
		||||
		if (refresh || page != last_page) {
 | 
			
		||||
			core.status.event.ui = [];
 | 
			
		||||
			this._drawSLPanel_loadSave(page, function () {
 | 
			
		||||
				core.ui._drawSLPanel_draw(page, max_page);
 | 
			
		||||
			});
 | 
			
		||||
		} else this._drawSLPanel_draw(page, max_page);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ui.prototype._drawSLPanel_draw = function (page, max_page) {
 | 
			
		||||
		// --- 绘制背景
 | 
			
		||||
		this._drawSLPanel_drawBackground();
 | 
			
		||||
		// --- 绘制文字
 | 
			
		||||
		core.ui.drawPagination(page + 1, max_page);
 | 
			
		||||
		core.setTextAlign('ui', 'center');
 | 
			
		||||
		var bottom = core._PY_ - 13;
 | 
			
		||||
		core.fillText('ui', '返回游戏', core._PX_ - 48, bottom, '#DDDDDD', this._buildFont(15, true));
 | 
			
		||||
 | 
			
		||||
		if (core.status.event.selection)
 | 
			
		||||
			core.setFillStyle('ui', '#FF6A6A');
 | 
			
		||||
		if (core.status.event.id == 'save')
 | 
			
		||||
			core.fillText('ui', '删除模式', 48, bottom);
 | 
			
		||||
		else {
 | 
			
		||||
			if (core.status.event.data.mode == 'all') {
 | 
			
		||||
				core.fillText('ui', '[E]显示收藏', 52, bottom);
 | 
			
		||||
			} else {
 | 
			
		||||
				core.fillText('ui', '[E]显示全部', 52, bottom);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		// --- 绘制记录
 | 
			
		||||
		this._drawSLPanel_drawRecords();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ui.prototype._drawSLPanel_drawBackground = function () {
 | 
			
		||||
		core.clearMap('ui');
 | 
			
		||||
		core.setAlpha('ui', 0.85);
 | 
			
		||||
		core.fillRect('ui', 0, 0, core._PX_, core._PY_, '#000000'); // 可改成背景图
 | 
			
		||||
		core.setAlpha('ui', 1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ui.prototype._drawSLPanel_loadSave = function (page, callback) {
 | 
			
		||||
		var ids = [0];
 | 
			
		||||
		for (var i = 1; i <= 5; ++i) {
 | 
			
		||||
			var id = 5 * page + i;
 | 
			
		||||
			if (core.status.event.data.mode == 'fav')
 | 
			
		||||
				id = core.saves.favorite[id - 1]; // 因为favorite第一个不是自动存档 所以要偏移1
 | 
			
		||||
			ids.push(id);
 | 
			
		||||
		}
 | 
			
		||||
		core.getSaves(ids, function (data) {
 | 
			
		||||
			for (var i = 1; i < ids.length; ++i)
 | 
			
		||||
				core.status.event.ui[i] = data[i];
 | 
			
		||||
			core.status.event.ui[0] = data[0] == null ? null : data[0][core.saves.autosave.now - 1];
 | 
			
		||||
			callback();
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 在以x为中心轴 y为顶坐标 的位置绘制一条宽为size的记录 cho表示是否被选中 选中会加粗 highlight表示高亮标题 ✐
 | 
			
		||||
	ui.prototype._drawSLPanel_drawRecord = function (title, data, x, y, size, cho, highLight) {
 | 
			
		||||
		var globalAttribute = core.status.globalAttribute || core.initStatus.globalAttribute;
 | 
			
		||||
		var strokeColor = globalAttribute.selectColor;
 | 
			
		||||
		if (core.status.event.selection) strokeColor = '#FF6A6A';
 | 
			
		||||
		if (!data || !data.floorId) highLight = false;
 | 
			
		||||
		if (data && data.__toReplay__) title = '[R]' + title;
 | 
			
		||||
		var w = size * core._PX_,
 | 
			
		||||
			h = size * core._PY_;
 | 
			
		||||
		core.fillText('ui', title, x, y, highLight ? globalAttribute.selectColor : '#FFFFFF', this._buildFont(17, true));
 | 
			
		||||
		core.strokeRect('ui', x - w / 2, y + 15, w, h, cho ? strokeColor : '#FFFFFF', cho ? 3 : 1);
 | 
			
		||||
		if (data && data.floorId) {
 | 
			
		||||
			core.setTextAlign('ui', "center");
 | 
			
		||||
			var map = core.maps.loadMap(data.maps, data.floorId);
 | 
			
		||||
			core.extractBlocksForUI(map, data.hero.flags);
 | 
			
		||||
			core.drawThumbnail(data.floorId, map.blocks, {
 | 
			
		||||
				heroLoc: data.hero.loc,
 | 
			
		||||
				heroIcon: data.hero.image,
 | 
			
		||||
				flags: data.hero.flags,
 | 
			
		||||
				ctx: 'ui',
 | 
			
		||||
				x: x - w / 2,
 | 
			
		||||
				y: y + 15,
 | 
			
		||||
				size: size,
 | 
			
		||||
				centerX: data.hero.loc.x,
 | 
			
		||||
				centerY: data.hero.loc.y,
 | 
			
		||||
				noHD: true
 | 
			
		||||
			});
 | 
			
		||||
			if (core.isPlaying() && core.getFlag("hard") != data.hero.flags.hard) {
 | 
			
		||||
				core.fillRect('ui', x - w / 2, y + 15, w, h, [0, 0, 0, 0.4]);
 | 
			
		||||
				core.fillText('ui', data.hard, x, parseInt(y + 22 + h / 2), data.hero.flags.__hardColor__ || 'white', this._buildFont(30, true));
 | 
			
		||||
			}
 | 
			
		||||
			// 绘制存档笔记
 | 
			
		||||
			if (data.hero.notes && data.hero.notes.length > 0) {
 | 
			
		||||
				core.setTextAlign('ui', 'left');
 | 
			
		||||
				if (data.hero.notes.length >= 2) {
 | 
			
		||||
					core.fillRect('ui', x - w / 2, y + 15, w, 28, [0, 0, 0, 0.3]);
 | 
			
		||||
					core.fillBoldText('ui', data.hero.notes.length - 1 + ". " + data.hero.notes[data.hero.notes.length - 2].substring(0, 10),
 | 
			
		||||
						x - w / 2 + 2, y + 15 + 12, '#FFFFFF', null, this._buildFont(10, false));
 | 
			
		||||
					core.fillBoldText('ui', data.hero.notes.length + ". " + data.hero.notes[data.hero.notes.length - 1].substring(0, 10),
 | 
			
		||||
						x - w / 2 + 2, y + 15 + 24);
 | 
			
		||||
				} else {
 | 
			
		||||
					core.fillRect('ui', x - w / 2, y + 15, w, 16, [0, 0, 0, 0.3]);
 | 
			
		||||
					core.fillBoldText('ui', data.hero.notes.length + ". " + data.hero.notes[data.hero.notes.length - 1].substring(0, 10),
 | 
			
		||||
						x - w / 2 + 2, y + 15 + 12, '#FFFFFF', null, this._buildFont(10, false));
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			core.setTextAlign('ui', "center");
 | 
			
		||||
			var v = core.formatBigNumber(data.hero.hp, true) + "/" + core.formatBigNumber(data.hero.atk, true) + "/" + core.formatBigNumber(data.hero.def, true);
 | 
			
		||||
			var v2 = "/" + core.formatBigNumber(data.hero.mdef, true);
 | 
			
		||||
			if (core.calWidth('ui', v + v2, this._buildFont(10, false)) <= w) v += v2;
 | 
			
		||||
			core.fillText('ui', v, x, y + 30 + h, globalAttribute.selectColor);
 | 
			
		||||
			core.fillText('ui', core.formatDate(new Date(data.time)), x, y + 43 + h, data.hero.flags.debug ? '#FF6A6A' : '#FFFFFF');
 | 
			
		||||
		} else {
 | 
			
		||||
			core.fillRect('ui', x - w / 2, y + 15, w, h, '#333333');
 | 
			
		||||
			core.fillText('ui', '空', x, parseInt(y + 22 + h / 2), '#FFFFFF', this._buildFont(30, true));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ui.prototype._drawSLPanel_drawRecords = function (n) {
 | 
			
		||||
		var page = core.status.event.data.page;
 | 
			
		||||
		var offset = core.status.event.data.offset;
 | 
			
		||||
		var u = Math.floor(core._PX_ / 6),
 | 
			
		||||
			size = 0.3;
 | 
			
		||||
		var name = core.status.event.id == 'save' ? "存档" : core.status.event.id == 'load' ? "读档" : "回放";
 | 
			
		||||
 | 
			
		||||
		for (var i = 0; i < (n || 6); i++) {
 | 
			
		||||
			var data = core.status.event.ui[i];
 | 
			
		||||
			var id = 5 * page + i;
 | 
			
		||||
			var highLight = (i > 0 && core.saves.favorite.indexOf(id) >= 0) || core.status.event.data.mode == 'fav';
 | 
			
		||||
			var title = (highLight ? '★ ' : '☆ ') + (core.saves.favoriteName[id] || (name + id));
 | 
			
		||||
			if (i != 0 && core.status.event.data.mode == 'fav') {
 | 
			
		||||
				if (!data) break;
 | 
			
		||||
				var real_id = core.saves.favorite[id - 1];
 | 
			
		||||
				title = (core.saves.favoriteName[real_id] || (name + real_id)) + ' ✐';
 | 
			
		||||
			}
 | 
			
		||||
			var charSize = 32; // 字体占用像素范围
 | 
			
		||||
			var topSpan = parseInt((core._PY_ - charSize - 2 * (charSize * 2 + size * core._PY_)) / 3); // Margin
 | 
			
		||||
			var yTop1 = topSpan + parseInt(charSize / 2) + 8; // 文字的中心
 | 
			
		||||
			var yTop2 = yTop1 + charSize * 2 + size * core._PY_ + topSpan;
 | 
			
		||||
			if (i < 3) {
 | 
			
		||||
				this._drawSLPanel_drawRecord(i == 0 ? "自动存档" : title, data, (2 * i + 1) * u, yTop1, size, i == offset, highLight);
 | 
			
		||||
			} else {
 | 
			
		||||
				this._drawSLPanel_drawRecord(title, data, (2 * i - 5) * u, yTop2, size, i == offset, highLight);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
	////// 点击保存按钮时的打开操作 //////
 | 
			
		||||
	events.prototype.save = function (fromUserAction) {
 | 
			
		||||
		if (core.isReplaying()) return;
 | 
			
		||||
		if (core.hasFlag("__forbidSave__")) {
 | 
			
		||||
			core.playSound("操作失败");
 | 
			
		||||
			core.drawTip("当前禁止存档");
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (
 | 
			
		||||
			core.status.event.id == "save" &&
 | 
			
		||||
			core.events.recoverEvents(core.status.event.interval)
 | 
			
		||||
		)
 | 
			
		||||
			return;
 | 
			
		||||
		if (!this._checkStatus("save", fromUserAction)) return;
 | 
			
		||||
		var saveIndex = core.saves.saveIndex;
 | 
			
		||||
		var page = parseInt((saveIndex - 1) / 5),
 | 
			
		||||
			offset = saveIndex - 5 * page;
 | 
			
		||||
		core.playSound("打开界面");
 | 
			
		||||
		core.ui._drawSLPanel(10 * page + offset);
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	////// 点击读取按钮时的打开操作 //////
 | 
			
		||||
	events.prototype.load = function (fromUserAction) {
 | 
			
		||||
		if (core.isReplaying()) return;
 | 
			
		||||
		var saveIndex = core.saves.saveIndex;
 | 
			
		||||
		var page = parseInt((saveIndex - 1) / 5),
 | 
			
		||||
			offset = saveIndex - 5 * page;
 | 
			
		||||
		// 游戏开始前读档
 | 
			
		||||
		if (!core.isPlaying()) {
 | 
			
		||||
			core.dom.startPanel.style.display = "none";
 | 
			
		||||
			core.clearStatus();
 | 
			
		||||
			core.clearMap("all");
 | 
			
		||||
			core.status.event = { id: "load", data: null };
 | 
			
		||||
			core.status.lockControl = true;
 | 
			
		||||
			core.playSound("打开界面");
 | 
			
		||||
			core.ui._drawSLPanel(10 * page + offset);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (
 | 
			
		||||
			core.status.event.id == "load" &&
 | 
			
		||||
			core.events.recoverEvents(core.status.event.interval)
 | 
			
		||||
		)
 | 
			
		||||
			return;
 | 
			
		||||
		if (!this._checkStatus("load", fromUserAction)) return;
 | 
			
		||||
		core.playSound("打开界面");
 | 
			
		||||
		core.ui._drawSLPanel(10 * page + offset);
 | 
			
		||||
	};
 | 
			
		||||
	////// 回放时存档 //////
 | 
			
		||||
	control.prototype._replay_SL = function () {
 | 
			
		||||
		if (!core.isPlaying() || !core.isReplaying()) return;
 | 
			
		||||
		if (!core.status.replay.pausing) {
 | 
			
		||||
			core.playSound("操作失败");
 | 
			
		||||
			return core.drawTip("请先暂停录像");
 | 
			
		||||
		}
 | 
			
		||||
		if (core.isMoving() || core.status.replay.animate || core.status.event.id) {
 | 
			
		||||
			core.playSound("操作失败");
 | 
			
		||||
			return core.drawTip("请等待当前事件的处理结束");
 | 
			
		||||
		}
 | 
			
		||||
		if (core.hasFlag("__forbidSave__")) {
 | 
			
		||||
			core.playSound("操作失败");
 | 
			
		||||
			return core.drawTip("当前禁止存档");
 | 
			
		||||
		}
 | 
			
		||||
		this._replay_hideProgress();
 | 
			
		||||
 | 
			
		||||
		core.lockControl();
 | 
			
		||||
		core.status.event.id = "save";
 | 
			
		||||
		var saveIndex = core.saves.saveIndex;
 | 
			
		||||
		var page = parseInt((saveIndex - 1) / 5),
 | 
			
		||||
			offset = saveIndex - 5 * page;
 | 
			
		||||
 | 
			
		||||
		core.ui._drawSLPanel(10 * page + offset);
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	////// 存读档界面时的点击操作 //////
 | 
			
		||||
	actions.prototype._clickSL = function (x, y) {
 | 
			
		||||
		var page = core.status.event.data.page,
 | 
			
		||||
			offset = core.status.event.data.offset;
 | 
			
		||||
		var index = page * 10 + offset;
 | 
			
		||||
 | 
			
		||||
		// 上一页
 | 
			
		||||
		if ((x == this._HX_ - 2 || x == this._HX_ - 3) && y === core._HEIGHT_ - 1) {
 | 
			
		||||
			core.playSound('光标移动');
 | 
			
		||||
			core.ui._drawSLPanel(10 * (page - 1) + offset);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		// 下一页
 | 
			
		||||
		if ((x == this._HX_ + 2 || x == this._HX_ + 3) && y === core._HEIGHT_ - 1) {
 | 
			
		||||
			core.playSound('光标移动');
 | 
			
		||||
			core.ui._drawSLPanel(10 * (page + 1) + offset);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		// 返回
 | 
			
		||||
		if (x >= this.LAST - 2 && y === core._HEIGHT_ - 1) {
 | 
			
		||||
			core.playSound('取消');
 | 
			
		||||
			if (core.events.recoverEvents(core.status.event.interval))
 | 
			
		||||
				return;
 | 
			
		||||
			core.ui.closePanel();
 | 
			
		||||
			delete core.status.tempRoute;
 | 
			
		||||
			if (!core.isPlaying())
 | 
			
		||||
				core.showStartAnimate(true);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		// 删除
 | 
			
		||||
		if (x >= 0 && x <= 2 && y === core._HEIGHT_ - 1) {
 | 
			
		||||
			if (core.status.event.id == 'save') {
 | 
			
		||||
				core.status.event.selection = !core.status.event.selection;
 | 
			
		||||
				core.ui._drawSLPanel(index);
 | 
			
		||||
			} else { // 显示收藏
 | 
			
		||||
				core.status.event.data.mode = core.status.event.data.mode == 'all' ? 'fav' : 'all';
 | 
			
		||||
				if (core.status.event.data.mode == 'fav')
 | 
			
		||||
					core.ui._drawSLPanel(1, true);
 | 
			
		||||
				else {
 | 
			
		||||
					page = parseInt((core.saves.saveIndex - 1) / 5);
 | 
			
		||||
					offset = core.saves.saveIndex - 5 * page;
 | 
			
		||||
					core.ui._drawSLPanel(10 * page + offset, true);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		// 点存档名
 | 
			
		||||
		var xLeft = parseInt(core._WIDTH_ / 3),
 | 
			
		||||
			xRight = parseInt(core._WIDTH_ * 2 / 3);
 | 
			
		||||
		var topY1 = 0,
 | 
			
		||||
			topY2 = this._HY_;
 | 
			
		||||
		if (y >= topY1 && y <= topY1 + 1) {
 | 
			
		||||
			if (x >= xLeft && x < xRight) return this._clickSL_favorite(page, 1);
 | 
			
		||||
			if (x >= xRight) return this._clickSL_favorite(page, 2);
 | 
			
		||||
		}
 | 
			
		||||
		if (y >= topY2 && y <= topY2 + 1) {
 | 
			
		||||
			if (x < xLeft) return this._clickSL_favorite(page, 3);
 | 
			
		||||
			if (x >= xLeft && x < xRight) return this._clickSL_favorite(page, 4);
 | 
			
		||||
			if (x >= xRight) return this._clickSL_favorite(page, 5);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var id = null;
 | 
			
		||||
		if (y >= topY1 + 2 && y < this._HY_ - 1) {
 | 
			
		||||
			if (x < xLeft) id = "autoSave";
 | 
			
		||||
			if (x >= xLeft && x < xRight) id = 5 * page + 1;
 | 
			
		||||
			if (x >= xRight) id = 5 * page + 2;
 | 
			
		||||
		}
 | 
			
		||||
		if (y >= topY2 + 2 && y < core._HEIGHT_ - 1) {
 | 
			
		||||
			if (x < xLeft) id = 5 * page + 3;
 | 
			
		||||
			if (x >= xLeft && x < xRight) id = 5 * page + 4;
 | 
			
		||||
			if (x >= xRight) id = 5 * page + 5;
 | 
			
		||||
		}
 | 
			
		||||
		if (id != null) {
 | 
			
		||||
			if (core.status.event.selection) {
 | 
			
		||||
				if (id == 'autoSave') {
 | 
			
		||||
					core.playSound('操作失败');
 | 
			
		||||
					core.drawTip("无法删除自动存档!");
 | 
			
		||||
				} else {
 | 
			
		||||
					core.removeSave(id, function () {
 | 
			
		||||
						core.ui._drawSLPanel(index, true);
 | 
			
		||||
					});
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				if (core.status.event.data.mode == 'fav' && id != 'autoSave')
 | 
			
		||||
					id = core.saves.favorite[id - 1];
 | 
			
		||||
				core.doSL(id, core.status.event.id);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	actions.prototype._clickSL_favorite = function (page, offset) {
 | 
			
		||||
		if (offset == 0) return;
 | 
			
		||||
		var index = 5 * page + offset;
 | 
			
		||||
		if (core.status.event.data.mode == 'fav') { // 收藏模式下点击的下标直接对应favorite
 | 
			
		||||
			index = core.saves.favorite[index - 1];
 | 
			
		||||
			core.myprompt("请输入想要显示的存档名(长度不超过5字符)", null, function (value) {
 | 
			
		||||
				if (value && value.length <= 5) {
 | 
			
		||||
					core.saves.favoriteName[index] = value;
 | 
			
		||||
					core.control._updateFavoriteSaves();
 | 
			
		||||
					core.ui._drawSLPanel(10 * page + offset);
 | 
			
		||||
				} else if (value) {
 | 
			
		||||
					alert("无效的输入!");
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		} else {
 | 
			
		||||
			var v = core.saves.favorite.indexOf(index);
 | 
			
		||||
			core.playSound('确定');
 | 
			
		||||
			if (v >= 0) { // 已经处于收藏状态:取消收藏
 | 
			
		||||
				core.saves.favorite.splice(v, 1);
 | 
			
		||||
				delete core.saves.favoriteName[index];
 | 
			
		||||
			} else if (core.hasSave(index)) { // 存在存档则进行收藏
 | 
			
		||||
				core.saves.favorite.push(index);
 | 
			
		||||
				core.saves.favorite = core.saves.favorite.sort(function (a, b) { return a - b; }); // 保证有序
 | 
			
		||||
				core.drawTip("收藏成功!");
 | 
			
		||||
			}
 | 
			
		||||
			core.control._updateFavoriteSaves();
 | 
			
		||||
			core.ui._drawSLPanel(10 * page + offset);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	////// 存读档界面时,按下某个键的操作 //////
 | 
			
		||||
	actions.prototype._keyDownSL = function (keycode) {
 | 
			
		||||
 | 
			
		||||
		var page = core.status.event.data.page,
 | 
			
		||||
			offset = core.status.event.data.offset;
 | 
			
		||||
		var index = page * 10 + offset;
 | 
			
		||||
 | 
			
		||||
		if (keycode == 37) { // left
 | 
			
		||||
			core.playSound('光标移动');
 | 
			
		||||
			if (offset == 0) {
 | 
			
		||||
				core.ui._drawSLPanel(10 * (page - 1) + 5);
 | 
			
		||||
			} else {
 | 
			
		||||
				core.ui._drawSLPanel(index - 1);
 | 
			
		||||
			}
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode == 38) { // up
 | 
			
		||||
			core.playSound('光标移动');
 | 
			
		||||
			if (offset < 3) {
 | 
			
		||||
				core.ui._drawSLPanel(10 * (page - 1) + offset + 3);
 | 
			
		||||
			} else {
 | 
			
		||||
				core.ui._drawSLPanel(index - 3);
 | 
			
		||||
			}
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode == 39) { // right
 | 
			
		||||
			core.playSound('光标移动');
 | 
			
		||||
			if (offset == 5) {
 | 
			
		||||
				core.ui._drawSLPanel(10 * (page + 1) + 1);
 | 
			
		||||
			} else {
 | 
			
		||||
				core.ui._drawSLPanel(index + 1);
 | 
			
		||||
			}
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode == 40) { // down
 | 
			
		||||
			core.playSound('光标移动');
 | 
			
		||||
			if (offset >= 3) {
 | 
			
		||||
				core.ui._drawSLPanel(10 * (page + 1) + offset - 3);
 | 
			
		||||
			} else {
 | 
			
		||||
				core.ui._drawSLPanel(index + 3);
 | 
			
		||||
			}
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode == 33) { // PAGEUP
 | 
			
		||||
			core.playSound('光标移动');
 | 
			
		||||
			core.ui._drawSLPanel(10 * (page - 1) + offset);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode == 34) { // PAGEDOWN
 | 
			
		||||
			core.playSound('光标移动');
 | 
			
		||||
			core.ui._drawSLPanel(10 * (page + 1) + offset);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	////// 存读档界面时,放开某个键的操作 //////
 | 
			
		||||
	actions.prototype._keyUpSL = function (keycode) {
 | 
			
		||||
		var page = core.status.event.data.page,
 | 
			
		||||
			offset = core.status.event.data.offset;
 | 
			
		||||
		var index = page * 10 + offset;
 | 
			
		||||
 | 
			
		||||
		if (keycode == 27 || keycode == 88 || (core.status.event.id == 'save' && keycode == 83) || (core.status.event.id == 'load' && keycode == 68)) {
 | 
			
		||||
			this._clickSL(core._WIDTH_ - 1, core._HEIGHT_ - 1);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode >= 48 && keycode <= 57) {
 | 
			
		||||
			if (keycode == 48) keycode = 58;
 | 
			
		||||
			core.ui._drawSLPanel((keycode - 49) * 1000 + 1);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode == 13 || keycode == 32 || keycode == 67) {
 | 
			
		||||
			if (offset == 0)
 | 
			
		||||
				core.doSL("autoSave", core.status.event.id);
 | 
			
		||||
			else {
 | 
			
		||||
				var id = 5 * page + offset;
 | 
			
		||||
				if (core.status.event.data.mode == 'fav') id = core.saves.favorite[id - 1];
 | 
			
		||||
				core.doSL(id, core.status.event.id);
 | 
			
		||||
			}
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode == 69 && core.status.event.id != 'save') { // E 收藏切换
 | 
			
		||||
			this._clickSL(0, core._HEIGHT_ - 1);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode == 46) {
 | 
			
		||||
			if (offset == 0) {
 | 
			
		||||
				core.playSound('操作失败');
 | 
			
		||||
				core.drawTip("无法删除自动存档!");
 | 
			
		||||
			} else {
 | 
			
		||||
				var id = 5 * page + offset;
 | 
			
		||||
				if (core.status.event.data.mode == 'fav') id = core.saves.favorite[id - 1];
 | 
			
		||||
				core.removeSave(id, function () {
 | 
			
		||||
					core.ui._drawSLPanel(index, true);
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if (keycode == 70 && core.status.event.data.mode == 'all') { // F
 | 
			
		||||
			this._clickSL_favorite(page, offset);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user