cyberarm_engine 0.13.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +8 -8
  3. data/.rubocop.yml +8 -0
  4. data/.travis.yml +5 -5
  5. data/Gemfile +6 -6
  6. data/LICENSE.txt +21 -21
  7. data/README.md +73 -43
  8. data/Rakefile +10 -10
  9. data/assets/textures/default.png +0 -0
  10. data/bin/console +14 -14
  11. data/bin/setup +8 -8
  12. data/cyberarm_engine.gemspec +39 -36
  13. data/lib/cyberarm_engine.rb +64 -47
  14. data/lib/cyberarm_engine/animator.rb +56 -54
  15. data/lib/cyberarm_engine/background.rb +179 -175
  16. data/lib/cyberarm_engine/background_nine_slice.rb +125 -0
  17. data/lib/cyberarm_engine/bounding_box.rb +150 -150
  18. data/lib/cyberarm_engine/cache.rb +4 -0
  19. data/lib/cyberarm_engine/cache/download_manager.rb +121 -0
  20. data/lib/cyberarm_engine/common.rb +96 -96
  21. data/lib/cyberarm_engine/config_file.rb +46 -0
  22. data/lib/cyberarm_engine/game_object.rb +248 -257
  23. data/lib/cyberarm_engine/game_state.rb +92 -89
  24. data/lib/cyberarm_engine/model.rb +207 -0
  25. data/lib/cyberarm_engine/model/material.rb +21 -0
  26. data/lib/cyberarm_engine/model/model_object.rb +131 -0
  27. data/lib/cyberarm_engine/model/parser.rb +74 -0
  28. data/lib/cyberarm_engine/model/parsers/collada_parser.rb +138 -0
  29. data/lib/cyberarm_engine/model/parsers/wavefront_parser.rb +154 -0
  30. data/lib/cyberarm_engine/model_cache.rb +31 -0
  31. data/lib/cyberarm_engine/opengl.rb +28 -0
  32. data/lib/cyberarm_engine/opengl/light.rb +50 -0
  33. data/lib/cyberarm_engine/opengl/orthographic_camera.rb +46 -0
  34. data/lib/cyberarm_engine/opengl/perspective_camera.rb +38 -0
  35. data/lib/cyberarm_engine/opengl/renderer/bounding_box_renderer.rb +249 -0
  36. data/lib/cyberarm_engine/opengl/renderer/g_buffer.rb +164 -0
  37. data/lib/cyberarm_engine/opengl/renderer/opengl_renderer.rb +289 -0
  38. data/lib/cyberarm_engine/opengl/renderer/renderer.rb +22 -0
  39. data/lib/cyberarm_engine/opengl/shader.rb +406 -0
  40. data/lib/cyberarm_engine/opengl/texture.rb +69 -0
  41. data/lib/cyberarm_engine/ray.rb +56 -56
  42. data/lib/cyberarm_engine/stats.rb +21 -0
  43. data/lib/cyberarm_engine/text.rb +160 -146
  44. data/lib/cyberarm_engine/timer.rb +23 -23
  45. data/lib/cyberarm_engine/transform.rb +296 -273
  46. data/lib/cyberarm_engine/ui/border_canvas.rb +102 -101
  47. data/lib/cyberarm_engine/ui/dsl.rb +138 -99
  48. data/lib/cyberarm_engine/ui/element.rb +315 -276
  49. data/lib/cyberarm_engine/ui/elements/button.rb +160 -67
  50. data/lib/cyberarm_engine/ui/elements/check_box.rb +51 -59
  51. data/lib/cyberarm_engine/ui/elements/container.rb +256 -176
  52. data/lib/cyberarm_engine/ui/elements/edit_box.rb +179 -0
  53. data/lib/cyberarm_engine/ui/elements/edit_line.rb +262 -172
  54. data/lib/cyberarm_engine/ui/elements/flow.rb +15 -17
  55. data/lib/cyberarm_engine/ui/elements/image.rb +72 -52
  56. data/lib/cyberarm_engine/ui/elements/label.rb +156 -50
  57. data/lib/cyberarm_engine/ui/elements/list_box.rb +82 -0
  58. data/lib/cyberarm_engine/ui/elements/progress.rb +51 -50
  59. data/lib/cyberarm_engine/ui/elements/radio.rb +6 -0
  60. data/lib/cyberarm_engine/ui/elements/slider.rb +104 -0
  61. data/lib/cyberarm_engine/ui/elements/stack.rb +11 -13
  62. data/lib/cyberarm_engine/ui/elements/text_block.rb +156 -0
  63. data/lib/cyberarm_engine/ui/elements/toggle_button.rb +65 -56
  64. data/lib/cyberarm_engine/ui/event.rb +47 -47
  65. data/lib/cyberarm_engine/ui/gui_state.rb +226 -135
  66. data/lib/cyberarm_engine/ui/style.rb +38 -37
  67. data/lib/cyberarm_engine/ui/theme.rb +182 -120
  68. data/lib/cyberarm_engine/vector.rb +293 -203
  69. data/lib/cyberarm_engine/version.rb +4 -4
  70. data/lib/cyberarm_engine/{engine.rb → window.rb} +114 -101
  71. metadata +88 -18
  72. data/lib/cyberarm_engine/gosu_ext/circle.rb +0 -9
  73. data/lib/cyberarm_engine/shader.rb +0 -262
