MOG_MapNameHud.js【中文注解】【地图名称显示】

//=============================================================================
// MOG_MapNameHud.js
// 作用:进入地图,指定位置限制地图名称,可调整显示位置,持续时间,让玩家清楚的知道自己到哪儿了。
// 注:编辑地图的时候,有“地图名称”、“显示名称”,该插件使用“显示名称”
//=============================================================================

/*:
 * @plugindesc (v1.0) 自动显示地图的名字
 * @author Moghunter
 *
 * @param Hud X-Axis
 * @desc Definição da posição X-Axis da Hud. //显示框X轴
 * @default 250
 *
 * @param Hud Y-Axis
 * @desc Definição da posição Y-Axis da Hud. //显示框Y轴
 * @default 32
 *
 * @param Name X-Axis
 * @desc Definição da posição X-Axis do nome. //地图名称X轴
 * @default 105
 *
 * @param Name Y-Axis
 * @desc Definição da posição Y-Axis do nome. //地图名称Y轴
 * @default 30
 *
 * @param Duration
 * @desc Definição do tempo de apresentação. //显示持续时间
 * @default 120
 *
 * @param Font Size
 * @desc Definição do tamanho da fonte. //字体大小
 * @default 20
 *   
 * @help  
 * =============================================================================
 * +++ MOG Map Name Hud(v1.0) +++
 * By Moghunter 
 * https://atelierrgss.wordpress.com/
 * =============================================================================
 * Apresenta uma Hud com o nome do mapa.
 * Serão necessários os arquivos. (img/system/)
 *
 * MapName.png //显示框图片
 * 
 */

//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================

//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
  var Imported = Imported || {};
  Imported.MOG_MapNameHud = true;
  var Moghunter = Moghunter || {}; 

   Moghunter.parameters = PluginManager.parameters('MOG_MapNameHud');
    //显示框参数
    Moghunter.mhud_pos_x = Number(Moghunter.parameters['Hud X-Axis'] || 250);
    Moghunter.mhud_pos_y = Number(Moghunter.parameters['Hud Y-Axis'] || 32);
    //地图名称参数
    Moghunter.mhud_text_x = Number(Moghunter.parameters['Name X-Axis'] || 105);
    Moghunter.mhud_text_y = Number(Moghunter.parameters['Name Y-Axis'] || 30);
    Moghunter.mhud_duration = Number(Moghunter.parameters['Duration'] || 120);
    Moghunter.mhud_fontsize = Number(Moghunter.parameters['Font Size'] || 20);

//=============================================================================
// ** Game_Temp
//=============================================================================

//==============================
// * Initialize
// * Game_Temp游戏临时参数,不做存储
//==============================
var _alias_mog_mhud_temp_initialize = Game_Temp.prototype.initialize;
Game_Temp.prototype.initialize = function() {
    _alias_mog_mhud_temp_initialize.call(this);
    this._mhud_sprite = [false,0,0];
    this._mhud_data = [false,null,0];
};

//=============================================================================
// ** Spriteset Map
//=============================================================================

//==============================
// * Create Upper Layer
//==============================
var _alias_mog_mhud_sprmap_createUpperLayer = Spriteset_Map.prototype.createUpperLayer;
Spriteset_Map.prototype.createUpperLayer = function() {
    _alias_mog_mhud_sprmap_createUpperLayer.call(this);
    this.create_mapname_hud();
};

//==============================
// * Create Map Name HUD
// * 创建地图名称显示
//==============================
Spriteset_Map.prototype.create_mapname_hud = function() {
    this._mapNameHud = new Map_Name_Hud();
    this.addChild(this._mapNameHud);
    if (this.needRefreshMhud()) { //刷新检查
        $gameTemp._mhud_data[0] = true;
        $gameTemp._mhud_data[1] = $gameMap.displayName();
    };
    if ($gameTemp._mhud_data[2] != $gameMap._mapId) {
        $gameTemp._mhud_sprite = [false,0,0]
    };
    $gameTemp._mhud_data[2] = $gameMap._mapId;
}; 

