You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

304 lines
10 KiB
JavaScript

3 years ago
/*:
* NOTE: Images are stored in the img/system folder.
*
* @plugindesc Show a Splash Screen "Made with MV" and/or a Custom Splash Screen before going to main screen.
* @author Dan "Liquidize" Deptula
*
* @help This plugin does not provide plugin commands.
*
* @param Show Made With MV
* @desc Enabled/Disables showing the "Made with MV" splash screen.
* OFF - false ON - true
* Default: ON
* @default true
*
* @param Made with MV Image
* @desc The image to use when showing "Made with MV"
* Default: MadeWithMv
* @default MadeWithMv
* @require 1
* @dir img/system/
* @type file
*
* @param Show Custom Splash
* @desc Enabled/Disables showing the "Made with MV" splash screen.
* OFF - false ON - true
* Default: OFF
* @default false
*
* @param Custom Image
* @desc The image to use when showing "Made with MV"
* Default:
* @default
* @require 1
* @dir img/system/
* @type file
*
* @param Fade Out Time
* @desc The time it takes to fade out, in frames.
* Default: 120
* @default 120
*
* @param Fade In Time
* @desc The time it takes to fade in, in frames.
* Default: 120
* @default 120
*
* @param Wait Time
* @desc The time between fading in and out, in frames.
* Default: 160
* @default 160
*
*/
/*:ja
* メモ: イメージはimgsystemフォルダ内に保存されます
*
* @plugindesc メイン画面へ進む前に"Made with MV"のスプラッシュ画面もしくはカスタマイズされたスプラッシュ画面を表示します
* @author Dan "Liquidize" Deptula
*
* @help このプラグインにはプラグインコマンドはありません
*
* @param Show Made With MV
* @desc "Made with MV"のスプラッシュ画面を表示できる/できないようにします
* OFF - false ON - true
* デフォルト: ON
* @default true
*
* @param Made with MV Image
* @desc "Made with MV"を表示する際に使用する画像
* デフォルト: MadeWithMv
* @default MadeWithMv
* @require 1
* @dir img/system/
* @type file
*
* @param Show Custom Splash
* @desc "Made with MV"のスプラッシュ画面を表示できる/できないようにします
* OFF - false ON - true
* デフォルト: OFF
* @default false
*
* @param Custom Image
* @desc "Made with MV"を表示する際に使用する画像
* デフォルト:
* @default
* @require 1
* @dir img/system/
* @type file
*
* @param Fade Out Time
* @desc フェードアウトに要する時間フレーム数
* デフォルト: 120
* @default 120
*
* @param Fade In Time
* @desc フェードインに要する時間フレーム数
* デフォルト: 120
* @default 120
*
* @param Wait Time
* @desc フェードインからフェードアウトまでに要する時間フレーム数
* デフォルト: 160
* @default 160
*
*/
var Liquidize = Liquidize || {};
Liquidize.MadeWithMV = {};
Liquidize.MadeWithMV.Parameters = PluginManager.parameters('MadeWithMv');
Liquidize.MadeWithMV.ShowMV = JSON.parse(Liquidize.MadeWithMV.Parameters["Show Made With MV"]);
Liquidize.MadeWithMV.MVImage = String(Liquidize.MadeWithMV.Parameters["Made with MV Image"]);
Liquidize.MadeWithMV.ShowCustom = JSON.parse(Liquidize.MadeWithMV.Parameters["Show Custom Splash"]);
Liquidize.MadeWithMV.CustomImage = String(Liquidize.MadeWithMV.Parameters["Custom Image"]);
Liquidize.MadeWithMV.FadeOutTime = Number(Liquidize.MadeWithMV.Parameters["Fade Out Time"]) || 120;
Liquidize.MadeWithMV.FadeInTime = Number(Liquidize.MadeWithMV.Parameters["Fade In Time"]) || 120;
Liquidize.MadeWithMV.WaitTime = Number(Liquidize.MadeWithMV.Parameters["Wait Time"]) || 160;
//-----------------------------------------------------------------------------
// Scene_Splash
//
// This is a constructor, implementation is done in the inner scope.
function Scene_Splash() {
this.initialize.apply(this, arguments);
}
(function() {
//-----------------------------------------------------------------------------
// Scene_Boot
//
// The scene class for dealing with the game boot.
var _Scene_Boot_loadSystemImages = Scene_Boot.prototype.loadSystemImages;
Scene_Boot.prototype.loadSystemImages = function() {
_Scene_Boot_loadSystemImages.call(this);
if (Liquidize.MadeWithMV.ShowMV) {
ImageManager.loadSystem(Liquidize.MadeWithMV.MVImage);
}
if (Liquidize.MadeWithMV.ShowCustom) {
ImageManager.loadSystem(Liquidize.MadeWithMV.CustomImage);
}
};
var _Scene_Boot_start = Scene_Boot.prototype.start;
Scene_Boot.prototype.start = function() {
if ((Liquidize.MadeWithMV.ShowMV || Liquidize.MadeWithMV.ShowCustom) && !DataManager.isBattleTest() && !DataManager.isEventTest()) {
SceneManager.goto(Scene_Splash);
} else {
_Scene_Boot_start.call(this);
}
};
//-----------------------------------------------------------------------------
// Scene_Splash
//
// The scene class for dealing with the splash screens.
Scene_Splash.prototype = Object.create(Scene_Base.prototype);
Scene_Splash.prototype.constructor = Scene_Splash;
Scene_Splash.prototype.initialize = function() {
Scene_Base.prototype.initialize.call(this);
this._mvSplash = null;
this._customSplash = null;
this._mvWaitTime = Liquidize.MadeWithMV.WaitTime;
this._customWaitTime = Liquidize.MadeWithMV.WaitTime;
this._mvFadeOut = false;
this._mvFadeIn = false;
this._customFadeOut = false;
this._customFadeIn = false;
};
Scene_Splash.prototype.create = function() {
Scene_Base.prototype.create.call(this);
this.createSplashes();
};
Scene_Splash.prototype.start = function() {
Scene_Base.prototype.start.call(this);
SceneManager.clearStack();
if (this._mvSplash != null) {
this.centerSprite(this._mvSplash);
}
if (this._customSplash != null) {
this.centerSprite(this._customSplash);
}
};
Scene_Splash.prototype.update = function() {
if (Liquidize.MadeWithMV.ShowMV) {
if (!this._mvFadeIn) {
this.startFadeIn(Liquidize.MadeWithMV.FadeInTime, false);
this._mvFadeIn = true;
} else {
if (this._mvWaitTime > 0 && this._mvFadeOut == false) {
this._mvWaitTime--;
} else {
if (this._mvFadeOut == false) {
this._mvFadeOut = true;
this.startFadeOut(Liquidize.MadeWithMV.FadeOutTime, false);
}
}
}
}
if (Liquidize.MadeWithMV.ShowCustom) {
if (Liquidize.MadeWithMV.ShowMV && this._mvFadeOut == true) {
if (!this._customFadeIn && this._fadeDuration == 0) {
this._customSplash.opacity = 255;
this._customWaitTime = Liquidize.MadeWithMV.WaitTime;
this.startFadeIn(Liquidize.MadeWithMV.FadeInTime, false);
this._customFadeIn = true;
} else {
if (this._customWaitTime > 0 && this._customFadeOut == false) {
this._customWaitTime--;
} else {
if (this._customFadeOut == false) {
this._customFadeOut = true;
this.startFadeOut(Liquidize.MadeWithMV.FadeOutTime, false);
}
}
}
} else if (!Liquidize.MadeWithMV.ShowMV) {
if (!this._customFadeIn) {
this._customSplash.opacity = 255;
this.startFadeIn(Liquidize.MadeWithMV.FadeInTime, false);
this._customFadeIn = true;
} else {
if (this._customWaitTime > 0 && this._customFadeOut == false) {
this._customWaitTime--;
} else {
if (this._customFadeOut == false) {
this._customFadeOut = true;
this.startFadeOut(Liquidize.MadeWithMV.FadeOutTime, false);
}
}
}
}
}
if (Liquidize.MadeWithMV.ShowCustom) {
if (Liquidize.MadeWithMV.ShowMV && this._mvFadeOut == true && this._customFadeOut == true) {
this.gotoTitleOrTest();
} else if (!Liquidize.MadeWithMV.ShowMV && this._customFadeOut == true) {
this.gotoTitleOrTest();
}
} else {
if (this._mvFadeOut == true) {
this.gotoTitleOrTest();
}
}
Scene_Base.prototype.update.call(this);
};
Scene_Splash.prototype.createSplashes = function() {
if (Liquidize.MadeWithMV.ShowMV) {
this._mvSplash = new Sprite(ImageManager.loadSystem(Liquidize.MadeWithMV.MVImage));
this.addChild(this._mvSplash);
}
if (Liquidize.MadeWithMV.ShowCustom) {
this._customSplash = new Sprite(ImageManager.loadSystem(Liquidize.MadeWithMV.CustomImage));
this._customSplash.opacity = 0;
this.addChild(this._customSplash);
}
};
Scene_Splash.prototype.centerSprite = function(sprite) {
sprite.x = Graphics.width / 2;
sprite.y = Graphics.height / 2;
sprite.anchor.x = 0.5;
sprite.anchor.y = 0.5;
};
Scene_Splash.prototype.gotoTitleOrTest = function() {
Scene_Base.prototype.start.call(this);
SoundManager.preloadImportantSounds();
if (DataManager.isBattleTest()) {
DataManager.setupBattleTest();
SceneManager.goto(Scene_Battle);
} else if (DataManager.isEventTest()) {
DataManager.setupEventTest();
SceneManager.goto(Scene_Map);
} else {
this.checkPlayerLocation();
DataManager.setupNewGame();
SceneManager.goto(Scene_Title);
Window_TitleCommand.initCommandPosition();
}
this.updateDocumentTitle();
};
Scene_Splash.prototype.updateDocumentTitle = function() {
document.title = $dataSystem.gameTitle;
};
Scene_Splash.prototype.checkPlayerLocation = function() {
if ($dataSystem.startMapId === 0) {
throw new Error('Player\'s starting position is not set');
}
};
})();