@@ -1,4 +1,4 @@
1
- module CyberarmEngine
2
- NAME = "InDev"
3
- VERSION = "0.13.0"
4
- end
1
+ module CyberarmEngine
2
+ NAME = "InDev".freeze
3
+ VERSION = "0.17.0".freeze
4
+ end
@@ -1,101 +1,114 @@
1
- module CyberarmEngine
2
- class Engine < Gosu::Window
3
- IMAGES = {}
4
- SAMPLES= {}
5
- SONGS = {}
6
-
7
- attr_accessor :show_cursor
8
- attr_reader :last_frame_time
9
-
10
- def self.now
11
- Gosu.milliseconds
12
- end
13
-
14
- def self.dt
15
- $window.last_frame_time/1000.0
16
- end
17
-
18
- def initialize(width: 800, height: 600, fullscreen: false, update_interval: 1000.0/60, resizable: false)
19
- @show_cursor = false
20
-
21
- super(width, height, fullscreen: fullscreen, update_interval: update_interval, resizable: resizable)
22
- $window = self
23
- @last_frame_time = Gosu.milliseconds-1
24
- @current_frame_time = Gosu.milliseconds
25
- self.caption = "CyberarmEngine #{CyberarmEngine::VERSION} #{Gosu.language}"
26
-
27
- @states = []
28
-
29
- setup if defined?(setup)
30
- end
31
-
32
- def draw
33
- current_state.draw if current_state
34
- end
35
-
36
- def update
37
- current_state.update if current_state
38
- @last_frame_time = Gosu.milliseconds-@current_frame_time
39
- @current_frame_time = Gosu.milliseconds
40
- end
41
-
42
- def needs_cursor?
43
- @show_cursor
44
- end
45
-
46
- def dt
47
- @last_frame_time/1000.0
48
- end
49
-
50
- def button_down(id)
51
- super
52
- current_state.button_down(id) if current_state
53
- end
54
-
55
- def button_up(id)
56
- super
57
- current_state.button_up(id) if current_state
58
- end
59
-
60
- def push_state(klass, options={})
61
- options = {setup: true}.merge(options)
62
-
63
- if klass.instance_of?(klass.class) && defined?(klass.options)
64
- @states << klass
65
- klass.setup if options[:setup]
66
- else
67
- @states << klass.new(options) if child_of?(klass, GameState)
68
- @states << klass.new if child_of?(klass, Element::Container)
69
- current_state.setup if current_state.class == klass && options[:setup]
70
- end
71
- end
72
-
73
- private def child_of?(input, klass)
74
- input.ancestors.detect {|c| c == klass}
75
- end
76
-
77
- def current_state
78
- @states.last
79
- end
80
-
81
- def previous_state
82
- if @states.size > 1 && state = @states[@states.size-2]
83
- return state
84
- else
85
- return nil
86
- end
87
- end
88
-
89
- def pop_state
90
- @states.pop
91
- end
92
-
93
- # Sourced from https://gist.github.com/ippa/662583
94
- def draw_circle(cx,cy,r, z = 9999,color = Gosu::Color::GREEN, step = 10)
95
- 0.step(360, step) do |a1|
96
- a2 = a1 + step
97
- 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)
98
- end
99
- end
100
- end
101
- end
1
+ module CyberarmEngine
2
+ class Window < Gosu::Window
3
+ include Common
4
+
5
+ IMAGES = {}
6
+ SAMPLES = {}
7
+ SONGS = {}
8
+
9
+ attr_accessor :show_cursor
10
+ attr_writer :exit_on_opengl_error
11
+ attr_reader :last_frame_time
12
+
13
+ def self.now
14
+ Gosu.milliseconds
15
+ end
16
+
17
+ def self.dt
18
+ $window.last_frame_time / 1000.0
19
+ end
20
+
21
+ def initialize(width: 800, height: 600, fullscreen: false, update_interval: 1000.0 / 60, resizable: false, borderless: false)
22
+ @show_cursor = false
23
+
24
+ super(width, height, fullscreen: fullscreen, update_interval: update_interval, resizable: resizable, borderless: borderless)
25
+ $window = self
26
+ @last_frame_time = Gosu.milliseconds - 1
27
+ @current_frame_time = Gosu.milliseconds
28
+ self.caption = "CyberarmEngine #{CyberarmEngine::VERSION} #{Gosu.language}"
29
+
30
+ @states = []
31
+ @exit_on_opengl_error = false
32
+
33
+ setup if defined?(setup)
34
+ end
35
+
36
+ def draw
37
+ current_state.draw if current_state
38
+ end
39
+
40
+ def update
41
+ Stats.clear
42
+
43
+ current_state.update if current_state
44
+ @last_frame_time = Gosu.milliseconds - @current_frame_time
45
+ @current_frame_time = Gosu.milliseconds
46
+ end
47
+
48
+ def needs_cursor?
49
+ @show_cursor
50
+ end
51
+
52
+ def dt
53
+ @last_frame_time / 1000.0
54
+ end
55
+
56
+ def aspect_ratio
57
+ width / height.to_f
58
+ end
59
+
60
+ def exit_on_opengl_error?
61
+ @exit_on_opengl_error
62
+ end
63
+
64
+ def button_down(id)
65
+ super
66
+ current_state.button_down(id) if current_state
67
+ end
68
+
69
+ def button_up(id)
70
+ super
71
+ current_state.button_up(id) if current_state
72
+ end
73
+
74
+ def push_state(klass, options = {})
75
+ options = { setup: true }.merge(options)
76
+
77
+ if klass.instance_of?(klass.class) && defined?(klass.options)
78
+ @states << klass
79
+ klass.setup if options[:setup]
80
+ else
81
+ @states << klass.new(options) if child_of?(klass, GameState)
82
+ @states << klass.new if child_of?(klass, Element::Container)
83
+ current_state.setup if current_state.instance_of?(klass) && options[:setup]
84
+ end
85
+ end
86
+
87
+ private def child_of?(input, klass)
88
+ input.ancestors.detect { |c| c == klass }
89
+ end
90
+
91
+ def current_state
92
+ @states.last
93
+ end
94
+
95
+ def previous_state
96
+ if @states.size > 1 && state = @states[@states.size - 2]
97
+ state
98
+ end
99
+ end
100
+
101
+ def pop_state
102
+ @states.pop
103
+ end
104
+
105
+ # Sourced from https://gist.github.com/ippa/662583
106
+ def draw_circle(cx, cy, r, z = 9999, color = Gosu::Color::GREEN, step = 10)
107
+ 0.step(360, step) do |a1|
108
+ a2 = a1 + step
109
+ draw_line(cx + Gosu.offset_x(a1, r), cy + Gosu.offset_y(a1, r), color, cx + Gosu.offset_x(a2, r),
110
+ cy + Gosu.offset_y(a2, r), color, z)
111
+ end
112
+ end
113
+ end
114
+ end
metadata CHANGED
@@ -1,57 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cyberarm_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyberarm
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-28 00:00:00.000000000 Z
11
+ date: 2021-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: clipboard
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.3.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: excon
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.78.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.78.0
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: gosu
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
45
  - - "~>"
