-
Notifications
You must be signed in to change notification settings - Fork 130
/
Copy pathBackgroundBase.js
163 lines (152 loc) · 5.47 KB
/
BackgroundBase.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/*=============================================================================
BackgroundBase.js
----------------------------------------------------------------------------
(C)2023 Triacontane
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php
----------------------------------------------------------------------------
Version
1.1.1 2024/01/04 画像の暗号化機能への非対応をヘルプに明記
1.1.0 2023/12/10 複数の背景を条件によって使い分けられる機能を追加
1.0.0 2023/12/07 初版
----------------------------------------------------------------------------
[Blog] : https://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
=============================================================================*/
/*:
* @plugindesc バックエリア画像プラグイン
* @target MZ
* @url https://github.com/triacontane/RPGMakerMV/tree/mz_master/BackgroundBase.js
* @base PluginCommonBase
* @orderAfter PluginCommonBase
* @author トリアコンタン
*
* @param backgroundImage
* @text 背景画像
* @desc 背景に表示する画像ファイルです。
* @default
* @type file
* @dir img/parallaxes
*
* @param backgroundList
* @text 背景リスト
* @desc 背景に表示する画像ファイルです。条件によって複数のファイルを使い分けたいときに利用します。
* @default []
* @type struct<Background>[]
*
* @param method
* @text 繰り返し表示方法
* @desc 背景画像の表示方法です。
* @default repeat
* @type select
* @option ループ表示
* @value repeat
* @option 画面サイズに合わせる
* @value cover
* @option 何もしない
* @value none
*
* @help BackgroundBase.js
*
* ウィンドウサイズを変えたり、全画面にしたときに
* 黒塗りの代わりに画面外に表示される背景画像を指定できます。
*
* 本プラグインは画像の暗号化機能には対応していません。
*
* このプラグインの利用にはベースプラグイン『PluginCommonBase.js』が必要です。
* 『PluginCommonBase.js』は、RPGツクールMZのインストールフォルダ配下の
* 以下のフォルダに格納されています。
* dlc/BasicResources/plugins/official
*
* 利用規約:
* 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
* についても制限はありません。
* このプラグインはもうあなたのものです。
*/
/*~struct~Background:
* @param backgroundImage
* @text 背景画像
* @desc 背景に表示する画像ファイルです。
* @default
* @type file
* @dir img/parallaxes
*
* @param switchId
* @text スイッチID
* @desc 指定したスイッチがONのときのみ背景画像を表示します。
* @default 0
* @type switch
*/
(() => {
'use strict';
const script = document.currentScript;
const param = PluginManagerEx.createParameter(script);
if (!param.backgroundList) {
param.backgroundList = [];
}
const _Scene_Boot_start = Scene_Boot.prototype.start;
Scene_Boot.prototype.start = function() {
_Scene_Boot_start.apply(this, arguments);
Graphics.updateBackAreaImage();
};
const _Scene_Base_update = Scene_Base.prototype.update;
Scene_Base.prototype.update = function() {
_Scene_Base_update.apply(this, arguments);
if (this.isActive() && Graphics.frameCount % 10 === 0) {
Graphics.updateBackAreaImage();
}
};
Graphics.updateBackAreaImage = function() {
const back = param.backgroundList.find(item => item.switchId === 0 || $gameSwitches.value(item.switchId));
if (back) {
this.setBackAreaImage(back.backgroundImage);
} else {
this.setBackAreaImage(param.backgroundImage);
}
};
Graphics.setBackAreaImage = function(fileName) {
const style = this._back.style;
if (!fileName) {
style.backgroundImage = "";
return;
}
style.backgroundImage = `url(img/parallaxes/${fileName}.png)`;
switch (param.method) {
case 'repeat':
style.backgroundRepeat = "repeat";
break;
case 'cover':
style.backgroundRepeat = "no-repeat";
style.backgroundPosition = "center";
style.backgroundSize = "cover";
break;
case 'none':
style.backgroundRepeat = "no-repeat";
style.backgroundSize = "auto";
break;
}
};
const _Graphics__createAllElements = Graphics._createAllElements;
Graphics._createAllElements = function() {
_Graphics__createAllElements.apply(this, arguments);
this.createBackArea();
};
const _Graphics__updateAllElements = Graphics._updateAllElements;
Graphics._updateAllElements = function() {
_Graphics__updateAllElements.apply(this, arguments);
this.updateBackArea();
};
Graphics.createBackArea = function() {
this._back = document.createElement("div");
this._back.id = "backArea";
this.updateBackArea();
document.body.appendChild(this._back);
};
Graphics.updateBackArea = function() {
this._back.width = '100%';
this._back.height = '100%';
this._back.style.zIndex = 0;
this._centerElement(this._back);
};
})();