-
-
Save anonymous/abcc4bbbc348d6593c39 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//============================================================================= | |
// Gacha.js | |
// | |
// (c)2016 KADOKAWA CORPORATION./YOJI OJIMA | |
//============================================================================= | |
/*: | |
* @plugindesc Get the item at random | |
* @author Takeya Kimura (Customized use Item instead gold by ◆pYHAP3JyCg) | |
* | |
* @param Help Message Text | |
* @desc The help message for gacha window. "Required Amount" is replaced with the Required Amount. | |
* @default 1回Required Amount\Gでガチャを引きます | |
* | |
* @param Button Text | |
* @desc The button text for gacha commands. | |
* @default ガチャを引く | |
* | |
* @param Get Message Text | |
* @desc The message of After receiving. "Item Name" is replaced with the received item name. | |
* @default GET Item Name | |
* | |
* @param Show Item Description | |
* @desc The switch of item description display | |
* @default 0 | |
* | |
* @param Effect | |
* @desc The animation number for get effect. | |
* @default 119 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank1 Effect | |
* @desc The animation number for rank 1 effect. If you specify -1, does not display the animation. | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank2 Effect | |
* @desc The animation number for rank 2 effect. If you specify -1, does not display the animation. | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank3 Effect | |
* @desc The animation number for rank 3 effect. If you specify -1, does not display the animation. | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank4 Effect | |
* @desc The animation number for rank 4 effect. If you specify -1, does not display the animation. | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank5 Effect | |
* @desc The animation number for rank 5 effect. If you specify -1, does not display the animation. | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param ME | |
* @desc The ME name for get music effect. | |
* @default Organ | |
* @require 1 | |
* @dir audio/me/ | |
* @type file | |
* | |
* @param Required Items | |
* @desc Item Number if use Item instead Gold. 0=gold | |
* @default 0 | |
* | |
* @param Item Unit Name | |
* @desc Item unit name if use Item instead Gold. default empty | |
* @default | |
* | |
* @param Required Amount | |
* @desc The Gold for gacha. (Item count if use Item instead Gold) | |
* @default 100 | |
* | |
* @noteParam gachaImage | |
* @noteRequire 1 | |
* @noteDir img/gacha/ | |
* @noteType file | |
* @noteData items | |
* | |
* @help | |
* | |
* Plugin Command: | |
* Gacha open # Open the Gacha screen | |
* Gacha add item 1 # Add item #1 to the Gacha | |
* Gacha remove item 1 # Remove item #1 from the Gacha | |
* Gacha clear # Clear the Gacha | |
* | |
* | |
* Item Note: | |
* <gachaImage:image> # Gacha image file name. Please image put in "img/gacha/" folder. | |
* <gachaNumLot:10> # The number of the lottery. | |
* <gachaRank:5> # The rank of the item(1-5). | |
*/ | |
/*:ja | |
* @plugindesc ランダムにアイテムを取得します。 | |
* @author Takeya Kimura (アイテム消費バージョン by ◆pYHAP3JyCg@2ch) | |
* | |
* @param Help Message Text | |
* @desc ガチャ画面のヘルプメッセージです。「Required Amount」は消費Gと置換されます。 | |
* @default 1回Required Amount\Gでガチャを引きます | |
* | |
* @param Button Text | |
* @desc ガチャボタンに表示するテキストです。 | |
* @default ガチャを引く | |
* | |
* @param Get Message Text | |
* @desc ガチャを引いた後のメッセージです。「Item Name」は取得アイテム名と置換されます。 | |
* @default GET Item Name | |
* | |
* @param Show Item Description | |
* @desc 1でアイテム取得時に説明を表示します。[0: 説明非表示 1: 説明表示] | |
* @default 0 | |
* | |
* @param Effect | |
* @desc アイテム取得時のアニメーションIDを指定します。 | |
* @default 119 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank1 Effect | |
* @desc ランク1の時のアニメーションIDを指定します。-1を指定するとアニメーションを表示しません。 | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank2 Effect | |
* @desc ランク2の時のアニメーションIDを指定します。-1を指定するとアニメーションを表示しません。 | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank3 Effect | |
* @desc ランク3の時のアニメーションIDを指定します。-1を指定するとアニメーションを表示しません。 | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank4 Effect | |
* @desc ランク4の時のアニメーションIDを指定します。-1を指定するとアニメーションを表示しません。 | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param Rank5 Effect | |
* @desc ランク5の時のアニメーションIDを指定します。-1を指定するとアニメーションを表示しません。 | |
* @default -1 | |
* @require 1 | |
* @type animation | |
* | |
* @param ME | |
* @desc アイテム取得時のMEを指定します。 | |
* @default Organ | |
* @require 1 | |
* @dir audio/me/ | |
* @type file | |
* | |
* @param Required Items | |
* @desc ガチャを引くのに必要なアイテム番号。 0 ならゴールド | |
* @default 0 | |
* | |
* @param Item Unit Name | |
* @desc ガチャを引くのに必要なアイテムの単位。 デフォルト:個 | |
* @default 個 | |
* | |
* @param Required Amount | |
* @desc ガチャを引くのに必要なGです。(アイテムならアイテム数) | |
* @default 100 | |
* | |
* @noteParam gachaImage | |
* @noteRequire 1 | |
* @noteDir img/gacha/ | |
* @noteType file | |
* @noteData items | |
* | |
* @help | |
* | |
* Plugin Command: | |
* Gacha open # ガチャ画面を開きます。 | |
* Gacha add item 1 # アイテム番号1をガチャ対象に追加します。 | |
* Gacha remove item 1 # アイテム番号1をガチャ対象から外します。 | |
* Gacha clear # 全てのガチャ対象をクリアします。 | |
* | |
* | |
* Item Note: | |
* <gachaImage:image> # ガチャアイテムの画像を指定します。画像はimg/gacha/フォルダ内に入れてください。 | |
* <gachaNumLot:10> # ガチャアイテムのくじ数を指定します。 | |
* <gachaRank:5> # ガチャアイテムのランクを1から5の間で指定します。 | |
*/ | |
(function () { | |
var parameters = PluginManager.parameters('Gacha'); | |
var message = String(parameters['Help Message Text'] || '1回Required Amount\\Gでガチャを引きます'); | |
var buttonText = String(parameters['Button Text'] || 'ガチャを引く'); | |
var getText = String(parameters['Get Message Text'] || 'GET Item Name'); | |
var itemDescEnable = !!Number(parameters['Show Item Description'] || 0); | |
var effect = Number(parameters['Effect'] || '119'); | |
var itemId = parseInt(parameters['Required Items']) || 0; | |
var itemIdUnit = parameters['Item Unit Name']; | |
var rankEffect = []; | |
rankEffect.push(Number(parameters['Rank1 Effect'] || '-1')); | |
rankEffect.push(Number(parameters['Rank2 Effect'] || '-1')); | |
rankEffect.push(Number(parameters['Rank3 Effect'] || '-1')); | |
rankEffect.push(Number(parameters['Rank4 Effect'] || '-1')); | |
rankEffect.push(Number(parameters['Rank5 Effect'] || '-1')); | |
var me = String(parameters['ME'] || 'Organ'); | |
var amount = Number(parameters['Required Amount'] || '100'); | |
function Window_ItemCount_instead_Gold() { | |
this.initialize.apply(this, arguments); | |
} | |
Window_ItemCount_instead_Gold.prototype = Object.create(Window_Gold.prototype); | |
Window_ItemCount_instead_Gold.prototype.constructor = Window_Gold; | |
Window_ItemCount_instead_Gold.prototype.value = function() { | |
return $gameParty.numItems($dataItems[itemId]); | |
}; | |
Window_ItemCount_instead_Gold.prototype.currencyUnit = function() { | |
return itemIdUnit; | |
}; | |
var reg = /Required Amount/gi; | |
message = message.replace(reg, String(amount)); | |
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; | |
Game_Interpreter.prototype.pluginCommand = function (command, args) { | |
_Game_Interpreter_pluginCommand.call(this, command, args); | |
if (command === "Gacha") { | |
switch (args[0]) { | |
case "open": | |
SceneManager.push(Scene_Gacha); | |
break; | |
case 'add': | |
$gameSystem.addToGacha(args[1], Number(args[2])); | |
break; | |
case 'remove': | |
$gameSystem.removeFromGacha(args[1], Number(args[2])); | |
break; | |
case 'clear': | |
$gameSystem.clearGacha(); | |
break; | |
} | |
} | |
}; | |
Game_System.prototype.addToGacha = function(type, dataId) { | |
if (!this._GachaFlags) { | |
this.clearGacha(); | |
} | |
var typeIndex = this.gachaTypeToIndex(type); | |
if (typeIndex >= 0) { | |
this._GachaFlags[typeIndex][dataId] = true; | |
} | |
}; | |
Game_System.prototype.removeFromGacha = function(type, dataId) { | |
if (this._GachaFlags) { | |
var typeIndex = this.gachaTypeToIndex(type); | |
if (typeIndex >= 0) { | |
this._GachaFlags[typeIndex][dataId] = false; | |
} | |
} | |
}; | |
Game_System.prototype.gachaTypeToIndex = function(type) { | |
switch (type) { | |
case 'item': | |
return 0; | |
case 'weapon': | |
return 1; | |
case 'armor': | |
return 2; | |
default: | |
return -1; | |
} | |
}; | |
Game_System.prototype.clearGacha = function() { | |
this._GachaFlags = [[], [], []]; | |
}; | |
Game_System.prototype.isInGacha = function(item) { | |
if (this._GachaFlags && item) { | |
var typeIndex = -1; | |
if (DataManager.isItem(item)) { | |
typeIndex = 0; | |
} else if (DataManager.isWeapon(item)) { | |
typeIndex = 1; | |
} else if (DataManager.isArmor(item)) { | |
typeIndex = 2; | |
} | |
if (typeIndex >= 0) { | |
return !!this._GachaFlags[typeIndex][item.id]; | |
} else { | |
return false; | |
} | |
} else { | |
return false; | |
} | |
}; | |
function Scene_Gacha() { | |
this.initialize.apply(this, arguments); | |
} | |
Scene_Gacha.prototype = Object.create(Scene_MenuBase.prototype); | |
Scene_Gacha.prototype.constructor = Scene_Gacha; | |
Scene_Gacha.prototype.initialize = function () { | |
Scene_MenuBase.prototype.initialize.call(this); | |
this._item = null; | |
this._effectPlaying = false; | |
this._resultShowing = false; | |
this._wait = 0; | |
this._effectSprite = null; | |
this._windowFadeSprite = null; | |
this._screenFadeOutDuration = 0; | |
this._screenFadeInDuration = 0; | |
this._lot = []; | |
var numLot; | |
var item, i, j; | |
for (i = 1; i < $dataItems.length; i++) { | |
item = $dataItems[i]; | |
if ($gameSystem.isInGacha(item)) { | |
numLot = Number(item.meta.gachaNumLot || '0'); | |
for (j = 0; j < numLot; j++) { | |
this._lot.push(item); | |
} | |
} | |
} | |
for (i = 1; i < $dataWeapons.length; i++) { | |
item = $dataWeapons[i]; | |
if ($gameSystem.isInGacha(item)) { | |
numLot = Number(item.meta.gachaNumLot || '0'); | |
for (j = 0; j < numLot; j++) { | |
this._lot.push(item); | |
} | |
} | |
} | |
for (i = 1; i < $dataArmors.length; i++) { | |
item = $dataArmors[i]; | |
if ($gameSystem.isInGacha(item)) { | |
numLot = Number(item.meta.gachaNumLot || '0'); | |
for (j = 0; j < numLot; j++) { | |
this._lot.push(item); | |
} | |
} | |
} | |
}; | |
Scene_Gacha.prototype.create = function () { | |
Scene_MenuBase.prototype.create.call(this); | |
this.createHelpWindow(); | |
this.createGoldWindow(); | |
this.createCommandWindow(); | |
this.createDummyWindow(); | |
this.createGetCommandWindow(); | |
this.createGetWindow(); | |
this._rankSprite = new Sprite_GachaEffect(); | |
this._rankSprite.keepDisplay(true); | |
this.addChild(this._rankSprite); | |
this._windowFadeSprite = new ScreenSprite(); | |
this._windowFadeSprite.setColor(0, 0, 0); | |
this._windowFadeSprite.opacity = 0; | |
this._windowFadeSprite.visible = false; | |
this.addChild(this._windowFadeSprite); | |
this._effectSprite = new Sprite_GachaEffect(); | |
this._effectSprite.x = Graphics.boxWidth / 2; | |
this._effectSprite.y = Graphics.boxHeight / 2; | |
this.addChild(this._effectSprite); | |
this._helpWindow.setText(message); | |
}; | |
Scene_Gacha.prototype.createGoldWindow = function () { | |
if (itemId > 0) { | |
this._goldWindow = new Window_ItemCount_instead_Gold(0, this._helpWindow.height); | |
} else { | |
this._goldWindow = new Window_Gold(0, this._helpWindow.height); | |
} | |
this._goldWindow.x = Graphics.boxWidth - this._goldWindow.width; | |
this.addWindow(this._goldWindow); | |
}; | |
Scene_Gacha.prototype.createCommandWindow = function () { | |
this._commandWindow = new Window_GachaCommand(this._goldWindow.x, this._purchaseOnly); | |
this._commandWindow.y = this._helpWindow.height; | |
this._commandWindow.setHandler('gacha', this.commandGacha.bind(this)); | |
this._commandWindow.setHandler('cancel', this.popScene.bind(this)); | |
this._commandWindow.lotIsValid(this._lot.length > 0); | |
this._commandWindow.clearCommandList(); | |
this._commandWindow.makeCommandList(); | |
this._commandWindow.refresh(); | |
this.addWindow(this._commandWindow); | |
}; | |
Scene_Gacha.prototype.createDummyWindow = function () { | |
var wy = this._commandWindow.y + this._commandWindow.height; | |
var wh = Graphics.boxHeight - wy; | |
this._dummyWindow = new Window_Base(0, wy, Graphics.boxWidth, wh); | |
this.addWindow(this._dummyWindow); | |
}; | |
Scene_Gacha.prototype.createGetCommandWindow = function () { | |
this._getCommandWindow = new Window_GachaGetCommand(Graphics.boxWidth, false); | |
this._getCommandWindow.y = Graphics.boxHeight - this._getCommandWindow.height; | |
this._getCommandWindow.setHandler('cancel', this.commandOk.bind(this)); | |
this._getCommandWindow.hide(); | |
this.addWindow(this._getCommandWindow); | |
}; | |
Scene_Gacha.prototype.createGetWindow = function () { | |
var wy = this._helpWindow.height; | |
var wh = Graphics.boxHeight - wy - this._getCommandWindow.height; | |
this._getWindow = new Window_GachaGet(0, wy, Graphics.boxWidth, wh); | |
this._getWindow.itemDescEnable(itemDescEnable); | |
this._getWindow.hide(); | |
this.addWindow(this._getWindow); | |
}; | |
Scene_Gacha.prototype.commandGacha = function () { | |
// Draw lots | |
if (this._lot.length <= 0) { | |
this._item = null; | |
} | |
else { | |
this._item = this._lot[(Math.random() * this._lot.length) >> 0]; | |
if (itemId > 0) { | |
$gameParty.loseItem($dataItems[itemId], amount); | |
} else { | |
$gameParty.loseGold(amount); | |
} | |
$gameParty.gainItem(this._item, 1); | |
this._goldWindow.refresh(); | |
} | |
this._commandWindow.deactivate(); | |
this._getCommandWindow.deactivate(); | |
if (this._item) { | |
this._getWindow.setItem(this._item); | |
this._screenFadeOut(); | |
this._effectPlaying = true; | |
this._wait = 0; | |
var animation = $dataAnimations[effect]; | |
this._effectSprite.startAnimation(animation, false, 0); | |
AudioManager.playMe({"name": me, "volume": 90, "pitch": 100, "pan": 0}); | |
} | |
else { | |
this._commandWindow.activate(); | |
} | |
}; | |
Scene_Gacha.prototype.commandOk = function () { | |
this._effectSprite.allRemove(); | |
this._rankSprite.allRemove(); | |
this._goldWindow.show(); | |
this._commandWindow.show(); | |
this._commandWindow.activate(); | |
this._dummyWindow.show(); | |
this._getCommandWindow.hide(); | |
this._getWindow.hide(); | |
this._helpWindow.setText(message); | |
this._item = null; | |
this._commandWindow.clearCommandList(); | |
this._commandWindow.makeCommandList(); | |
this._commandWindow.refresh(); | |
}; | |
Scene_Gacha.prototype.update = function () { | |
Scene_Menu.prototype.update.call(this); | |
this._updateScreenFlashSprite(); | |
this._wait++; | |
if (this._wait > 12) { | |
if (this._effectPlaying) { | |
if (!this._effectSprite.isAnimationPlaying()) { | |
this._screenFadeIn(); | |
if (!!this._item.meta.gachaImage) { | |
var rank = Number(this._item.meta.gachaRank || '-1'); | |
if (rank > 0 && rank < 6) { | |
if (rankEffect[rank - 1] > 0) { | |
var animation = $dataAnimations[rankEffect[rank - 1]]; | |
this._rankSprite.x = this._getWindow.width / 2 + this._getWindow.x - 20; | |
this._rankSprite.y = this._getWindow.contentsHeight() + this._getWindow.y; | |
if (itemDescEnable) { | |
this._rankSprite.y -= this._getWindow.lineHeight() * 3; | |
} | |
this._rankSprite.startAnimation(animation, false, 0); | |
} | |
} | |
} | |
this._effectPlaying = false; | |
this._goldWindow.hide(); | |
this._commandWindow.hide(); | |
this._dummyWindow.hide(); | |
this._getCommandWindow.show(); | |
this._getWindow.show(); | |
var message = getText; | |
var reg = /Item Name/gi; | |
message = message.replace(reg, String(this._item.name)); | |
this._helpWindow.setText(message); | |
this._wait = 0; | |
this._resultShowing = true; | |
} | |
else { | |
if (TouchInput.isTriggered() || Input.isTriggered("ok")) { | |
this._effectSprite.allRemove(); | |
} | |
} | |
} | |
else if (this._resultShowing) { | |
this._resultShowing = false; | |
this._getCommandWindow.activate(); | |
} | |
} | |
}; | |
Scene_Gacha.prototype._updateScreenFlashSprite = function () { | |
var d; | |
if (this._screenFadeOutDuration > 0) { | |
d = this._screenFadeOutDuration--; | |
this._windowFadeSprite.opacity += 255 * (1 - (d - 1) / d); | |
} | |
if (this._screenFadeInDuration > 0) { | |
d = this._screenFadeInDuration--; | |
this._windowFadeSprite.opacity *= (d - 1) / d; | |
this._windowFadeSprite.visible = (this._screenFadeInDuration > 0); | |
} | |
}; | |
Scene_Gacha.prototype._screenFadeOut = function() { | |
this._windowFadeSprite.visible = true; | |
this._screenFadeOutDuration = 15; | |
this._screenFadeInDuration = 0; | |
}; | |
Scene_Gacha.prototype._screenFadeIn = function() { | |
this._windowFadeSprite.visible = true; | |
this._screenFadeOutDuration = 0; | |
this._screenFadeInDuration = 15; | |
}; | |
function Window_Gacha() { | |
this.initialize.apply(this, arguments); | |
} | |
Window_Gacha.prototype = Object.create(Window_Selectable.prototype); | |
Window_Gacha.prototype.constructor = Window_Gacha; | |
Window_Gacha.prototype.initialize = function (x, y) { | |
var width = Graphics.boxWidth; | |
var height = this.fittingHeight(6); | |
Window_Selectable.prototype.initialize.call(this, x, y, width, height); | |
this.refresh(); | |
this.activate(); | |
}; | |
function Window_GachaCommand() { | |
this.initialize.apply(this, arguments); | |
} | |
Window_GachaCommand.prototype = Object.create(Window_HorzCommand.prototype); | |
Window_GachaCommand.prototype.constructor = Window_GachaCommand; | |
Window_GachaCommand.prototype.initialize = function (width, purchaseOnly) { | |
this._windowWidth = width; | |
this._purchaseOnly = purchaseOnly; | |
Window_HorzCommand.prototype.initialize.call(this, 0, 0); | |
}; | |
Window_GachaCommand.prototype.windowWidth = function () { | |
return this._windowWidth; | |
}; | |
Window_GachaCommand.prototype.maxCols = function () { | |
return 2; | |
}; | |
Window_GachaCommand.prototype.makeCommandList = function () { | |
if (itemId > 0) { | |
this.addCommand(buttonText, 'gacha', $gameParty.numItems($dataItems[itemId]) >= amount && !!this._lotIsValid); | |
} else { | |
this.addCommand(buttonText, 'gacha', $gameParty.gold() >= amount && !!this._lotIsValid); | |
} | |
this.addCommand(TextManager.cancel, 'cancel'); | |
}; | |
Window_GachaCommand.prototype.lotIsValid = function(value) { | |
this._lotIsValid = value; | |
}; | |
function Window_GachaGetCommand() { | |
this.initialize.apply(this, arguments); | |
} | |
Window_GachaGetCommand.prototype = Object.create(Window_HorzCommand.prototype); | |
Window_GachaGetCommand.prototype.constructor = Window_GachaGetCommand; | |
Window_GachaGetCommand.prototype.initialize = function (width, purchaseOnly) { | |
this._windowWidth = width; | |
this._purchaseOnly = purchaseOnly; | |
Window_HorzCommand.prototype.initialize.call(this, 0, 0); | |
}; | |
Window_GachaGetCommand.prototype.windowWidth = function () { | |
return this._windowWidth; | |
}; | |
Window_GachaGetCommand.prototype.maxCols = function () { | |
return 1; | |
}; | |
Window_GachaGetCommand.prototype.makeCommandList = function () { | |
this.addCommand('OK', 'cancel'); | |
}; | |
function Window_GachaGet() { | |
this.initialize.apply(this, arguments); | |
} | |
Window_GachaGet.prototype = Object.create(Window_Base.prototype); | |
Window_GachaGet.prototype.constructor = Window_GachaGet; | |
Window_GachaGet.prototype.initialize = function(x, y, width, height) { | |
Window_Base.prototype.initialize.call(this, x, y, width, height); | |
this._item = null; | |
this._itemDescEnable = true; | |
this._gachaSprite = new Sprite(); | |
this._gachaSprite.anchor.x = 0.5; | |
this._gachaSprite.anchor.y = 0; | |
this._gachaSprite.x = width / 2 - 20; | |
this._gachaSprite.y = this.padding; | |
this.addChildToBack(this._gachaSprite); | |
this.refresh(); | |
}; | |
Window_GachaGet.prototype.itemDescEnable = function(value) { | |
if (this._itemDescEnable !== value) { | |
this._itemDescEnable = value; | |
this.refresh(); | |
} | |
}; | |
Window_GachaGet.prototype.setItem = function(item) { | |
if (this._item !== item) { | |
this._item = item; | |
this.refresh(); | |
} | |
}; | |
Window_GachaGet.prototype.update = function() { | |
Window_Base.prototype.update.call(this); | |
if (this._gachaSprite.bitmap) { | |
var bitmapHeight = this._gachaSprite.bitmap.height; | |
var contentsHeight = this.contents.height; | |
if (this._itemDescEnable) { | |
contentsHeight -= this.lineHeight() * 3 | |
} | |
var scale = 1; | |
if (bitmapHeight > contentsHeight) { | |
scale = contentsHeight / bitmapHeight; | |
} | |
this._gachaSprite.scale.x = scale; | |
this._gachaSprite.scale.y = scale; | |
} | |
}; | |
Window_GachaGet.prototype.refresh = function() { | |
var item = this._item; | |
this.contents.clear(); | |
if (this._itemDescEnable) { | |
var y = this.contentsHeight() - this.lineHeight() * 3; | |
this.drawHorzLine(y); | |
this.drawDescription(0, y + this.lineHeight()); | |
} | |
if (!item || !item.meta.gachaImage) { | |
this._gachaSprite.bitmap = null; | |
return; | |
} | |
else { | |
var bitmap; | |
bitmap = ImageManager.loadBitmap("img/gacha/", this._item.meta.gachaImage); | |
this._gachaSprite.bitmap = bitmap; | |
bitmap.smooth = true; | |
} | |
}; | |
Window_GachaGet.prototype.drawDescription = function(x, y) { | |
if (this._item) this.drawTextEx(this._item.description, x, y); | |
}; | |
Window_GachaGet.prototype.drawHorzLine = function(y) { | |
var lineY = y + this.lineHeight() / 2 - 1; | |
this.contents.paintOpacity = 48; | |
this.contents.fillRect(0, lineY, this.contentsWidth(), 2, this.lineColor()); | |
this.contents.paintOpacity = 255; | |
}; | |
Window_GachaGet.prototype.lineColor = function() { | |
return this.normalColor(); | |
}; | |
function Sprite_GachaEffect() { | |
this.initialize.apply(this, arguments); | |
} | |
Sprite_GachaEffect.prototype = Object.create(Sprite.prototype); | |
Sprite_GachaEffect.prototype.constructor = Sprite_GachaEffect; | |
Sprite_GachaEffect.prototype.initialize = function() { | |
Sprite.prototype.initialize.call(this); | |
this._animationSprites = []; | |
this._endSprites = []; | |
this._effectTarget = this; | |
this._hiding = false; | |
this._keepDisplay = false; | |
}; | |
Sprite_GachaEffect.prototype.keepDisplay = function(value) { | |
this._keepDisplay = value; | |
}; | |
Sprite_GachaEffect.prototype.update = function() { | |
Sprite.prototype.update.call(this); | |
this.updateVisibility(); | |
this.updateAnimationSprites(); | |
}; | |
Sprite_GachaEffect.prototype.hide = function() { | |
this._hiding = true; | |
this.updateVisibility(); | |
}; | |
Sprite_GachaEffect.prototype.show = function() { | |
this._hiding = false; | |
this.updateVisibility(); | |
}; | |
Sprite_GachaEffect.prototype.updateVisibility = function() { | |
this.visible = !this._hiding; | |
}; | |
Sprite_GachaEffect.prototype.updateAnimationSprites = function() { | |
if (this._animationSprites.length > 0) { | |
var sprites = this._animationSprites.clone(); | |
this._animationSprites = []; | |
for (var i = 0; i < sprites.length; i++) { | |
var sprite = sprites[i]; | |
if (sprite.isPlaying()) { | |
this._animationSprites.push(sprite); | |
} else { | |
if (!this._keepDisplay) { | |
sprite.remove(); | |
} | |
else { | |
this._endSprites.push(sprite); | |
} | |
} | |
} | |
} | |
}; | |
Sprite_GachaEffect.prototype.startAnimation = function(animation, mirror, delay) { | |
var sprite = new Sprite_Animation(); | |
sprite.setup(this._effectTarget, animation, mirror, delay); | |
this.parent.addChild(sprite); | |
this._animationSprites.push(sprite); | |
}; | |
Sprite_GachaEffect.prototype.isAnimationPlaying = function() { | |
return this._animationSprites.length > 0; | |
}; | |
Sprite_GachaEffect.prototype.allRemove = function() { | |
var sprites, sprite, i; | |
if (this._animationSprites.length > 0) { | |
sprites = this._animationSprites.clone(); | |
this._animationSprites = []; | |
for (i = 0; i < sprites.length; i++) { | |
sprite = sprites[i]; | |
sprite.remove(); | |
} | |
} | |
if (this._endSprites.length > 0) { | |
sprites = this._endSprites.clone(); | |
this._endSprites = []; | |
for (i = 0; i < sprites.length; i++) { | |
sprite = sprites[i]; | |
sprite.remove(); | |
} | |
} | |
}; | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment