author_engine 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/author_engine.gemspec +5 -5
- data/lib/author_engine/collision_detection/collision_detection.rb +6 -6
- data/lib/author_engine/game/common/parts/collision_detection.rb +7 -7
- data/lib/author_engine/game/common/parts/common.rb +5 -1
- data/lib/author_engine/game/game.rb +11 -10
- data/lib/author_engine/game/gosu/parts/graphics.rb +9 -9
- data/lib/author_engine/game/opal/game_runner.rb +28 -28
- data/lib/author_engine/game/opal/parts/graphics.rb +17 -17
- data/lib/author_engine/game/opal/touch_button.rb +7 -7
- data/lib/author_engine/game/opal/touch_handler.rb +2 -2
- data/lib/author_engine/game/opal/touch_joystick.rb +9 -9
- data/lib/author_engine/version.rb +1 -1
- data/lib/author_engine/views/level_editor.rb +7 -11
- data/lib/author_engine/views/play_viewer.rb +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e0cf77555ac655bee109b3681e36f866779c24609dd450c178ea12088c3c12c
|
4
|
+
data.tar.gz: 37ac43dbfb944219f24af1a8c50ef592d1a640d32ae73e3546cb84a354a4728c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d82bf5325058010870fc12bb021d92bd83d15e969d8ccfa88bdc46ee50070ed59081036cf9238e4951cdb0f43cfe75e0772c0c1100123e39188f0d41ebc6e861
|
7
|
+
data.tar.gz: d85204b91769adaf42d054a852d2792bbef29f2630b5c9774a373fac726844804b33a43d2dcbdc970dd4aa1842135ad7b583e27eba1bc7dc3ed4312cf143d7c9
|
data/author_engine.gemspec
CHANGED
@@ -32,11 +32,11 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
33
33
|
spec.require_paths = ["lib", "assets"]
|
34
34
|
|
35
|
-
spec.add_dependency "gosu", "~> 0.14.
|
35
|
+
spec.add_dependency "gosu", "~> 0.14.5"
|
36
36
|
spec.add_dependency "coderay", "~> 1.1.2"
|
37
|
-
spec.add_dependency "opal", "~> 0.
|
37
|
+
spec.add_dependency "opal", "~> 1.0.0"
|
38
38
|
|
39
|
-
spec.add_development_dependency "bundler", "~>
|
40
|
-
spec.add_development_dependency "rake", "~>
|
41
|
-
spec.add_development_dependency "minitest", "~> 5.
|
39
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
40
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
41
|
+
spec.add_development_dependency "minitest", "~> 5.13"
|
42
42
|
end
|
@@ -151,13 +151,13 @@ class AuthorEngine
|
|
151
151
|
|
152
152
|
def draw_line(x, y, x2, y2, color, z = 0)
|
153
153
|
if RUBY_ENGINE == "opal"
|
154
|
-
`#{AuthorEngine::GameRunner.instance.game.
|
155
|
-
`#{AuthorEngine::GameRunner.instance.game.
|
154
|
+
`#{AuthorEngine::GameRunner.instance.game.authorengine_canvas_context}.strokeStyle = #{color}`
|
155
|
+
`#{AuthorEngine::GameRunner.instance.game.authorengine_canvas_context}.lineWidth = 1`
|
156
156
|
|
157
|
-
`#{AuthorEngine::GameRunner.instance.game.
|
158
|
-
`#{AuthorEngine::GameRunner.instance.game.
|
159
|
-
`#{AuthorEngine::GameRunner.instance.game.
|
160
|
-
`#{AuthorEngine::GameRunner.instance.game.
|
157
|
+
`#{AuthorEngine::GameRunner.instance.game.authorengine_canvas_context}.beginPath()`
|
158
|
+
`#{AuthorEngine::GameRunner.instance.game.authorengine_canvas_context}.moveTo(#{x}, #{y})`
|
159
|
+
`#{AuthorEngine::GameRunner.instance.game.authorengine_canvas_context}.lineTo(#{x2}, #{y2})`
|
160
|
+
`#{AuthorEngine::GameRunner.instance.game.authorengine_canvas_context}.stroke()`
|
161
161
|
else
|
162
162
|
Gosu.draw_line(x, y, color, x2, y2, color, z)
|
163
163
|
end
|
@@ -2,31 +2,31 @@ class AuthorEngine
|
|
2
2
|
class Part
|
3
3
|
module CollisionDetection
|
4
4
|
def bounding_box(sprite_index)
|
5
|
-
@
|
5
|
+
@authorengine_collision_detection.box(sprite_index)
|
6
6
|
end
|
7
7
|
|
8
8
|
def colliding_edge(sprite_index, sprite_x, sprite_y, target_sprite_index, target_x, target_y)
|
9
|
-
@
|
9
|
+
@authorengine_collision_detection.colliding_edge(sprite_index, sprite_x, sprite_y, target_sprite_index, target_x, target_y)
|
10
10
|
end
|
11
11
|
|
12
12
|
def sprite_vs_sprite(sprite_index, sprite_x, sprite_y, target_sprite_index, target_x, target_y)
|
13
|
-
@
|
13
|
+
@authorengine_collision_detection.sprite_vs_sprite(sprite_index, sprite_x, sprite_y, target_sprite_index, target_x, target_y)
|
14
14
|
end
|
15
15
|
|
16
16
|
def sprite_vs_level(sprite_index, sprite_x, sprite_y, level)
|
17
|
-
@
|
17
|
+
@authorengine_collision_detection.sprite_vs_level(sprite_index, sprite_x, sprite_y, level)
|
18
18
|
end
|
19
19
|
|
20
20
|
def draw_sprite_box(sprite_index, sprite_x, sprite_y)
|
21
|
-
@
|
21
|
+
@authorengine_collision_detection.debug_draw_sprite(sprite_index, sprite_x, sprite_y)
|
22
22
|
end
|
23
23
|
|
24
24
|
def draw_level_boxes(level_index)
|
25
|
-
@
|
25
|
+
@authorengine_collision_detection.debug_draw_level(level_index)
|
26
26
|
end
|
27
27
|
|
28
28
|
def render_bounding_box(sprite_index, box, sprite_x, sprite_y, edges = {}, z = Float::INFINITY)
|
29
|
-
@
|
29
|
+
@authorengine_collision_detection.render_bounding_box(sprite_index, box, sprite_x, sprite_y, edges, z)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -27,11 +27,15 @@ class AuthorEngine
|
|
27
27
|
Math.sqrt(dx * dx + dy * dy)
|
28
28
|
end
|
29
29
|
|
30
|
+
def levels
|
31
|
+
@authorengine_levels ? @authorengine_levels : AuthorEngine::GameRunner.instance.levels
|
32
|
+
end
|
33
|
+
|
30
34
|
# returns number of milliseconds since game started
|
31
35
|
def milliseconds
|
32
36
|
if RUBY_ENGINE == "opal"
|
33
37
|
@__initial_milliseconds ||= `performance.now()`
|
34
|
-
(`performance.now()` - @__initial_milliseconds)
|
38
|
+
(`performance.now()` - @__initial_milliseconds)
|
35
39
|
else
|
36
40
|
Gosu.milliseconds
|
37
41
|
end
|
@@ -12,27 +12,28 @@ class AuthorEngine
|
|
12
12
|
include AuthorEngine::Part::GosuInput
|
13
13
|
end
|
14
14
|
|
15
|
-
attr_accessor :
|
16
|
-
attr_accessor :
|
15
|
+
attr_accessor :authorengine_scale, :authorengine_canvas, :authorengine_canvas_context
|
16
|
+
attr_accessor :authorengine_collision_detection
|
17
17
|
def initialize(code:)
|
18
18
|
if RUBY_ENGINE == "opal"
|
19
|
-
@
|
20
|
-
@
|
21
|
-
@
|
19
|
+
@authorengine_scale = 1.0
|
20
|
+
@authorengine_canvas = `document.getElementById('canvas')`
|
21
|
+
@authorengine_canvas_context = `#{@authorengine_canvas}.getContext('2d')`
|
22
22
|
end
|
23
23
|
|
24
24
|
if RUBY_ENGINE != "opal"
|
25
|
-
@
|
25
|
+
@authorengine_sprites = SpriteEditor.instance.sprites
|
26
26
|
|
27
|
-
@
|
27
|
+
@authorengine_levels = []
|
28
28
|
# Create a "Deep Copy" to allow for swapping of a level's sprites without corrupting LevelEditor's version
|
29
29
|
LevelEditor.instance.levels.each do |level|
|
30
|
-
@
|
30
|
+
@authorengine_levels << level.sort_by {|sprite| sprite.z}.map {|sprite| sprite.dup}
|
31
31
|
end
|
32
32
|
size = 16
|
33
|
-
@
|
33
|
+
@authorengine_levels.each {|level| level.each {|sprite| sprite.x = sprite.x * size; sprite.y = sprite.y * size}}
|
34
34
|
|
35
|
-
|
35
|
+
spritesheet = SpriteEditor.instance.spritesheet
|
36
|
+
@authorengine_collision_detection = CollisionDetection.new(@authorengine_sprites, @authorengine_levels, SaveFile::SpriteSheetData.new(spritesheet.width, spritesheet.height, spritesheet.to_blob))
|
36
37
|
end
|
37
38
|
|
38
39
|
@background_color = black
|
@@ -6,27 +6,27 @@ class AuthorEngine
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def text(text, x = 0, y = 0, size = 4, z = 0, color = white)
|
9
|
-
@
|
9
|
+
@authorengine_fonts ||= {}
|
10
10
|
|
11
11
|
font = nil
|
12
12
|
|
13
|
-
if @
|
14
|
-
font = @
|
13
|
+
if @authorengine_fonts.dig(size)
|
14
|
+
font = @authorengine_fonts.dig(size)
|
15
15
|
else
|
16
|
-
font = (@
|
16
|
+
font = (@authorengine_fonts[size] = Gosu::Font.new(size, name: Text::FONT_DEFAULT))
|
17
17
|
end
|
18
18
|
|
19
19
|
font.draw_markup(text, x, y, z, 1, 1, color)
|
20
20
|
end
|
21
21
|
|
22
22
|
def sprite(index, x = 0, y = 0, z = 0, alpha = 255)
|
23
|
-
image = @
|
23
|
+
image = @authorengine_sprites[index]
|
24
24
|
raise "No sprite at '#{index}'!" unless image
|
25
25
|
image.draw(x, y, z, 1,1, Gosu::Color.rgba(255,255,255, alpha))
|
26
26
|
end
|
27
27
|
|
28
28
|
def level(index, z = 0)
|
29
|
-
_level = @
|
29
|
+
_level = @authorengine_levels[index]
|
30
30
|
raise "No level at '#{index}'!" unless _level
|
31
31
|
|
32
32
|
_level.each do |sprite|
|
@@ -35,10 +35,10 @@ class AuthorEngine
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def swap(level, current_sprite, replacement_sprite)
|
38
|
-
_level = @
|
38
|
+
_level = @authorengine_levels[level]
|
39
39
|
raise "No level at '#{index}'!" unless _level
|
40
|
-
raise "No sprite at '#{current_sprite}'!" unless @
|
41
|
-
raise "No sprite at '#{current_sprite}'!" unless @
|
40
|
+
raise "No sprite at '#{current_sprite}'!" unless @authorengine_sprites[current_sprite]
|
41
|
+
raise "No sprite at '#{current_sprite}'!" unless @authorengine_sprites[replacement_sprite]
|
42
42
|
|
43
43
|
_level.each {|sprite| sprite.sprite = replacement_sprite if sprite.sprite == current_sprite}
|
44
44
|
end
|
@@ -37,7 +37,7 @@ class AuthorEngine
|
|
37
37
|
resize_canvas
|
38
38
|
|
39
39
|
@collision_detection = AuthorEngine::CollisionDetection.new(@sprites, @levels, @save_file.sprites)
|
40
|
-
@game.
|
40
|
+
@game.authorengine_collision_detection = @collision_detection
|
41
41
|
|
42
42
|
@game.init
|
43
43
|
|
@@ -72,9 +72,9 @@ class AuthorEngine
|
|
72
72
|
|
73
73
|
def run_game
|
74
74
|
`window.requestAnimationFrame(function() {#{run_game}})` # placed here to ensure next frame is called even if draw or update throw an error
|
75
|
-
`#{@game.
|
76
|
-
`#{@game.
|
77
|
-
`#{@game.
|
75
|
+
`#{@game.authorengine_canvas_context}.clearRect(0,0, window.innerWidth, window.innerHeight)`
|
76
|
+
`#{@game.authorengine_canvas_context}.fillStyle = "#222"`
|
77
|
+
`#{@game.authorengine_canvas_context}.fillRect(0,0, window.innerWidth, window.innerHeight)`
|
78
78
|
|
79
79
|
@counted_frames+=1
|
80
80
|
|
@@ -86,23 +86,23 @@ class AuthorEngine
|
|
86
86
|
|
87
87
|
|
88
88
|
if @sprites.size == (@spritesheet_width/@sprite_size)*(@spritesheet_height/@sprite_size)
|
89
|
-
width = 128 * @game.
|
89
|
+
width = 128 * @game.authorengine_scale
|
90
90
|
|
91
|
-
# `#{@
|
92
|
-
`#{@game.
|
93
|
-
`#{@game.
|
94
|
-
`#{@game.
|
95
|
-
`#{@game.
|
91
|
+
# `#{@game.authorengine_canvas_context}.setTransform(1, 0, 0, 1, 0, 0)`
|
92
|
+
`#{@game.authorengine_canvas_context}.save()`
|
93
|
+
`#{@game.authorengine_canvas_context}.translate(window.innerWidth/2 - #{width/2}, 0)`
|
94
|
+
`#{@game.authorengine_canvas_context}.scale(#{@game.authorengine_scale}, #{@game.authorengine_scale})`
|
95
|
+
`#{@game.authorengine_canvas_context}.save()`
|
96
96
|
|
97
97
|
region = `new Path2D()`
|
98
98
|
`#{region}.rect(0, 0, 128, 128)`
|
99
|
-
`#{@game.
|
100
|
-
`#{@game.
|
99
|
+
`#{@game.authorengine_canvas_context}.clip(#{region})`
|
100
|
+
`#{@game.authorengine_canvas_context}.save()`
|
101
101
|
draw
|
102
102
|
|
103
|
-
`#{@game.
|
104
|
-
`#{@game.
|
105
|
-
`#{@game.
|
103
|
+
`#{@game.authorengine_canvas_context}.restore()`
|
104
|
+
`#{@game.authorengine_canvas_context}.restore()`
|
105
|
+
`#{@game.authorengine_canvas_context}.restore()`
|
106
106
|
|
107
107
|
update
|
108
108
|
|
@@ -112,7 +112,7 @@ class AuthorEngine
|
|
112
112
|
end
|
113
113
|
else
|
114
114
|
@game.draw_background
|
115
|
-
@game.text("Loading sprite #{@sprites.size}/#{(@spritesheet_width/@sprite_size)*(@spritesheet_height/@sprite_size)}
|
115
|
+
@game.text("Loading sprite #{@sprites.size}/#{(@spritesheet_width/@sprite_size)*(@spritesheet_height/@sprite_size)}...", 0, @game.height/2, 8)
|
116
116
|
end
|
117
117
|
|
118
118
|
return nil
|
@@ -137,17 +137,17 @@ class AuthorEngine
|
|
137
137
|
height = `window.innerHeight`
|
138
138
|
|
139
139
|
if width < height
|
140
|
-
@game.
|
140
|
+
@game.authorengine_scale = `window.innerWidth / 128.0`
|
141
141
|
else
|
142
|
-
@game.
|
142
|
+
@game.authorengine_scale = `window.innerHeight / 128.0`
|
143
143
|
end
|
144
144
|
|
145
|
-
`#{@game.
|
146
|
-
`#{@game.
|
147
|
-
`#{@game.
|
148
|
-
`#{@game.
|
145
|
+
`#{@game.authorengine_canvas}.width = #{width}`
|
146
|
+
`#{@game.authorengine_canvas}.height = #{height}`
|
147
|
+
`#{@game.authorengine_canvas}.style.width = #{width}`
|
148
|
+
`#{@game.authorengine_canvas}.style.height = #{height}`
|
149
149
|
|
150
|
-
`#{@game.
|
150
|
+
`#{@game.authorengine_canvas_context}.imageSmoothingEnabled = false`
|
151
151
|
|
152
152
|
reposition_touch_controls
|
153
153
|
return nil
|
@@ -208,12 +208,12 @@ class AuthorEngine
|
|
208
208
|
`document.addEventListener('keydown', (event) => { #{@show_touch_controls = false; AuthorEngine::Part::OpalInput::KEY_STATES[`event.key`] = true} })`
|
209
209
|
`document.addEventListener('keyup', (event) => { #{AuthorEngine::Part::OpalInput::KEY_STATES[`event.key`] = false} })`
|
210
210
|
|
211
|
-
`#{@game.
|
212
|
-
`#{@game.
|
213
|
-
`#{@game.
|
214
|
-
`#{@game.
|
211
|
+
`#{@game.authorengine_canvas}.addEventListener('touchstart', (event) => { #{@show_touch_controls = true; handle_touch_start(`event`)} })`
|
212
|
+
`#{@game.authorengine_canvas}.addEventListener('touchmove', (event) => { #{handle_touch_move(`event`)} })`
|
213
|
+
`#{@game.authorengine_canvas}.addEventListener('touchcancel', (event) => { #{handle_touch_cancel(`event`)} })`
|
214
|
+
`#{@game.authorengine_canvas}.addEventListener('touchend', (event) => { #{handle_touch_end(`event`)} })`
|
215
215
|
|
216
|
-
`#{@game.
|
216
|
+
`#{@game.authorengine_canvas}.addEventListener('fullscreenchange', () => { #{fullscreen_changed} })`
|
217
217
|
|
218
218
|
`document.getElementById('loading').style.display = "none"`
|
219
219
|
|
@@ -2,8 +2,8 @@ class AuthorEngine
|
|
2
2
|
class Part
|
3
3
|
module OpalGraphics
|
4
4
|
def rect(x = 0, y = 0, width = 1, height = 1, color = "white", z = 0)
|
5
|
-
`#{@
|
6
|
-
`#{@
|
5
|
+
`#{@authorengine_canvas_context}.fillStyle = #{color}`
|
6
|
+
`#{@authorengine_canvas_context}.fillRect(#{x}, #{y}, #{width}, #{height})`
|
7
7
|
return nil
|
8
8
|
end
|
9
9
|
|
@@ -11,25 +11,25 @@ class AuthorEngine
|
|
11
11
|
size = 16 # sprite size
|
12
12
|
sprites = AuthorEngine::GameRunner.instance.sprites
|
13
13
|
|
14
|
-
`#{@
|
14
|
+
`#{@authorengine_canvas_context}.save()`
|
15
15
|
if alpha <= 0
|
16
16
|
alpha = 0
|
17
17
|
else
|
18
18
|
alpha = (alpha / 255.0)
|
19
19
|
end
|
20
|
-
`#{@
|
20
|
+
`#{@authorengine_canvas_context}.globalAlpha = #{alpha}`
|
21
21
|
|
22
|
-
`#{@
|
22
|
+
`#{@authorengine_canvas_context}.drawImage(#{sprites[sprite_sheet_index]}, #{x}, #{y})`
|
23
23
|
|
24
|
-
`#{@
|
24
|
+
`#{@authorengine_canvas_context}.restore()`
|
25
25
|
end
|
26
26
|
|
27
27
|
def text(string, x = 0, y = 0, size = 4, z = 0, color = "white")
|
28
28
|
font = "#{size}px Connection, Consolas"
|
29
|
-
`#{@
|
30
|
-
`#{@
|
31
|
-
`#{@
|
32
|
-
`#{@
|
29
|
+
`#{@authorengine_canvas_context}.font = #{font}`
|
30
|
+
`#{@authorengine_canvas_context}.fillStyle = #{color}`
|
31
|
+
`#{@authorengine_canvas_context}.textBaseline = "top"`
|
32
|
+
`#{@authorengine_canvas_context}.fillText(#{string}, #{x}, #{y})`
|
33
33
|
end
|
34
34
|
|
35
35
|
def level(index, z = 0)
|
@@ -51,18 +51,18 @@ class AuthorEngine
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def translate(x, y, &block)
|
54
|
-
`#{@
|
55
|
-
`#{@
|
54
|
+
`#{@authorengine_canvas_context}.save()`
|
55
|
+
`#{@authorengine_canvas_context}.translate(#{x}, #{y})`
|
56
56
|
block.call if block
|
57
|
-
`#{@
|
57
|
+
`#{@authorengine_canvas_context}.restore()`
|
58
58
|
end
|
59
59
|
|
60
60
|
def rotate(angle, x = 0, y = 0, &block)
|
61
|
-
`#{@
|
62
|
-
`#{@
|
63
|
-
`#{@
|
61
|
+
`#{@authorengine_canvas_context}.save()`
|
62
|
+
`#{@authorengine_canvas_context}.translate(#{x}, #{y})`
|
63
|
+
`#{@authorengine_canvas_context}.rotate(#{angle})`
|
64
64
|
block.call if block
|
65
|
-
`#{@
|
65
|
+
`#{@authorengine_canvas_context}.restore()`
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -10,7 +10,7 @@ class AuthorEngine
|
|
10
10
|
@key_states = AuthorEngine::Part::OpalInput::KEY_STATES
|
11
11
|
|
12
12
|
@game = AuthorEngine::GameRunner.instance.game
|
13
|
-
@game_width = 128 * @game.
|
13
|
+
@game_width = 128 * @game.authorengine_scale
|
14
14
|
@game_x = `window.innerWidth/2 - #{@game_width/2}`
|
15
15
|
|
16
16
|
if @side == :left
|
@@ -25,14 +25,14 @@ class AuthorEngine
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def draw
|
28
|
-
`#{@game.
|
29
|
-
`#{@game.
|
28
|
+
`#{@game.authorengine_canvas_context}.fillStyle = #{@color}`
|
29
|
+
`#{@game.authorengine_canvas_context}.fillRect(#{@x}, #{@y}, #{@width}, #{@height})`
|
30
30
|
|
31
31
|
font = "#{@height}px Connection, Consolas"
|
32
|
-
`#{@game.
|
33
|
-
`#{@game.
|
34
|
-
`#{@game.
|
35
|
-
`#{@game.
|
32
|
+
`#{@game.authorengine_canvas_context}.font = #{font}`
|
33
|
+
`#{@game.authorengine_canvas_context}.fillStyle = "white"`
|
34
|
+
`#{@game.authorengine_canvas_context}.textBaseline = "top"`
|
35
|
+
`#{@game.authorengine_canvas_context}.fillText(#{@label}, #{@x}, #{@y}, #{@width})`
|
36
36
|
end
|
37
37
|
|
38
38
|
def trigger?(touches)
|
@@ -27,8 +27,8 @@ class AuthorEngine
|
|
27
27
|
}`
|
28
28
|
|
29
29
|
if @fullscreen_button && @fullscreen_button.trigger?(@current_touches)
|
30
|
-
`if (document.fullscreenElement == null && #{@game.
|
31
|
-
#{game.
|
30
|
+
`if (document.fullscreenElement == null && #{@game.authorengine_canvas}.requestFullscreen) {
|
31
|
+
#{game.authorengine_canvas}.requestFullscreen()
|
32
32
|
} else if(document.fullscreenElement != null && document.exitFullscreen) {
|
33
33
|
document.exitFullscreen()
|
34
34
|
} `
|
@@ -7,7 +7,7 @@ class AuthorEngine
|
|
7
7
|
@key_states = AuthorEngine::Part::OpalInput::KEY_STATES
|
8
8
|
|
9
9
|
@game = AuthorEngine::GameRunner.instance.game
|
10
|
-
@game_width = 128 * @game.
|
10
|
+
@game_width = 128 * @game.authorengine_scale
|
11
11
|
@game_x = `window.innerWidth/2 - #{@game_width/2}`
|
12
12
|
|
13
13
|
if @side == :left
|
@@ -27,16 +27,16 @@ class AuthorEngine
|
|
27
27
|
|
28
28
|
def draw
|
29
29
|
# Background
|
30
|
-
`#{@game.
|
31
|
-
`#{@game.
|
32
|
-
`#{@game.
|
33
|
-
`#{@game.
|
30
|
+
`#{@game.authorengine_canvas_context}.fillStyle = #{@background}`
|
31
|
+
`#{@game.authorengine_canvas_context}.beginPath()`
|
32
|
+
`#{@game.authorengine_canvas_context}.arc(#{@x}, #{@y}, #{@radius}, 0, 2 * Math.PI)`
|
33
|
+
`#{@game.authorengine_canvas_context}.fill()`
|
34
34
|
|
35
35
|
# Joystick
|
36
|
-
`#{@game.
|
37
|
-
`#{@game.
|
38
|
-
`#{@game.
|
39
|
-
`#{@game.
|
36
|
+
`#{@game.authorengine_canvas_context}.beginPath()`
|
37
|
+
`#{@game.authorengine_canvas_context}.fillStyle = #{@color}`
|
38
|
+
`#{@game.authorengine_canvas_context}.arc(#{@joystick_x}, #{@joystick_y}, #{@joystick_radius}, 0, 2 * Math.PI)`
|
39
|
+
`#{@game.authorengine_canvas_context}.fill()`
|
40
40
|
|
41
41
|
return nil
|
42
42
|
end
|
@@ -116,17 +116,13 @@ class AuthorEngine
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def move_viewport
|
119
|
-
if window.button_down?(Gosu::KbUp)
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
@viewport_x -= 1 * @scale
|
127
|
-
elsif window.button_down?(Gosu::Kb0)
|
128
|
-
@viewport_x, @viewport_y = 0, 0
|
129
|
-
end
|
119
|
+
@viewport_y += 1 * @scale if window.button_down?(Gosu::KbUp)
|
120
|
+
@viewport_y -= 1 * @scale if window.button_down?(Gosu::KbDown)
|
121
|
+
|
122
|
+
@viewport_x += 1 * @scale if window.button_down?(Gosu::KbLeft)
|
123
|
+
@viewport_x -= 1 * @scale if window.button_down?(Gosu::KbRight)
|
124
|
+
|
125
|
+
@viewport_x, @viewport_y = 0, 0 if window.button_down?(Gosu::Kb0)
|
130
126
|
end
|
131
127
|
|
132
128
|
def normalize(int)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: author_engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyberarm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gosu
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.14.
|
19
|
+
version: 0.14.5
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.14.
|
26
|
+
version: 0.14.5
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coderay
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,56 +44,56 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 1.0.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 1.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '2.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '2.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '13.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '13.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: minitest
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '5.
|
89
|
+
version: '5.13'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '5.
|
96
|
+
version: '5.13'
|
97
97
|
description: Create arcade style games quickly and easily
|
98
98
|
email:
|
99
99
|
- matthewlikesrobots@gmail.com
|