Suporte no desenvolvimento de jogos


    Valentine
    Valentine
    Administrador
    Administrador

    Medalhas : Buffer       94JxvBuffer       ZgLkiRU
    Mensagens : 5023
    Créditos : 1114
    Cash : 0

    Buffer       Empty Buffer

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

    Descrição:
    Lê e escreve dados como valores binários.

    Código:
    #==============================================================================
    # ** Buffer
    #------------------------------------------------------------------------------
    #  Autor: Valentine
    #==============================================================================

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

    #==============================================================================
    # ** Buffer_Reader
    #==============================================================================
    class Buffer_Reader
     
      def initialize(str)
        @read_bytes = []
        str.each_byte { |c| @read_bytes << c }
        @read_pos = 0
      end

      def read_byte
        byte = @read_bytes[@read_pos]
        @read_pos += 1
        byte
      end

      def read_boolean
        read_byte == 1
      end

      def read_short
        short = @read_bytes[@read_pos, @read_pos + 2]
        @read_pos += 2
        short.pack('C*').unpack('s')[0]
      end

      def read_float
        float = @read_bytes[@read_pos, @read_pos + 4]
        @read_pos += 4
        float.pack('C*').unpack('f')[0]
      end

      def read_double
        double = @read_bytes[@read_pos, @read_pos + 8]
        @read_pos += 8
        double.pack('C*').unpack('d')[0]
      end

      def read_int
        int = @read_bytes[@read_pos, @read_pos + 4]
        @read_pos += 4
        int.pack('C*').unpack('i')[0]
      end

      def read_long
        long = @read_bytes[@read_pos, @read_pos + 8]
        @read_pos += 8
        long.pack('C*').unpack('q')[0]
      end

      def read_string
        bsize = read_short
        str = @read_bytes[@read_pos, @read_pos + bsize]
        @read_pos += bsize
        str.pack('C*').unpack("A#{bsize}")[0]
      end

      def can_read?
        @read_pos < @read_bytes.size
      end

    end

    Créditos:
    Valentine


    Última edição por Valentine em Qua Jul 11, 2018 7:58 am, editado 3 vez(es)


    _________________
    Buffer       AIymW
    Profane ~
    Profane ~
    Moderador Global
    Moderador Global

    Mensagens : 781
    Créditos : 128
    Cash : 0

    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       94JxvBuffer       ZgLkiRU
    Mensagens : 5023
    Créditos : 1114
    Cash : 0

    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

    Conteúdo patrocinado

    Buffer       Empty Re: Buffer

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui Dez 12, 2019 2:16 pm