mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
234 lines
6.6 KiB
Ruby
234 lines
6.6 KiB
Ruby
# To use the console, use the executable explicitly built with the console
|
|
# enabled on Windows. On Linux and macOS, just launch the executable directly
|
|
# from a terminal.
|
|
module Console
|
|
def self.setup_console
|
|
return unless $DEBUG
|
|
echoln "GPU Cache Max: #{Bitmap.max_size}"
|
|
echoln "-------------------------------------------------------------------------------"
|
|
echoln "#{System.game_title} Output Window"
|
|
echoln "-------------------------------------------------------------------------------"
|
|
echoln "If you can see this window, you are running the game in Debug Mode. This means"
|
|
echoln "that you're either playing a debug version of the game, or you're playing from"
|
|
echoln "within RPG Maker XP."
|
|
echoln ""
|
|
echoln "Closing this window will close the game. If you want to get rid of this window,"
|
|
echoln "run the program from the Shell, or download a release version of the game."
|
|
echoln "-------------------------------------------------------------------------------"
|
|
echoln "Debug Output:"
|
|
echoln "-------------------------------------------------------------------------------"
|
|
echoln ""
|
|
end
|
|
|
|
def self.readInput
|
|
return gets.strip
|
|
end
|
|
|
|
def self.readInput2
|
|
return self.readInput
|
|
end
|
|
|
|
def self.get_input
|
|
echo self.readInput2
|
|
end
|
|
end
|
|
|
|
module Kernel
|
|
def echo(string)
|
|
return unless $DEBUG
|
|
printf(string.is_a?(String) ? string : string.inspect)
|
|
end
|
|
|
|
def echoln(string)
|
|
echo string
|
|
echo "\r\n"
|
|
end
|
|
end
|
|
|
|
Console.setup_console
|
|
|
|
#===============================================================================
|
|
# Console message formatting
|
|
#===============================================================================
|
|
module Console
|
|
module_function
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# echo string into console (example shorthand for common options)
|
|
#-----------------------------------------------------------------------------
|
|
# heading 1
|
|
def echo_h1(msg)
|
|
echoln markup_style("*** #{msg} ***", text: :brown)
|
|
echoln ""
|
|
end
|
|
|
|
# heading 2
|
|
def echo_h2(msg, **options)
|
|
echoln markup_style(msg, **options)
|
|
echoln ""
|
|
end
|
|
|
|
# heading 3
|
|
def echo_h3(msg)
|
|
echoln markup(msg)
|
|
echoln ""
|
|
end
|
|
|
|
# list item
|
|
def echo_li(msg, pad = 0, color = :brown)
|
|
echo markup_style(" -> ", text: color)
|
|
pad = (pad - msg.length) > 0 ? "." * (pad - msg.length) : ""
|
|
echo markup(msg + pad)
|
|
end
|
|
|
|
# list item with line break after
|
|
def echoln_li(msg, pad = 0, color = :brown)
|
|
self.echo_li(msg, pad, color)
|
|
echoln ""
|
|
end
|
|
|
|
# Same as echoln_li but text is in green
|
|
def echoln_li_done(msg)
|
|
self.echo_li(markup_style(msg, text: :green), 0, :green)
|
|
echoln ""
|
|
echoln ""
|
|
end
|
|
|
|
# paragraph with markup
|
|
def echo_p(msg)
|
|
echoln markup(msg)
|
|
end
|
|
|
|
# warning message
|
|
def echo_warn(msg)
|
|
echoln markup_style("WARNING: #{msg}", text: :yellow)
|
|
end
|
|
|
|
# error message
|
|
def echo_error(msg)
|
|
echoln markup_style("ERROR: #{msg}", text: :light_red)
|
|
end
|
|
|
|
# status output
|
|
def echo_status(status)
|
|
if status
|
|
echoln markup_style("OK", text: :green)
|
|
else
|
|
echoln markup_style("FAIL", text: :red)
|
|
end
|
|
end
|
|
|
|
# completion output
|
|
def echo_done(status)
|
|
if status
|
|
echoln markup_style("done", text: :green)
|
|
else
|
|
echoln markup_style("error", text: :red)
|
|
end
|
|
end
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Markup options
|
|
#-----------------------------------------------------------------------------
|
|
def string_colors
|
|
{
|
|
default: "38", black: "30", red: "31", green: "32", brown: "33",
|
|
blue: "34", purple: "35", cyan: "36", gray: "37",
|
|
dark_gray: "1;30", light_red: "1;31", light_green: "1;32", yellow: "1;33",
|
|
light_blue: "1;34", light_purple: "1;35", light_cyan: "1;36", white: "1;37"
|
|
}
|
|
end
|
|
|
|
def background_colors
|
|
{
|
|
default: "0", black: "40", red: "41", green: "42", brown: "43",
|
|
blue: "44", purple: "45", cyan: "46", gray: "47",
|
|
dark_gray: "100", light_red: "101", light_green: "102", yellow: "103",
|
|
light_blue: "104", light_purple: "105", light_cyan: "106", white: "107"
|
|
}
|
|
end
|
|
|
|
def font_options
|
|
{
|
|
bold: "1", dim: "2", italic: "3", underline: "4", reverse: "7",
|
|
hidden: "8"
|
|
}
|
|
end
|
|
|
|
# Text markup that turns text between them a certain color
|
|
def markup_colors
|
|
{
|
|
"`" => :cyan, '"' => :purple, "==" => :purple, "$" => :green, "~" => :red
|
|
}
|
|
end
|
|
|
|
def markup_options
|
|
{
|
|
"__" => :underline, "*" => :bold, "|" => :italic
|
|
}
|
|
end
|
|
|
|
# apply console coloring
|
|
def markup_style(string, text: :default, bg: :default, **options)
|
|
# get colors
|
|
code_text = string_colors[text]
|
|
code_bg = background_colors[bg]
|
|
# get options
|
|
options_pool = options.select { |key, val| font_options.key?(key) && val }
|
|
markup_pool = options_pool.keys.map { |opt| font_options[opt] }.join(";").squeeze
|
|
# return formatted string
|
|
return "\e[#{code_bg};#{markup_pool};#{code_text}m#{string}\e[0m".squeeze(";")
|
|
end
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Perform markup on text
|
|
#-----------------------------------------------------------------------------
|
|
|
|
def markup_all_options
|
|
@markup_all_options ||= markup_colors.merge(markup_options)
|
|
end
|
|
|
|
def markup_component(string, component, key, options)
|
|
# trim inner markup content
|
|
l = key.length
|
|
trimmed = component[l...-l]
|
|
# merge markup options
|
|
options[trimmed] = {} unless options[trimmed]
|
|
options[trimmed].deep_merge!({}.tap do |new_opt|
|
|
new_opt[:text] = markup_colors[key] if markup_colors.key?(key)
|
|
new_opt[markup_options[key]] = true if markup_options.key?(key)
|
|
end)
|
|
# remove markup from input string
|
|
string.gsub!(component, trimmed)
|
|
# return output
|
|
return string, options
|
|
end
|
|
|
|
def markup_breakdown(string, options = {})
|
|
# iterate through all options
|
|
markup_all_options.each_key do |key|
|
|
# ensure escape
|
|
key_char = key.chars.map { |c| "\\#{c}" }.join
|
|
# define regex
|
|
regex = "#{key_char}.*?#{key_char}"
|
|
# go through matches
|
|
string.scan(/#{regex}/).each do |component|
|
|
return *markup_breakdown(*markup_component(string, component, key, options))
|
|
end
|
|
end
|
|
# return output
|
|
return string, options
|
|
end
|
|
|
|
def markup(string)
|
|
# get a breakdown of all markup options
|
|
string, options = markup_breakdown(string)
|
|
# iterate through each option and apply
|
|
options.each do |key, opt|
|
|
string.gsub!(key, markup_style(key, **opt))
|
|
end
|
|
# return string
|
|
return string
|
|
end
|
|
end
|