Aldeia RPG

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

Suporte ao desenvolvimento de jogos


3 participantes

    WindowManager (Completo)

    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)

    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
    RD12
    RD12
    Lenda
    Lenda


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

    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")
    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)

    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
    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)

    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:^.^:
    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)

    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

    Conteúdo patrocinado


    WindowManager (Completo) Empty Re: WindowManager (Completo)

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui Nov 21, 2024 8:07 am