Aloe - Mobile Game User Interface

5 Respostas   116 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

Eliaquim

  • *
  • Posts: 481
  • Ouros: 287
  • Raze: The Rakuen Zero's Guardian!
  • Medalhas Participante do 'Amigo, Estou Aqui!'
Tópico criado em: 19/09/2018 às 16:20

Fala pessoal! Estou aqui tentando me aventurar na programação para resolver um problema...
É relacionado a esse incrível plugin que encontrei:
Spoiler
[close]

O plugin tem um comando que esconde os controles. E também um comando para o tempo de fade para esconder/mostrar os controles:
Spoiler
[close]

O problema é que o plugin tem uma função automática de esconder/mostrar os controles sempre que uma janela de texto for aberta/fechada.
Assim, como coloquei o fade duration para 1 frame nos parâmetros, os botões ficam aparecendo toda hora que uma janela de texto abre e fecha.
Mas, se eu coloco o fade duration para 60 frames, esse problema não acontece, pois não dá tempo dos controles aparecerem no intervalo de uma janela a outra.
Entretanto! Toda vez que eu iniciar uma cutscene em um mapa novo, e usar os comandos de plugin para esconder os controles(como na foto do evento) vai aparecer na tela os controles dando o fade(pois o fade está em 60 frames)... E para evitar isso, eu coloquei o fade duration para 1 frame, assim, a introdução fica sem mostrar os controles conforme no vídeo. Mas aí, esbarro no problema das janelas de texto acima.

https://www.youtube.com/watch?v=F5lwGlxAsO0&feature=youtu.be

Eu acredito ter achado no código do plugin, a parte responsável por essa função das janelas:
Spoiler
[close]

Mas aí é que tá. Eu sei quase zero de programação. Mas acredito que talvez dê pra resolver alguma cisa mexendo nessa parte.
Se eu simplesmente apagar essa parte, será que consigo controlar o mostrar/ocultar os controles só pelos comandos de plugin?
Existe outro jeito? Ou depende de ver o código inteiro para saber?

Corvo

Resposta 1: 19/09/2018 às 16:41

Fala pessoal! Estou aqui tentando me aventurar na programação para resolver um problema...

Faz bem. Apagar trechos de código sempre dá problema, então não. Quando - raramente - um trecho precisa ser removido o ideal é torná-lo um comentário, pois fica fácil resolver se algum problema aparecer. Esse trechinho aí é o suficiente para fazermos uma gambiarra. Eu não entendo nada de Js, mas suponhamos que você substitua as linhas 963 e 964 por isto:

Código: [Selecionar]
if $gameSwitches.value(ID) == True {
    SceneManager._scene.hideMobileUI();
    Alias.Window_Message_startMessage.call(this);
};

E as linhas 969 e 970 por isto:

Código: [Selecionar]
if $gameSwitches.value(ID) == True {
    Alias.Window_Message_terminateMessage.call(this);
    SceneManager._scene.showMobileUI();
};

Na teoria estamos definindo um switch (ID) para que a HUD seja mostrada. Se ele estiver ligado, a HUD retorna após as mensagens e vice-versa. Nota: isso iria causar um pequeno bug. Se o switch estiver desligado antes de uma mensagem, provavelmente a HUD iria sumir de vez. Você teria de reativá-lo e mostrar outra mensagem para atualizar o plugin. Só teoria, claro. Não testei.

Eliaquim

  • *
  • Posts: 481
  • Ouros: 287
  • Raze: The Rakuen Zero's Guardian!
  • Medalhas Participante do 'Amigo, Estou Aqui!'
Resposta 2: 19/09/2018 às 17:34

...
Opa!
Cara eu tentei aqui, e só de eu substituir as linhas, o plugin parou de funcionar, os controles sumiram.
Substitui tanto colocando uma switch 10, quanto não colocando e o problema continuou.

Eu achei um comando de script fuçando o plugin:

SceneManager._scene.showMobileUI();
SceneManager._scene.hideMobileUI();

Assim, decidi apagar a parte do código que mostrei antes (deixando o comentário) linhas 967,968,969,970 e 971.
Acabou dando certo, pois a cada vez que abro um diálogo, os botões somem. Mas para que apareçam de novo após todo o diálogo, eu tenho de colocar esse script que mostrei acima de (showMobileUI).
Usando ele após cada texto eu consigo resolver o problema. Mas mesmo que eu use uma switch ou um evento comum para ele, ter q fazer isso toda hora vai dar uma trabalheira.

Observando mais o código, eu encontrei uma coisa relacionado ao fade:

Código: [Selecionar]
@param fadeDuration
* @text Fade Duration
* @desc Duration of hiding the buttons (number of frames)
* for the buttons to fade and un-fade.
* @default 20

E outra coisa:

this._duration = Parameters["fadeDuration"];
Spoiler
[close]

Penso que, se houvesse uma maneira de permanecer o código:

Código: [Selecionar]
Alias.Window_Message_terminateMessage = Window_Message.prototype.terminateMessage;
Window_Message.prototype.terminateMessage = function () {
Alias.Window_Message_terminateMessage.call(this);
SceneManager._scene.showMobileUI();

Entretanto, adicionando uma função de fade 60 frames para ele, o problema estaria resolvido. Pois acredito que ele esteja puxando o fade duration default (ou definido nos parâmetros).

Eu até tentei algumas coisas para colocar esse fade do lado ou embaixo do código, tipo:

this._duration = Parameters[60];
ou
this._duration = 60["fadeDuration"];

mas não deu certo hauahuahuahua.

Mas vocês acham que é possível definir um tempo específico de fade nessa função?


Corvo

Resposta 3: 19/09/2018 às 18:06 - Última modificação por Corvo em 22/09/2018 às 09:24

Sim, a ideia era a HUD sumir mesmo e você ativar manualmente, mas também seria um belo trabalho fazer em todo diálogo. Agora, quanto a duração, fadeDuration provavelmente é só a tag que o plugin usa na configuração dos parâmetros, mas deve dar pra modificar individualmente sim. Só não sei como ajudar nessa parte, melhor esperar o pessoal.  :rick9:

Eliaquim

  • *
  • Posts: 481
  • Ouros: 287
  • Raze: The Rakuen Zero's Guardian!
  • Medalhas Participante do 'Amigo, Estou Aqui!'
Resposta 4: 21/09/2018 às 17:55

Ninguém?  :sad:

Corvo

Resposta 5: 23/09/2018 às 14:05

É, o pessoal anda meio ocupado ou não viram o tópico.  :derp:
Vi que você postou a mesma dúvida e o autor ficou de dar uma resposta. Talvez o melhor seja aguardar. :/