189 lines
5.8 KiB
JavaScript
189 lines
5.8 KiB
JavaScript
// by VienDesu! 2023
|
|
|
|
//=============================================================================
|
|
// * Patches for rpg_core
|
|
//=============================================================================
|
|
|
|
Bitmap.prototype._requestImage = function (url) {
|
|
if (Bitmap._reuseImages.length !== 0) {
|
|
this._image = Bitmap._reuseImages.pop();
|
|
} else {
|
|
this._image = new Image();
|
|
}
|
|
|
|
url = replaceSpecialSymbols(url);
|
|
url = require("fs").cachedAlternativeName(url);
|
|
|
|
if (this._decodeAfterRequest && !this._loader) {
|
|
this._loader = ResourceHandler.createLoader(url, this._requestImage.bind(this, url), this._onError.bind(this));
|
|
}
|
|
|
|
this._image = new Image();
|
|
this._url = url;
|
|
this._loadingState = 'requesting';
|
|
|
|
if (!Decrypter.checkImgIgnore(url) && Decrypter.hasEncryptedImages) {
|
|
this._loadingState = 'decrypting';
|
|
Decrypter.decryptImg(url, this);
|
|
} else {
|
|
this._image.src = encodeURI(url);
|
|
|
|
this._image.addEventListener('load', this._loadListener = Bitmap.prototype._onLoad.bind(this));
|
|
this._image.addEventListener('error', this._errorListener = this._loader || Bitmap.prototype._onError.bind(this));
|
|
}
|
|
};
|
|
|
|
Graphics.printLoadingError = function (url) {
|
|
if (this._errorPrinter && !this._errorShowed) {
|
|
this._errorPrinter.innerHTML = this._makeErrorHtml('Loading Error', 'Failed to load: ' + url);
|
|
var button = document.createElement('button');
|
|
button.innerHTML = 'Retry';
|
|
button.style.fontSize = '24px';
|
|
button.style.color = '#000000';
|
|
button.style.backgroundColor = '#000000';
|
|
button.onmousedown = button.ontouchstart = function (event) {
|
|
ResourceHandler.retry();
|
|
event.stopPropagation();
|
|
};
|
|
this._errorPrinter.appendChild(button);
|
|
this._loadingCount = -Infinity;
|
|
}
|
|
};
|
|
|
|
Graphics._switchFPSMeter = function() {
|
|
|
|
};
|
|
|
|
Graphics._switchFullScreen = function () {
|
|
this._requestFullScreen();
|
|
};
|
|
|
|
Graphics._isFullScreen = function () {
|
|
return true;
|
|
};
|
|
|
|
Graphics._requestFullScreen = function () {
|
|
try {
|
|
var element = document.body;
|
|
if (element.requestFullScreen) {
|
|
element.requestFullScreen();
|
|
} else if (element.mozRequestFullScreen) {
|
|
element.mozRequestFullScreen();
|
|
} else if (element.webkitRequestFullScreen) {
|
|
element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
|
|
} else if (element.msRequestFullscreen) {
|
|
element.msRequestFullscreen();
|
|
}
|
|
} catch (e) {
|
|
console.log(`Fullscreen request denied! %s`, e)
|
|
}
|
|
};
|
|
|
|
Input._wrapNwjsAlert = function () {
|
|
if (Utils.isNwjs()) {
|
|
var _alert = window.alert;
|
|
window.alert = function () {
|
|
var gui = require('nw.gui');
|
|
var win = gui.window;
|
|
_alert.apply(this, arguments);
|
|
win.focus();
|
|
Input.clear();
|
|
};
|
|
}
|
|
};
|
|
|
|
Input._setupEventHandlers = function () {
|
|
document.addEventListener('keydown', this._onKeyDown.bind(this));
|
|
document.addEventListener('keyup', this._onKeyUp.bind(this));
|
|
};
|
|
|
|
TouchInput.update = function () {
|
|
return;
|
|
};
|
|
|
|
//=============================================================================
|
|
// * Patches for rpg_managers
|
|
//=============================================================================
|
|
|
|
DataManager.loadDataFile = function (name, src) {
|
|
var xhr = new XMLHttpRequest();
|
|
var url = _dfs.cachedAlternativeName('data/' + src);
|
|
xhr.open('GET', url);
|
|
xhr.overrideMimeType('application/json');
|
|
xhr.onload = function () {
|
|
if (xhr.status < 400) {
|
|
window[name] = JSON.parse(xhr.responseText);
|
|
DataManager.onLoad(window[name]);
|
|
}
|
|
};
|
|
xhr.onerror = this._mapLoader || function () {
|
|
DataManager._errorUrl = DataManager._errorUrl || url;
|
|
};
|
|
window[name] = null;
|
|
xhr.send();
|
|
};
|
|
|
|
ImageManager.loadBitmap = function (folder, filename, hue, smooth) {
|
|
if (filename) {
|
|
var path = folder + filename + '.png';
|
|
var bitmap = this.loadNormalBitmap(path, hue || 0);
|
|
bitmap.smooth = smooth;
|
|
return bitmap;
|
|
} else {
|
|
return this.loadEmptyBitmap();
|
|
}
|
|
};
|
|
|
|
ImageManager.loadNormalBitmap = function (path, hue) {
|
|
var key = this._generateCacheKey(path, hue);
|
|
var bitmap = this._imageCache.get(key);
|
|
if (!bitmap) {
|
|
bitmap = Bitmap.load(decodeURIComponent(replaceSpecialSymbols(path)));
|
|
bitmap.addLoadListener(function () {
|
|
bitmap.rotateHue(hue);
|
|
});
|
|
this._imageCache.add(key, bitmap);
|
|
} else if (!bitmap.isReady()) {
|
|
bitmap.decode();
|
|
}
|
|
|
|
return bitmap;
|
|
};
|
|
|
|
SceneManager.initNwjs = function () {
|
|
if (Utils.isNwjs()) {
|
|
var gui = require('nw.gui');
|
|
var win = gui.window;
|
|
if (process.platform === 'darwin' && !win.menu) {
|
|
var menubar = new gui.Menu({ type: 'menubar' });
|
|
var option = { hideEdit: true, hideWindow: true };
|
|
menubar.createMacBuiltin('Game', option);
|
|
win.menu = menubar;
|
|
}
|
|
}
|
|
};
|
|
|
|
SceneManager.onKeyDown = function (event) {
|
|
if (!event.ctrlKey && !event.altKey) {
|
|
switch (event.keyCode) {
|
|
case 116: // F5
|
|
if (Utils.isNwjs()) {
|
|
location.reload();
|
|
}
|
|
break;
|
|
case 119: // F8
|
|
if (Utils.isNwjs() && Utils.isOptionValid('test')) {
|
|
require('nw.gui').window.showDevTools();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// * Patches for rpg_objects
|
|
//=============================================================================
|
|
|
|
Game_Temp.prototype.setDestination = function (x, y) {
|
|
return;
|
|
};
|