Fixed bug in previous commit relating to writing PBS files

This commit is contained in:
Maruno17
2023-11-06 20:02:32 +00:00
parent f07b44d826
commit d10892af47

View File

@@ -763,41 +763,63 @@ module Compiler
next if value.nil? next if value.nil?
case schema[1][i, 1] case schema[1][i, 1]
when "e", "E" # Enumerable when "e", "E" # Enumerable
enumer = schema[2 + i] enumer = schema[2 + i - start]
case enumer case enumer
when Array when Array
file.write(enumer[value]) file.write((value.is_a?(Integer) && enumer[value].nil?) ? enumer[value] : value)
when Symbol, String when Symbol, String
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) mod = Object.const_get(enumer.to_sym)
file.write(getConstantName(mod, value)) file.write(getConstantName(mod, value))
end
when Module when Module
file.write(getConstantName(enumer, value)) file.write(getConstantName(enumer, value))
when Hash when Hash
if value.is_a?(String)
file.write(value)
else
enumer.each_key do |key| enumer.each_key do |key|
next if enumer[key] != value next if enumer[key] != value
file.write(key) file.write(key)
break break
end end
end end
end
when "y", "Y" # Enumerable or integer when "y", "Y" # Enumerable or integer
enumer = schema[2 + i] enumer = schema[2 + i - start]
case enumer case enumer
when Array 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 when Symbol, String
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) mod = Object.const_get(enumer.to_sym)
file.write(getConstantNameOrValue(mod, value)) file.write(getConstantNameOrValue(mod, value))
end
when Module when Module
file.write(getConstantNameOrValue(enumer, value)) file.write(getConstantNameOrValue(enumer, value))
when Hash when Hash
hasenum = false if value.is_a?(String)
file.write(value)
else
has_enum = false
enumer.each_key do |key| enumer.each_key do |key|
next if enumer[key] != value next if enumer[key] != value
file.write(key) file.write(key)
hasenum = true has_enum = true
break break
end end
file.write(value) unless hasenum file.write(value) if !has_enum
end
end end
else else
if value.is_a?(String) if value.is_a?(String)