Credit Data
The data for the credit information.
This is a plugin that adds an entirely new scene to your game for the purpose of giving credit!
Credits Plugin
Version 1.11
SomeRanDev
This plugin requires the Game Upgrade plugin:
http://sumrndm.site/game-upgrade/
This is a plugin that adds an entirely new scene to your game for the
purpose of giving credit!
==========================================================================
Calling the Credits Page
==========================================================================
In order to open the Credits, simply use the Plugin Command:
OpenCredits
Or, alternatively, you can use the script call:
SceneManager.push(Scene_SRD_Credits)
If you wish to bind it to the menu using Yanfly's Main Menu Manager,
use the following bind:
this.openCredits.bind(this)
==========================================================================
Creating Credits Data
==========================================================================
To set up all the credit information, you must use the Credit Data
Parameter. The structure of the data is set of like this:
Categories
= Category
- Name
- Credits
= Credit
- Name
- URL
- Description
There is some sample data already set up.
Please feel free to use it as an example!
==========================================================================
End of Help File
==========================================================================
Welcome to the bottom of the Help file.
Thanks for reading!
If you have questions, or if you enjoyed this Plugin, please check
out my YouTube channel!
https://www.youtube.com/c/SumRndmDde
Until next time,
~ SomeRanDev
var SRD = SRD || {};
SRD.Credits = SRD.Credits || {};
var Imported = Imported || {};
Imported["SumRndmDde Credits"] = 1.11;
function Scene_SRD_Credits() {
this.initialize.apply(this, arguments);
}
function Window_CreditsDescripton() {
this.initialize.apply(this, arguments);
}
function Window_CreditsCategory() {
this.initialize.apply(this, arguments);
}
function Window_CreditsList() {
this.initialize.apply(this, arguments);
}
(function(_) {
"use strict";
//-----------------------------------------------------------------------------
// SRD.Requirements
//-----------------------------------------------------------------------------
_.alertNeedGameUpgrade = function() {
alert("The 'SRD_GameUpgrade' plugin is required for using the 'SRD_CreditsPlugin' plugin.");
if(confirm("Do you want to open the download page to 'SRD_GameUpgrade'?")) {
window.open('http://sumrndm.site/game-upgrade/');
}
};
if(!Imported["SumRndmDde Game Upgrade"]) {
_.alertNeedGameUpgrade();
return;
}
//-----------------------------------------------------------------------------
// SRD.Credits
//-----------------------------------------------------------------------------
var params = PluginManager.parameters('SRD_CreditsPlugin');
if(params['File Location']) {
alert("Please update the parameters for 'SRD_CreditsPlugin'!");
return;
}
_.data = SRD.parse(params['Credit Data'], true);
_.location = String(params['File Location']);
_.useTitle = String(params['Add to Title?']).trim().toLowerCase() === 'true';
_.titleName = String(params['Command Name']);
_.descWindow = String(params['Use Desc. Window']).trim().toLowerCase() === 'true';
_.creditWidth = parseInt(params['Credit Window Width']);
_.fontSize = parseInt(params['Desc. Text Size']);
_.rows = parseInt(params['Category Rows']);
_.columns = parseInt(params['Category Columns']);
_.align = String(params['Text Alignment']);
_.categories = [];
_.lists = {};
_.fileInfo = '';
_.setup = function() {
for(let i = 0; i < _.data.length; i++) {
const data = _.data[i];
const category = data['Name'];
const credits = data['Credits'];
_.categories.push(category);
_.lists[category] = [];
for(let j = 0; j < credits.length; j++) {
const credit = credits[j];
_.lists[category][j] = {};
if(credit['Name']) {
_.lists[category][j].name = credit['Name'];
}
if(credit['URL']) {
_.lists[category][j].link = credit['URL'];
}
if(credit['Description']) {
_.lists[category][j].desc = credit['Description'];
}
}
}
};
_.setup();
//-----------------------------------------------------------------------------
// Game_Interpreter
//-----------------------------------------------------------------------------
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
_Game_Interpreter_pluginCommand.apply(this, arguments);
if(command.trim().toLowerCase() === 'OpenCredits') {
SceneManager.push(Scene_SRD_Credits);
}
};
//-----------------------------------------------------------------------------
// Scene_Base
//-----------------------------------------------------------------------------
Scene_Base.prototype.openCredits = function() {
SceneManager.push(Scene_SRD_Credits);
};
//-----------------------------------------------------------------------------
// Scene_Title
//-----------------------------------------------------------------------------
Scene_Title.prototype.openCredits = function() {
this._commandWindow.close();
SceneManager.push(Scene_SRD_Credits);
};
var _Scene_Title_createCommandWindow = Scene_Title.prototype.createCommandWindow;
Scene_Title.prototype.createCommandWindow = function() {
_Scene_Title_createCommandWindow.apply(this, arguments);
if(_.useTitle) this._commandWindow.setHandler('srd-credits', this.openCredits.bind(this));
};
//-----------------------------------------------------------------------------
// Window_TitleCommand
//-----------------------------------------------------------------------------
var _Window_TitleCommand_makeCommandList = Window_TitleCommand.prototype.makeCommandList;
Window_TitleCommand.prototype.makeCommandList = function() {
_Window_TitleCommand_makeCommandList.apply(this, arguments);
if(_.useTitle) this.addCommand(_.titleName, 'srd-credits');
};
//-----------------------------------------------------------------------------
// Scene_SRD_Credits
//-----------------------------------------------------------------------------
Scene_SRD_Credits.prototype = Object.create(Scene_MenuBase.prototype);
Scene_SRD_Credits.prototype.constructor = Scene_SRD_Credits;
Scene_SRD_Credits.prototype.initialize = function() {
Scene_MenuBase.prototype.initialize.call(this);
};
Scene_SRD_Credits.prototype.create = function() {
Scene_MenuBase.prototype.create.call(this);
this.createWindowLayer();
this.createCategoryWindow();
this.createCreditsWindow();
if(_.descWindow) this.createDescriptionWindow();
};
Scene_SRD_Credits.prototype.createCategoryWindow = function() {
this._categoryWindow = new Window_CreditsCategory();
this._categoryWindow.setHandler('ok', this.onCategoryOk.bind(this));
this._categoryWindow.setHandler('cancel', this.popScene.bind(this));
this.addWindow(this._categoryWindow);
};
Scene_SRD_Credits.prototype.createCreditsWindow = function() {
var wy = this._categoryWindow.y + this._categoryWindow.height;
var wh = Graphics.boxHeight - wy;
var width = (_.descWindow) ? _.creditWidth : Graphics.boxWidth;
this._creditWindow = new Window_CreditsList(0, wy, width, wh);
this._creditWindow.setHandler('ok', this.onCreditOk.bind(this));
this._creditWindow.setHandler('cancel', this.onCreditCancel.bind(this));
this.addWindow(this._creditWindow);
this._categoryWindow.setCreditWindow(this._creditWindow);
};
Scene_SRD_Credits.prototype.createDescriptionWindow = function() {
this._descriptionWindow = new Window_CreditsDescripton(Graphics.boxWidth - _.creditWidth, this._creditWindow.height);
this._descriptionWindow.x = this._creditWindow.width;
this._descriptionWindow.y = this._creditWindow.y;
this.addWindow(this._descriptionWindow);
this._creditWindow.setDescriptionWindow(this._descriptionWindow);
};
Scene_SRD_Credits.prototype.onCategoryOk = function() {
this._creditWindow.activate();
this._creditWindow.selectLast();
};
Scene_SRD_Credits.prototype.onCreditOk = function() {
this.useCredit();
};
Scene_SRD_Credits.prototype.onCreditCancel = function() {
this._creditWindow.deselect();
this._categoryWindow.activate();
if(_.descWindow) this._descriptionWindow.clear();
};
Scene_SRD_Credits.prototype.useCredit = function() {
if(this.credit().link) SRD.openLink(this.credit().link)
this._creditWindow.activate();
};
Scene_SRD_Credits.prototype.credit = function() {
return this._creditWindow.credit();
};
//-----------------------------------------------------------------------------
// Window_CreditsCategory
//-----------------------------------------------------------------------------
Window_CreditsCategory.prototype = Object.create(Window_HorzCommand.prototype);
Window_CreditsCategory.prototype.constructor = Window_CreditsCategory;
Window_CreditsCategory.prototype.initialize = function() {
Window_HorzCommand.prototype.initialize.call(this, 0, 0);
};
Window_CreditsCategory.prototype.windowWidth = function() {
return Graphics.boxWidth;
};
Window_CreditsCategory.prototype.maxCols = function() {
return _.columns;
};
Window_CreditsCategory.prototype.numVisibleRows = function() {
return _.rows;
};
Window_CreditsCategory.prototype.update = function() {
Window_HorzCommand.prototype.update.call(this);
if (this._creditWindow) {
this._creditWindow.setCategory(this.currentSymbol());
}
};
Window_CreditsCategory.prototype.makeCommandList = function() {
for(var i = 0; i < _.categories.length; i++) {
this.addCommand(_.categories[i], _.categories[i]);
}
};
Window_CreditsCategory.prototype.setCreditWindow = function(creditWindow) {
this._creditWindow = creditWindow;
this.update();
};
//-----------------------------------------------------------------------------
// Window_CreditsList
//-----------------------------------------------------------------------------
Window_CreditsList.prototype = Object.create(Window_Selectable.prototype);
Window_CreditsList.prototype.constructor = Window_CreditsList;
Window_CreditsList.prototype.initialize = function(x, y, width, height) {
Window_Selectable.prototype.initialize.call(this, x, y, width, height);
this._category = 'none';
this._data = [];
};
Window_CreditsList.prototype.setCategory = function(category) {
if (this._category !== category) {
this._category = category;
this.refresh();
this.resetScroll();
}
};
Window_CreditsList.prototype.maxCols = function() {
return 1;
};
Window_CreditsList.prototype.spacing = function() {
return 48;
};
Window_CreditsList.prototype.maxItems = function() {
return this._data ? this._data.length : 1;
};
Window_CreditsList.prototype.credit = function() {
var index = this.index();
return this._data && index >= 0 ? this._data[index] : null;
};
Window_CreditsList.prototype.makeItemList = function() {
if(_.lists[this._category]) this._data = _.lists[this._category];
};
Window_CreditsList.prototype.drawItemName = function(item, x, y, width) {
width = width || 312;
if (item) {
this.resetTextColor();
this.drawText(item.name, x, y, width, _.align);
}
};
Window_CreditsList.prototype.selectLast = function() {
this.select(0);
};
Window_CreditsList.prototype.drawItem = function(index) {
var item = this._data[index];
if (item) {
var rect = this.itemRect(index);
rect.width -= this.textPadding();
this.drawItemName(item, rect.x + 10, rect.y, rect.width - 10);
this.changePaintOpacity(1);
}
};
Window_CreditsList.prototype.refresh = function() {
this.makeItemList();
this.createContents();
this.drawAllItems();
};
Window_CreditsList.prototype.setDescriptionWindow = function(descriptionWindow) {
this._descriptionWindow = descriptionWindow;
this.update();
};
Window_CreditsList.prototype.update = function() {
Window_Selectable.prototype.update.call(this);
if (this._descriptionWindow && this.credit() && this.credit().desc &&
this._descriptionWindow._value != this.credit().desc) {
this._descriptionWindow.setDescription(this.credit().desc);
} else if(this.credit() && !this.credit().desc) {
this._descriptionWindow.setDescription('');
}
};
//-----------------------------------------------------------------------------
// Window_CreditsDescripton
//-----------------------------------------------------------------------------
Window_CreditsDescripton.prototype = Object.create(Window_Base.prototype);
Window_CreditsDescripton.prototype.constructor = Window_CreditsDescripton;
Window_CreditsDescripton.prototype.initialize = function(width, height) {
Window_Base.prototype.initialize.call(this, 0, 0, width, height);
this._value = '';
};
Window_CreditsDescripton.prototype.refresh = function() {
this.contents.clear();
var lines = this._value.split(/[\n\r]/);
for(var i = 0; i < lines.length; i++) {
this.drawTextEx(lines[i], 0, i * this.lineHeight());
}
};
Window_CreditsDescripton.prototype.standardFontSize = function() {
return _.fontSize;
};
Window_CreditsDescripton.prototype.lineHeight = function() {
return this.standardFontSize() + 8;
};
Window_CreditsDescripton.prototype.setDescription = function(description) {
this._value = description;
this.refresh();
};
Window_CreditsDescripton.prototype.clear = function() {
this._value = '';
this.refresh();
};
})(SRD.Credits);