Esse guia é uma adaptação/tradução do incrível trabalho feito pelo Trihan. O conteúdo original pode ser visto clicando aqui. A tradução do seu conteúdo foi autorizado por ele, como pode ser visto clicando aqui.
[greenalert]PULANDO NO JAVASCRIPT - PARTE 1 - MAIN.JS E RPG_SCENES.JS (SCENE_BASE)[/greenalert]
O RPG MAKER MV usa o renderizador de gráficos 2D chamado Pixi.js e vários objetos base usam os objetos do Pixi como prototypes.
[greenalert]main.js[/greenalert]
Este é um chamado da função setup, do objeto PluginManager, que irá armazenar o conteúdos dos plugins dentro da variável global $plugins.
window.onload é um evento nativo do JavaScript que é iniciado ao abrir a janela do jogo pela primeira vez. Ele rodará o método run do objeto SceneManager, passando o valor Scene_Boot, que é a Scene que dará início ao jogo.
[greenalert]rpg_scenes.js[/greenalert]
Declara a função inicial do Scene_Base e chama o método initialize. Não são usados nenhum parâmetros no método, mas no lugar ele chama apply, passando this e arguments.
Essa parte do código informa que o prototype do Scene_Base é um novo objeto, recebendo o Stage.prototype. Abaixo temos o construtor do Scene_Base, que é informado ser Scene_Base.
Está sendo declarada a função initialize do prototype do Scene_Base. A primeira coisa é chamar a função initialize do Stage.prototype, passado no this. Depois são criadas algumas variáveis locais: _active, que tem valor false, _fadeSign, que tem valor 0, _fadeDuration, que tem valor 0 e _fadeSprite que terá valor null.
Está sendo criado o construtor do Scene_Base, que é uma função sem nenhum código dentro.
Declaração da função isActive do prototype do Scene_Base, que retorna o valor de _active para a instância atual do objeto Scene_Base.
Cria a função isReady do prototype do Scene_Base, que retorna o valor da função isReady do ImageManager.
Cria a função start do prototype do Scene_Base, que altera o valor da variável instanciada _active para verdadeiro.
A função update do prototype do Scene_Base chama (call) a função updateFade da instância, depois a função updateChildren da instância e por fim, a função checkErros do objeto AudioManager.
A função stop do prototype do Scene_Base altera a variável instanciada _active para false.
A função isBusy do prototype do Scene_Base retorna true (verdadeiro) se o valor da variável instanciada _fadeDuration for maior que 0. Caso contrário, retorna false (falso).
Função terminate do prototype do Scene_Base, que não tem nenhum código dentro.
A função createWindowLayer do prototype do Scene_Base declara uma variável chamada width (largura), que irá retornar o valor do Graphics.boxWidth (Largura da Janela do Jogo), uma variável chamada height (altura), que irá retornar o valor de Graphics.boxHeight (Altura da Janela do Jogo), uma variável chamada x, que retornará metade de (Graphics.width - width) e uma variável chamada y, que irá retornar metade de (Graphics.height - height). A propriedade da instância windowLayer da Scene é definido como uma nova instância do objeto WindowLayer e chama a função move, passando as coordenadas x e y e os tamanhos de largura e altura. Por fim, chama a função addChild da função da Scene, passando as propriedades do windowLayer.
A função addWindow do prototype do Scene_Base recepe um único parâmetro (window) e chama a função addChild da instância do _windowLayer, passando o parâmetro window.
A função startFadeIn do prototype do Scene_Base recebe dois parâmetros, duration (duração) e white (branco). Primeiro ele chama a função instanciada crateFadeSprite, passando o valor de white. _fadeSign recebe o valor 1, _fadeDuration receberá o valor de duration ou, caso não haja valor informado, receberá 30. Por fim, a pripriedade _fadeSprite do objeto é alterada para 255 (totalmente visível).
A função startFadeOut do prototype do Scene_Base recebe dois parâmetros, duration e white. Primeiro ele chama a função instanciada createFadeSprite, que recebe o parâmetro white, depois _fadeSign recebe o valor -1, _fadeDurariton receberá o valor do parâmetro duration ou, se não houver nenhum valor, receberá 30. Por fim, a propriedade _fadeSprite do objeto receberá o valor 0 (totalmente transparente/invisível).
A função createFadeSprite do prototype do Scene_Base recebe um parâmetro, white. Primeiro ele checa se a instância do scene tem ou não o _fadeSprite definino. Se não houver, nós declaramos que _fadeSprite é uma nova instância de ScreenSprite e adicionados o fadeSprite como child da scene.
Caso haja um valor de _fadeSprite, o _fadeSprite da instância irá chamar a função setWhite, se não, irá chamar a função setBlack.
A função updateFade do prototype do Scene_Base irá primeiro verificar se o _fadeDuration da instância é maior que 0 e, se for, a variável d é declarada como o _fadeDuration da instância. Se _fadeSign é maior que 0 (o que significa que o fadein foi iniciado), a opacidade do _fadeSprite é reduzida da opacidade atual dividido por d. Se _fadeSign não for maior que 0 (o que significa que fadeout foi iniciado), então a opacidade do _fadeSprite é aumentada em (255 menos a opacidade atual) dividido por d. Por fim, _fadeDuration recebe um decremento (-1 em seu valor).
O método updateChildren do prototype do Scene_Base irá vasculhar entre o seu children e para cada child que tiver uma função update, irá rodar a função update deles.
A função popScene do prototype do Scene_Base irá chamar a função pop do SceneManager.
A função checkGameover do prototype do Scene_Base irá verificar se a função isAllDead da variável global $gameParty retornará true. Se retornar, chamada a função goto do SceneManager, passando Scene_Gameover.
A função fadeOutAll do prototype do Scene_Base irá receber o valor de slowFadeSpeed() dividido por 60. AudioManager chamará as funções fadeOutBgm, fadeOutBgs e fadeOutMe passando a variável time como parâmetro e, por fim, a instância irá chamar a função startFadeOut, passando seu slowFadeSpeed.
A função fadeSpeed do prototype do Scene_Base é direta do código fonte (hardcoded) e simplesmente retorna 24, que é o número de frames que um fade terá.
A função slowFadeSpeed do prototype é direta do código fonte (hardcoded) e simplesmente retorna fadeSpeed (24), multiplicado por 2 (48).
[greenalert]PULANDO NO JAVASCRIPT - PARTE 1 - MAIN.JS E RPG_SCENES.JS (SCENE_BASE)[/greenalert]
O RPG MAKER MV usa o renderizador de gráficos 2D chamado Pixi.js e vários objetos base usam os objetos do Pixi como prototypes.
[greenalert]main.js[/greenalert]
Código:
PluginManager.setup($plugins);
Este é um chamado da função setup, do objeto PluginManager, que irá armazenar o conteúdos dos plugins dentro da variável global $plugins.
Código:
window.onload = function() {
SceneManager.run(Scene_Boot);
};
window.onload é um evento nativo do JavaScript que é iniciado ao abrir a janela do jogo pela primeira vez. Ele rodará o método run do objeto SceneManager, passando o valor Scene_Boot, que é a Scene que dará início ao jogo.
[greenalert]rpg_scenes.js[/greenalert]
Código:
function Scene_Base() {
this.initialize.apply(this, arguments);
}
Declara a função inicial do Scene_Base e chama o método initialize. Não são usados nenhum parâmetros no método, mas no lugar ele chama apply, passando this e arguments.
Código:
Scene_Base.prototype = Object.create(Stage.prototype);
Scene_Base.prototype.constructor = Scene_Base;
Essa parte do código informa que o prototype do Scene_Base é um novo objeto, recebendo o Stage.prototype. Abaixo temos o construtor do Scene_Base, que é informado ser Scene_Base.
Código:
Scene_Base.prototype.initialize = function() {
Stage.prototype.initialize.call(this);
this._active = false;
this._fadeSign = 0;
this._fadeDuration = 0;
this._fadeSprite = null;
};
Está sendo declarada a função initialize do prototype do Scene_Base. A primeira coisa é chamar a função initialize do Stage.prototype, passado no this. Depois são criadas algumas variáveis locais: _active, que tem valor false, _fadeSign, que tem valor 0, _fadeDuration, que tem valor 0 e _fadeSprite que terá valor null.
Código:
Scene_Base.prototype.create = function() {
};
Está sendo criado o construtor do Scene_Base, que é uma função sem nenhum código dentro.
Código:
Scene_Base.prototype.isActive = function() {
return this._active;
};
Declaração da função isActive do prototype do Scene_Base, que retorna o valor de _active para a instância atual do objeto Scene_Base.
Código:
Scene_Base.prototype.isReady = function() {
return ImageManager.isReady();
};
Cria a função isReady do prototype do Scene_Base, que retorna o valor da função isReady do ImageManager.
Código:
Scene_Base.prototype.start = function() {
this._active = true;
};
Cria a função start do prototype do Scene_Base, que altera o valor da variável instanciada _active para verdadeiro.
Código:
Scene_Base.prototype.update = function() {
this.updateFade();
this.updateChildren();
AudioManager.checkErrors();
};
A função update do prototype do Scene_Base chama (call) a função updateFade da instância, depois a função updateChildren da instância e por fim, a função checkErros do objeto AudioManager.
Código:
Scene_Base.prototype.stop = function() {
this._active = false;
};
A função stop do prototype do Scene_Base altera a variável instanciada _active para false.
Código:
Scene_Base.prototype.isBusy = function() {
return this._fadeDuration > 0;
};
A função isBusy do prototype do Scene_Base retorna true (verdadeiro) se o valor da variável instanciada _fadeDuration for maior que 0. Caso contrário, retorna false (falso).
Código:
Scene_Base.prototype.terminate = function() {
};
Função terminate do prototype do Scene_Base, que não tem nenhum código dentro.
Código:
Scene_Base.prototype.createWindowLayer = function() {
var width = Graphics.boxWidth;
var height = Graphics.boxHeight;
var x = (Graphics.width - width) / 2;
var y = (Graphics.height - height) / 2;
this._windowLayer = new WindowLayer();
this._windowLayer.move(x, y, width, height);
this.addChild(this._windowLayer);
};
A função createWindowLayer do prototype do Scene_Base declara uma variável chamada width (largura), que irá retornar o valor do Graphics.boxWidth (Largura da Janela do Jogo), uma variável chamada height (altura), que irá retornar o valor de Graphics.boxHeight (Altura da Janela do Jogo), uma variável chamada x, que retornará metade de (Graphics.width - width) e uma variável chamada y, que irá retornar metade de (Graphics.height - height). A propriedade da instância windowLayer da Scene é definido como uma nova instância do objeto WindowLayer e chama a função move, passando as coordenadas x e y e os tamanhos de largura e altura. Por fim, chama a função addChild da função da Scene, passando as propriedades do windowLayer.
Código:
Scene_Base.prototype.addWindow = function(window) {
this._windowLayer.addChild(window);
};
A função addWindow do prototype do Scene_Base recepe um único parâmetro (window) e chama a função addChild da instância do _windowLayer, passando o parâmetro window.
Código:
Scene_Base.prototype.startFadeIn = function(duration, white) {
this.createFadeSprite(white);
this._fadeSign = 1;
this._fadeDuration = duration || 30;
this._fadeSprite.opacity = 255;
};
A função startFadeIn do prototype do Scene_Base recebe dois parâmetros, duration (duração) e white (branco). Primeiro ele chama a função instanciada crateFadeSprite, passando o valor de white. _fadeSign recebe o valor 1, _fadeDuration receberá o valor de duration ou, caso não haja valor informado, receberá 30. Por fim, a pripriedade _fadeSprite do objeto é alterada para 255 (totalmente visível).
Código:
Scene_Base.prototype.startFadeOut = function(duration, white) {
this.createFadeSprite(white);
this._fadeSign = -1;
this._fadeDuration = duration || 30;
this._fadeSprite.opacity = 0;
};
A função startFadeOut do prototype do Scene_Base recebe dois parâmetros, duration e white. Primeiro ele chama a função instanciada createFadeSprite, que recebe o parâmetro white, depois _fadeSign recebe o valor -1, _fadeDurariton receberá o valor do parâmetro duration ou, se não houver nenhum valor, receberá 30. Por fim, a propriedade _fadeSprite do objeto receberá o valor 0 (totalmente transparente/invisível).
Código:
Scene_Base.prototype.createFadeSprite = function(white) {
if (!this._fadeSprite) {
this._fadeSprite = new ScreenSprite();
this.addChild(this._fadeSprite);
}
if (white) {
this._fadeSprite.setWhite();
} else {
this._fadeSprite.setBlack();
}
};
A função createFadeSprite do prototype do Scene_Base recebe um parâmetro, white. Primeiro ele checa se a instância do scene tem ou não o _fadeSprite definino. Se não houver, nós declaramos que _fadeSprite é uma nova instância de ScreenSprite e adicionados o fadeSprite como child da scene.
Caso haja um valor de _fadeSprite, o _fadeSprite da instância irá chamar a função setWhite, se não, irá chamar a função setBlack.
Código:
Scene_Base.prototype.updateFade = function() {
if (this._fadeDuration > 0) {
var d = this._fadeDuration;
if (this._fadeSign > 0) {
this._fadeSprite.opacity -= this._fadeSprite.opacity / d;
} else {
this._fadeSprite.opacity += (255 - this._fadeSprite.opacity) / d;
}
this._fadeDuration--;
}
};
A função updateFade do prototype do Scene_Base irá primeiro verificar se o _fadeDuration da instância é maior que 0 e, se for, a variável d é declarada como o _fadeDuration da instância. Se _fadeSign é maior que 0 (o que significa que o fadein foi iniciado), a opacidade do _fadeSprite é reduzida da opacidade atual dividido por d. Se _fadeSign não for maior que 0 (o que significa que fadeout foi iniciado), então a opacidade do _fadeSprite é aumentada em (255 menos a opacidade atual) dividido por d. Por fim, _fadeDuration recebe um decremento (-1 em seu valor).
Código:
Scene_Base.prototype.updateChildren = function() {
this.children.forEach(function(child) {
if (child.update) {
child.update();
}
});
};
O método updateChildren do prototype do Scene_Base irá vasculhar entre o seu children e para cada child que tiver uma função update, irá rodar a função update deles.
Código:
Scene_Base.prototype.popScene = function() {
SceneManager.pop();
};
A função popScene do prototype do Scene_Base irá chamar a função pop do SceneManager.
Código:
Scene_Base.prototype.checkGameover = function() {
if ($gameParty.isAllDead()) {
SceneManager.goto(Scene_Gameover);
}
};
A função checkGameover do prototype do Scene_Base irá verificar se a função isAllDead da variável global $gameParty retornará true. Se retornar, chamada a função goto do SceneManager, passando Scene_Gameover.
Código:
Scene_Base.prototype.fadeOutAll = function() {
var time = this.slowFadeSpeed() / 60;
AudioManager.fadeOutBgm(time);
AudioManager.fadeOutBgs(time);
AudioManager.fadeOutMe(time);
this.startFadeOut(this.slowFadeSpeed());
};
A função fadeOutAll do prototype do Scene_Base irá receber o valor de slowFadeSpeed() dividido por 60. AudioManager chamará as funções fadeOutBgm, fadeOutBgs e fadeOutMe passando a variável time como parâmetro e, por fim, a instância irá chamar a função startFadeOut, passando seu slowFadeSpeed.
Código:
Scene_Base.prototype.fadeSpeed = function() {
return 24;
};
A função fadeSpeed do prototype do Scene_Base é direta do código fonte (hardcoded) e simplesmente retorna 24, que é o número de frames que um fade terá.
Código:
Scene_Base.prototype.slowFadeSpeed = function() {
return this.fadeSpeed() * 2;
};
A função slowFadeSpeed do prototype é direta do código fonte (hardcoded) e simplesmente retorna fadeSpeed (24), multiplicado por 2 (48).
Tudo presente nesse guia é uma tradução direta do guia original. Caso tenha tempo livre e queria ajudar na tradução de outras partes, me contactar via PM.