lib/cyberarm_engine/ui/theme.rb in cyberarm_engine-0.14.0 vs lib/cyberarm_engine/ui/theme.rb in cyberarm_engine-0.15.0

- old
+ new

@@ -9,72 +9,76 @@ value end def theme_defaults(options) raise "Error" unless self.class.ancestors.include?(CyberarmEngine::Element) + _theme = THEME - _theme = _theme.merge(options[:theme]) if options[:theme] + _theme = deep_merge(_theme, options[:theme]) if options[:theme] _theme.delete(:theme) if options[:theme] hash = {} class_names = self.class.ancestors - class_names = class_names[0..class_names.index(CyberarmEngine::Element)].map! {|c| c.to_s.split("::").last.to_sym}.reverse! + class_names = class_names[0..class_names.index(CyberarmEngine::Element)].map! do |c| + c.to_s.split("::").last.to_sym + end.reverse! class_names.each do |klass| next unless data = _theme.dig(klass) - data.each do |key, value| + + data.each do |_key, _value| hash.merge!(data) end end deep_merge(hash, options) end # Derived from Rails Hash#deep_merge! # Enables passing partial themes through Element options without issue def deep_merge(original, intergrate, &block) - hash = original.merge(intergrate) do |key, this_val, other_val| + original.merge(intergrate) do |key, this_val, other_val| if this_val.is_a?(Hash) && other_val.is_a?(Hash) deep_merge(this_val, other_val, &block) elsif block_given? block.call(key, this_val, other_val) else other_val end end - - return hash end THEME = { Element: { x: 0, y: 0, z: 30, - width: nil, + width: nil, height: nil, - color: Gosu::Color::WHITE, + color: Gosu::Color::WHITE, background: Gosu::Color::NONE, - margin: 0, - padding: 0, + margin: 0, + padding: 0, border_thickness: 0, border_color: Gosu::Color::NONE, - border_radius: 0, + border_radius: 0 }, Button: { # < Label - margin: 1, - padding: 4, + margin: 1, + padding: 4, border_thickness: 1, border_color: ["ffd59674".hex, "ffff8746".hex], border_radius: 0, background: ["ffc75e61".to_i(16), "ffe26623".to_i(16)], + text_align: :center, + text_wrap: :none, hover: { - color: Gosu::Color.rgb(200,200,200), - background: ["ffB23E41".to_i(16), "ffFF7C00".to_i(16)], + color: Gosu::Color.rgb(200, 200, 200), + background: ["ffB23E41".to_i(16), "ffFF7C00".to_i(16)] }, active: { color: Gosu::Color::BLACK, background: ["ffB23E41".to_i(16)] @@ -87,21 +91,25 @@ password_character: "•", caret_width: 2, caret_color: Gosu::Color::WHITE, caret_interval: 500, selection_color: Gosu::Color.rgba(255, 128, 50, 200), + text_align: :left }, Image: { # < Element + color: Gosu::Color::WHITE, retro: false }, Label: { # < Element - text_size: 28, - text_shadow: false, - font: "Arial", - margin: 0, - padding: 2 + text_size: 28, + text_wrap: :none, # :word_wrap, :break_word, :none + text_shadow: false, + text_align: :left, + font: "Arial", + margin: 0, + padding: 2 }, ToggleButton: { # < Button checkmark: "√" },