From d10892af474adbce3cad94d1d9baa158bb4a1c54 Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Mon, 6 Nov 2023 20:02:32 +0000 Subject: [PATCH] Fixed bug in previous commit relating to writing PBS files --- Data/Scripts/021_Compiler/001_Compiler.rb | 60 ++++++++++++++++------- 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/Data/Scripts/021_Compiler/001_Compiler.rb b/Data/Scripts/021_Compiler/001_Compiler.rb index 34a25119..7f77ea71 100644 --- a/Data/Scripts/021_Compiler/001_Compiler.rb +++ b/Data/Scripts/021_Compiler/001_Compiler.rb @@ -763,41 +763,63 @@ module Compiler next if value.nil? case schema[1][i, 1] when "e", "E" # Enumerable - enumer = schema[2 + i] + enumer = schema[2 + i - start] case enumer when Array - file.write(enumer[value]) + file.write((value.is_a?(Integer) && enumer[value].nil?) ? enumer[value] : value) when Symbol, String - mod = Object.const_get(enumer.to_sym) - file.write(getConstantName(mod, value)) + if GameData.const_defined?(enumer.to_sym) + mod = GameData.const_get(enumer.to_sym) + file.write(mod.get(value).id.to_s) + else + mod = Object.const_get(enumer.to_sym) + file.write(getConstantName(mod, value)) + end when Module file.write(getConstantName(enumer, value)) when Hash - enumer.each_key do |key| - next if enumer[key] != value - file.write(key) - break + if value.is_a?(String) + file.write(value) + else + enumer.each_key do |key| + next if enumer[key] != value + file.write(key) + break + end end end when "y", "Y" # Enumerable or integer - enumer = schema[2 + i] + enumer = schema[2 + i - start] case enumer when Array - file.write((enumer[value].nil?) ? value : enumer[value]) + file.write((value.is_a?(Integer) && enumer[value].nil?) ? enumer[value] : value) when Symbol, String - mod = Object.const_get(enumer.to_sym) - file.write(getConstantNameOrValue(mod, value)) + if !Kernel.const_defined?(enumer.to_sym) && GameData.const_defined?(enumer.to_sym) + mod = GameData.const_get(enumer.to_sym) + if mod.exists?(value) + file.write(mod.get(value).id.to_s) + else + file.write(value.to_s) + end + else + mod = Object.const_get(enumer.to_sym) + file.write(getConstantNameOrValue(mod, value)) + end when Module file.write(getConstantNameOrValue(enumer, value)) when Hash - hasenum = false - enumer.each_key do |key| - next if enumer[key] != value - file.write(key) - hasenum = true - break + if value.is_a?(String) + file.write(value) + else + has_enum = false + enumer.each_key do |key| + next if enumer[key] != value + file.write(key) + has_enum = true + break + end + file.write(value) if !has_enum end - file.write(value) unless hasenum end else if value.is_a?(String)