class WolfRpg::Database::Type
Attributes
data[RW]
description[RW]
fields[RW]
name[RW]
unknown1[RW]
Public Class Methods
new(coder)
click to toggle source
Initialize from project file IO
# File lib/wolfrpg/database.rb, line 89 def initialize(coder) @name = coder.read_string @fields = Array.new(coder.read_int) @fields.each_index do |i| @fields[i] = Field.new(coder) end @data = Array.new(coder.read_int) @data.each_index do |i| @data[i] = Data.new(coder) end @description = coder.read_string # Add misc data to fields. It's separated for some reason. # This appears to always be 0x64, but save it anyway @field_type_list_size = coder.read_int index = 0 while index < @fields.size @fields[index].type = coder.read_byte index += 1 end coder.skip(@field_type_list_size - index) coder.read_int.times do |i| @fields[i].unknown1 = coder.read_string end coder.read_int.times do |i| @fields[i].string_args = Array.new(coder.read_int) @fields[i].string_args.each_index do |j| @fields[i].string_args[j] = coder.read_string end end coder.read_int.times do |i| @fields[i].args = Array.new(coder.read_int) @fields[i].args.each_index do |j| @fields[i].args[j] = coder.read_int end end coder.read_int.times do |i| @fields[i].default_value = coder.read_int end end
Public Instance Methods
dump_dat(coder)
click to toggle source
# File lib/wolfrpg/database.rb, line 195 def dump_dat(coder) coder.write(DAT_TYPE_SEPARATOR) coder.write_int(@unknown1) coder.write_int(@fields.size) @fields.each do |field| field.dump_dat(coder) end coder.write_int(@data.size) @data.each do |datum| datum.dump_dat(coder) end end
dump_project(coder)
click to toggle source
# File lib/wolfrpg/database.rb, line 132 def dump_project(coder) coder.write_string(@name) coder.write_int(@fields.size) @fields.each do |field| field.dump_project(coder) end coder.write_int(@data.size) @data.each do |datum| datum.dump_project(coder) end coder.write_string(@description) # Dump misc field data coder.write_int(@field_type_list_size) index = 0 while index < @fields.size coder.write_byte(@fields[index].type) index += 1 end while index < @field_type_list_size coder.write_byte(0) index += 1 end coder.write_int(@fields.size) @fields.each do |field| coder.write_string(field.unknown1) end coder.write_int(@fields.size) @fields.each do |field| coder.write_int(field.string_args.size) field.string_args.each do |arg| coder.write_string(arg) end end coder.write_int(@fields.size) @fields.each do |field| coder.write_int(field.args.size) field.args.each do |arg| coder.write_int(arg) end end coder.write_int(@fields.size) @fields.each do |field| coder.write_int(field.default_value) end end
read_dat(coder)
click to toggle source
Read the rest of the data from the dat file
# File lib/wolfrpg/database.rb, line 180 def read_dat(coder) coder.verify(DAT_TYPE_SEPARATOR) @unknown1 = coder.read_int fields_size = coder.read_int @fields = @fields[0, fields_size] if fields_size != @fields.size @fields.each do |field| field.read_dat(coder) end data_size = coder.read_int @data = @data[0, data_size] if data_size != @data.size @data.each do |datum| datum.read_dat(coder, @fields) end end