WindowManager (Completo) Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

WindowManager (Completo)

3 participantes

Ir para baixo

WindowManager (Completo) Empty WindowManager (Completo)

Mensagem por Paulo Soreto Qui Jan 09, 2014 6:22 am

Um tempo atrás eu postei um sistema de gerenciamento de janelas porém estava inacabado, hoje como estou voltando a programar a pedido de um amigo, resolvi refazer o sistema e divulga-lo completo e sem erros.

Comandos
WindowManager.newWindow(t, c) # t = Título da janela, c = Classe correspondente
WindowManager.updateWindows # Atualiza todas as janelas ativas
WindowManager.disposeWindows # Da dispose em todas as janelas
WindowManager.showWindow(t) # Exibe a janela (t = título) na tela
WindowManager.closeWindow(t) # Fecha a janela (t = título) e a inativa
WindowManager.listWindows # Exibe o nome e classe de todas as janelas criadas
WindowManager.disposeWindow(t) # Da dispose em determinada janela
WindowManager.closeAll # Fecha todas as janelas abertas
WindowManager.Window(t) # Chama a classe X para poder usar métodos internos

Exemplos:

Código:
WindowManager.newWindow("X", WindowX.new)
WindowManager.showWindow("X")
WindowManager.closeWindow("X")
WindowManager.disposeWindow("X")
WindowManager.listWindows



Como instalar?
Vá no script [SC] Net Rmxp Hud, abaixo de:
Código:
def dispose
Adicione:
Código:
WindowManager.disposeWindows
Abaixo de:
Código:
def update
Adicione:
Código:
WindowManager.updateWindows
No script [WNG] Window_Base abaixo de:
Código:
def initialize(x, y, width, height)
    super()
    @windowskin_name = $game_system.windowskin_name
    self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.z = 100
  end
Adicione:
Código:
 def show
    self.visible = true
    self.active = true
  end
  def close
    self.active = false
    self.visible = false
  end
Adicione o seguinte script:
Código:
#==================================================================
# WindowManager - Por Paulo Soreto
#==================================================================
module WindowManager
  @windows = {}
  def self.newWindow(t, c)
    @windows[t].nil? ? @windows[t] = c : return
  end
  def self.updateWindows
    @windows.each{|w| w[1].update if w[1].active}
  end
  def self.disposeWindows
    for w in @windows
      w[1].dipose
      @windows.delete(w[0])
    end
  end
  def self.showWindow(t)
    return if @windows[t].nil?
    @windows[t].show
  end
  def self.closeWindow(t)
    return if @windows[t].nil?
    @windows[t].visible ? @windows[t].close : return
  end
  def self.disposeWindow(t)
    return if @windows[t].nil?
    @windows[t].dispose
    @windows.delete(t)
  end
  def self.listWindows
    strWindows = ""
    @windows.each{|w| strWindows += w[0] + " >> " + w[1].to_s + "\n"}
    print strWindows
  end
  def self.closeAll
    @windows.each{|w| w[1].close if w[1].visible}
  end
  def self.Window(t)
    return @windows[t] unless @windows[t].nil?
  end
end
Acima do script: [SC] Net Rmxp Hud

Para que serve?
O sistema permite um gerenciamento mais limpo e eficaz das janelas do jogo evitando muitas vezes blocos enormes de código. Fora isso, ainda se tem comando pré-definidos que podem ser usados no decorrer do jogo.

Finalizando...
Espero que tenham gostado, e uma dica: Se quer seu jogo mais limpo, use este sistema e possivelmente outros gerenciadores de código como scenes e demais.
O sistemas não é perceptível por screens.


Última edição por Paulo Soreto em Sex Fev 07, 2014 11:05 pm, editado 2 vez(es)

_________________
WindowManager (Completo) FwYnoXI
Paulo Soreto
Paulo Soreto
Lenda
Lenda

Mensagens : 1980
Créditos : 367

Ficha do personagem
Nível: 1
Experiência:
WindowManager (Completo) Left_bar_bleue0/0WindowManager (Completo) Empty_bar_bleue  (0/0)
Vida:
WindowManager (Completo) Left_bar_bleue30/30WindowManager (Completo) Empty_bar_bleue  (30/30)

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