18
46
  - !ruby/object:Gem::Version
19
- version: 0.15.0
47
+ version: '1.1'
20
48
  type: :runtime
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
52
  - - "~>"
25
53
  - !ruby/object:Gem::Version
26
- version: 0.15.0
54
+ version: '1.1'
27
55
  - !ruby/object:Gem::Dependency
28
- name: bundler
56
+ name: gosu_more_drawables
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
59
  - - "~>"
32
60
  - !ruby/object:Gem::Version
33
- version: '1.16'
34
- type: :development
61
+ version: '0.3'
62
+ type: :runtime
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: '1.16'
68
+ version: '0.3'
41
69
  - !ruby/object:Gem::Dependency
42
- name: rake
70
+ name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: '10.0'
75
+ version: '2.2'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
- version: '10.0'
82
+ version: '2.2'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: minitest
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +94,20 @@ dependencies:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
96
  version: '5.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '13.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '13.0'
69
111
  description: Yet another game making framework around gosu
70
112
  email:
71
113
  - matthewlikesrobots@gmail.com
@@ -74,25 +116,46 @@ extensions: []
74
116
  extra_rdoc_files: []
75
117
  files:
76
118
  - ".gitignore"
119
+ - ".rubocop.yml"
77
120
  - ".travis.yml"
