pastime/js/plugins/savehenko.js
2026-03-15 16:45:22 -05:00

388 lines
No EOL
13 KiB
JavaScript

//=============================================================================
// セーブ画面 / AltSaveScreen.js
//=============================================================================
/*:ja
* v0.3.0
* @plugindesc
* セーブ/ロード画面のレイアウトを変更します。
* 導入前にヘルプを読むことを推奨
*
* @author Declare War
*
* @param UseBackPicture1
* @default true
* @desc 背景の画像を使うかどうか(true/false)
*
* @param BackPicture1
* @default Save_Back_Picture
* @desc 背景の画像のファイル名
*
* @param UseBackPicture2
* @default true
* @desc 背景の上に表示する画像を使うかどうか(ウィンドウの代わり、true/false)
*
* @param BackPicture2
* @default Save_Back_Picture2
* @desc 背景の上に表示する画像のファイル名
*
* @param Opacity
* @default 192
* @desc ウィンドウの不透明度
*
* @param DrawGauge
* @default true
* @desc HPMPゲージを描画するかどうか(true/false)
*
* @param MoveLvDraw
* @default false
* @desc レベルの描画を名前の下にするかどうか(true/false)
*
* @param FontSize1
* @default 24
* @desc 左のウィンドウのフォントサイズ(初期設定は24)
*
* @param FontSize2
* @default 28
* @desc 右のウィンドウのフォントサイズ(初期設定は28)
*
* @param Color1
* @default rgba(0,0,0,0.2)
* @desc ファイル名表示のところの背景の色の設定1
*
* @param Color2
* @default rgba(0,0,0,1)
* @desc ファイル名表示のところの背景の色の設定2
*
* @param Color3
* @default rgba(0,0,64,0.5)
* @desc マップ名表示のところの背景の色の設定1
*
* @param Color4
* @default rgba(0,0,64,0.5)
* @desc マップ名表示のところの背景の色の設定2
*
* @param Color5
* @default #00FF00
* @desc マップ名のテキストの色
*
* @help このプラグインには、プラグインコマンドはありません。
*
* ●マップ名表示について
* 実際のマップ名ではなく編集画面の表示名の方を表示する
*
* ●注意
* 導入前にsaveフォルダを空にする
* (global.rpgsaveも消す、コンフィグのは残してもOK)
*
* 画像はPicturesフォルダに入れる
*
*/
(function(){
// params --------------------------------------------------------
var parameters = PluginManager.parameters('savehenko');
var Params = {};
Params.useBackPicture1 = parameters['UseBackPicture1'] || '';
Params.backPicture1 = parameters['BackPicture1'] || '';
Params.useBackPicture2 = parameters['UseBackPicture2'] || '';
Params.backPicture2 = parameters['BackPicture2'] || '';
Params.opacity = Number(parameters['Opacity'] || 0);
Params.drawGauge = parameters['DrawGauge'] || '';
Params.moveLvDraw = parameters['MoveLvDraw'] || '';
Params.fontSize1 = Number(parameters['FontSize1'] || 24);
Params.fontSize2 = Number(parameters['FontSize2'] || 36);
Params.color = [parameters['Color1'], parameters['Color2'],
parameters['Color3'], parameters['Color4'], parameters['Color5']];
Params.defalutColor = ['rgba(0,0,0,0.2)', 'rgba(0,0,0,1)',
'rgba(0,0,64,0.5)', 'rgba(0,0,64,0.5)', '#00FF00'];
// DataManager -------------------------------------------------------------
// makeSavefileInfo
var _DataManager_makeSavefileInfo = DataManager.makeSavefileInfo;
DataManager.makeSavefileInfo = function() {
var info = _DataManager_makeSavefileInfo.call(this);
info.partyLeaderParam = $gameParty.leaderParam();
info.mapName = $gameMap.displayName();
return info;
};
// Game_Party --------------------------------------------------------------
// leaderParam
Game_Party.prototype.leaderParam = function() {
var actor = this.leader();
if (!actor) return null;
return [actor._level, actor.hp, actor.mhp, actor.mp, actor.mmp,
actor.atk, actor.def, actor.mat, actor.mdf, actor.agi,
actor.luk, actor.name()];
};
// Window_SavefileList -----------------------------------------------------
// maxItems
Window_SavefileList.prototype.maxItems = function() {
return DataManager.maxSavefiles();
};
// maxVisibleItems
Window_SavefileList.prototype.maxVisibleItems = function() {
return 15;
};
// setActorWindow
Window_SavefileList.prototype.setActorWindow = function(window) {
this._actorWindow = window;
this.updateActorWindow();
};
// updateActorWindow
Window_SavefileList.prototype.updateActorWindow = function() {
if (this._actorWindow){
var id = this.index() + 1;
this._actorWindow.setId(id);
}
};
// callUpdateHelp
var _Window_SavefileList_callUpdateHelp = Window_SavefileList.prototype.callUpdateHelp;
Window_SavefileList.prototype.callUpdateHelp = function() {
_Window_SavefileList_callUpdateHelp.call(this);
if (this.active && this._actorWindow) {
this.updateActorWindow();
}
};
// standardFontSize
Window_SavefileList.prototype.standardFontSize = function() {
return Params.fontSize1;
};
// leftWidth
Window_SavefileList.prototype.leftWidth = function() {
return 88;
};
// centerWidth
Window_SavefileList.prototype.centerWidth = function() {
return 240;
};
// drawItem
Window_SavefileList.prototype.drawItem = function(index) {
var id = index + 1;
var valid = DataManager.isThisGameFile(id);
var info = DataManager.loadSavefileInfo(id);
var rect = this.itemRect(index);
this.resetTextColor();
if (this._mode === 'load') {
this.changePaintOpacity(valid);
}
this.backGradient(rect);
this.drawFileId(id, rect.x + 4, rect.y);
if (info) {
this.changePaintOpacity(valid);
this.drawContents(info, rect, valid);
this.changePaintOpacity(true);
}
};
// drawFileId
Window_SavefileList.prototype.drawFileId = function(id, x, y) {
this.drawText('File ' + id, x, y, this.leftWidth());
};
// backGradient
Window_SavefileList.prototype.backGradient = function(rect) {
var c1 = Params.color[0] || Params.defalutColor[0];
var c2 = Params.color[1] || Params.defalutColor[1];
var c3 = Params.color[2] || Params.defalutColor[2];
var c4 = Params.color[3] || Params.defalutColor[3];
var w1 = this.leftWidth();
var w2 = rect.width - w1;
this.contents.gradientFillRect(rect.x, rect.y, w1, 36, c1, c2);
this.contents.gradientFillRect(rect.x+w1, rect.y, w2, 36, c3, c4);
};
// drawContents
Window_SavefileList.prototype.drawContents = function(info, rect, valid) {
var x1 = rect.x + this.leftWidth() + 6;
var w1 = this.centerWidth();
this.drawMapName(info, x1, rect.y, w1);
var rx = x1 + this.centerWidth();
var rw = rect.width - x1 - this.centerWidth() - 6;
this.drawPlaytime(info, rx, rect.y, rw);
};
// drawMapName
Window_SavefileList.prototype.drawMapName = function(info, x, y, width) {
if (info.mapName) {
var color = Params.color[4] || Params.defalutColor[4];
this.changeTextColor(color);
this.drawText(info.mapName, x, y, width);
this.resetTextColor();
}
};
// Window_Save_Actor -------------------------------------------------------
//
function Window_Save_Actor() {
this.initialize.apply(this, arguments);
}
Window_Save_Actor.prototype = Object.create(Window_Base.prototype);
Window_Save_Actor.prototype.constructor = Window_Save_Actor;
// standardFontSize
Window_Save_Actor.prototype.standardFontSize = function() {
return Params.fontSize2;
};
// setId
Window_Save_Actor.prototype.setId = function(id) {
this.refresh(id);
};
// refresh
Window_Save_Actor.prototype.refresh = function(id) {
this.contents.clear();
var info = DataManager.loadSavefileInfo(id);
if (!info) return;
var param = info.partyLeaderParam;
var name = String(param[param.length - 1]);
var cx = (this.contents.width - 144) / 2;
var bx = 6;
var by = 152;
var lh = 36;
var pw = 0;
var ph = 0;
var flag = Params.moveLvDraw === 'true';
if (flag){
pw += 72;
ph += lh;
}
this.drawActorName(name, param[1], param[2], bx, by + lh * 0, 200 + pw);
for (var i = 0; i < 6; i++) {
this.drawItem(param, bx, by + ph + lh * (3 + i), 2 + i, 5 + i);
}
};
// drawActorName
Window_Save_Actor.prototype.drawActorName = function(name, hp, mhp, x, y, width) {
width = width || 168;
var rate = hp / mhp;
this.changeTextColor(this.hpColor(rate));
this.drawText(name, x, y, width);
};
// drawActorLevel
Window_Save_Actor.prototype.drawActorLevel = function(num, x, y, flag) {
var dx = flag ? 6 : x
var dw = flag ? 60 : 36
this.changeTextColor(this.systemColor());
this.drawText(TextManager.levelA, dx, y, dw);
this.resetTextColor();
this.drawText(num, dx + dw, y, dw, 'right');
};
// drawActorHp
Window_Save_Actor.prototype.drawActorHp = function(hp, mhp, x, y, width) {
var rate = hp / mhp;
width = width || 186;
if (Params.drawGauge === 'true'){
var color1 = this.hpGaugeColor1();
var color2 = this.hpGaugeColor2();
this.drawGauge(x, y, width, rate, color1, color2);
}
this.changeTextColor(this.systemColor());
this.drawText(TextManager.hpA, x, y, 44);
this.drawCurrentAndMax(hp, mhp, x, y, width,
this.hpColor(rate), this.normalColor());
};
// hpColor
Window_Save_Actor.prototype.hpColor = function(rate) {
if (rate === 0) {
return this.deathColor();
} else if (rate <= 0.25) {
return this.crisisColor();
} else {
return this.normalColor();
}
};
// drawActorMp
Window_Save_Actor.prototype.drawActorMp = function(mp, mmp, x, y, width) {
var rate = mp / mmp;
width = width || 186;
if (Params.drawGauge === 'true'){
var color1 = this.mpGaugeColor1();
var color2 = this.mpGaugeColor2();
this.drawGauge(x, y, width, rate, color1, color2);
}
this.changeTextColor(this.systemColor());
this.drawText(TextManager.mpA, x, y, 44);
this.drawCurrentAndMax(mp, mmp, x, y, width,
this.normalColor(), this.normalColor());
};
// drawItem
Window_Save_Actor.prototype.drawItem = function(param, x, y, paramId, paramId2) {
this.drawParamName(x, y, paramId);
this.drawCurrentParam(x + 180, y, param[paramId2]);
};
// drawParamName
Window_Save_Actor.prototype.drawParamName = function(x, y, paramId) {
this.changeTextColor(this.systemColor());
this.drawText(TextManager.param(paramId), x, y, 140);
};
// drawCurrentParam
Window_Save_Actor.prototype.drawCurrentParam = function(x, y, num) {
this.resetTextColor();
this.drawText(num, x, y, 15, 'right');
};
// Scene_Title -------------------------------------------------------------
// isReady
var _Scene_Title_isReady = Scene_Title.prototype.isReady;
Scene_Title.prototype.isReady = function() {
if (!this.faceLoadFlag){
this.faceLoadFlag = true;
DataManager.loadAllSavefileImages();
}
return _Scene_Title_isReady.call(this);
}
// Scene_File --------------------------------------------------------------
// createBackground
Scene_File.prototype.createBackground = function() {
this._backgroundSprite = new Sprite();
if (Params.useBackPicture1 === 'true'){
this._backgroundSprite.bitmap =
ImageManager.loadPicture(Params.backPicture1, 0);
}else{
this._backgroundSprite.bitmap = SceneManager.backgroundBitmap();
}
this.addChild(this._backgroundSprite);
if (Params.useBackPicture2 === 'true'){
this._backgroundSprite2 = new Sprite();
this._backgroundSprite2.bitmap =
ImageManager.loadPicture(Params.backPicture2, 0);
this.addChild(this._backgroundSprite2);
};
};
// create
var _Scene_File_create = Scene_File.prototype.create;
Scene_File.prototype.create = function() {
_Scene_File_create.call(this);
this.createActorWindow();
this.setWindowOpacity();
};
// createListWindow
Scene_File.prototype.createListWindow = function() {
var x = 0;
var y = this._helpWindow.height;
var width = 496;
var height = Graphics.boxHeight - y;
this._listWindow = new Window_SavefileList(x, y, width, height);
this._listWindow.setHandler('ok', this.onSavefileOk.bind(this));
this._listWindow.setHandler('cancel', this.popScene.bind(this));
this._listWindow.select(this.firstSavefileIndex());
this._listWindow.setTopRow(this.firstSavefileIndex() - 2);
this._listWindow.setMode(this.mode());
this._listWindow.refresh();
this.addWindow(this._listWindow);
};
// createActorWindow
Scene_File.prototype.createActorWindow = function() {
var x = this._listWindow.width;
var y = this._helpWindow.height;
var w = Graphics.boxWidth - x;
var h = Graphics.boxHeight - y;
this._actorWindow = new Window_Save_Actor(x, y, w, h);
this._listWindow.setActorWindow(this._actorWindow);
this.addWindow(this._actorWindow);
}
// setWindowOpacity
Scene_File.prototype.setWindowOpacity = function(){
this._helpWindow.opacity = Params.opacity;
this._listWindow.opacity = Params.opacity;
this._actorWindow.opacity = Params.opacity;
}
})();