//==============================================================================
// Feng_MoveFrame.js
//==============================================================================
/*:
* @plugindesc (v1.0)Define Character Sprites on your own.
* 自定义行走图
* @author 风宥雪
*
* @help This plugin does not provide plugin commands.
* Version 1.0
*
*功能:自定义人物移动帧数,如name[s6][m12].png,表示人物6帧图片
*为站立(stand)图,12帧图片为行走(move)图;
*
*/
Sprite_Character.prototype.setCharacterBitmap = function() {
//源代码
this.bitmap = ImageManager.loadCharacter(this._characterName);
this._isBigCharacter = ImageManager.isBigCharacter(this._characterName);
//以下为添加
this._character._total_frame = 0;
this._character._change_frame = false;
var sub_str = String(this._characterName).match(/\[s(\d+)\]/i);
if (sub_str)
{
this._character._frame_s = Number(sub_str[1]);
this._character._change_frame = true;
this._character._total_frame += this._character._frame_s;
}
else
this._character._frame_s = 0;
sub_str = String(this._characterName).match(/\[m(\d+)\]/i);
if (sub_str)
{
this._character._frame_m = Number(sub_str[1]);
this._character._change_frame = true;
this._character._total_frame += this._character._frame_m;
}
else
this._character._frame_m = 0;
if (this._character._total_frame == 0) //防错处理
this._character._total_frame = 4;
};
Sprite_Character.prototype.characterBlockX = function() {
if(this._character._change_frame)
return 0;
else
{
if (this._isBigCharacter) {
return 0;
} else {
var index = this._character.characterIndex();
return index % 4 * 3;
}
}
};
Sprite_Character.prototype.characterBlockY = function() {
if(this._character._change_frame)
return 0;
else
{
if (this._isBigCharacter) {
return 0;
} else {
var index = this._character.characterIndex();
return Math.floor(index / 4) * 4;
}
}
};
Sprite_Character.prototype.patternWidth = function() {
if (this._tileId > 0) {
return $gameMap.tileWidth();
} else if(this._character._change_frame) {
return this.bitmap.width / this._character._total_frame;
} else {
if (this._isBigCharacter) {
return this.bitmap.width / 3;
} else {
return this.bitmap.width / 12;
}
}
};
Sprite_Character.prototype.patternHeight = function() {
if (this._tileId > 0) {
return $gameMap.tileWidth();
} else if(this._character._change_frame) {
return this.bitmap.height / 4;
} else {
if (this._isBigCharacter) {
return this.bitmap.height / 4;
} else {
return this.bitmap.height / 8;
}
}
};
var feng_char_base_initMembers = Game_CharacterBase.prototype.initMembers;
Game_CharacterBase.prototype.initMembers = function() {
feng_char_base_initMembers.call(this);
this._moveSpeed = 4; //在这里可以更改角色移动速度
this._pattern = 0;
this._total_frame = 0;
this._change_frame = false;
this._frame_s = 0;
this._frame_m = 0;
};
Game_CharacterBase.prototype.updateAnimationCount = function() {
if (this.isMoving() && this.hasWalkAnime()) {
this._animationCount += 2.0; //在这里可以更改跑步动画刷新速度(默认1.5)
//静止有动态图时也要更新计数
} else if (this.hasStepAnime() || !this.isOriginalPattern() || this._frame_s > 1 || this.hasWalkAnime()) {
this._animationCount++;
}
};
Game_CharacterBase.prototype.updatePattern = function() {
if(this._change_frame)
{
if (!this.hasStepAnime() && this._stopCount > 0) {
if (this._frame_s == 0)
this._pattern = (this._pattern + 1) % this._frame_m;
else
this._pattern = (this._pattern + 1) % this._frame_s;
} else {
if (this._frame_m == 0)
this._pattern = (this._pattern + 1) % this._frame_s;
else//有行走图则采用行走图
{
var temp = (this._pattern - this._frame_s + 1) % this._frame_m;
this._pattern= this._frame_s + (temp > 0 ? temp : 0);
}
}
}
else
{
if (!this.hasStepAnime() && this._stopCount > 0) {
this.resetPattern();
} else {
this._pattern = (this._pattern + 1) % this.maxPattern();
}
}
};
Game_CharacterBase.prototype.maxPattern = function() {
return this._total_frame;
};
Game_CharacterBase.prototype.pattern = function() {
if(this._change_frame)
return this._pattern;
else
return this._pattern < 3 ? this._pattern : 1;
};
Game_CharacterBase.prototype.setDirection = function(d) {
if (!this.isDirectionFixed() && d) {
this._direction = d;
}
};