//=============================================================================
// RPG Maker MZ - Kpp_WeatherSpringMZ.js
//=============================================================================
// Copyright (c) 2018-2020 カッピ
//
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//
// ウェブサイト
// https://birdwind.net/
//
// Twitter
// https://twitter.com/kappi_bw

/*:ja
 * @target MZ
 * @plugindesc 桜が舞う天候エフェクト
 * @author カッピ
 * @url https://birdwind.net/plugin/
 *
 * @help
 * 桜が舞う天候エフェクトを再生します。
 *
 * 事前準備として、
 * プラグイン配布ページにある「WeatherSpring.png」を、
 * img/systemフォルダに入れておいてください。
 *
 * プラグインコマンドで、天候を開始します。
 * 
 * 天候を停止するには、
 * イベントコマンド「天候の設定」で、
 * タイプを「なし」に指定します。
 *
 * @requiredAssets img/system/WeatherSpring
 *
 * @command ChangeWeather
 * @text 桜の天候開始
 * @desc 桜の天候エフェクトを開始する
 *
 * @arg power
 * @text 強さ
 * @desc 強さ:天候エフェクトの画像を一度に表示する量(1~9の数値)
 * @default 2
 * @type number
 * @min 1
 * @max 9
 *
 * @arg duration
 * @text 切り替え時間
 * @desc 天候エフェクトの切り替えにかかる時間(1~999の数値)
 * @default 60
 * @type number
 * @min 1
 * @max 999
 *
 * @arg wait
 * @text ウェイト
 * @desc 切り替え完了までウェイト
 * @default false
 * @type boolean
 *
 */

(function() {

	const pluginName = 'Kpp_WeatherSpringMZ';
	const parameters = PluginManager.parameters(pluginName);
	
	// プラグインコマンド
	PluginManager.registerCommand(pluginName, "ChangeWeather", function(args) {
		$gameScreen.changeWeather("spring", Number(args.power), Number(args.duration));
		
		if (args.wait == "true") this.wait(Number(args.duration));
	});

	const _Weather_createBitmaps = Weather.prototype._createBitmaps;
	Weather.prototype._createBitmaps = function() { 
		_Weather_createBitmaps.apply(this);
		this._springBitmap = ImageManager.loadSystem('WeatherSpring')
	};
	
	const _Weather_updateSprite = Weather.prototype._updateSprite;
	Weather.prototype._updateSprite = function(sprite) {
		if (this.type == 'spring') this._updateSpringSprite(sprite); 
		
		_Weather_updateSprite.apply(this, arguments);
	};
	
	Weather.prototype._updateSpringSprite = function(sprite) { 
	    sprite.bitmap = this._springBitmap; 
	    sprite.opacity -= 1;
	    if (sprite.opacity >= 160) {
	    	sprite.ax -= 3;
	    	sprite.ay += 1;
	    	sprite.rotation -= 0.01;
	    }
	    else if (sprite.opacity >= 110) {
	    	sprite.ax -= 1;
	    	sprite.ay += 4;
	    	sprite.rotation += 0.01;
	    }
	    else {
	    	sprite.ax -= 3;
	    	sprite.ay += 3;
	    	sprite.rotation -= 0.01;
	    }
	}; 

})();