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.

199 lines
6.4 KiB
JavaScript

3 years ago
//=============================================================================
// Salted Fish Plugins - Scene Menu
// SF_SceneMenu.js
//=============================================================================
var Imported = Imported || {};
Imported.SF_SceneMenu = true;
var SF_Plugins = SF_Plugins || {};
//=============================================================================
/*:
* @plugindesc Scene Menu
* @author SaltedFish
*
* @help
*
* This plugin does not provide plugin commands.
*/
//=============================================================================
(function () {
var SF_SceneMenu = {};
SF_Plugins.SF_SceneMenu = SF_SceneMenu;
SF_SceneMenu.version = 1.0;
SF_SceneMenu.dialogContents = ['文本文本文本文本文本'];
//=============================================================================
// Sprite Dialog
//=============================================================================
function Sprite_Dialog() {
this.initialize.apply(this, arguments);
}
Sprite_Dialog.prototype = Object.create(Sprite.prototype);
Sprite_Dialog.prototype.constructor = Sprite_Dialog;
Sprite_Dialog.prototype.initialize = function () {
Sprite.prototype.initialize.call(this);
this._backgroundSprite = new Sprite(ImageManager.loadSceneMenu('dialog_background'));
this._textSprite = new Sprite();
this._textSprite.bitmap = new Bitmap(300, 180);
this._textSprite.move(10, 10);
this._textSprite.bitmap.fontSize = 24;
this._textSprite.bitmap.textColor = '#ffffff';
this.addChild(this._backgroundSprite);
this.addChild(this._textSprite);
this._tmpWindow = new Window_Base(0, 0, this._textSprite.width, this._textSprite.height);
this._tmpWindow.rotation = 0;
this._tmpWindow.contents = this._textSprite.bitmap;
this._tmpWindow.opacity = 0;
this._needFadeIn = false;
this._needMoveIn = false;
}
Sprite_Dialog.prototype.setText = function (text) {
this._tmpWindow.contents.clear();
this._tmpWindow.drawTextEx(text, 0, 0);
this._textSprite.bitmap.blt(this._tmpWindow.contents, 0, 0, this._textSprite.width, this._textSprite.height, 0, 0);
}
Sprite_Dialog.prototype.update = function () {
Sprite.prototype.update.call(this);
}
//=============================================================================
// Scene Menu
//=============================================================================
Scene_Menu.prototype.initialize = function () {
Scene_Base.prototype.initialize.call(this);
this.button_name = {// button name: [x, y]
'title': [897, 278],
'actor': [438, 175],
'formation': [645, 94],
'save': [868, 94],
"quest": [756, 278],
'options': [746, 33],
'achivement': [645, 278],
'help': [814, 33],
'cancel': [678, 463],
'database': [438, 348],
};
}
Scene_Menu.prototype.create = function () {
Scene_Base.prototype.create.call(this);
this.createWindowLayer();
this.createBackSprite();
this.createRotateContainer();
this.createDialog();
this.createCommandButton();
}
Scene_Menu.prototype.createRotateContainer = function () {
this._rotateContainer = new Sprite();
this.addChild(this._rotateContainer);
}
Scene_Menu.prototype.createBackSprite = function () {
this._backSprite = new Sprite(ImageManager.loadSceneMenu('background'));
this.addChild(this._backSprite);
}
Scene_Menu.prototype.createDialog = function () {
this._dialogSprite = new Sprite_Dialog();
this._rotateContainer.addChild(this._dialogSprite);
this._dialogSprite.move(37, 167);
this._dialogSprite.setText(
SF_SceneMenu.dialogContents[
Math.floor(Math.random() * SF_SceneMenu.dialogContents.length)
]
);
}
Scene_Menu.prototype.createCommandButton = function () {
for (var key in this.button_name) {
var button = new Sprite_SFButton();
this._rotateContainer.addChild(button);
button.move(this.button_name[key][0], this.button_name[key][1]);
button.setHotBitmap(ImageManager.loadSceneMenu(key + '_hot'));
button.setColdBitmap(ImageManager.loadSceneMenu(key + '_cold'));
button.setClickHandler(this['on_' + key + "_button"].bind(this));
button.deactivate();
button.refresh();
this['_' + key + '_buttonSprite'] = button;
}
}
Scene_Menu.prototype.start = function () {
Scene_MenuBase.prototype.start.call(this);
for (var key in this.button_name) {
this['_' + key + '_buttonSprite'].activate();
}
this._backSprite.move(Graphics.boxWidth - this._backSprite.bitmap.width, (Graphics.boxHeight - this._backSprite.bitmap.height) / 2);
this.pivot.x = Graphics.boxWidth / 2;
this.pivot.y = Graphics.boxHeight / 2;
this.x = Graphics.boxWidth / 2;
this.y = Graphics.boxHeight / 2;
this.rotation = -0.03;
}
Scene_Menu.prototype.update = function () {
Scene_MenuBase.prototype.update.call(this);
}
Scene_Menu.prototype.on_title_button = function () {
this.fadeOutAll();
SceneManager.goto(Scene_Title);
}
Scene_Menu.prototype.on_actor_button = function () {
SceneManager.push(Scene_Actor);
}
Scene_Menu.prototype.on_formation_button = function () {
SceneManager.push(Scene_Formation);
}
Scene_Menu.prototype.on_save_button = function () {
SceneManager.push(Scene_Save);
}
Scene_Menu.prototype.on_quest_button = function () {
SceneManager.push(Scene_Quest);
}
Scene_Menu.prototype.on_options_button = function () {
SceneManager.push(Scene_Options);
}
Scene_Menu.prototype.on_achivement_button = function () {
SceneManager.push(Scene_Achievement);
}
Scene_Menu.prototype.on_help_button = function () {
SceneManager.push(Scene_Help);
}
Scene_Menu.prototype.on_cancel_button = function () {
this.popScene();
}
Scene_Menu.prototype.on_database_button = function () {
SceneManager.push(Scene_Database);
}
})();