white-thirst/www/js/plugins/LoopAnim.js
2025-01-07 13:09:58 -06:00

88 lines
2.6 KiB
JavaScript

//=============================================================================
// Looping Animations
// by Shaz
// Last Updated: 2015.09.21
//=============================================================================
/*:
* @plugindesc Allows animations on the map to loop
* @author Shaz
*
* @help
*
* Plugin Command:
* LoopAnim start event animid # Start a looping animation on an event
* LoopAnim stop event # Stop animation loop
*
* event = number for specific event
* event = 0 for "this" event
* event = -1 for player
* event = $gameVariables.value(x) to get the event id from variable x
*/
/*:ja
* @plugindesc マップ上のアニメーションループを可能にします。
* @author Shaz
*
* @help
*
* Plugin Command:
* LoopAnim start event animid #
* イベント上でのアニメーションループを開始します。
* LoopAnim stop event #
* アニメーションループを停止します。
*
* event = 0 →このイベント
* event = -1 →プレイヤー
* event = $gameVariables.value(x) →xからイベントIDを取得
*/
(function () {
var _Game_Interpreter_pluginCommand =
Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function (command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args);
if (command.toUpperCase() === "LOOPANIM") {
var character = this.character(eval(args[1]));
if (character) {
switch (args[0].toUpperCase()) {
case "START":
character.loopAnimStart(args[2]);
break;
case "STOP":
character.loopAnimStop();
}
}
}
};
var _Game_CharacterBase_initMembers =
Game_CharacterBase.prototype.initMembers;
Game_CharacterBase.prototype.initMembers = function () {
_Game_CharacterBase_initMembers.call(this);
this._loopAnimId = 0;
};
Game_CharacterBase.prototype.loopAnimStart = function (animId) {
this._loopAnimId = animId;
this.requestAnimation(animId);
};
Game_CharacterBase.prototype.loopAnimStop = function () {
this._loopAnimId = 0;
};
Sprite_Character.prototype.isAnimationPlaying = function () {
if (this._animationSprites.length > 0) {
result = true;
} else if (this._character._loopAnimId > 0) {
this._character.requestAnimation(this._character._loopAnimId);
this.setupAnimation();
result = true;
} else {
result = false;
}
return result;
};
})();