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