-
-
Notifications
You must be signed in to change notification settings - Fork 51
/
RS_CheckVersions.js
222 lines (211 loc) · 7.84 KB
/
RS_CheckVersions.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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
//================================================================
// RS_CheckVersions.js
// ---------------------------------------------------------------
// The MIT License
// Copyright (c) 2017 biud436
// ---------------------------------------------------------------
// Free for commercial and non commercial use.
//================================================================
/*:
* @target MV
* @plugindesc This plugin allows you to open the market page in a boot scene if there has detected a new version for this game <RS_CheckVersions>
* @author biud436
*
* @param target
* @text Target
* @type select
* @desc self : Open the page to current page
* blank : Open the page to a new window
* @default _self
* @option self
* @value _self
* @option blank
* @value _blank
*
* @param url
* @text Default URL
* @desc Specify the url of the json file that has the version text.
* @default https://github.com/biud436/MV/raw/master/Laboratory/Versions.json
*
* @param defaultMessage
* @text Default Message
* @desc Specify the default message in an alert window.
* (The #{VERSION} text will be changed as real version value)
* @default There has detected a new version<#{VERSION}> for this game.
*
* @param errorMessage
* @text Error Message
* @desc When you are not connected the Internet you get an warning message and exit the game.
* @default Not connected to the Internet.
*
* @param marketUrl
* @text Market Page URL
* @desc Specify the market page url of each platform.
* @type struct<MarketPage>
* @default {"Android":"https://play.google.com/store/apps/details?id=<package-name>","iOS":"http://itunes.apple.com/<country>/app/<app–name>/id<app-ID>?mt=8"}
*
* @help
* To be able to set up this plugin, You follow these steps. We need to create
* the version file in a project folder and server.
*
* 1. We need to add the file called "Versions.json" to <your_project>/data/ folder
* 2. Next we must add the file called "Versions.json" in your private site (or server),
* for fetching the version data file in the site or server.
* 3. The contents of each JSON file should then something like this.
* If you need to update, please change the version value in the site or server.
*
* {
* "version": "1.0.0"
* }
*
* When you are not connected the Internet you get an warning message.
*
* =============================================================================
* Change Log
* =============================================================================
* 2017.11.29 (v1.0.0) - First Release
*/
/*~struct~MarketPage:
*
* @param Android
* @desc Specify the market page url
* Replace <package-name> text to a real package name.
* @default https://play.google.com/store/apps/details?id=<package-name>
*
* @param iOS
* @desc Specify the market page url
* Replace queries like <country>, <app–name>, <app-ID> to a real value
* @default http://itunes.apple.com/<country>/app/<app–name>/id<app-ID>?mt=8
*
*/
/*:ko
* @target MV
* @plugindesc <RS_CheckVersions>
* @author biud436
*
* @param target
* @text 타겟
* @type select
* @desc self : 현재 페이지에서 마켓 페이지로 이동합니다 (게임 종료됨)
* blank : 새로운 창을 열어 마켓 페이지로 이동합니다.
* @default _self
* @option self
* @value _self
* @option blank
* @value _blank
*
* @param url
* @text 기본 URL
* @desc 버전 파일을 읽어 올 공개 또는 비공개 사이트의 주소를 입력하세요
* @default https://github.com/biud436/MV/raw/master/Laboratory/Versions.json
*
* @param defaultMessage
* @text 기본 메시지
* @desc 새로운 업데이트를 찾았다는 메시지를 표시합니다.
* ( #{VERSION}은 서버에 있는 버전을 읽어서 대체합니다 )
* @default 새로운 버전 #{VERSION}을 찾았습니다. 마켓으로 이동합니다.
*
* @param errorMessage
* @text 오류 메시지
* @desc 인터넷에 연결되어있지 않으면 오류 메시지를 띄우고 게임을 종료합니다.
* @default 인터넷에 연결되지 않았습니다.
*
* @param marketUrl
* @text 마켓 페이지 URL
* @desc 각 플랫폼 별 마켓 페이지의 주소를 설정할 수 있습니다.
* @type struct<MarketPage>
* @default {"Android":"https://play.google.com/store/apps/details?id=<package-name>","iOS":"http://itunes.apple.com/<country>/app/<app–name>/id<app-ID>?mt=8"}
*
* @help
*
* 다음 단계에 따라 플러그인을 설정하시기 바랍니다
*
* 1. data 폴더에 Versions.json 파일을 추가합니다.
* 2. 다음으로, 비공개 사이트(또는 서버)에 Versions.json 파일을 추가합니다.
* 3. JSON 파일의 내용은 아래와 같아야 합니다.
* 업데이트가 필요한 경우, 사이트 측의 버전 표기 값을 변경하시기 바랍니다.
*
* {
* "version": "1.0.0"
* }
*
* =============================================================================
* Change Log
* =============================================================================
* 2017.11.29 (v1.0.0) - First Release
*/
/*~struct~MarketPage:ko
*
* @param Android
* @desc 구글 플레이 주소를 기입하세요
* <package-name>을 실제 패키지 명으로 대체하십시오
* @default https://play.google.com/store/apps/details?id=<package-name>
*
* @param iOS
* @desc 앱스토어 주소를 기입하세요
* <country>, <app–name>, <app-ID>을 실제 값으로 대체하세요.
* @default http://itunes.apple.com/<country>/app/<app–name>/id<app-ID>?mt=8
*
*/
(() => {
const Imported = window.Imported || {};
const RS = window.RS || {};
Imported.RS_CheckVersions = true;
RS.Net = RS.Net || {};
let parameters = $plugins.filter(i => {
return i.description.contains('<RS_CheckVersions>');
});
parameters = parameters.length > 0 && parameters[0].parameters;
const defaultMessage =
parameters.defaultMessage ||
'There has detected a new version for this game.';
const errorMessage =
parameters.errorMessage || 'Not connected to the Internet';
const windowTarget = parameters.target || '_self';
const marketUrl = JSON.parse(parameters.marketUrl);
const defaultUrl = `${
parameters.url ||
'https://github.com/biud436/MV/raw/master/Laboratory/Versions.json'
}?${Date.now()}`;
DataManager._databaseFiles.push({
name: '$game_versions',
src: 'Versions.json',
});
RS.Net.initVersion = function (callback) {
fetch(defaultUrl)
.then(response => response.json())
.then(json => {
RS.Net._dbVersion = json.version;
const pageUrl = Utils.isMobileSafari()
? marketUrl.iOS
: marketUrl.Android;
const isNwJs = Utils.isNwjs();
const isRequestedNewVersion =
RS.Net._dbVersion !== $game_versions.version;
const version = RS.Net._dbVersion || '0.0.0';
const message = defaultMessage.replace('#{VERSION}', version);
if (!isNwJs && isRequestedNewVersion) {
// eslint-disable-next-line no-alert
window.alert(message);
window.open(pageUrl, windowTarget);
return false;
}
return json();
})
.then(() => {
callback();
})
.catch(() => {
// eslint-disable-next-line no-alert
window.alert(errorMessage);
SceneManager.exit();
});
};
const alias_Scene_Boot_initialize = Scene_Boot.prototype.initialize;
const alias_Scene_Boot_start = Scene_Boot.prototype.start;
Scene_Boot.prototype.initialize = function () {
alias_Scene_Boot_initialize.call(this);
RS.Net.initVersion(alias_Scene_Boot_start);
};
Scene_Boot.prototype.start = function () {};
})();