mirror of
https://github.com/cyberarm/cyberarm_engine.git
synced 2025-12-15 04:32:35 +00:00
Compare commits
2 Commits
1c25eeb32b
...
1f57dfd38c
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f57dfd38c | |||
| 76a8bf95c7 |
@@ -1,5 +1,7 @@
|
||||
module CyberarmEngine
|
||||
module Common
|
||||
ImageBlob = Data.define(:to_blob, :columns, :rows)
|
||||
|
||||
def push_state(klass, options = {})
|
||||
window.push_state(klass, options)
|
||||
end
|
||||
@@ -85,7 +87,8 @@ module CyberarmEngine
|
||||
unless asset
|
||||
instance = nil
|
||||
instance = if klass == Gosu::Image
|
||||
klass.new(path, retro: retro, tileable: tileable)
|
||||
path_or_blob = path.is_a?(String) ? path : ImageBlob.new(path.to_blob, path.width, path.height)
|
||||
klass.new(path_or_blob, retro: retro, tileable: tileable)
|
||||
else
|
||||
klass.new(path)
|
||||
end
|
||||
|
||||
@@ -33,12 +33,23 @@ module Gosu
|
||||
#
|
||||
# @return [void]
|
||||
def self.draw_arc(x, y, radius, percentage = 1.0, segments = 128, thickness = 4, color = Gosu::Color::WHITE, z = 0, mode = :default)
|
||||
segments = 360.0 / segments
|
||||
|
||||
return if percentage == 0.0
|
||||
|
||||
0.step((359 * percentage), percentage > 0 ? segments : -segments) do |angle|
|
||||
angle2 = angle + segments
|
||||
angle_per_segment = 360.0 / segments
|
||||
arc_completion = 360 * percentage
|
||||
next_segment_angle = angle_per_segment
|
||||
|
||||
angle = 0
|
||||
loop do
|
||||
break if angle >= arc_completion
|
||||
|
||||
if angle + angle_per_segment > arc_completion
|
||||
next_segment_angle = arc_completion - angle
|
||||
else
|
||||
next_segment_angle = angle_per_segment
|
||||
end
|
||||
|
||||
angle2 = angle + next_segment_angle
|
||||
|
||||
point_a_left_x = x + Gosu.offset_x(angle, radius - thickness)
|
||||
point_a_left_y = y + Gosu.offset_y(angle, radius - thickness)
|
||||
@@ -93,6 +104,8 @@ module Gosu
|
||||
z, mode
|
||||
)
|
||||
end
|
||||
|
||||
angle += next_segment_angle
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user