mirror of
https://github.com/cyberarm/cyberarm_engine.git
synced 2025-12-16 13:12:34 +00:00
Sync: Renamed Engine to Window to be less confusing, elements are now supposed to throw a changed event if their value is changed
This commit is contained in:
@@ -42,7 +42,7 @@ class Hello < CyberarmEngine::GuiState
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class Window < CyberarmEngine::Engine
|
class Window < CyberarmEngine::Window
|
||||||
def initialize
|
def initialize
|
||||||
super
|
super
|
||||||
self.show_cursor = true
|
self.show_cursor = true
|
||||||
|
|||||||
@@ -11,10 +11,8 @@ require_relative "cyberarm_engine/version"
|
|||||||
|
|
||||||
require_relative "cyberarm_engine/common"
|
require_relative "cyberarm_engine/common"
|
||||||
|
|
||||||
require_relative "cyberarm_engine/gosu_ext/circle"
|
|
||||||
|
|
||||||
require_relative "cyberarm_engine/game_object"
|
require_relative "cyberarm_engine/game_object"
|
||||||
require_relative "cyberarm_engine/engine"
|
require_relative "cyberarm_engine/window"
|
||||||
|
|
||||||
require_relative "cyberarm_engine/bounding_box"
|
require_relative "cyberarm_engine/bounding_box"
|
||||||
require_relative "cyberarm_engine/vector"
|
require_relative "cyberarm_engine/vector"
|
||||||
|
|||||||
@@ -78,15 +78,15 @@ module CyberarmEngine
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_image(path, retro: false, tileable: false)
|
def get_image(path, retro: false, tileable: false)
|
||||||
get_asset(path, Engine::IMAGES, Gosu::Image, retro, tileable)
|
get_asset(path, Window::IMAGES, Gosu::Image, retro, tileable)
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_sample(path)
|
def get_sample(path)
|
||||||
get_asset(path, Engine::SAMPLES, Gosu::Sample)
|
get_asset(path, Window::SAMPLES, Gosu::Sample)
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_song(path)
|
def get_song(path)
|
||||||
get_asset(path, Engine::SONGS, Gosu::Song)
|
get_asset(path, Window::SONGS, Gosu::Song)
|
||||||
end
|
end
|
||||||
|
|
||||||
def window
|
def window
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
module Gosu
|
|
||||||
# Sourced from https://gist.github.com/ippa/662583
|
|
||||||
def self.draw_circle(cx,cy,r, z = 9999,color = Gosu::Color::GREEN, step = 10)
|
|
||||||
0.step(360, step) do |a1|
|
|
||||||
a2 = a1 + step
|
|
||||||
draw_line(cx + Gosu.offset_x(a1, r), cy + Gosu.offset_y(a1, r), color, cx + Gosu.offset_x(a2, r), cy + Gosu.offset_y(a2, r), color, z)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -111,6 +111,8 @@ module CyberarmEngine
|
|||||||
event(:leave)
|
event(:leave)
|
||||||
|
|
||||||
event(:blur)
|
event(:blur)
|
||||||
|
|
||||||
|
event(:changed)
|
||||||
end
|
end
|
||||||
|
|
||||||
def enabled?
|
def enabled?
|
||||||
|
|||||||
@@ -8,7 +8,25 @@ module CyberarmEngine
|
|||||||
@toggle_button = ToggleButton.new(options)
|
@toggle_button = ToggleButton.new(options)
|
||||||
@label = Label.new(text, options)
|
@label = Label.new(text, options)
|
||||||
|
|
||||||
define_label_singletons
|
@label.subscribe(:holding_left_mouse_button) do |sender, x, y|
|
||||||
|
@toggle_button.left_mouse_button(sender, x, y)
|
||||||
|
end
|
||||||
|
|
||||||
|
@label.subscribe(:released_left_mouse_button) do |sender, x, y|
|
||||||
|
@toggle_button.released_left_mouse_button(sender, x, y)
|
||||||
|
end
|
||||||
|
|
||||||
|
@label.subscribe(:clicked_left_mouse_button) do |sender, x, y|
|
||||||
|
@toggle_button.clicked_left_mouse_button(sender, x, y)
|
||||||
|
end
|
||||||
|
|
||||||
|
@label.subscribe(:enter) do |sender|
|
||||||
|
@toggle_button.enter(sender)
|
||||||
|
end
|
||||||
|
|
||||||
|
@label.subscribe(:leave) do |sender|
|
||||||
|
@toggle_button.leave(sender)
|
||||||
|
end
|
||||||
|
|
||||||
add(@toggle_button)
|
add(@toggle_button)
|
||||||
add(@label)
|
add(@label)
|
||||||
@@ -26,34 +44,6 @@ module CyberarmEngine
|
|||||||
def value=(bool)
|
def value=(bool)
|
||||||
@toggle_button.vlaue = bool
|
@toggle_button.vlaue = bool
|
||||||
end
|
end
|
||||||
|
|
||||||
def define_label_singletons
|
|
||||||
@label.define_singleton_method(:_toggle_button) do |button|
|
|
||||||
@_toggle_button = button
|
|
||||||
end
|
|
||||||
|
|
||||||
@label._toggle_button(@toggle_button)
|
|
||||||
|
|
||||||
@label.define_singleton_method(:holding_left_mouse_button) do |sender, x, y|
|
|
||||||
@_toggle_button.left_mouse_button(sender, x, y)
|
|
||||||
end
|
|
||||||
|
|
||||||
@label.define_singleton_method(:released_left_mouse_button) do |sender, x, y|
|
|
||||||
@_toggle_button.released_left_mouse_button(sender, x, y)
|
|
||||||
end
|
|
||||||
|
|
||||||
@label.define_singleton_method(:clicked_left_mouse_button) do |sender, x, y|
|
|
||||||
@_toggle_button.clicked_left_mouse_button(sender, x, y)
|
|
||||||
end
|
|
||||||
|
|
||||||
@label.define_singleton_method(:enter) do |sender|
|
|
||||||
@_toggle_button.enter(sender)
|
|
||||||
end
|
|
||||||
|
|
||||||
@label.define_singleton_method(:leave) do |sender|
|
|
||||||
@_toggle_button.leave(sender)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -44,6 +44,8 @@ module CyberarmEngine
|
|||||||
recalculate
|
recalculate
|
||||||
|
|
||||||
root.gui_state.request_recalculate if old_width != width || old_height != height
|
root.gui_state.request_recalculate if old_width != width || old_height != height
|
||||||
|
|
||||||
|
publish(:changed, self.value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ module CyberarmEngine
|
|||||||
@fraction = decimal.clamp(0.0, 1.0)
|
@fraction = decimal.clamp(0.0, 1.0)
|
||||||
update_background
|
update_background
|
||||||
|
|
||||||
|
publish(:changed, @fraction)
|
||||||
return @fraction
|
return @fraction
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -8,33 +8,31 @@ module CyberarmEngine
|
|||||||
event(:begin_drag)
|
event(:begin_drag)
|
||||||
event(:drag_update)
|
event(:drag_update)
|
||||||
event(:end_drag)
|
event(:end_drag)
|
||||||
end
|
|
||||||
|
|
||||||
def draggable?(button)
|
subscribe :begin_drag do |sender, x, y, button|
|
||||||
button == :left
|
|
||||||
end
|
|
||||||
|
|
||||||
def begin_drag(sender, x, y, button)
|
|
||||||
@drag_start_pos = Vector.new(x, y)
|
@drag_start_pos = Vector.new(x, y)
|
||||||
|
|
||||||
:handled
|
:handled
|
||||||
end
|
end
|
||||||
|
|
||||||
def drag_update(sender, x, y, button)
|
subscribe :drag_update do |sender, x, y, button|
|
||||||
# ratio = (@parent.x - (x - @drag_start_pos.x) / (@parent.width - width) * -1).clamp(0.0, 1.0)
|
|
||||||
# @x = @parent.x + width + ((@parent.width * ratio) - width * 2)
|
|
||||||
@parent.handle_dragged_to(x, y)
|
@parent.handle_dragged_to(x, y)
|
||||||
|
|
||||||
:handled
|
:handled
|
||||||
end
|
end
|
||||||
|
|
||||||
def end_drag(sender, x, y, button)
|
subscribe :end_drag do
|
||||||
@drag_start_pos = nil
|
@drag_start_pos = nil
|
||||||
|
|
||||||
:handled
|
:handled
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def draggable?(button)
|
||||||
|
button == :left
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
attr_reader :range, :step_size
|
attr_reader :range, :step_size
|
||||||
def initialize(options = {}, block = nil)
|
def initialize(options = {}, block = nil)
|
||||||
super(options, block)
|
super(options, block)
|
||||||
@@ -43,7 +41,7 @@ module CyberarmEngine
|
|||||||
@step_size = @options[:step] ? @options[:step] : 0.1
|
@step_size = @options[:step] ? @options[:step] : 0.1
|
||||||
@value = @options[:value] ? @options[:value] : 0.5
|
@value = @options[:value] ? @options[:value] : 0.5
|
||||||
|
|
||||||
@handle = Handle.new("", parent: self, width: 8) { close }
|
@handle = Handle.new("", parent: self, width: 8, height: 1.0) { close }
|
||||||
self.add(@handle)
|
self.add(@handle)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -55,8 +53,11 @@ module CyberarmEngine
|
|||||||
@height = _height
|
@height = _height
|
||||||
|
|
||||||
@handle.x = @x + @style.border_thickness_left + @style.padding_left
|
@handle.x = @x + @style.border_thickness_left + @style.padding_left
|
||||||
@handle.y = @y + @style.border_thickness_top + @style.padding_left
|
@handle.y = @y + @style.border_thickness_top + @style.padding_top
|
||||||
@handle.recalculate
|
@handle.recalculate
|
||||||
|
@handle.update_background
|
||||||
|
|
||||||
|
pp @handle.height
|
||||||
|
|
||||||
update_background
|
update_background
|
||||||
end
|
end
|
||||||
@@ -76,9 +77,13 @@ module CyberarmEngine
|
|||||||
|
|
||||||
def holding_left_mouse_button(sender, x, y)
|
def holding_left_mouse_button(sender, x, y)
|
||||||
handle_dragged_to(x, y)
|
handle_dragged_to(x, y)
|
||||||
|
|
||||||
|
:handled
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_dragged_to(x, y)
|
def handle_dragged_to(x, y)
|
||||||
|
puts
|
||||||
|
pp x, y, @handle.width, content_width
|
||||||
@ratio = ((x - @handle.width) - @x) / content_width
|
@ratio = ((x - @handle.width) - @x) / content_width
|
||||||
|
|
||||||
# p [@ratio, @value]
|
# p [@ratio, @value]
|
||||||
@@ -94,7 +99,10 @@ module CyberarmEngine
|
|||||||
@value = n
|
@value = n
|
||||||
@handle.x = @x + @style.padding_left + @style.border_thickness_left +
|
@handle.x = @x + @style.padding_left + @style.border_thickness_left +
|
||||||
(content_width * (@value - @range.min) / (@range.max - @range.min).to_f)
|
(content_width * (@value - @range.min) / (@range.max - @range.min).to_f)
|
||||||
|
|
||||||
@handle.recalculate
|
@handle.recalculate
|
||||||
|
|
||||||
|
publish(:changed, @value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ module CyberarmEngine
|
|||||||
|
|
||||||
def initialize(options, block = nil)
|
def initialize(options, block = nil)
|
||||||
super(options[:checkmark], options, block)
|
super(options[:checkmark], options, block)
|
||||||
@toggled = options[:toggled] || false
|
@value = options[:checked] || false
|
||||||
if @toggled
|
if @value
|
||||||
@text.text = @options[:checkmark]
|
@text.text = @options[:checkmark]
|
||||||
else
|
else
|
||||||
@text.text = ""
|
@text.text = ""
|
||||||
@@ -15,29 +15,14 @@ module CyberarmEngine
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
def toggled=(boolean)
|
|
||||||
@toggled = !boolean
|
|
||||||
toggle
|
|
||||||
end
|
|
||||||
|
|
||||||
def clicked_left_mouse_button(sender, x, y)
|
def clicked_left_mouse_button(sender, x, y)
|
||||||
toggle
|
self.value = !@value
|
||||||
|
|
||||||
@block.call(self) if @block
|
@block.call(self) if @block
|
||||||
|
|
||||||
return :handled
|
return :handled
|
||||||
end
|
end
|
||||||
|
|
||||||
def toggle
|
|
||||||
if @toggled
|
|
||||||
@toggled = false
|
|
||||||
@text.text = ""
|
|
||||||
else
|
|
||||||
@toggled = true
|
|
||||||
@text.text = @options[:checkmark]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def recalculate
|
def recalculate
|
||||||
super
|
super
|
||||||
|
|
||||||
@@ -51,7 +36,21 @@ module CyberarmEngine
|
|||||||
end
|
end
|
||||||
|
|
||||||
def value
|
def value
|
||||||
@toggled
|
@value
|
||||||
|
end
|
||||||
|
|
||||||
|
def value=(boolean)
|
||||||
|
@value = boolean
|
||||||
|
|
||||||
|
if boolean
|
||||||
|
@text.text = @options[:checkmark]
|
||||||
|
else
|
||||||
|
@text.text = ""
|
||||||
|
end
|
||||||
|
|
||||||
|
recalculate
|
||||||
|
|
||||||
|
publish(:changed, @value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
module CyberarmEngine
|
module CyberarmEngine
|
||||||
class Engine < Gosu::Window
|
class Window < Gosu::Window
|
||||||
IMAGES = {}
|
IMAGES = {}
|
||||||
SAMPLES= {}
|
SAMPLES= {}
|
||||||
SONGS = {}
|
SONGS = {}
|
||||||
Reference in New Issue
Block a user