78
121
  - Gemfile
79
122
  - LICENSE.txt
80
123
  - README.md
81
124
  - Rakefile
125
+ - assets/textures/default.png
82
126
  - bin/console
83
127
  - bin/setup
84
128
  - cyberarm_engine.gemspec
85
129
  - lib/cyberarm_engine.rb
86
130
  - lib/cyberarm_engine/animator.rb
87
131
  - lib/cyberarm_engine/background.rb
132
+ - lib/cyberarm_engine/background_nine_slice.rb
88
133
  - lib/cyberarm_engine/bounding_box.rb
134
+ - lib/cyberarm_engine/cache.rb
135
+ - lib/cyberarm_engine/cache/download_manager.rb
89
136
  - lib/cyberarm_engine/common.rb
90
- - lib/cyberarm_engine/engine.rb
137
+ - lib/cyberarm_engine/config_file.rb
91
138
  - lib/cyberarm_engine/game_object.rb
92
139
  - lib/cyberarm_engine/game_state.rb
93
- - lib/cyberarm_engine/gosu_ext/circle.rb
140
+ - lib/cyberarm_engine/model.rb
141
+ - lib/cyberarm_engine/model/material.rb
142
+ - lib/cyberarm_engine/model/model_object.rb
143
+ - lib/cyberarm_engine/model/parser.rb
144
+ - lib/cyberarm_engine/model/parsers/collada_parser.rb
145
+ - lib/cyberarm_engine/model/parsers/wavefront_parser.rb
146
+ - lib/cyberarm_engine/model_cache.rb
147
+ - lib/cyberarm_engine/opengl.rb
148
+ - lib/cyberarm_engine/opengl/light.rb
149
+ - lib/cyberarm_engine/opengl/orthographic_camera.rb
150
+ - lib/cyberarm_engine/opengl/perspective_camera.rb
151
+ - lib/cyberarm_engine/opengl/renderer/bounding_box_renderer.rb
152
+ - lib/cyberarm_engine/opengl/renderer/g_buffer.rb
153
+ - lib/cyberarm_engine/opengl/renderer/opengl_renderer.rb
154
+ - lib/cyberarm_engine/opengl/renderer/renderer.rb
155
+ - lib/cyberarm_engine/opengl/shader.rb
156
+ - lib/cyberarm_engine/opengl/texture.rb
94
157
  - lib/cyberarm_engine/ray.rb
