148 lines
No EOL
3.5 KiB
JavaScript
148 lines
No EOL
3.5 KiB
JavaScript
//=============================================================================
|
|
// HeaderName.js
|
|
//=============================================================================
|
|
/*:
|
|
* @target MZ
|
|
* @author Thirop
|
|
*
|
|
* @param marginY
|
|
* @text 頭上からの距離
|
|
* @desc デフォルト:4
|
|
* @type number
|
|
* @default 4
|
|
*
|
|
* @param maxWidth
|
|
* @text 最大横幅
|
|
* @desc デフォルト:96
|
|
* @type number
|
|
* @default 96
|
|
*
|
|
* @param fontSize
|
|
* @text フォントサイズ
|
|
* @desc デフォルト:16
|
|
* @type number
|
|
* @default 16
|
|
*
|
|
*/
|
|
//=============================================================================
|
|
//PRAGMA: englishHeader
|
|
//PRAGMA_END: englishHeader
|
|
|
|
|
|
(function(){
|
|
'use strict';
|
|
|
|
var parameters = PluginManager.parameters('HeaderName');
|
|
var marginY = Number(parameters.marginY)||4;
|
|
var maxWidth = Number(parameters.maxWidth)||128;
|
|
var fontSize = Number(parameters.fontSize)||20;
|
|
|
|
|
|
//=============================================================================
|
|
// HeaderNameSprite
|
|
//=============================================================================
|
|
Game_Character.prototype.headerName = function(){return null};
|
|
|
|
|
|
var _Game_Event_prototype_initMembers = Game_Event.prototype.initMembers;
|
|
Game_Event.prototype.initMembers = function() {
|
|
_Game_Event_prototype_initMembers.call(this);
|
|
this._headerName = '';
|
|
};
|
|
|
|
var _Game_Event_initialize = Game_Event.prototype.initialize;
|
|
Game_Event.prototype.initialize = function(mapId, eventId) {
|
|
_Game_Event_initialize.call(this,mapId,eventId);
|
|
|
|
var data = this.event();
|
|
if(data && data.note){
|
|
this._headerName = data.note;
|
|
}
|
|
};
|
|
Game_Event.prototype.headerName = function(){
|
|
return this._headerName;
|
|
};
|
|
|
|
|
|
var _Sprite_Character_initMembers = Sprite_Character.prototype.initMembers;
|
|
Sprite_Character.prototype.initMembers = function() {
|
|
_Sprite_Character_initMembers.call(this);
|
|
this._headerNameSprite = null;
|
|
this._headerNameLines = 0;
|
|
};
|
|
|
|
var _Sprite_Character_setCharacter = Sprite_Character.prototype.setCharacter;
|
|
Sprite_Character.prototype.setCharacter = function(character) {
|
|
_Sprite_Character_setCharacter.call(this,character);
|
|
var name = character.headerName();
|
|
if(!name){
|
|
if(this._headerNameSprite){
|
|
this._headerNameSprite.visible = false;
|
|
}
|
|
}else{
|
|
this.setupHeaderNameSprite(name);
|
|
}
|
|
};
|
|
|
|
Sprite_Character.prototype.setupHeaderNameSprite = function(name){
|
|
var sprite = this._headerNameSprite;
|
|
var bitmap;
|
|
var lines = name.split('\\n');
|
|
var length = lines.length;
|
|
|
|
var lineHeight = fontSize+2;
|
|
if(!sprite || this._headerNameLines!==length){
|
|
bitmap = new Bitmap(maxWidth,length*lineHeight);
|
|
sprite = new Sprite(bitmap);
|
|
this._headerNameSprite = sprite;
|
|
sprite.anchor.set(0.5,1);
|
|
sprite.z = 8;
|
|
bitmap.fontSize = fontSize;
|
|
}else{
|
|
bitmap = sprite.bitmap
|
|
bitmap.clear();
|
|
}
|
|
|
|
this._headerNameLines = length;
|
|
|
|
var width = bitmap.width;
|
|
var height = bitmap.height;
|
|
|
|
for(var i=0; i<length; i=(i+1)|0){
|
|
var line = lines[i];
|
|
bitmap.drawText(line,0,i*lineHeight,width,lineHeight,'center');
|
|
}
|
|
};
|
|
|
|
|
|
var _Sprite_Character_update = Sprite_Character.prototype.update;
|
|
Sprite_Character.prototype.update = function() {
|
|
_Sprite_Character_update.call(this);
|
|
if(this._headerNameSprite){
|
|
this.updateHeaderNameSprite();
|
|
}
|
|
};
|
|
|
|
Sprite_Character.prototype.updateHeaderNameSprite = function(){
|
|
var sprite = this._headerNameSprite;
|
|
if(!this.visible || this.opacity===0){
|
|
sprite.visible = false;
|
|
return;
|
|
}
|
|
|
|
if(!sprite.parent){
|
|
if(this.parent){
|
|
this.parent.addChild(sprite);
|
|
}else{
|
|
return;
|
|
}
|
|
}
|
|
|
|
sprite.visible = true;
|
|
sprite.x = this.x;
|
|
sprite.y = this.y-this.height-marginY;
|
|
};
|
|
|
|
|
|
|
|
})(); |