From e840eab4a2ce6de0caa953aef95716306196bc8b Mon Sep 17 00:00:00 2001 From: dazedanon Date: Fri, 7 Nov 2025 17:14:51 -0600 Subject: [PATCH] Fast Travel --- js/plugins/CBR_travel.js | 1150 +++++++++++++++++++------------------- 1 file changed, 575 insertions(+), 575 deletions(-) diff --git a/js/plugins/CBR_travel.js b/js/plugins/CBR_travel.js index 10415d2..8655e65 100644 --- a/js/plugins/CBR_travel.js +++ b/js/plugins/CBR_travel.js @@ -1,575 +1,575 @@ -/* eslint-disable no-undef */ -/*:ja - * @plugindesc ファストトラベルプラグイン - * @author COBRA - * - * @help - * スイッチで指定したファストトラベルを解放 - */ - -function Scene_Travel() { - this.initialize(...arguments); -} - -(function () { - //メニューに追加 - - Scene_Menu.prototype.commandTravel = function () { - SceneManager.push(Scene_Travel); - }; - - Scene_Travel.prototype = Object.create(Scene_MenuBase.prototype); - Scene_Travel.prototype.constructor = Scene_Travel; - - Scene_Travel.prototype.initialize = function () { - SDN_SetFastTravel(); - - Scene_MenuBase.prototype.initialize.call(this); - }; - - Scene_Travel.prototype.create = function () { - Scene_MenuBase.prototype.create.call(this); - DataManager.loadAllSavefileImages(); - this.createHelpWindow(); - this.createListWindow(); - this._helpWindow.setText(""); - }; - - Scene_Travel.prototype.createBackground = function () { - this._backgroundSprite = new Sprite(); - this._backgroundSprite.bitmap = ImageManager.loadSystem("menu_travel_back"); - this.addChild(this._backgroundSprite); - - this._backgroundTextSprite = new Sprite(new Bitmap(Graphics.width, Graphics.height)); - var b = this._backgroundTextSprite.bitmap; - b.fontFace = "serif"; - b.fontSize = 32; - b.textColor = "#000000"; - b.drawTextM("Fast Travel", 22, 20, 200, 22, "center"); - this.addChild(this._backgroundTextSprite); - }; - - Scene_Travel.prototype.createHelpWindow = function () { - const rect = this.helpWindowRect(); - this._helpWindow = new Window_TravelHelp(rect); - this.addWindow(this._helpWindow); - }; - Scene_Travel.prototype.helpWindowRect = function () { - const wx = 762; - const wy = 80; - const ww = Graphics.boxWidth - wx; - const wh = 630; - return new Rectangle(wx, wy, ww, wh); - }; - - Scene_Travel.prototype.createListWindow = function () { - const rect = this.listWindowRect(); - this._listWindow = new Window_TravelList(rect); - this._listWindow.setHandler("ok", this.onCategoryOk.bind(this)); - this._listWindow.setHandler("cancel", this.popScene.bind(this)); - //this._listWindow.setMode(this.mode(), this.needsAutosave()); - this._listWindow.setHelpWindow(this._helpWindow); - //this._listWindow.selectSavefile(this.firstSavefileId()); - this._listWindow.refresh(); - this.addWindow(this._listWindow); - }; - - Scene_Travel.prototype.listWindowRect = function () { - const wx = 120; - const wy = 80; - const ww = Graphics.boxWidth - this._helpWindow.width - wx; - const wh = 596; - return new Rectangle(wx, wy, ww, wh); - }; - - Scene_Travel.prototype.helpWindowText = function () { - return ""; - }; - - Scene_Travel.prototype.helpWindowText = function () { - return TextManager.saveMessage; - }; - //コモンイベントを実行 - Scene_Travel.prototype.onCategoryOk = function () { - this._listWindow.go_travel(); - }; - - // ######################################################## - // ################### 一覧ウィンドウ ###################### - // ######################################################## - function Window_TravelList() { - this.initialize(...arguments); - } - Window_TravelList.prototype = Object.create(Window_Selectable.prototype); - Window_TravelList.prototype.constructor = Window_TravelList; - - Window_TravelList.prototype.go_travel = function () { - var data = this.CBR_travel_list[this.index()]; - - $gameVariables.setValue(121, data.map_id); - $gameVariables.setValue(122, data.x); - $gameVariables.setValue(123, data.y); - $gameVariables.setValue(130, data.d); - - $gameTemp.reserveCommonEvent(1104); - - SceneManager.goto(Scene_Map); - /* -$gamePlayer.reserveTransfer( -97, -16, -8, -8, -0 -); - */ - }; - - Window_TravelList.prototype.initialize = function (rect) { - Window_Selectable.prototype.initialize.call(this, rect); - //最初に0番目って指定、commandではデフォでやってるけど - this.select(0); - this.activate(); - - this.CBR_travel_data = [ - { - switch: 371, - name: "アイリスアカデミー", - file: "travel01.png", - map_id: 10, - x: 24, - y: 41, - d: 8 - }, - { - switch: 372, - name: "アイリスアカデミー", - file: "travel02.png", - map_id: 34, - x: 24, - y: 41, - d: 8 - }, - { - switch: 373, - name: "奥多田山", - file: "travel03.png", - map_id: 64, - x: 14, - y: 13, - d: 8 - }, - { - switch: 374, - name: "神宿", - file: "travel04.png", - map_id: 72, - x: 34, - y: 12, - d: 2 - }, - { - switch: 375, - name: "神宿", - file: "travel05.png", - map_id: 76, - x: 34, - y: 12, - d: 2 - }, - { - switch: 376, - name: "千々武洞窟", - file: "travel06.png", - map_id: 86, - x: 16, - y: 12, - d: 8 - }, - { - switch: 377, - name: "尾鹿の森", - file: "travel07.png", - map_id: 92, - x: 9, - y: 46, - d: 8 - }, - { - switch: 378, - name: "津久場岳", - file: "travel08.png", - map_id: 97, - x: 22, - y: 15, - d: 8 - }, - { - switch: 379, - name: "アイリス本部", - file: "travel09.png", - map_id: 104, - x: 19, - y: 27, - d: 8 - }, - { - switch: 380, - name: "アイリスダンジョン", - file: "travel10.png", - map_id: 115, - x: 12, - y: 4, - d: 2 - }, - { - switch: 381, - name: "一ノ谷釣り公園", - file: "travel11.png", - map_id: 120, - x: 17, - y: 11, - d: 2 - }, - { - switch: 382, - name: "赤城峠・登山口", - file: "travel12.png", - map_id: 134, - x: 12, - y: 11, - d: 8 - }, - { - switch: 383, - name: "明郷埠頭", - file: "travel13.png", - map_id: 140, - x: 49, - y: 36, - d: 8 - }, - { - switch: 384, - name: "渋野", - file: "travel14.png", - map_id: 143, - x: 20, - y: 33, - d: 8 - }, - { - switch: 385, - name: "渋野", - file: "travel15.png", - map_id: 144, - x: 20, - y: 33, - d: 8 - }, - { - switch: 386, - name: "青井山墓地", - file: "travel16.png", - map_id: 150, - x: 14, - y: 18, - d: 8 - }, - { - switch: 387, - name: "白川研究所跡", - file: "travel17.png", - map_id: 154, - x: 11, - y: 12, - d: 8 - }, - { - switch: 388, - name: "ネクサス・フューチャーのアジト", - file: "travel18.png", - map_id: 169, - x: 32, - y: 6, - d: 2 - }, - { - switch: 389, - name: "エロドールダンジョン", - file: "travel19.png", - map_id: 173, - x: 12, - y: 13, - d: 8 - }, - { - switch: 390, - name: "羽山高原", - file: "travel20.png", - map_id: 180, - x: 21, - y: 27, - d: 8 - }, - { - switch: 391, - name: "専代ダンジョン", - file: "travel21.png", - map_id: 185, - x: 12, - y: 12, - d: 8 - }, - { - switch: 392, - name: "魔法犯罪刑務所", - file: "travel22.png", - map_id: 190, - x: 12, - y: 14, - d: 8 - }, - { - switch: 393, - name: "八場島", - file: "travel23.png", - map_id: 196, - x: 19, - y: 20, - d: 8 - }, - { - switch: 394, - name: "都知木ダンジョン", - file: "travel24.png", - map_id: 204, - x: 20, - y: 26, - d: 8 - }, - { - switch: 395, - name: "東都古代遺跡", - file: "travel25.png", - map_id: 212, - x: 12, - y: 12, - d: 8 - }, - { - switch: 396, - name: "ダリアのアジト", - file: "travel26.png", - map_id: 225, - x: 25, - y: 25, - d: 8 - }, - { - switch: 397, - name: "不二の樹海", - file: "travel27.png", - map_id: 232, - x: 30, - y: 46, - d: 8 - }, - { - switch: 398, - name: "鳥影岳", - file: "travel28.png", - map_id: 242, - x: 8, - y: 26, - d: 8 - }, - { - switch: 399, - name: "聖園教会への道", - file: "travel29.png", - map_id: 247, - x: 6, - y: 37, - d: 8 - }, - { - switch: 403, - name: "地下格闘技場", - file: "travel30.png", - map_id: 253, - x: 14, - y: 16, - d: 8 - }, - { - switch: 404, - name: "アイリス本部への道", - file: "travel31.png", - map_id: 255, - x: 29, - y: 39, - d: 8 - } - ]; - - this.CBR_travel_list = []; - for (data of this.CBR_travel_data) { - if ($gameSwitches.value(data.switch)) { - ImageManager.loadSystem(data.file.slice(0, -4)); - this.CBR_travel_list.push(data); - } - } - }; - - Window_TravelList.prototype.maxItems = function () { - return this.CBR_travel_list.length; - }; - - Window_TravelList.prototype.numVisibleRows = function () { - return 15; - }; - - //右のウィンドウにデータを渡す - Window_TravelList.prototype.callUpdateHelp = function () { - if (this.active && this._helpWindow) { - this.updateHelp(); - } - }; - Window_TravelList.prototype.updateHelp = function () { - this._helpWindow.setItem(this.CBR_travel_list[this.index()]); - }; - - Window_TravelList.prototype.drawItem = function (index) { - const info = this.CBR_travel_list[index]; - const rect = this.itemRectWithPadding(index); - this.resetTextColor(); - //this.changePaintOpacity(this.isEnabled(savefileId)); - //this.drawTitle(savefileId, rect.x, rect.y + 4); - if (info) { - this.drawContents(info, rect); - } - }; - - Window_TravelList.prototype.drawContents = function (info, rect) { - // const bottom = rect.y + rect.height; - this.contents.fontFace = "serif"; - // this.contents.fontSize = 20; - //b.textColor = "#000000"; - this.changeTextColor("#000000"); - this.drawTextM(info.name, 104, rect.y + 2, 400, "left"); - - // const lineHeight = this.lineHeight(); - // const y2 = bottom - lineHeight - 4; - // if (y2 >= lineHeight) { - // this.drawPlaytime(info, rect.x, y2, rect.width); - // } - }; - - // ################# カーソルの変更 ################## - Window_TravelList.prototype.loadWindowskin = function () { - this.windowskin = ImageManager.loadSystem("Window"); - this.menu_cursor_skin = ImageManager.loadSystem("menu_item_selected"); - this.menu_item_skin = ImageManager.loadSystem("menu_item_selected_2"); - - if (!this.menu_item_skin.isReady()) { - this.menu_item_skin.addLoadListener(() => { - this.refresh(); // 画像がロードされたら再描画 - }); - return; - } - }; - - //56×200にする - Window_TravelList.prototype._refreshCursor = function () { - const drect = this._cursorRect.clone(); - const srect = { x: 0, y: 40, width: 588, height: 40 }; - const m = 0; - for (const child of this._cursorSprite.children) { - child.bitmap = this.menu_item_skin; - } - this._setRectPartsGeometry(this._cursorSprite, srect, drect, m); - }; - - //未選択コマンドの背景を画像に - Window_TravelList.prototype.drawItemBackground = function (index) { - const rect = this.itemRect(index); - if (this.menu_item_skin) { - const bitmap = this.menu_item_skin; - const dx = rect.x; - const dy = rect.y; - const dw = rect.width; - const dh = rect.height; - this.contentsBack.blt(bitmap, 0, 0, 588, 40, dx, dy, dw, dh); - } - }; - - Window_TravelList.prototype._refreshAllParts = function () { - //this._refreshBack(); - //this._refreshFrame(); - this._refreshCursor(); - this._refreshArrows(); - this._refreshPauseSign(); - }; - - // ########################################################### - // ##################### 移動先ウィンドウ ##################### - // ########################################################### - function Window_TravelHelp() { - this.initialize(...arguments); - } - Window_TravelHelp.prototype = Object.create(Window_Help.prototype); - Window_TravelHelp.prototype.constructor = Window_TravelHelp; - - Window_TravelHelp.prototype.setItem = function (item) { - if (item) { - //this.setText(item ? item.name : ""); - this._CBR_travel_data = item; - this.refresh(); - } - }; - - Window_TravelHelp.prototype.refresh = function () { - const rect = this.baseTextRect(); - this.contents.clear(); - - var data = this._CBR_travel_data; - if (data) { - this.contents.fontFace = "serif"; - this.contents.fontSize = 22; - - this.changeTextColor("#000000"); - this.drawTextM("Travel", 8, 32, rect.width, "center"); - - this.contents.fontSize = 28; - this.changeTextColor("#000000"); - this.drawTextM(data.name, 8, 97, rect.width, "center"); - - const bitmap = ImageManager.loadSystem(data.file.slice(0, -4)); - this.contents.blt(bitmap, 0, 0, 426, 240, 37, 151); - - if (!bitmap.isReady()) { - bitmap.addLoadListener(() => { - this.refresh(); // 画像がロードされたら再描画 - }); - return; - } - - this.contents.fontSize = 20; - this.drawTextM("Current Location", 46, 398, 100, "left"); - this.drawTextM("Destination", 46, 429, 100, "left"); - - this.changeTextColor("#FFFFFF"); - this.drawTextS($dataMapInfos[$gameMap.mapId()].name, 148, 398, 200, "left"); - this.drawTextS(data.name, 148, 429, 200, "left"); - } - }; - - Window_TravelHelp.prototype._refreshAllParts = function () { - //this._refreshBack(); - //this._refreshFrame(); - this._refreshCursor(); - this._refreshArrows(); - this._refreshPauseSign(); - }; -})(); +/* eslint-disable no-undef */ +/*:ja + * @plugindesc ファストトラベルプラグイン + * @author COBRA + * + * @help + * スイッチで指定したファストトラベルを解放 + */ + +function Scene_Travel() { + this.initialize(...arguments); +} + +(function () { + //メニューに追加 + + Scene_Menu.prototype.commandTravel = function () { + SceneManager.push(Scene_Travel); + }; + + Scene_Travel.prototype = Object.create(Scene_MenuBase.prototype); + Scene_Travel.prototype.constructor = Scene_Travel; + + Scene_Travel.prototype.initialize = function () { + SDN_SetFastTravel(); + + Scene_MenuBase.prototype.initialize.call(this); + }; + + Scene_Travel.prototype.create = function () { + Scene_MenuBase.prototype.create.call(this); + DataManager.loadAllSavefileImages(); + this.createHelpWindow(); + this.createListWindow(); + this._helpWindow.setText(""); + }; + + Scene_Travel.prototype.createBackground = function () { + this._backgroundSprite = new Sprite(); + this._backgroundSprite.bitmap = ImageManager.loadSystem("menu_travel_back"); + this.addChild(this._backgroundSprite); + + this._backgroundTextSprite = new Sprite(new Bitmap(Graphics.width, Graphics.height)); + var b = this._backgroundTextSprite.bitmap; + b.fontFace = "serif"; + b.fontSize = 32; + b.textColor = "#000000"; + b.drawTextM("Fast Travel", 22, 20, 200, 22, "center"); + this.addChild(this._backgroundTextSprite); + }; + + Scene_Travel.prototype.createHelpWindow = function () { + const rect = this.helpWindowRect(); + this._helpWindow = new Window_TravelHelp(rect); + this.addWindow(this._helpWindow); + }; + Scene_Travel.prototype.helpWindowRect = function () { + const wx = 762; + const wy = 80; + const ww = Graphics.boxWidth - wx; + const wh = 630; + return new Rectangle(wx, wy, ww, wh); + }; + + Scene_Travel.prototype.createListWindow = function () { + const rect = this.listWindowRect(); + this._listWindow = new Window_TravelList(rect); + this._listWindow.setHandler("ok", this.onCategoryOk.bind(this)); + this._listWindow.setHandler("cancel", this.popScene.bind(this)); + //this._listWindow.setMode(this.mode(), this.needsAutosave()); + this._listWindow.setHelpWindow(this._helpWindow); + //this._listWindow.selectSavefile(this.firstSavefileId()); + this._listWindow.refresh(); + this.addWindow(this._listWindow); + }; + + Scene_Travel.prototype.listWindowRect = function () { + const wx = 120; + const wy = 80; + const ww = Graphics.boxWidth - this._helpWindow.width - wx; + const wh = 596; + return new Rectangle(wx, wy, ww, wh); + }; + + Scene_Travel.prototype.helpWindowText = function () { + return ""; + }; + + Scene_Travel.prototype.helpWindowText = function () { + return TextManager.saveMessage; + }; + //コモンイベントを実行 + Scene_Travel.prototype.onCategoryOk = function () { + this._listWindow.go_travel(); + }; + + // ######################################################## + // ################### 一覧ウィンドウ ###################### + // ######################################################## + function Window_TravelList() { + this.initialize(...arguments); + } + Window_TravelList.prototype = Object.create(Window_Selectable.prototype); + Window_TravelList.prototype.constructor = Window_TravelList; + + Window_TravelList.prototype.go_travel = function () { + var data = this.CBR_travel_list[this.index()]; + + $gameVariables.setValue(121, data.map_id); + $gameVariables.setValue(122, data.x); + $gameVariables.setValue(123, data.y); + $gameVariables.setValue(130, data.d); + + $gameTemp.reserveCommonEvent(1104); + + SceneManager.goto(Scene_Map); + /* +$gamePlayer.reserveTransfer( +97, +16, +8, +8, +0 +); + */ + }; + + Window_TravelList.prototype.initialize = function (rect) { + Window_Selectable.prototype.initialize.call(this, rect); + //最初に0番目って指定、commandではデフォでやってるけど + this.select(0); + this.activate(); + + this.CBR_travel_data = [ + { + switch: 371, + name: "Iris Academy", + file: "travel01.png", + map_id: 10, + x: 24, + y: 41, + d: 8 + }, + { + switch: 372, + name: "Iris Academy", + file: "travel02.png", + map_id: 34, + x: 24, + y: 41, + d: 8 + }, + { + switch: 373, + name: "Okutada Mountain", + file: "travel03.png", + map_id: 64, + x: 14, + y: 13, + d: 8 + }, + { + switch: 374, + name: "Kamiyado", + file: "travel04.png", + map_id: 72, + x: 34, + y: 12, + d: 2 + }, + { + switch: 375, + name: "Kamiyado", + file: "travel05.png", + map_id: 76, + x: 34, + y: 12, + d: 2 + }, + { + switch: 376, + name: "Chichitake Cave", + file: "travel06.png", + map_id: 86, + x: 16, + y: 12, + d: 8 + }, + { + switch: 377, + name: "Oshika Forest", + file: "travel07.png", + map_id: 92, + x: 9, + y: 46, + d: 8 + }, + { + switch: 378, + name: "Tsukuba Peak", + file: "travel08.png", + map_id: 97, + x: 22, + y: 15, + d: 8 + }, + { + switch: 379, + name: "Iris Headquarters", + file: "travel09.png", + map_id: 104, + x: 19, + y: 27, + d: 8 + }, + { + switch: 380, + name: "Iris Dungeon", + file: "travel10.png", + map_id: 115, + x: 12, + y: 4, + d: 2 + }, + { + switch: 381, + name: "Ichinotani Fishing Park", + file: "travel11.png", + map_id: 120, + x: 17, + y: 11, + d: 2 + }, + { + switch: 382, + name: "Akagi Pass -Trailhead", + file: "travel12.png", + map_id: 134, + x: 12, + y: 11, + d: 8 + }, + { + switch: 383, + name: "Meikyo Wharf", + file: "travel13.png", + map_id: 140, + x: 49, + y: 36, + d: 8 + }, + { + switch: 384, + name: "Shibuno", + file: "travel14.png", + map_id: 143, + x: 20, + y: 33, + d: 8 + }, + { + switch: 385, + name: "Shibuno", + file: "travel15.png", + map_id: 144, + x: 20, + y: 33, + d: 8 + }, + { + switch: 386, + name: "Aoiyama Cemetery", + file: "travel16.png", + map_id: 150, + x: 14, + y: 18, + d: 8 + }, + { + switch: 387, + name: "Shirakawa Research Institute Ruins", + file: "travel17.png", + map_id: 154, + x: 11, + y: 12, + d: 8 + }, + { + switch: 388, + name: "Nexus Future Hideout", + file: "travel18.png", + map_id: 169, + x: 32, + y: 6, + d: 2 + }, + { + switch: 389, + name: "Erodoll Dungeon", + file: "travel19.png", + map_id: 173, + x: 12, + y: 13, + d: 8 + }, + { + switch: 390, + name: "Hayama Highlands", + file: "travel20.png", + map_id: 180, + x: 21, + y: 27, + d: 8 + }, + { + switch: 391, + name: "Sendai Dungeon", + file: "travel21.png", + map_id: 185, + x: 12, + y: 12, + d: 8 + }, + { + switch: 392, + name: "Magical Crime Prison", + file: "travel22.png", + map_id: 190, + x: 12, + y: 14, + d: 8 + }, + { + switch: 393, + name: "Yaba Island", + file: "travel23.png", + map_id: 196, + x: 19, + y: 20, + d: 8 + }, + { + switch: 394, + name: "Tochigi Dungeon", + file: "travel24.png", + map_id: 204, + x: 20, + y: 26, + d: 8 + }, + { + switch: 395, + name: "Toto Ancient Ruins", + file: "travel25.png", + map_id: 212, + x: 12, + y: 12, + d: 8 + }, + { + switch: 396, + name: "Dahlia's Hideout", + file: "travel26.png", + map_id: 225, + x: 25, + y: 25, + d: 8 + }, + { + switch: 397, + name: "Fuji Sea of Trees", + file: "travel27.png", + map_id: 232, + x: 30, + y: 46, + d: 8 + }, + { + switch: 398, + name: "Toriei Peak", + file: "travel28.png", + map_id: 242, + x: 8, + y: 26, + d: 8 + }, + { + switch: 399, + name: "Road to Seien Church", + file: "travel29.png", + map_id: 247, + x: 6, + y: 37, + d: 8 + }, + { + switch: 403, + name: "Underground Arena", + file: "travel30.png", + map_id: 253, + x: 14, + y: 16, + d: 8 + }, + { + switch: 404, + name: "Road to Iris Headquarters", + file: "travel31.png", + map_id: 255, + x: 29, + y: 39, + d: 8 + } + ]; + + this.CBR_travel_list = []; + for (data of this.CBR_travel_data) { + if ($gameSwitches.value(data.switch)) { + ImageManager.loadSystem(data.file.slice(0, -4)); + this.CBR_travel_list.push(data); + } + } + }; + + Window_TravelList.prototype.maxItems = function () { + return this.CBR_travel_list.length; + }; + + Window_TravelList.prototype.numVisibleRows = function () { + return 15; + }; + + //右のウィンドウにデータを渡す + Window_TravelList.prototype.callUpdateHelp = function () { + if (this.active && this._helpWindow) { + this.updateHelp(); + } + }; + Window_TravelList.prototype.updateHelp = function () { + this._helpWindow.setItem(this.CBR_travel_list[this.index()]); + }; + + Window_TravelList.prototype.drawItem = function (index) { + const info = this.CBR_travel_list[index]; + const rect = this.itemRectWithPadding(index); + this.resetTextColor(); + //this.changePaintOpacity(this.isEnabled(savefileId)); + //this.drawTitle(savefileId, rect.x, rect.y + 4); + if (info) { + this.drawContents(info, rect); + } + }; + + Window_TravelList.prototype.drawContents = function (info, rect) { + // const bottom = rect.y + rect.height; + this.contents.fontFace = "serif"; + // this.contents.fontSize = 20; + //b.textColor = "#000000"; + this.changeTextColor("#000000"); + this.drawTextM(info.name, 104, rect.y + 2, 400, "left"); + + // const lineHeight = this.lineHeight(); + // const y2 = bottom - lineHeight - 4; + // if (y2 >= lineHeight) { + // this.drawPlaytime(info, rect.x, y2, rect.width); + // } + }; + + // ################# カーソルの変更 ################## + Window_TravelList.prototype.loadWindowskin = function () { + this.windowskin = ImageManager.loadSystem("Window"); + this.menu_cursor_skin = ImageManager.loadSystem("menu_item_selected"); + this.menu_item_skin = ImageManager.loadSystem("menu_item_selected_2"); + + if (!this.menu_item_skin.isReady()) { + this.menu_item_skin.addLoadListener(() => { + this.refresh(); // 画像がロードされたら再描画 + }); + return; + } + }; + + //56×200にする + Window_TravelList.prototype._refreshCursor = function () { + const drect = this._cursorRect.clone(); + const srect = { x: 0, y: 40, width: 588, height: 40 }; + const m = 0; + for (const child of this._cursorSprite.children) { + child.bitmap = this.menu_item_skin; + } + this._setRectPartsGeometry(this._cursorSprite, srect, drect, m); + }; + + //未選択コマンドの背景を画像に + Window_TravelList.prototype.drawItemBackground = function (index) { + const rect = this.itemRect(index); + if (this.menu_item_skin) { + const bitmap = this.menu_item_skin; + const dx = rect.x; + const dy = rect.y; + const dw = rect.width; + const dh = rect.height; + this.contentsBack.blt(bitmap, 0, 0, 588, 40, dx, dy, dw, dh); + } + }; + + Window_TravelList.prototype._refreshAllParts = function () { + //this._refreshBack(); + //this._refreshFrame(); + this._refreshCursor(); + this._refreshArrows(); + this._refreshPauseSign(); + }; + + // ########################################################### + // ##################### 移動先ウィンドウ ##################### + // ########################################################### + function Window_TravelHelp() { + this.initialize(...arguments); + } + Window_TravelHelp.prototype = Object.create(Window_Help.prototype); + Window_TravelHelp.prototype.constructor = Window_TravelHelp; + + Window_TravelHelp.prototype.setItem = function (item) { + if (item) { + //this.setText(item ? item.name : ""); + this._CBR_travel_data = item; + this.refresh(); + } + }; + + Window_TravelHelp.prototype.refresh = function () { + const rect = this.baseTextRect(); + this.contents.clear(); + + var data = this._CBR_travel_data; + if (data) { + this.contents.fontFace = "serif"; + this.contents.fontSize = 22; + + this.changeTextColor("#000000"); + this.drawTextM("Travel", 8, 32, rect.width, "center"); + + this.contents.fontSize = 28; + this.changeTextColor("#000000"); + this.drawTextM(data.name, 8, 97, rect.width, "center"); + + const bitmap = ImageManager.loadSystem(data.file.slice(0, -4)); + this.contents.blt(bitmap, 0, 0, 426, 240, 37, 151); + + if (!bitmap.isReady()) { + bitmap.addLoadListener(() => { + this.refresh(); // 画像がロードされたら再描画 + }); + return; + } + + this.contents.fontSize = 20; + this.drawTextM("Current Location", 46, 398, 100, "left"); + this.drawTextM("Destination", 46, 429, 100, "left"); + + this.changeTextColor("#FFFFFF"); + this.drawTextS($dataMapInfos[$gameMap.mapId()].name, 148, 398, 200, "left"); + this.drawTextS(data.name, 148, 429, 200, "left"); + } + }; + + Window_TravelHelp.prototype._refreshAllParts = function () { + //this._refreshBack(); + //this._refreshFrame(); + this._refreshCursor(); + this._refreshArrows(); + this._refreshPauseSign(); + }; +})();