Aldeia RPG

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

Suporte no desenvolvimento de jogos


    Buffer

    Valentine
    Valentine
    Administrador
    Administrador

    Medalhas : Buffer       ZgLkiRU
    Mensagens : 5163
    Créditos : 1137

    Buffer       Empty Buffer

    Mensagem por Valentine em Ter Maio 01, 2018 7:49 am

    Sobre:
    Lê e escreve dados como valores binários.

    Script:
    Código:
    #==============================================================================
    # ** Buffer
    #------------------------------------------------------------------------------
    #  Esta classe lê e escreve dados binários.
    #------------------------------------------------------------------------------
    #  Autor: Valentine
    #==============================================================================

    class Buffer_Writer
      
      def initialize
        @buffer = []
        @pack = ''
      end
      
      def write_byte(byte)
        write(byte, 'c')
      end
      
      def write_boolean(value)
        write_byte(value ? 1 : 0)
      end
      
      def write_short(short)
        write(short, 's')
      end
      
      def write_float(float)
        write(float, 'f')
      end
      
      def write_double(double)
        write(double, 'd')
      end
      
      def write_int(int)
        write(int, 'i')
      end
      
      def write_long(long)
        # q representa um número de 64 bits, diferentemente
        #de l que representa um número de 32 bits
        write(long, 'q')
      end
      
      def write_string(str)
        write_short(str.bytesize)
        str.each_byte { |c| write_byte(c) }
      end
      
      def to_s
        @buffer.pack(@pack)
      end
      
      private
      
      def write(value, format)
        @buffer << value
        @pack << format
      end
      
    end

    #==============================================================================
    # ** Buffer_Reader
    #==============================================================================
    class Buffer_Reader
      
      def initialize(str)
        # O método to_a é usado, pois, nesta versão do Ruby,
        #bytes retorna Enumerator em vez de Array
        @bytes = str.bytes.to_a
      end
      
      def read_byte
        @bytes.shift
      end
      
      def read_boolean
        read_byte == 1
      end
      
      def read_short
        read(2, 's')
      end
      
      def read_float
        read(4, 'f')
      end
      
      def read_double
        read(8, 'd')
      end
      
      def read_int
        read(4, 'i')
      end
      
      def read_long
        read(8, 'q')
      end
      
      def read_string
        size = read_short
        read(size, "A#{size}")
      end
      
      def read_time
        Time.new(read_short, read_byte, read_byte)
      end
      
      private
      
      def read(n, format)
        @bytes.shift(n).pack('C*').unpack(format)[0]
      end
      
    end

    Exemplos:
    Escrevendo:
    Código:
    buffer_writer = Buffer_Writer.new
    buffer_writer.write_string('texto')
    buffer_writer.write_byte(1)

    Lendo:
    Código:
    buffer_reader = Buffer_Reader.new(buffer_writer.to_s)
    text = buffer_reader.read_string
    number = buffer_reader.read_byte

    Créditos:
    Valentine


    Última edição por Valentine em Qui Out 08, 2020 10:59 am, editado 8 vez(es)


    _________________
    Buffer       AIymW
    Profane ~
    Profane ~
    Moderador Global
    Moderador Global

    Mensagens : 800
    Créditos : 128

    Buffer       Empty Re: Buffer

    Mensagem por Profane ~ em Ter Maio 01, 2018 8:04 am

    Eita, RPG Maker com Buffers /o/ Agora sim parece ter superado a EBB <3


    _________________
    "Mistress of shattered hopes and forever broken dreams"
    Valentine
    Valentine
    Administrador
    Administrador

    Medalhas : Buffer       ZgLkiRU
    Mensagens : 5163
    Créditos : 1137

    Buffer       Empty Re: Buffer

    Mensagem por Valentine em Ter Maio 01, 2018 8:31 am

    @Profane ~ escreveu:Eita, RPG Maker com Buffers /o/ Agora sim parece ter superado a EBB <3
    Na verdade, o VXA-OS já tem. Só estou postando o buffer separado aqui com float e double.


    _________________
    Buffer       AIymW
    Valentine
    Valentine
    Administrador
    Administrador

    Medalhas : Buffer       ZgLkiRU
    Mensagens : 5163
    Créditos : 1137

    Buffer       Empty Re: Buffer

    Mensagem por Valentine em Qui Out 08, 2020 10:40 am

    Tópico atualizado.


    _________________
    Buffer       AIymW
    ???
    ???
    Novato
    Novato

    Mensagens : 4
    Créditos : 0

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

    Buffer       Empty Re: Buffer

    Mensagem por ??? em Qui Out 08, 2020 3:05 pm

    bom ver que o RPG Maker hoje em dia está tendo mais condições de se tornar
    algo mais usado/relevante, dentre outros motores disponíveis
    ótimo script, parabéns.

    Conteúdo patrocinado

    Buffer       Empty Re: Buffer

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sex Out 30, 2020 7:21 pm