//==============================
// * Need Refresh MHud
// * 名称显示是否可用
// * 临时参数_mhud_data[2]与地图中地图Id是否一致
// * 地图显示名称为是否空
//==============================
Spriteset_Map.prototype.needRefreshMhud = function() {
    if (!$gameMap.isNameDisplayEnabled()) {return false};
    if ($gameTemp._mhud_data[2] === $gameMap._mapId) {return false};
    if (!$gameMap.displayName()) {return false};
    return true;
};

//=============================================================================
// * Map_Name_Hud
//=============================================================================
function Map_Name_Hud() {
    this.initialize.apply(this, arguments);
};

//继承自Sprite
Map_Name_Hud.prototype = Object.create(Sprite.prototype);
Map_Name_Hud.prototype.constructor = Map_Name_Hud;

//==============================
// * Initialize
//==============================
Map_Name_Hud.prototype.initialize = function() {    
    Sprite.prototype.initialize.call(this); 
    //位置信息
    this._pos_x = Moghunter.mhud_pos_x;
    this._pos_y = Moghunter.mhud_pos_y; 
    this.load_img(); //加载显示框指向this._layout_img
    this.create_sprites(); //创建显示精灵
    this.opacity = $gameTemp._mhud_sprite[1]; //临时参数中取透明度
    this.refresh();
};

//==============================
// * Load Img
//==============================
Map_Name_Hud.prototype.load_img = function() {
    this._layout_img = ImageManager.loadSystem("MapName");
};

//==============================
// * Create Layout
//==============================
Map_Name_Hud.prototype.create_layout = function() {
    this._layout = new Sprite(this._layout_img);
    this._layout.x = this._pos_x;
    this._layout.y = this._pos_y;
    this.addChild(this._layout);
};

//==============================
// * Create Text
// * 名称字符创建
//==============================
Map_Name_Hud.prototype.create_text = function() {
    this._text = new Sprite(new Bitmap(160,32));
    this._text.x = this._pos_x + Moghunter.mhud_text_x;
    this._text.y = this._pos_y + Moghunter.mhud_text_y;
    this._text.bitmap.fontSize = Moghunter.mhud_fontsize;
    this.addChild(this._text);
};

//==============================
// * Create Sprites
//==============================
Map_Name_Hud.prototype.create_sprites = function() {
     this.create_layout();
     this.create_text();     
};

//==============================
// * Name
// * 地图显示名称
//==============================
Map_Name_Hud.prototype.name = function() {
     return $gameTemp._mhud_data[1];
};

//==============================
// * Refresh Init
//==============================
Map_Name_Hud.prototype.refresh_init = function() {
  $gameTemp._mhud_data[0] = false;
  $gameTemp._mhud_sprite = [true,0,0];
  this.x = -50;
  this.opacity = 0;
};

//==============================
// * Refresh
//==============================
Map_Name_Hud.prototype.refresh = function() {
    if ($gameTemp._mhud_data[0]) {
        this.refresh_init()
    };  
    if (!this.name()) {return};
    this.refresh_name();
};

//==============================
// * Refresh Name
//==============================
Map_Name_Hud.prototype.refresh_name = function() {
    this._text.bitmap.clear();
    this._text.bitmap.drawText(this.name(),0,0,160,32,"center");
};

//==============================
// * Update visible
// * 淡入、持续展示、淡出
//==============================
Map_Name_Hud.prototype.update_position = function() {
    $gameTemp._mhud_sprite[1] += 1;
    if ($gameTemp._mhud_sprite[1] < 30) {
        this.opacity += 8.5;    
        this.x += 1.6;
    } else if ($gameTemp._mhud_sprite[1] < 20 + Moghunter.mhud_duration) {
        this.x = 0; 
        this.opacity = 255;
    } else { 
        this.opacity -= 8.5;    
        this.x += 1.6;
        if (this.opacity === 0) {
            $gameTemp._mhud_sprite[0] = false
        };
    };
};

//==============================
// * Update
//==============================
Map_Name_Hud.prototype.update = function() {    
    Sprite.prototype.update.call(this); 
    if ($gameTemp._mhud_sprite[0]) {
        this.update_position()
    } else {
        this.opacity = 0
    };
    if ($gameTemp._mhud_data[0]) {this.refresh()};
};

//=============================================================================
// * Refresh
//=============================================================================

//==============================
// * Refresh
//==============================
Window_MapName.prototype.refresh = function() {
     this.contents.clear(); 
};
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352