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.

253 lines
8.5 KiB
JavaScript

//=============================================================================
// Salted Fish Plugins - Scene Splash
// SF_SceneSplash.js
//=============================================================================
"use strict";
var Imported = Imported || {};
Imported.SF_SceneSplash = true;
var SF_Plugins = SF_Plugins || {};
//=============================================================================
/*:
* @plugindesc v1.0.0 - Scene Splash
* @author Salted Fish
*
* @help
*
* ===========================================================================
* Introduction
* ===========================================================================
*
* This plugin adds a splash scene after Scene_Boot.
*/
//=============================================================================
(function () {
var SF_SceneSplash = {};
SF_Plugins.SF_SceneSplash = SF_SceneSplash;
SF_SceneSplash.version = 1.0;
SF_SceneSplash.FADE_IN_FRAMES = 60; // Number of frames for the fade in effect.
SF_SceneSplash.FADE_OUT_FRAMES = 60; // Number of frames for the fade out effect.
SF_SceneSplash.SHOW_TIME = 150; // Number of frames for the splash to be shown.
//=============================================================================
// Sprite_SplashBase
//=============================================================================
function Sprite_SplashBase() {
this.initialize.apply(this, arguments);
}
Sprite_SplashBase.prototype = Object.create(Sprite.prototype);
Sprite_SplashBase.prototype.constructor = Sprite_SplashBase;
Sprite_SplashBase.prototype.initialize = function (index) {
Sprite.prototype.initialize.call(this);
this.state = "fadeIn"; // "fadeIn", "show", "fadeOut"
this.FADE_IN_FRAMES = SF_SceneSplash.FADE_IN_FRAMES;
this.FADE_OUT_FRAMES = SF_SceneSplash.FADE_OUT_FRAMES;
this.SHOW_TIME = SF_SceneSplash.SHOW_TIME;
this.index = index;
this.showTime = 0;
this.opacity = 0;
};
Sprite_SplashBase.prototype.update = function () {
Sprite.prototype.update.call(this);
if (TouchInput.isTriggered()) {
this.state = "fadeOut";
}
if (this.state === "fadeIn") {
this.updateFadeIn();
} else if (this.state === "show") {
this.updateShow();
} else if (this.state === "fadeOut") {
this.updateFadeOut();
}
};
Sprite_SplashBase.prototype.updateFadeIn = function () {
this.opacity += 255 / this.FADE_IN_FRAMES;
if (this.opacity >= 255) {
this.opacity = 255;
this.state = "show";
}
};
Sprite_SplashBase.prototype.updateShow = function () {
this.opacity = 255;
this.updateShowTime();
};
Sprite_SplashBase.prototype.updateShowTime = function () {
this.showTime++;
if (this.showTime >= this.SHOW_TIME) {
this.state = "fadeOut";
}
};
Sprite_SplashBase.prototype.updateFadeOut = function () {
this.opacity -= 255 / this.FADE_OUT_FRAMES;
if (this.opacity <= 0) {
this.opacity = 0;
this.state = "fadeIn";
this.showTime = 0;
if (this.index + 1 < SF_SceneSplash.SpriteClassList.length) {
var spriteClass = SF_SceneSplash.SpriteClassList[this.index + 1];
var sprite = new spriteClass(this.index + 1);
this.parent.addChild(sprite);
} else {
SceneManager.pop();
}
this.parent.removeChild(this);
}
};
Sprite_SplashBase.prototype.centerSelf = function () {
this.anchor.x = 0.5;
this.anchor.y = 0.5;
this.x = Graphics.width / 2;
this.y = Graphics.height / 2;
};
//=============================================================================
// Sprite_SplashLogo
//=============================================================================
function Sprite_SplashLogo() {
this.initialize.apply(this, arguments);
}
Sprite_SplashLogo.prototype = Object.create(Sprite_SplashBase.prototype);
Sprite_SplashLogo.prototype.constructor = Sprite_SplashLogo;
Sprite_SplashLogo.prototype.initialize = function (index) {
Sprite_SplashBase.prototype.initialize.call(this, index);
this.bitmap = ImageManager.loadSceneSplash("spalsh_logo");
this.centerSelf();
};
//=============================================================================
// Sprite_SplashHealthTip
//=============================================================================
function Sprite_SplashHealthTip() {
this.initialize.apply(this, arguments);
}
Sprite_SplashHealthTip.prototype = Object.create(Sprite_SplashBase.prototype);
Sprite_SplashHealthTip.prototype.constructor = Sprite_SplashHealthTip;
Sprite_SplashHealthTip.prototype.initialize = function (index) {
Sprite_SplashBase.prototype.initialize.call(this, index);
this.bitmap = ImageManager.loadSceneSplash("spalsh_health_tip");
this.centerSelf();
};
//=============================================================================
// Sprite_SplashAdapted
//=============================================================================
function Sprite_SplashAdapted() {
this.initialize.apply(this, arguments);
}
Sprite_SplashAdapted.prototype = Object.create(Sprite_SplashBase.prototype);
Sprite_SplashAdapted.prototype.constructor = Sprite_SplashAdapted;
Sprite_SplashAdapted.prototype.initialize = function (index) {
Sprite_SplashBase.prototype.initialize.call(this, index);
this.bitmap = ImageManager.loadSceneSplash("splash_adapted");
this.centerSelf();
};
//=============================================================================
// Sprite_SplashEnd
//=============================================================================
function Sprite_SplashEnd() {
this.initialize.apply(this, arguments);
}
Sprite_SplashEnd.prototype = Object.create(Sprite_SplashBase.prototype);
Sprite_SplashEnd.prototype.constructor = Sprite_SplashEnd;
Sprite_SplashEnd.prototype.initialize = function (index) {
Sprite_SplashBase.prototype.initialize.call(this, index);
SceneManager.pop();
};
//=============================================================================
// Sprite Class for Scene Splash
//=============================================================================
SF_SceneSplash.SpriteClassList = [
Sprite_SplashLogo,
Sprite_SplashHealthTip,
Sprite_SplashAdapted,
Sprite_SplashEnd,
];
//=============================================================================
// Scene_Splash
//=============================================================================
function Scene_Splash() {
this.initialize.apply(this, arguments);
}
window.Scene_Splash = Scene_Splash;
SF_SceneSplash.Scene_Splash = Scene_Splash;
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);
};
Scene_Splash.prototype.create = function () {
Scene_Base.prototype.create.call(this);
this.createBackground();
this.createSplash();
};
Scene_Splash.prototype.createBackground = function () {
var bitmap = new Bitmap(Graphics.width, Graphics.height);
bitmap.fillAll("white");
this._backgroundSprite = new Sprite(bitmap);
this.addChild(this._backgroundSprite);
};
Scene_Splash.prototype.createSplash = function () {
var spriteClass = SF_SceneSplash.SpriteClassList[0];
var sprite = new spriteClass(0);
this.addChild(sprite);
};
Scene_Splash.prototype.start = function () {
Scene_Base.prototype.start.call(this);
};
Scene_Splash.prototype.update = function () {
Scene_Base.prototype.update.call(this);
};
//=============================================================================
// SceneManager
//=============================================================================
SF_SceneSplash.SceneManager_initialize = SceneManager.initialize;
SceneManager.initialize = function () {
SF_SceneSplash.SceneManager_initialize.apply(this, arguments);
this.addSceneBefore(Scene_Splash, Scene_Title);
};
})();