95
- - lib/cyberarm_engine/shader.rb
158
+ - lib/cyberarm_engine/stats.rb
96
159
  - lib/cyberarm_engine/text.rb
97
160
  - lib/cyberarm_engine/timer.rb
98
161
  - lib/cyberarm_engine/transform.rb
@@ -102,12 +165,17 @@ files:
102
165
  - lib/cyberarm_engine/ui/elements/button.rb
103
166
  - lib/cyberarm_engine/ui/elements/check_box.rb
104
167
  - lib/cyberarm_engine/ui/elements/container.rb
168
+ - lib/cyberarm_engine/ui/elements/edit_box.rb
105
169
  - lib/cyberarm_engine/ui/elements/edit_line.rb
106
170
  - lib/cyberarm_engine/ui/elements/flow.rb
107
171
  - lib/cyberarm_engine/ui/elements/image.rb
108
172
  - lib/cyberarm_engine/ui/elements/label.rb
173
+ - lib/cyberarm_engine/ui/elements/list_box.rb
109
174
  - lib/cyberarm_engine/ui/elements/progress.rb
175
+ - lib/cyberarm_engine/ui/elements/radio.rb
176
+ - lib/cyberarm_engine/ui/elements/slider.rb
110
177
  - lib/cyberarm_engine/ui/elements/stack.rb
178
+ - lib/cyberarm_engine/ui/elements/text_block.rb
111
179
  - lib/cyberarm_engine/ui/elements/toggle_button.rb
112
180
  - lib/cyberarm_engine/ui/event.rb
113
181
  - lib/cyberarm_engine/ui/gui_state.rb
@@ -115,15 +183,17 @@ files:
115
183
  - lib/cyberarm_engine/ui/theme.rb
116
184
  - lib/cyberarm_engine/vector.rb
117
185
  - lib/cyberarm_engine/version.rb
186
+ - lib/cyberarm_engine/window.rb
118
187
  homepage: https://github.com/cyberarm/cyberarm_engine
119
188
  licenses:
120
189
  - MIT
121
190
  metadata:
122
191
  allowed_push_host: https://rubygems.org
123
- post_install_message:
192
+ post_install_message:
124
193
  rdoc_options: []
125
194
  require_paths:
126
195
  - lib
196
+ - assets
127
197
  required_ruby_version: !ruby/object:Gem::Requirement
128
198
  requirements:
129
199
  - - ">="
@@ -135,8 +205,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
205
  - !ruby/object:Gem::Version
136
206
  version: '0'
137
207
  requirements: []
138
- rubygems_version: 3.1.2
139
- signing_key:
208
+ rubygems_version: 3.2.3
209
+ signing_key:
140
210
  specification_version: 4
141
211
  summary: Make games quickly and easily with gosu
142
212
  test_files: []
@@ -1,9 +0,0 @@
1
- module Gosu
2
- # Sourced from https://gist.github.com/ippa/662583
3
- def self.draw_circle(cx,cy,r, z = 9999,color = Gosu::Color::GREEN, step = 10)
4
- 0.step(360, step) do |a1|
5
- a2 = a1 + step
6
- 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)
7
- end
8
- end
9
- end