princess-synergy/www/js/plugins/JsScript194Set.js
2026-02-05 14:03:22 -06:00

388 lines
17 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// (C) 2015 Triacontane
// http://opensource.org/licenses/mit-license.php
// [Blog] : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
/*:
* @plugindesc
* @author トリアコンタン
*
* @param 初期値
* @desc 初期状態での有効/無効の設定値(ON/OFF)
* @default OFF
*
* @param ピクチャ表示最大数
* @desc ピクチャ表示最大数デフォルト100個を設定します。
* 変えない場合は何も入力しないでください。
* @default
*
* @help
*/
var PVS_MaxPicNo = 100;
(function() {
'use strict';
var pluginName = 'JsScript194Set';
var getParamBoolean = function(paramNames) {
var value = getParamOther(paramNames);
return (value || '').toUpperCase() === 'ON';
};
var getParamNumber = function(paramNames, min, max) {
var value = getParamOther(paramNames);
if (arguments.length < 2) min = -Infinity;
if (arguments.length < 3) max = Infinity;
return (parseInt(value, 10) || 0).clamp(min, max);
};
var getParamOther = function(paramNames) {
if (!Array.isArray(paramNames)) paramNames = [paramNames];
for (var i = 0; i < paramNames.length; i++) {
var name = PluginManager.parameters(pluginName)[paramNames[i]];
if (name) return name;
}
return null;
};
var getCommandName = function(command) {
return (command || '').toUpperCase();
};
var getArgString = function(arg, upperFlg) {
arg = convertEscapeCharactersAndEval(arg, false);
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(convertEscapeCharactersAndEval(arg, true), 10) || 0).clamp(min, max);
};
var getArgArrayString = function(args, upperFlg) {
var values = getArgString(args, upperFlg).split(',');
for (var i = 0; i < values.length; i++) values[i] = values[i].trim();
return values;
};
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[i] = (parseInt(values[i], 10) || 0).clamp(min, max);
return values;
};
var convertEscapeCharactersAndEval = function(text, evalFlg) {
if (text === null || text === undefined) text = '';
var window = SceneManager._scene._windowLayer.children[0];
if (window) {
var result = window.convertEscapeCharacters(text);
return evalFlg ? eval(result) : result;
} else {
return text;
}
};
PVS_MaxPicNo = getParamNumber('ピクチャ表示最大数', 0);
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args);
switch (getCommandName(command)) {
case 'P_VARIABLE_VALID':
$gameSystem.pictureNumVariable = true;
break;
case 'P_VARIABLE_INVALID':
$gameSystem.pictureNumVariable = false;
break;
case 'P_D_FILENAME':
$gameScreen.dPictureFileName = getArgString(args[0]);
break;
case 'P_TARGET_ALL':
$gameScreen.setPictureTargetAll();
break;
case 'P_TARGET_RANGE':
$gameScreen.setPictureTargetRange(getArgNumber(args[0], 1), getArgNumber(args[1], 1));
break;
case 'P_TARGET_MULTI':
$gameScreen.setPictureTargetMulti(getArgArrayNumber(args[0], 1));
break;
case 'P_SPIN':
var spinDuration = getArgNumber(args[2], 0);
$gameScreen.spinPicture(getArgNumber(args[0], 1), getArgNumber(args[1]), spinDuration);
if (args[3]) this.wait(spinDuration);
break;
case 'P_SPIN_RELATIVE':
var spinRelativeDuration = getArgNumber(args[2], 0);
$gameScreen.spinPictureRelative(getArgNumber(args[0], 1), getArgNumber(args[1]), spinRelativeDuration);
if (args[3]) this.wait(spinRelativeDuration);
break;
case 'P_SHAKE':
var shakeDuration = getArgNumber(args[4], 0) || Infinity;
var power = getArgNumber(args[1], 1, 9);
var speed = getArgNumber(args[2], 1, 9);
var rotation = getArgNumber(args[3], 0, 360);
$gameScreen.shakePicture(getArgNumber(args[0], 1), power, speed, rotation, shakeDuration);
if (args[5] && shakeDuration !== Infinity) this.wait(shakeDuration);
break;
case 'P_STOP_SHAKE':
$gameScreen.shakePicture(getArgNumber(args[0], 1), 0, 0, 0, 0);
break;
case 'P_OUT_OF_SCREEN_SHAKE_ON':
$gameScreen.setOutOfScreenShakePicture(getArgNumber(args[0], 1), true);
break;
case 'P_OUT_OF_SCREEN_SHAKE_OFF':
$gameScreen.setOutOfScreenShakePicture(getArgNumber(args[0], 1), false);
break;
}
};
var _Game_Interpreter_command231 = Game_Interpreter.prototype.command231;
Game_Interpreter.prototype.command231 = function() {
return this.transPictureNumber(_Game_Interpreter_command231.bind(this));
};
var _Game_Interpreter_command232 = Game_Interpreter.prototype.command232;
Game_Interpreter.prototype.command232 = function() {
return this.transPictureNumber(_Game_Interpreter_command232.bind(this));
};
var _Game_Interpreter_command233 = Game_Interpreter.prototype.command233;
Game_Interpreter.prototype.command233 = function() {
return this.transPictureNumber(_Game_Interpreter_command233.bind(this));
};
var _Game_Interpreter_command234 = Game_Interpreter.prototype.command234;
Game_Interpreter.prototype.command234 = function() {
return this.transPictureNumber(_Game_Interpreter_command234.bind(this));
};
var _Game_Interpreter_command235 = Game_Interpreter.prototype.command235;
Game_Interpreter.prototype.command235 = function() {
return this.transPictureNumber(_Game_Interpreter_command235.bind(this));
};
Game_Interpreter.prototype.transPictureNumber = function(handler) {
var result;
if ($gameSystem.pictureNumVariable) {
var oldValue = this._params[0];
this._params[0] = $gameVariables.value(this._params[0]).clamp(1, $gameScreen.maxPictures());
result = handler();
this._params[0] = oldValue;
} else {
result = handler();
}
return result;
};
var _Game_System_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function() {
_Game_System_initialize.call(this);
this.pictureNumVariable = getParamBoolean('初期値');
};
var _Game_Screen_clear = Game_Screen.prototype.clear;
Game_Screen.prototype.clear = function() {
_Game_Screen_clear.call(this);
this.dPictureFileName = null;
this._pictureTargetStart = null;
this._pictureTargetEnd = null;
this._pictureTargetNumbers = null;
};
Game_Screen.prototype.setPictureTargetAll = function() {
this._pictureTargetAll = 1;
};
Game_Screen.prototype.setPictureTargetRange = function(start, end) {
this._pictureTargetAll = 2;
this._pictureTargetStart = start;
this._pictureTargetEnd = end;
};
Game_Screen.prototype.setPictureTargetMulti = function(args) {
this._pictureTargetAll = 3;
this._pictureTargetNumbers = args;
};
var _Game_Screen_movePicture = Game_Screen.prototype.movePicture;
Game_Screen.prototype.movePicture = function(pictureId, origin, x, y, scaleX,
scaleY, opacity, blendMode, duration) {
if (this._pictureTargetAll > 0) {
this.iteratePictures(function(picture) {
picture.move(origin, x, y, scaleX, scaleY, opacity, blendMode, duration);
}.bind(this));
this._pictureTargetAll = 0;
} else {
_Game_Screen_movePicture.apply(this, arguments);
}
};
var _Game_Screen_rotatePicture = Game_Screen.prototype.rotatePicture;
Game_Screen.prototype.rotatePicture = function(pictureId, speed) {
if (this._pictureTargetAll > 0) {
this.iteratePictures(function(picture) {
picture.rotate(speed);
}.bind(this));
this._pictureTargetAll = 0;
} else {
_Game_Screen_rotatePicture.apply(this, arguments);
}
};
var _Game_Screen_tintPicture = Game_Screen.prototype.tintPicture;
Game_Screen.prototype.tintPicture = function(pictureId, tone, duration) {
if (this._pictureTargetAll > 0) {
this.iteratePictures(function(picture) {
picture.tint(tone, duration);
}.bind(this));
this._pictureTargetAll = 0;
} else {
_Game_Screen_tintPicture.apply(this, arguments);
}
};
var _Game_Screen_erasePicture = Game_Screen.prototype.erasePicture;
Game_Screen.prototype.erasePicture = function(pictureId) {
if (this._pictureTargetAll) {
this.iteratePictures(function(picture, pictureId) {
var realPictureId = this.realPictureId(pictureId);
this._pictures[realPictureId] = null;
}.bind(this));
this._pictureTargetAll = 0;
} else {
_Game_Screen_erasePicture.apply(this, arguments);
}
};
Game_Screen.prototype.spinPicture = function(pictureId, rotation, duration) {
if (this._pictureTargetAll > 0) {
this.iteratePictures(function(picture) {
picture.spin(rotation, duration);
}.bind(this));
this._pictureTargetAll = 0;
} else {
var picture = this.picture(pictureId);
if (picture) {
picture.spin(rotation, duration);
}
}
};
Game_Screen.prototype.spinPictureRelative = function(pictureId, relativeRotation, duration) {
if (this._pictureTargetAll > 0) {
this.iteratePictures(function(picture) {
picture.spinRelative(relativeRotation, duration);
}.bind(this));
this._pictureTargetAll = 0;
} else {
var picture = this.picture(pictureId);
if (picture) {
picture.spinRelative(relativeRotation, duration);
}
}
};
Game_Screen.prototype.shakePicture = function(pictureId, power, speed, rotation, duration) {
if (this._pictureTargetAll > 0) {
this.iteratePictures(function(picture) {
picture.shake(power, speed, rotation, duration);
}.bind(this));
this._pictureTargetAll = 0;
} else {
var picture = this.picture(pictureId);
if (picture) {
picture.shake(power, speed, rotation, duration);
}
}
};
Game_Screen.prototype.setOutOfScreenShakePicture = function(pictureId, value) {
if (this._pictureTargetAll > 0) {
this.iteratePictures(function(picture) {
picture.setOutOfScreenShake(value);
}.bind(this));
this._pictureTargetAll = 0;
} else {
var picture = this.picture(pictureId);
if (picture) {
picture.setOutOfScreenShake(value);
}
}
};
Game_Screen.prototype.iteratePictures = function(callBack) {
for (var i = 1, n = this.maxPictures(); i <= n; i++) {
var picture = this.picture(i);
if (picture && this.isTargetPicture(i)) {
callBack.call(this, picture, i);
}
}
};
Game_Screen.prototype.isTargetPicture = function(number) {
switch (this._pictureTargetAll) {
case 2:
return this._pictureTargetStart <= number && this._pictureTargetEnd >= number;
case 3:
return this._pictureTargetNumbers.contains(number);
default:
return true;
}
};
var _Game_Screen_maxPictures = Game_Screen.prototype.maxPictures;
Game_Screen.prototype.maxPictures = function() {
var max = getParamNumber('ピクチャ表示最大数', 0);
return max > 0 ? max : _Game_Screen_maxPictures.apply(this, arguments);
};
var _Game_Picture_show = Game_Picture.prototype.show;
Game_Picture.prototype.show = function(name, origin, x, y, scaleX,
scaleY, opacity, blendMode) {
if ($gameScreen.dPictureFileName != null) {
arguments[0] = $gameScreen.dPictureFileName;
$gameScreen.dPictureFileName = null;
}
_Game_Picture_show.apply(this, arguments);
};
var _Game_Picture_x = Game_Picture.prototype.x;
Game_Picture.prototype.x = function() {
return _Game_Picture_x.apply(this, arguments) + this.getShakeX() -
(this._outOfScreenShake ? Math.round($gameScreen.shake()) : 0);
};
var _Game_Picture_y = Game_Picture.prototype.y;
Game_Picture.prototype.y = function() {
return _Game_Picture_y.apply(this, arguments) + this.getShakeY();
};
Game_Picture.prototype.setOutOfScreenShake = function(value) {
this._outOfScreenShake = !!value;
};
Game_Picture.prototype.spin = function(targetRotation, duration) {
this._targetRotation = targetRotation;
this._angle = (this._angle % 360);
if (duration === 0) {
this._angle = this._targetRotation;
} else {
this._spinDuration = duration;
}
};
Game_Picture.prototype.spinRelative = function(targetRelativeRotation, duration) {
this._angle = (this._angle % 360);
this.spin(this._angle + targetRelativeRotation, duration);
};
Game_Picture.prototype.shake = function(power, speed, rotation, duration) {
this.stopShake();
this._shakePower = power;
this._shakeSpeed = speed;
this._shakeDuration = duration;
this._shakeRotation = rotation * Math.PI / 180;
};
Game_Picture.prototype.stopShake = function() {
this._shakeDirection = 1;
this._shake = 0;
};
var _Game_Picture_update = Game_Picture.prototype.update;
Game_Picture.prototype.update = function() {
_Game_Picture_update.apply(this, arguments);
this.updateSpin();
this.updateShake();
};
Game_Picture.prototype.updateSpin = function() {
if (this._spinDuration > 0) {
var d = this._spinDuration;
this._angle = (this._angle * (d - 1) + this._targetRotation) / d;
this._spinDuration--;
}
};
Game_Picture.prototype.updateShake = function() {
if (this._shakeDuration > 0) {
var delta = (this._shakePower * this._shakeSpeed * this._shakeDirection) / 10;
if (this._shakeDuration <= 1 && this._shake * (this._shake + delta) < 0) {
this._shake = 0;
} else {
this._shake += delta;
}
if (this._shake > this._shakePower * 2) {
this._shakeDirection = -1;
}
if (this._shake < -this._shakePower * 2) {
this._shakeDirection = 1;
}
this._shakeDuration--;
}
};
Game_Picture.prototype.getShakeX = function() {
return this._shake ? this._shake * Math.cos(this._shakeRotation) : 0;
};
Game_Picture.prototype.getShakeY = function() {
return this._shake ? this._shake * Math.sin(this._shakeRotation) : 0;
};
})();