WindowManager (Completo) Empty Re: WindowManager (Completo)

Mensagem por RD12 Qui Jan 09, 2014 8:59 am

Ficou bem legal, mas tem uma desvantagem que é não poder chamar qualquer método, por ter apenas os pré-definidos.
Então uma dica: você pode usar o método send, que todo objeto do ruby tem.

Código:
def self.call(t,m) #m=method
    return if @windows[t].nil?
    @windows[t].visible ? @windows[t].send(m): return
end

exemplo: WindowManager.call("X", "refresh")
RD12
RD12
Lenda
Lenda

Medalhas : WindowManager (Completo) 48080450WindowManager (Completo) Trophy11WindowManager (Completo) GIueZWindowManager (Completo) ZgLkiRU
Mensagens : 1946
Créditos : 745

Ir para o topo Ir para baixo

WindowManager (Completo) Empty Re: WindowManager (Completo)

Mensagem por Paulo Soreto Qui Jan 09, 2014 9:03 am

Acabei de adicionar uma opção pra isso.

Código:
WindowManager.Window("WindowX").Método

_________________
WindowManager (Completo) FwYnoXI
Paulo Soreto
Paulo Soreto
Lenda
Lenda

Mensagens : 1980
Créditos : 367

Ficha do personagem
Nível: 1
Experiência:
WindowManager (Completo) Left_bar_bleue0/0WindowManager (Completo) Empty_bar_bleue  (0/0)
Vida:
WindowManager (Completo) Left_bar_bleue30/30WindowManager (Completo) Empty_bar_bleue  (30/30)

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

WindowManager (Completo) Empty Re: WindowManager (Completo)

Mensagem por renan-vieira Qui Jan 09, 2014 10:54 am

Com muito valor que dou +1 , pessoal não valoriza o que evita a merda do lag nos jogos deles, isso dá raiva, se fosse uma window ai com algo escrito "Hello World" todos te valorizaria! Parabéns manolo vai ajudar muito.

_________________
Secti MaInE - Mapa de Informações Estratégicas do Rio de Janeiro.
http://maine.rj.gov.br/

eMuseu - Museu Nacional do Esporte.
https://www.emuseudoesporte.com.br/

Memórias - Memórias de Oswaldo Cruz(App Hibrido Ionic).
Link do APP na playstore

Projetos citados acima foram produzidos com equipes no qual eu participei como programador Frontend e UI Design/UX Design.



Skype: Renan.vieiraa 
Facebook: /renandesign 
E-mail: renanvieira.webdesign@gmail.com
ou entre em contato via MP:^.^:
renan-vieira
renan-vieira
Colaborador
Colaborador

Medalhas : WindowManager (Completo) ZgLkiRU
Mensagens : 652
Créditos : 254

Ficha do personagem
Nível: 1
Experiência:
WindowManager (Completo) Left_bar_bleue0/50WindowManager (Completo) Empty_bar_bleue  (0/50)
Vida:
WindowManager (Completo) Left_bar_bleue30/30WindowManager (Completo) Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

WindowManager (Completo) Empty Re: WindowManager (Completo)

Mensagem por Paulo Soreto Qui Jan 09, 2014 12:37 pm

Obrigado Renan. Sim, é muito comum a desvalorização de sistemas não perceptíveis de primeiro olhar. Mas creio que com o tempo os makers irão cair na real e perceber que um jogo não se faz só de aparência, o interior também tem que estar limpo caso contrário ocorrerá os diversos problemas que já vimos aqui no fórum como lag, bugs, desorganização e outros...

_________________
WindowManager (Completo) FwYnoXI
Paulo Soreto
Paulo Soreto
Lenda
Lenda

Mensagens : 1980
Créditos : 367

Ficha do personagem
Nível: 1
Experiência:
WindowManager (Completo) Left_bar_bleue0/0WindowManager (Completo) Empty_bar_bleue  (0/0)
Vida:
WindowManager (Completo) Left_bar_bleue30/30WindowManager (Completo) Empty_bar_bleue  (30/30)

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

WindowManager (Completo) Empty Re: WindowManager (Completo)

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos