//=============================================================================
// ローカル関数
// プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
//=============================================================================
var getCommandName = function (command) {
return (command || '').toUpperCase();
};
var getArgArrayString = function (args, upperFlg) {
var values = getArgString(args, upperFlg);
return (values || '').split(',');
};
var getArgArrayNumber = function (args, min, max) {
var values = getArgArrayString(args, false);
if (arguments.length < 2) min = -Infinity;
if (arguments.length < 3) max = Infinity;
for (var i = 0; i < values.length; i++) values = (parseInt(values, 10) || 0).clamp(min, max);
return values;
};
var getArgString = function (arg, upperFlg) {
arg = convertEscapeCharacters(arg);
return upperFlg ? arg.toUpperCase() : arg;
};
var getArgNumber = function (arg, min, max) {
if (arguments.length <= 2) min = -Infinity;
if (arguments.length <= 3) max = Infinity;
return (parseInt(convertEscapeCharacters(arg), 10) || 0).clamp(min, max);
};
var convertEscapeCharacters = function(text) {
if (text == null) text = '';
text = text.replace(/\\/g, '\x1b');
text = text.replace(/\x1b\x1b/g, '\\');
text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
text = text.replace(/\x1bN\[(\d+)\]/gi, function() {
var n = parseInt(arguments[1]);
var actor = n >= 1 ? $gameActors.actor(n) : null;
return actor ? actor.name() : '';
}.bind(this));
text = text.replace(/\x1bP\[(\d+)\]/gi, function() {
var n = parseInt(arguments[1]);
var actor = n >= 1 ? $gameParty.members()[n - 1] : null;
return actor ? actor.name() : '';
}.bind(this));
text = text.replace(/\x1bG/gi, TextManager.currencyUnit);
return text;
};
Sprite_Picture.prototype.updateAnimation = function(sprite, cellCount) {
switch (this.picture()._direction) {
case '連番':
case 'N':
sprite.bitmap = this._bitmaps[cellCount];
sprite.setFrame(0, 0, sprite.bitmap.width, sprite.bitmap.height);
break;
case '縦':
case 'V':
var height = sprite.bitmap.height / this.picture()._cellNumber;
var y = cellCount * height;
sprite.setFrame(0, y, sprite.bitmap.width, height);
break;
case '横':
case 'H':
var width = sprite.bitmap.width / this.picture()._cellNumber;
var x = cellCount * width;
sprite.setFrame(x, 0, width, this.bitmap.height);
break;
}
};
var _Sprite_Picture_loadBitmap = Sprite_Picture.prototype.loadBitmap;
Sprite_Picture.prototype.loadBitmap = function() {
_Sprite_Picture_loadBitmap.call(this);
var cellNumber = this.picture()._cellNumber;
var dir = this.picture()._direction;
if (cellNumber > 1 && (dir === '連番' || dir === 'N')) {
var cellDigit = cellNumber.toString().length;
this._bitmaps = [this.bitmap];
for (var i = 1; i < cellNumber; i++) {
var filename = this._pictureName.substr(0, this._pictureName.length - cellDigit) + i.padZero(cellDigit);
this._bitmaps = ImageManager.loadPicture(filename);
}
}
this._prevSprite.bitmap = this.bitmap;
this._bitmapReady = false;
};
Sprite_Picture.prototype.isBitmapReady = function() {
if (this._bitmapReady) return true;
var dir = this.picture()._direction;
var result;
if (dir === '連番' || dir === 'N') {
result = this._bitmaps.every(function(bitmap) {
return bitmap.isReady();
});
} else {
result = this.bitmap.isReady();
}
if (result) this._bitmapReady = true;
return result;
};
})();[/fold]