global
def self.write_system(system_file_path, ini_file_path, other_path, output_path, shuffle_level, logging)
-
logging
(Boolean
) -- -
shuffle_level
(Integer
) -- -
output_path
(String
) -- -
other_path
(String
) -- -
ini_file_path
(String
) -- -
system_file_path
(String
) --
def self.write_system(system_file_path, ini_file_path, other_path, output_path, shuffle_level, logging) system_basename = File.basename(system_file_path) system_object = Marshal.load(File.binread(system_file_path)) system_original_text = File.readlines(File.join(other_path, 'system.txt'), encoding: 'UTF-8', chomp: true) .map(&:strip) .freeze system_translated_text = File.readlines(File.join(other_path, 'system_trans.txt'), encoding: 'UTF-8', chomp: true) .map(&:strip) if shuffle_level.positive? system_translated_text.shuffle! system_translated_text = shuffle_words(system_translated_text) if shuffle_level == 2 end system_translation_map = Hash[system_original_text.zip(system_translated_text)].freeze elements = system_object.elements skill_types = system_object.skill_types weapon_types = system_object.weapon_types armor_types = system_object.armor_types currency_unit = system_object.currency_unit terms = system_object.terms || system_object.words [elements, skill_types, weapon_types, armor_types].each_with_index.each do |array, i| next unless array.is_a?(Array) array.map! do |string| stripped = string.strip return string if stripped.empty? translated = system_translation_map[stripped] !translated.nil? && !translated.empty? ? translated : stripped end if i.zero? system_object.elements = array elsif i == 1 system_object.skill_types = array elsif i == 2 system_object.weapon_types = array else system_object.armor_types = array end end currency_unit_translated = system_translation_map[currency_unit] system_object.currency_unit = currency_unit_translated if currency_unit.is_a?(String) && (!currency_unit_translated.nil? && !currency_unit_translated.empty?) terms.instance_variables.each do |variable| value = terms.instance_variable_get(variable) if value.is_a?(String) stripped = value.strip next if value.empty? translated = system_translation_map[stripped] value = !translated.nil? && !translated.empty? ? translated : value elsif value.is_a?(Array) value.map! do |string| stripped = string.strip return string if stripped.empty? translated = system_translation_map[stripped] value = !translated.nil? && !translated.empty? ? translated : value end end terms.instance_variable_set(variable, value) end system_object.terms.nil? ? system_object.words = terms : system_object.terms = terms game_title_translated = system_translated_text[-1] system_object.game_title = game_title_translated write_ini_title(ini_file_path, game_title_translated) puts "Written #{system_basename}" if logging File.binwrite(File.join(output_path, system_basename), Marshal.dump(system_object)) end