106 lines
3.1 KiB
JavaScript
106 lines
3.1 KiB
JavaScript
//=============================================================================
|
|
// Looping Animations
|
|
// by Shaz
|
|
// Last Updated: 2015.10.30
|
|
//
|
|
// Revisions:
|
|
// 2015.10.30 Allow animations to play below/behind character
|
|
//=============================================================================
|
|
|
|
/*:
|
|
* @plugindesc Allows animations on the map to loop
|
|
* Also allows animations (normal or looping) to play below/behind characters
|
|
* @author Shaz
|
|
*
|
|
* @help
|
|
*
|
|
* Plugin Command:
|
|
* LoopAnim start event animid # Start a looping animation on an event
|
|
* LoopAnim stop event # Stop animation loop
|
|
*
|
|
* SetAnimLoc event location # Set location of animation
|
|
*
|
|
* 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
|
|
*
|
|
* location = below or behind - play animation behind character sprite
|
|
* location = above or front - play animation in front of character sprite
|
|
* default is to play animation in front of character sprite
|
|
*/
|
|
|
|
(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();
|
|
}
|
|
}
|
|
}
|
|
|
|
if (command.toUpperCase() === "SETANIMLOC") {
|
|
var character = this.character(eval(args[0]));
|
|
if (character) {
|
|
character.setAnimLoc(args[1] || "above");
|
|
}
|
|
}
|
|
};
|
|
|
|
var _Game_CharacterBase_initMembers =
|
|
Game_CharacterBase.prototype.initMembers;
|
|
Game_CharacterBase.prototype.initMembers = function () {
|
|
_Game_CharacterBase_initMembers.call(this);
|
|
this._loopAnimId = 0;
|
|
this._animZ = 8;
|
|
};
|
|
|
|
Game_CharacterBase.prototype.loopAnimStart = function (animId) {
|
|
this._loopAnimId = animId;
|
|
this.requestAnimation(animId);
|
|
};
|
|
|
|
Game_CharacterBase.prototype.loopAnimStop = function () {
|
|
this._loopAnimId = 0;
|
|
};
|
|
|
|
Game_CharacterBase.prototype.setAnimLoc = function (location) {
|
|
switch (location.toUpperCase()) {
|
|
case "BELOW":
|
|
case "BEHIND":
|
|
this._animZ = 0;
|
|
break;
|
|
default:
|
|
this._animZ = 8;
|
|
}
|
|
};
|
|
|
|
Game_CharacterBase.prototype.animZ = function () {
|
|
return this._animZ;
|
|
};
|
|
|
|
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();
|
|
this._animationSprites[this._animationSprites.length - 1].z =
|
|
this._character.animZ();
|
|
result = true;
|
|
} else {
|
|
result = false;
|
|
}
|
|
return result;
|
|
};
|
|
})();
|