//=============================================================================
// MUR Map Title v2.0
// Copyright (C) 2018,2019 MUR (https://github.com/murlab)
// BSD 3-Clause "New" or "Revised" License
// Free for use with both free and commercial RPG Maker games
//=============================================================================

var Imported = Imported || {};
Imported.MUR_MAPTITLE = true;

var MUR = MUR || {};                // MUR's main object
MUR.MAPTITLE = MUR.MAPTITLE || {};  // Plugins's stuff

/*:
 * @plugindesc v2.0 Map Title
 * @author MUR
 * @help Отображает подложку к названию местности при перемещении на новую локацию
 *
 * @param width
 * @type number
 * @text Ширина окна
 * @desc Размер видимости области для отображения названия и картинки
 * @default 816
 *
 * @param posX
 * @type number
 * @text Позиция названия местости X (px)
 * @desc X положение. Смещение относительно центра окна
 * @default 0
 * @min -1024
 * @max 1024
 *
 * @param posY
 * @type number
 * @text Позиция названия местости Y (px)
 * @desc Y положение. Смещение относительно начала окна
 * @default 88
 *
 * @param signBeforeName
 * @text Символ перед названием карты
 * @desc По умолчанию открывающие ковычки « (ёлочки)
 * @default «
 *
 * @param signAfterName
 * @text Символ после названием карты
 * @desc По умолчанию закрывающие ковычки » (ёлочки)
 * @default »
 *
 * @param imageName
 * @text Файл подложки сообщения
 * @desc Файл декораций окна сообщения
 * @default mapNavigate
 * @type file
 * @dir img/system
 * @require 1
 *
 */

var params = PluginManager.parameters('MUR_MapTitle');
MUR.MAPTITLE.width = Number(params['width']);
MUR.MAPTITLE.posX = Number(params['posX']);
MUR.MAPTITLE.posY = Number(params['posY']);
MUR.MAPTITLE.signBeforeName = params['signBeforeName'];
MUR.MAPTITLE.signAfterName = params['signAfterName'];
MUR.MAPTITLE.imageName = params['imageName'];

MUR.MAPTITLE.spr = new Sprite();
MUR.MAPTITLE.bitmap = new Bitmap();
MUR.MAPTITLE.mapTitle = undefined;

MUR.MAPTITLE.height = SceneManager._screenHeight;

var _MurMapTitle_Window_MapName_initialize = Window_MapName.prototype.initialize;
Window_MapName.prototype.initialize  = function() {	
	_MurMapTitle_Window_MapName_initialize.call(this);

	MUR.MAPTITLE.mapTitle = this;

	MUR.MAPTITLE.spr.bitmap = new Bitmap();
	MUR.MAPTITLE.bitmap = ImageManager.loadBitmap('img/system/', MUR.MAPTITLE.imageName, null, true);
	MUR.MAPTITLE.bitmap.addLoadListener(function() {
		MUR.MAPTITLE.spr.bitmap = new Bitmap(this.width, this.height);
		MUR.MAPTITLE.spr.bitmap.blt(this, 0, 0, this.width, this.height, 0, 0);                        
		MUR.MAPTITLE.spr.x = (SceneManager._screenWidth - this.width)/2;
		MUR.MAPTITLE.spr.y = 0;
		MUR.MAPTITLE.spr.opacity = 0;
		MUR.MAPTITLE.mapTitle.addChildToBack(MUR.MAPTITLE.spr);
	}.bind(MUR.MAPTITLE.bitmap));
}

Window_MapName.prototype.update = function() {
	Window_Base.prototype.update.call(this);
	if (this._showCount > 0 && $gameMap.isNameDisplayEnabled() && $gameMap.displayName()) {
		this.updateFadeIn();
		this._showCount--;
	} else {
		this.updateFadeOut();
	}
};

Window_MapName.prototype.updateFadeIn = function() {
	this.contentsOpacity += 16;
	MUR.MAPTITLE.spr.opacity += 16;
};

Window_MapName.prototype.updateFadeOut = function() {
	this.contentsOpacity -= 16;
	MUR.MAPTITLE.spr.opacity -= 16;
};

Window_MapName.prototype.windowWidth = function() {
	return MUR.MAPTITLE.width;
};

Window_MapName.prototype.windowHeight = function() {
	return MUR.MAPTITLE.height;
};

// Fadeout Screen
var _MurMapTitle_Game_Interpreter_command221 = Game_Interpreter.prototype.command221;
Game_Interpreter.prototype.command221 = function() {
	MUR.MAPTITLE.mapTitle._showCount = 0;
	_MurMapTitle_Game_Interpreter_command221.call(this);
}

var _MurMapTitle_Scene_Map_fadeOutForTransfer = Scene_Map.prototype.fadeOutForTransfer;
Scene_Map.prototype.fadeOutForTransfer = function() {
	MUR.MAPTITLE.mapTitle._showCount = 0;
	_MurMapTitle_Scene_Map_fadeOutForTransfer.call(this);
}

Window_MapName.prototype.refresh = function() {
	this.contents.clear();
	if ($gameMap.displayName()) {
		var width = this.contentsWidth();

		// if (this.contents.changeSFont) this.contents.changeSFont(4);
		MUR.setfont(this.contents, 'n', 'redbrick');

		var mapName = MUR.MAPTITLE.signBeforeName + $gameMap.displayName() + MUR.MAPTITLE.signAfterName;
		this.drawText(mapName, MUR.MAPTITLE.spr.x + MUR.MAPTITLE.posX, MUR.MAPTITLE.posY, width, 'center');

	} else {
		MUR.MAPTITLE.spr.opacity = 0;
	}
};
