mirror of
https://github.com/cyberarm/cyberarm_engine.git
synced 2025-12-16 05:02: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
|
||||
|
||||
class Window < CyberarmEngine::Engine
|
||||
class Window < CyberarmEngine::Window
|
||||
def initialize
|
||||
super
|
||||
self.show_cursor = true
|
||||
|
||||
@@ -11,10 +11,8 @@ require_relative "cyberarm_engine/version"
|
||||
|
||||
require_relative "cyberarm_engine/common"
|
||||
|
||||
require_relative "cyberarm_engine/gosu_ext/circle"
|
||||
|
||||
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/vector"
|
||||
|
||||
@@ -78,15 +78,15 @@ module CyberarmEngine
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
def get_sample(path)
|
||||
get_asset(path, Engine::SAMPLES, Gosu::Sample)
|
||||
get_asset(path, Window::SAMPLES, Gosu::Sample)
|
||||
end
|
||||
|
||||
def get_song(path)
|
||||
get_asset(path, Engine::SONGS, Gosu::Song)
|
||||
get_asset(path, Window::SONGS, Gosu::Song)
|
||||
end
|
||||
|
||||
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(:blur)
|
||||
|
||||
event(:changed)
|
||||
end
|
||||
|
||||
def enabled?
|
||||
|
||||
@@ -8,7 +8,25 @@ module CyberarmEngine
|
||||
@toggle_button = ToggleButton.new(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(@label)
|
||||
@@ -26,34 +44,6 @@ module CyberarmEngine
|
||||
def value=(bool)
|
||||
@toggle_button.vlaue = bool
|
||||
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
|
||||
@@ -44,6 +44,8 @@ module CyberarmEngine
|
||||
recalculate
|
||||
|
||||
root.gui_state.request_recalculate if old_width != width || old_height != height
|
||||
|
||||
publish(:changed, self.value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -43,6 +43,7 @@ module CyberarmEngine
|
||||
@fraction = decimal.clamp(0.0, 1.0)
|
||||
update_background
|
||||
|
||||
publish(:changed, @fraction)
|
||||
return @fraction
|
||||
end
|
||||
end
|
||||
|
||||
@@ -8,31 +8,29 @@ module CyberarmEngine
|
||||
event(:begin_drag)
|
||||
event(:drag_update)
|
||||
event(:end_drag)
|
||||
|
||||
subscribe :begin_drag do |sender, x, y, button|
|
||||
@drag_start_pos = Vector.new(x, y)
|
||||
|
||||
:handled
|
||||
end
|
||||
|
||||
subscribe :drag_update do |sender, x, y, button|
|
||||
@parent.handle_dragged_to(x, y)
|
||||
|
||||
:handled
|
||||
end
|
||||
|
||||
subscribe :end_drag do
|
||||
@drag_start_pos = nil
|
||||
|
||||
:handled
|
||||
end
|
||||
end
|
||||
|
||||
def draggable?(button)
|
||||
button == :left
|
||||
end
|
||||
|
||||
def begin_drag(sender, x, y, button)
|
||||
@drag_start_pos = Vector.new(x, y)
|
||||
|
||||
:handled
|
||||
end
|
||||
|
||||
def drag_update(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)
|
||||
|
||||
:handled
|
||||
end
|
||||
|
||||
def end_drag(sender, x, y, button)
|
||||
@drag_start_pos = nil
|
||||
|
||||
:handled
|
||||
end
|
||||
end
|
||||
|
||||
attr_reader :range, :step_size
|
||||
@@ -43,7 +41,7 @@ module CyberarmEngine
|
||||
@step_size = @options[:step] ? @options[:step] : 0.1
|
||||
@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)
|
||||
end
|
||||
|
||||
@@ -55,8 +53,11 @@ module CyberarmEngine
|
||||
@height = _height
|
||||
|
||||
@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.update_background
|
||||
|
||||
pp @handle.height
|
||||
|
||||
update_background
|
||||
end
|
||||
@@ -76,9 +77,13 @@ module CyberarmEngine
|
||||
|
||||
def holding_left_mouse_button(sender, x, y)
|
||||
handle_dragged_to(x, y)
|
||||
|
||||
:handled
|
||||
end
|
||||
|
||||
def handle_dragged_to(x, y)
|
||||
puts
|
||||
pp x, y, @handle.width, content_width
|
||||
@ratio = ((x - @handle.width) - @x) / content_width
|
||||
|
||||
# p [@ratio, @value]
|
||||
@@ -94,7 +99,10 @@ module CyberarmEngine
|
||||
@value = n
|
||||
@handle.x = @x + @style.padding_left + @style.border_thickness_left +
|
||||
(content_width * (@value - @range.min) / (@range.max - @range.min).to_f)
|
||||
|
||||
@handle.recalculate
|
||||
|
||||
publish(:changed, @value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,8 +5,8 @@ module CyberarmEngine
|
||||
|
||||
def initialize(options, block = nil)
|
||||
super(options[:checkmark], options, block)
|
||||
@toggled = options[:toggled] || false
|
||||
if @toggled
|
||||
@value = options[:checked] || false
|
||||
if @value
|
||||
@text.text = @options[:checkmark]
|
||||
else
|
||||
@text.text = ""
|
||||
@@ -15,29 +15,14 @@ module CyberarmEngine
|
||||
return self
|
||||
end
|
||||
|
||||
def toggled=(boolean)
|
||||
@toggled = !boolean
|
||||
toggle
|
||||
end
|
||||
|
||||
def clicked_left_mouse_button(sender, x, y)
|
||||
toggle
|
||||
self.value = !@value
|
||||
|
||||
@block.call(self) if @block
|
||||
|
||||
return :handled
|
||||
end
|
||||
|
||||
def toggle
|
||||
if @toggled
|
||||
@toggled = false
|
||||
@text.text = ""
|
||||
else
|
||||
@toggled = true
|
||||
@text.text = @options[:checkmark]
|
||||
end
|
||||
end
|
||||
|
||||
def recalculate
|
||||
super
|
||||
|
||||
@@ -51,7 +36,21 @@ module CyberarmEngine
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
module CyberarmEngine
|
||||
class Engine < Gosu::Window
|
||||
class Window < Gosu::Window
|
||||
IMAGES = {}
|
||||
SAMPLES= {}
|
||||
SONGS = {}
|
||||
Reference in New Issue
Block a user