class WolfRpg::Database::Data

Attributes

int_values[RW]
name[RW]
string_values[RW]

Public Class Methods

new(coder) click to toggle source
# File lib/wolfrpg/database.rb, line 260
def initialize(coder)
  @name = coder.read_string
end

Public Instance Methods

[](key) click to toggle source
# File lib/wolfrpg/database.rb, line 290
def [](key)
  if key.is_a? Field
    if key.string?
      @string_values[key.index]
    else
      @int_values[key.index]
    end
  elsif value.is_a? Integer
    self[@fields[key]]
  else
    raise "Data[] takes a Field, got a #{value.class}"
  end
end
[]=(key, value) click to toggle source
# File lib/wolfrpg/database.rb, line 304
def []=(key, value)
  if key.is_a? Field
    if key.string?
      @string_values[key.index] = value
    else
      @int_values[key.index] = value
    end
  elsif value.is_a? Integer
    self[@fields[key]] = value
  else
    raise "Data[] takes a Field, got a #{value.class}"
  end
end
dump_dat(coder) click to toggle source
# File lib/wolfrpg/database.rb, line 281
def dump_dat(coder)
  @int_values.each do |i|
    coder.write_int(i)
  end
  @string_values.each do |i|
    coder.write_string(i)
  end
end
dump_project(coder) click to toggle source
# File lib/wolfrpg/database.rb, line 264
def dump_project(coder)
  coder.write_string(@name)
end
each_filename() { |gsub('\\', '/')| ... } click to toggle source
# File lib/wolfrpg/database.rb, line 326
def each_filename
  @fields.each do |field|
    next unless field.string?
    self[field].scan(/^[^ ]*?[\/\\].*?\.[a-zA-Z0-9]+$/).each do |filename|
      yield filename.gsub('\\', '/')
    end
  end
end
each_translatable() { |value, field| ... } click to toggle source
# File lib/wolfrpg/database.rb, line 318
def each_translatable
  @fields.each do |field|
    next unless field.string? && field.type == 0
    value = self[field]
    yield [value, field] unless value.empty? || value.include?("\n")
  end
end
read_dat(coder, fields) click to toggle source
# File lib/wolfrpg/database.rb, line 268
def read_dat(coder, fields)
  @fields = fields
  @int_values = Array.new(fields.select(&:int?).size)
  @string_values = Array.new(fields.select(&:string?).size)

  @int_values.each_index do |i|
    @int_values[i] = coder.read_int
  end
  @string_values.each_index do |i|
    @string_values[i] = coder.read_string
  end
end