From 092fbda34d57ed272418a4c061164233b7bff775 Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Sat, 4 Nov 2023 23:32:43 +0000 Subject: [PATCH] Fixed being unable to write values to PBS files that were enumerated to something other than a number, error log files now go in the game's folder --- .gitignore | 1 + .../001_Technical/001_Debugging/003_Errors.rb | 1 - .../001_Technical/005_PluginManager.rb | 1 - Data/Scripts/021_Compiler/001_Compiler.rb | 106 ++++++++---------- 4 files changed, 48 insertions(+), 61 deletions(-) diff --git a/.gitignore b/.gitignore index 7b0d9e9c7..ca65433dd 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ Data/* !Data/messages_core.dat # Files in the main project folder +errorlog.txt Game.ini Game.rxproj RGSS*.dll diff --git a/Data/Scripts/001_Technical/001_Debugging/003_Errors.rb b/Data/Scripts/001_Technical/001_Debugging/003_Errors.rb index f1ffb4a32..9618d220b 100644 --- a/Data/Scripts/001_Technical/001_Debugging/003_Errors.rb +++ b/Data/Scripts/001_Technical/001_Debugging/003_Errors.rb @@ -51,7 +51,6 @@ def pbPrintException(e) end # output to log errorlog = "errorlog.txt" - errorlog = RTP.getSaveFileName("errorlog.txt") if (Object.const_defined?(:RTP) rescue false) File.open(errorlog, "ab") do |f| f.write("\r\n=================\r\n\r\n[#{Time.now}]\r\n") f.write(message) diff --git a/Data/Scripts/001_Technical/005_PluginManager.rb b/Data/Scripts/001_Technical/005_PluginManager.rb index 9ef2c3e29..2bd2aa5c5 100644 --- a/Data/Scripts/001_Technical/005_PluginManager.rb +++ b/Data/Scripts/001_Technical/005_PluginManager.rb @@ -380,7 +380,6 @@ module PluginManager e.backtrace[0, 10].each { |i| message += "#{i}\r\n" } # output to log errorlog = "errorlog.txt" - errorlog = RTP.getSaveFileName("errorlog.txt") if (Object.const_defined?(:RTP) rescue false) File.open(errorlog, "ab") do |f| f.write("\r\n=================\r\n\r\n[#{Time.now}]\r\n") f.write(message) diff --git a/Data/Scripts/021_Compiler/001_Compiler.rb b/Data/Scripts/021_Compiler/001_Compiler.rb index a050bc5e1..34a251198 100644 --- a/Data/Scripts/021_Compiler/001_Compiler.rb +++ b/Data/Scripts/021_Compiler/001_Compiler.rb @@ -760,69 +760,57 @@ module Compiler end end file.write(",") if index > 0 - if value.nil? - # do nothing - elsif value.is_a?(String) - if schema[1][i, 1].downcase == "q" - file.write(value) - else - file.write(csvQuote(value)) + next if value.nil? + case schema[1][i, 1] + when "e", "E" # Enumerable + enumer = schema[2 + i] + case enumer + when Array + file.write(enumer[value]) + when Symbol, String + mod = Object.const_get(enumer.to_sym) + file.write(getConstantName(mod, value)) + when Module + file.write(getConstantName(enumer, value)) + when Hash + enumer.each_key do |key| + next if enumer[key] != value + file.write(key) + break + end end - elsif value.is_a?(Symbol) - file.write(csvQuote(value.to_s)) - elsif value == true - file.write("true") - elsif value == false - file.write("false") - elsif value.is_a?(Numeric) - case schema[1][i, 1] - when "e", "E" # Enumerable - enumer = schema[2 + i] - case enumer - when Array - file.write(enumer[value]) - when Symbol, String - mod = Object.const_get(enumer.to_sym) - file.write(getConstantName(mod, value)) - when Module - file.write(getConstantName(enumer, value)) - when Hash - enumer.each_key do |key| - if enumer[key] == value - file.write(key) - break - end - end + when "y", "Y" # Enumerable or integer + enumer = schema[2 + i] + case enumer + when Array + file.write((enumer[value].nil?) ? value : enumer[value]) + when Symbol, String + mod = Object.const_get(enumer.to_sym) + file.write(getConstantNameOrValue(mod, value)) + 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 end - when "y", "Y" # Enumerable or integer - enumer = schema[2 + i] - case enumer - when Array - if enumer[value].nil? - file.write(value) - else - file.write(enumer[value]) - end - when Symbol, String - mod = Object.const_get(enumer.to_sym) - file.write(getConstantNameOrValue(mod, value)) - 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 - end - file.write(value) unless hasenum - end - else # Any other record type - file.write(value.inspect) + file.write(value) unless hasenum end else - file.write(value.inspect) + if value.is_a?(String) + file.write((schema[1][i, 1].downcase == "q") ? value : csvQuote(value)) + elsif value.is_a?(Symbol) + file.write(csvQuote(value.to_s)) + elsif value == true + file.write("true") + elsif value == false + file.write("false") + else + file.write(value.inspect) + end end end break if start > 0 && index >= rec.length - 1