Files
infinitefusion-e18/Data/Scripts/801_UI controls/001_UIControls.rb
2024-05-13 20:32:20 +01:00

141 lines
5.2 KiB
Ruby

#===============================================================================
# Container module for control classes.
#===============================================================================
module UIControls; end
#===============================================================================
#
#===============================================================================
module UIControls::StyleMixin
COLOR_SCHEMES = {
:dark => {
:background_color => Color.new(32, 32, 32),
:text_color => Color.white,
:disabled_text_color => Color.new(96, 96, 96),
:line_color => Color.white,
:disabled_fill_color => Color.new(128, 128, 128),
:hover_color => Color.new(64, 80, 80),
:capture_color => Color.new(224, 32, 96),
:highlight_color => Color.new(160, 128, 16),
# Sidebars
# :delete_icon_color => Color.new(248, 96, 96), # Unchanged
# Checkbox
:checked_color => Color.new(32, 160, 32),
:unchecked_color => Color.new(160, 160, 160),
# ParticleList
# :position_line_color => Color.new(248, 96, 96), # Unchanged
:after_end_bg_color => Color.new(80, 80, 80),
:se_background_color => Color.new(160, 160, 160),
:property_background_color => Color.new(96, 96, 96),
# ParticleList and Canvas
:focus_colors => {
:foreground => Color.new(80, 112, 248), # Blue
:midground => Color.new(80, 112, 248), # Blue
:background => Color.new(80, 112, 248), # Blue
:user => Color.new(32, 192, 32), # Green
:target => Color.new(192, 32, 32), # Red
:user_and_target => Color.new(192, 192, 32), # Yellow
:user_side_foreground => Color.new(80, 208, 208), # Cyan
:user_side_background => Color.new(80, 208, 208), # Cyan
:target_side_foreground => Color.new(80, 208, 208), # Cyan
:target_side_background => Color.new(80, 208, 208) # Cyan
}
}
}
FOCUS_COLORS = {
:foreground => Color.new(128, 160, 248), # Blue
:midground => Color.new(128, 160, 248), # Blue
:background => Color.new(128, 160, 248), # Blue
:user => Color.new(64, 224, 64), # Green
:target => Color.new(224, 64, 64), # Red
:user_and_target => Color.new(224, 224, 64), # Yellow
:user_side_foreground => Color.new(128, 224, 224), # Cyan
:user_side_background => Color.new(128, 224, 224), # Cyan
:target_side_foreground => Color.new(128, 224, 224), # Cyan
:target_side_background => Color.new(128, 224, 224) # Cyan
}
def color_scheme_options
return {
:light => _INTL("Light"),
:dark => _INTL("Dark")
}
end
#-----------------------------------------------------------------------------
def background_color
return get_color_scheme_color_for_element(:background_color, Color.white)
end
def semi_transparent_color
return get_color_scheme_color_for_element(:semi_transparent_color, Color.new(0, 0, 0, 128))
end
#-----------------------------------------------------------------------------
def text_color
return get_color_scheme_color_for_element(:text_color, Color.black)
end
def disabled_text_color
return get_color_scheme_color_for_element(:disabled_text_color, Color.new(160, 160, 160))
end
def text_size
return 18 # Default is 22 if size isn't explicitly set
end
def line_color
return get_color_scheme_color_for_element(:line_color, Color.black)
end
def delete_icon_color
return get_color_scheme_color_for_element(:delete_icon_color, Color.new(248, 96, 96))
end
#-----------------------------------------------------------------------------
def disabled_fill_color
return get_color_scheme_color_for_element(:disabled_fill_color, Color.gray)
end
def hover_color
return get_color_scheme_color_for_element(:hover_color, Color.new(224, 255, 255))
end
def capture_color
return get_color_scheme_color_for_element(:capture_color, Color.new(255, 64, 128))
end
def highlight_color
return get_color_scheme_color_for_element(:highlight_color, Color.new(224, 192, 32))
end
#-----------------------------------------------------------------------------
def color_scheme=(value)
return if @color_scheme == value
@color_scheme = value
self.bitmap.font.color = text_color
self.bitmap.font.size = text_size
invalidate if self.respond_to?(:invalidate)
end
def get_color_scheme_color_for_element(element, default)
if COLOR_SCHEMES[@color_scheme] && COLOR_SCHEMES[@color_scheme][element]
return COLOR_SCHEMES[@color_scheme][element]
end
return default
end
def focus_color(focus)
if COLOR_SCHEMES[@color_scheme] && COLOR_SCHEMES[@color_scheme][:focus_colors] &&
COLOR_SCHEMES[@color_scheme][:focus_colors][focus]
return COLOR_SCHEMES[@color_scheme][:focus_colors][focus]
end
return FOCUS_COLORS[focus] || Color.magenta
end
end