cyberarm_engine 0.13.0 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
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