Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------------------------------
- // Galv's Bust Menu
- //-----------------------------------------------------------------------------
- // For: RPGMAKER MV
- // GALV_BustMenu.js
- //-----------------------------------------------------------------------------
- // 2016-03-28 - Version 1.7 - added ability to disable certain info with -1
- // 2016-02-12 - Version 1.6 - Added nickname, made changable actor display no.
- // 2016-01-12 - Version 1.5 - Fixed MAX level and EXP bar issue.
- // - compatibility: Rocketmancers prettier gauges
- // 2015-11-21 - Version 1.4 - fixed tiny JP alignment issue
- // 2015-11-21 - Version 1.3 - added compatiblity for Yanfly's JobPoints
- // 2015-11-19 - Version 1.2 - fixed issue with drawing single character bust
- // 2015-11-08 - Version 1.1 - added EXP bar and settings
- // 2015-11-07 - Version 1.0 - release
- //-----------------------------------------------------------------------------
- // Terms can be found at:
- // galvs-scripts.com
- //-----------------------------------------------------------------------------
- var Imported = Imported || {};
- Imported.Galv_BustMenu = true;
- var Galv = Galv || {}; // Galv's main object
- Galv.BM = Galv.BM || {}; // Galv's stuff
- //-----------------------------------------------------------------------------
- /*:
- * @plugindesc Changes the default actor layout in the main menu to use
- * vertical "bust" or portrait graphics from /img/pictures/
- * @author Galv - galvs-scripts.com
- *
- * @param Menu Actors
- * @desc Number of actors that appear in the menu before scrolling (can be changed in-game)
- * @default 3
- *
- * @param Menu Actor Rows
- * @desc Number of rows of actors (cannot be changed in-game). You will need to change settings below to fit
- * @default 1
- *
- * @param Name
- * @desc Line number of actor's name
- * -1 to not display
- * @default 1
- *
- * @param Nickname
- * @desc Line number of actor's name
- * -1 to not display
- * @default 0
- *
- * @param Class
- * @desc Line number of actor's class
- * -1 to not display
- * @default 2
- *
- * @param Level
- * @desc Line number of actor's level
- * -1 to not display
- * @default 3
- *
- * @param States
- * @desc Line number of actor's state icons
- * -1 to not display
- * @default 13
- *
- * @param Bars
- * @desc Line number of actor's hp/mp bars
- * -1 to not display
- * @default 14
- *
- * @param Show Exp Bar
- * @desc Can be true or false to display exp bar or not
- * @default true
- *
- * @param Exp Bar
- * @desc Line number of actor's EXP bar
- * -1 to not display
- * @default 4
- *
- * @param JP
- * @desc Line number of actor's JP (If Yanfly's JobPoints is installed)
- * -1 to not display
- * @default 2
- *
- * @param Exp Bar Height
- * @desc Height of the EXP bar in pixels
- * @default 10
- *
- * @param Show Exp Text
- * @desc Can be true or false to display exp text on the bar or not
- * @default true
- *
- * @param Exp Text
- * @desc Text displayed before the exp-till-next-level number
- * @default Next
- *
- * @param Max Exp Text
- * @desc When actor reaches maximum level, this text is displayed on exp bar
- * @default Max
- *
- * @param Exp Bar Color 1
- * @desc Uses text color numbers from windowskin file. Will gradient into color 2
- * @default 0
- *
- * @param Exp Bar Color 2
- * @desc Uses text color numbers from windowskin file. Will gradient into color 1
- * @default 8
- *
- * @param Bust Y
- * @desc Y position of the bust image in pixels
- * @default 100
- *
- * @param Bust Height
- * @desc Height of the bust image in pixels
- * @default 360
- *
- * @param -----------
- * @desc
- *
- * @default
- *
- * @param Bust Offsets
- * @desc See the help section for how to use this.
- * @default
- *
- * @help
- * Galv's Bust Menu
- * ----------------------------------------------------------------------------
- * This plugin changes the layout of actors in the main menu. The plugin
- * includes settings that allow you to change the positioning of the actor
- * data (such as name, level, hp, image, etc.) including how many actors will
- * appear on the menu screen. (NOTE: 1 actor is not working)
- *
- * The plugin displays bust images from /img/pictures/ folder based on the
- * actor's face. For example:
- * If an actor uses the 2nd face from the "Actor1" faces file, then the bust
- * will instead use /img/pictures/Actor1_2.png bust image.
- *
- * ----------------------------------------------------------------------------
- * Bust Offsets (Scroll down the plugin settings to find this)
- * ----------------------------------------------------------------------------
- * Bust images are centered in the actor positions, but sometimes the bust
- * images are not centered themselves. This setting is used to tweak the x,y
- * position of busts if required.
- * To add an x,y offset to busts, add data to this setting as below:
- *
- * bustImageName_1,x,y|bustImageName_2,x,y|bustImageName_3,x,y
- *
- * Each image and data are separated by a pipe (the "|" symbol). For example:
- * Actor1_2,-10,0|Actor1_5,20,5
- * The Actor1_2.png bust will be offset 10 pixels to the left
- * The Actor1_5.png bust will be offset 20 pixels to the right, 5 pixels down
- * ----------------------------------------------------------------------------
- * SCRIPT CALL
- * ----------------------------------------------------------------------------
- * $gameParty._bustActorCount = x; // x is number of actors to display
- * ----------------------------------------------------------------------------
- */
- //-----------------------------------------------------------------------------
- // CODE STUFFS
- //-----------------------------------------------------------------------------
- (function() {
- Galv.BM.a = Number(PluginManager.parameters('Galv_BustMenu')["Menu Actors"]);
- Galv.BM.ar = Number(PluginManager.parameters('Galv_BustMenu')["Menu Actor Rows"]);
- Galv.BM.name = Number(PluginManager.parameters('Galv_BustMenu')["Name"] - 1);
- Galv.BM.nickname = Number(PluginManager.parameters('Galv_BustMenu')["Nickname"] - 1);
- Galv.BM.class = Number(PluginManager.parameters('Galv_BustMenu')["Class"] - 1);
- Galv.BM.level = Number(PluginManager.parameters('Galv_BustMenu')["Level"] - 1);
- Galv.BM.bars = Number(PluginManager.parameters('Galv_BustMenu')["Bars"] - 1);
- Galv.BM.JP = Number(PluginManager.parameters('Galv_BustMenu')["JP"] - 1);
- Galv.BM.xp = Number(PluginManager.parameters('Galv_BustMenu')["Exp Bar"] - 1);
- Galv.BM.xpBar = PluginManager.parameters('Galv_BustMenu')["Show Exp Bar"] == "true" ? true : false;
- Galv.BM.xpText = PluginManager.parameters('Galv_BustMenu')["Show Exp Text"] == "true" ? true : false;
- Galv.BM.xpLabel = PluginManager.parameters('Galv_BustMenu')["Exp Text"];
- Galv.BM.xpHeight = PluginManager.parameters('Galv_BustMenu')["Exp Bar Height"];
- Galv.BM.maxTxt = PluginManager.parameters('Galv_BustMenu')["Max Exp Text"];
- Galv.BM.xpCol1 = Number(PluginManager.parameters('Galv_BustMenu')["Exp Bar Color 1"]);
- Galv.BM.xpCol2 = Number(PluginManager.parameters('Galv_BustMenu')["Exp Bar Color 2"]);
- Galv.BM.icons = Number(PluginManager.parameters('Galv_BustMenu')["States"] - 1);
- Galv.BM.bust = Number(PluginManager.parameters('Galv_BustMenu')["Bust Y"]);
- Galv.BM.bustHeight = Number(PluginManager.parameters('Galv_BustMenu')["Bust Height"]);
- Galv.BM.offsets = function() {
- var array = PluginManager.parameters('Galv_BustMenu')["Bust Offsets"].split("|");
- var obj = {};
- for (i = 0; i < array.length; i++) {
- if (array[i]) {
- var data = array[i].split(",");
- obj[data[0]] = [Number(data[1]),Number(data[2])];
- };
- };
- return obj;
- }();
- //------------------------------------------------------------
- // COMPATIBILITY WITH ROCKETMANCER'S PRETTIER GAUGES
- if (PluginManager.parameters('PrettyGauges') && Object.keys(PluginManager.parameters('PrettyGauges')).length > 0) {
- Galv.BM.rmplugin = true;
- };
- //------------------------------------------------------------
- var Galv_Game_Party_initialize = Game_Party.prototype.initialize;
- Game_Party.prototype.initialize = function() {
- Galv_Game_Party_initialize.call(this);
- this._bustActorCount = Galv.BM.a;
- };
- // OVERWRITE
- Window_MenuStatus.prototype.numVisibleRows = function() {return Galv.BM.ar};
- Window_MenuStatus.prototype.maxCols = function() {return $gameParty._bustActorCount};
- Window_Selectable.prototype.spacing = function() {return 0};
- Window_MenuStatus.prototype.drawItemStatus = function(index) {
- var actor = $gameParty.members()[index];
- var rect = this.itemRect(index);
- var x = rect.x;
- var y = rect.y;
- var width = rect.width - x - this.textPadding();
- this.drawActorSimpleStatus(actor, x, y, width);
- };
- // OVERWRITE
- Window_MenuStatus.prototype.drawActorSimpleStatus = function(actor, x, y, width) {
- var lineHeight = this.lineHeight();
- var width = this.bustWidth();
- var x = x + 5;
- var width2 = Math.max(100, width - this.textPadding()) - 5;
- if (Galv.BM.xp > -1) this.drawActorEXP(actor,x,y + lineHeight * Galv.BM.xp,width2)
- if (Galv.BM.name > -1) this.drawActorName(actor, x, y + lineHeight * Galv.BM.name);
- if (Galv.BM.nickname > -1) this.drawActorNickname(actor, x, y + lineHeight * Galv.BM.nickname);
- if (Galv.BM.level > -1) this.drawActorLevel(actor, x, y + lineHeight * Galv.BM.level);
- if (Galv.BM.icons > -1) this.drawActorIcons(actor, x, y + lineHeight * Galv.BM.icons);
- if (Galv.BM.class > -1) this.drawActorClass(actor, x, y + lineHeight * Galv.BM.class, width2);
- if (Galv.BM.bars > -1) {
- this.drawActorHp(actor, x, y + lineHeight * Galv.BM.bars, width2);
- this.drawActorMp(actor, x, y + lineHeight * (Galv.BM.bars + 1), width2);
- if (Imported.YEP_CoreEngine && eval(Yanfly.Param.MenuTpGauge)) {
- this.drawActorTp(actor, x, y + lineHeight * (Galv.BM.bars + 2), width2);
- }
- };
- if (Imported.YEP_JobPoints && eval(Yanfly.Param.JpShowMenu)) {
- var classId = actor.currentClass().id;
- if (Galv.BM.JP > -1) this.drawActorJp(actor, classId, x, y + lineHeight * Galv.BM.JP, width2, 'right');
- };
- };
- Game_Actor.prototype.xpRate = function() {
- return (this.nextLevelExp() - this.currentExp()) / (this.nextLevelExp() - this.currentLevelExp());
- };
- Window_MenuStatus.prototype.drawActorEXP = function(actor, x, y, width) {
- if (Galv.BM.xpBar) {
- var color1 = this.xpGaugeColor1();
- var color2 = this.xpGaugeColor2();
- if (actor.isMaxLevel()) {
- var xprate = 0;
- } else {
- var xprate = actor.xpRate();
- };
- this.drawExpGauge(x, y, width, xprate, color1, color2);
- };
- if (Galv.BM.xpText) {
- this.changeTextColor(this.systemColor());
- this.drawText(xprate > 0 ? Galv.BM.xpLabel : Galv.BM.maxTxt, x, y, this.textWidth());
- this.changeTextColor(this.normalColor());
- if (xprate > 0) this.drawText(actor.nextRequiredExp(), x, y, width,"right");
- };
- };
- if (Galv.BM.rmplugin) {
- // IF ROCKETMANCER'S PRETTIER GAUGES PLUGIN
- var parameters = PluginManager.parameters('PrettyGauges');
- var barTypeLeft = String(parameters['barType']).substring(0,1);
- var barTypeRight = String(parameters['barType']).substring(1,2)
- var outline = Number(parameters['outline'] || 0);
- var barHeight = Number(parameters['barHeight'] || 0);
- var outlineColor1 = String(parameters['outlineColor1']);
- var outlineColor2 = String(parameters['outlineColor2']);
- var backgroundColor1 = String(parameters['backgroundColor1']);
- var backgroundColor2 = String(parameters['backgroundColor2']);
- var hpColor1 = String(parameters['hpColor1']);
- var hpColor2 = String(parameters['hpColor2']);
- var mpColor1 = String(parameters['mpColor1']);
- var mpColor2 = String(parameters['mpColor2']);
- var tpColor1 = String(parameters['tpColor1']);
- var tpColor2 = String(parameters['tpColor2']);
- Window_Base.prototype.drawExpGauge = function(x, y, width, rate, color1, color2) {
- var color3 = this.gaugeBackColor();
- var fillW = Math.floor(width * rate).clamp(0, width);
- var gaugeH = Galv.BM.xpHeight;
- var gaugeY = y + this.lineHeight() - gaugeH - 2;
- var fillW = Math.floor(width * rate);
- var gaugeY = y + this.lineHeight() - gaugeH - 2;
- var fillW = Math.floor(width * rate);
- var gaugeY = y + this.lineHeight() - 2 - barHeight;
- this.contents.fillTrap(x, gaugeY, width, width, barHeight, this.gaugeBackColor1(), this.gaugeBackColor2());
- this.contents.fillTrap(x, gaugeY, width, fillW, barHeight, color1, color2);
- if (outline) { this.contents.outlineTrap(x, gaugeY, width, barHeight, outlineColor1, outlineColor2)}
- };
- } else {
- // IF GALV ONLY
- Window_Base.prototype.drawExpGauge = function(dx, dy, dw, rate, color1, color2) {
- var color3 = this.gaugeBackColor();
- var fillW = Math.floor(dw * rate).clamp(0, dw);
- var gaugeH = Galv.BM.xpHeight;
- var gaugeY = dy + this.lineHeight() - gaugeH - 2;
- var fillW = Math.floor(dw * rate);
- var gaugeY = dy + this.lineHeight() - gaugeH - 2;
- this.contents.fillRect(dx, gaugeY, dw, gaugeH, color3);
- this.contents.gradientFillRect(dx, gaugeY, dw - fillW, gaugeH, color1, color2);
- };
- };
- Window_Base.prototype.xpGaugeColor1 = function() {
- return this.textColor(Galv.BM.xpCol1);
- };
- Window_Base.prototype.xpGaugeColor2 = function() {
- return this.textColor(Galv.BM.xpCol2);
- };
- // Because blt didn't let you draw a bitmap if it was a tiny bit off
- Bitmap.prototype.unlimitedBlt = function(source, sx, sy, sw, sh, dx, dy, dw, dh) {
- dw = dw || sw;
- dh = dh || sh;
- this._context.globalCompositeOperation = 'source-over';
- this._context.drawImage(source._canvas, sx, sy, sw, sh, dx, dy, dw, dh);
- this._setDirty();
- };
- Window_MenuStatus.prototype.drawFace = function(faceName, faceIndex, x, y, width, height) {
- var width = this.bustWidth();
- var bustName = faceName + "_" + (faceIndex + 1)
- var bitmap = ImageManager.loadPicture(bustName);
- var ox = 0;
- var oy = 0;
- if (Galv.BM.offsets[bustName]) {
- ox = Galv.BM.offsets[bustName][0] || 0;
- oy = Galv.BM.offsets[bustName][1] || 0;
- };
- var sw = width;
- var sh = Galv.BM.bustHeight;
- var dx = x - 1;
- var dy = y + Galv.BM.bust;
- var sx = bitmap.width / 2 - width / 2 - ox;
- var sy = oy;
- this.contents.unlimitedBlt(bitmap, sx, sy, sw, sh, dx, dy);
- };
- Window_MenuStatus.prototype.bustWidth = function() {
- return Math.floor((this.width - (this.standardPadding() * 2)) / this.maxCols());
- };
- Window_MenuStatus.prototype.cursorDown = function(wrap) {
- var index = this.index();
- var maxItems = this.maxItems();
- var maxCols = this.maxCols();
- if (index < maxItems - maxCols || (wrap && maxCols === 1)) {
- this.select((index + maxCols) % maxItems);
- } else {
- this.select(maxItems - 1);
- }
- };
- Window_MenuStatus.prototype.cursorUp = function(wrap) {
- var index = this.index();
- var maxItems = this.maxItems();
- var maxCols = this.maxCols();
- if (index >= maxCols || (wrap && maxCols === 1)) {
- this.select((index - maxCols + maxItems) % maxItems);
- } else {
- this.select(0);
- }
- };
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement