ehb_game_lib 0.2.0 → 0.2.1
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.
- checksums.yaml +4 -4
- data/lib/ehb_game_lib/base_state.rb +0 -27
- data/lib/ehb_game_lib/version.rb +1 -1
- data/lib/ehb_game_lib/window.rb +23 -28
- data/lib/ehb_game_lib/window/gl_read_pixels_image.rb +24 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 132b08deabd26d18b4242dba90532c59eb76e3891045b198445303427fc8ebe2
|
4
|
+
data.tar.gz: 4a844b5f294d5a3a6978fc02ee4471dd16f350a2a2828afc1512181a1485eaf7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db52172a94bc5a43df09e623f966b830f7716bda2f5b872526934e500f13e5ab453cab8113c4f56d38284b0ba0e6d77c6e98f783e8fff7f7a01e78662645be3e
|
7
|
+
data.tar.gz: 06fd17ee33206fd65d16ad2486e23f07d6a0cfb73157013058f01950da57aace27220976b7f655f05b08e71d4b6bf16b2ad3473f459a9be68505fb23b8e82b19
|
@@ -2,32 +2,5 @@
|
|
2
2
|
|
3
3
|
module EhbGameLib
|
4
4
|
class BaseState < ::Chingu::GameState
|
5
|
-
class << self
|
6
|
-
attr_writer :resize_enabled
|
7
|
-
|
8
|
-
def resize_enabled
|
9
|
-
@resize_enabled = true if @resize_enabled.nil?
|
10
|
-
@resize_enabled
|
11
|
-
end
|
12
|
-
|
13
|
-
def on_resize_enabled(enabled)
|
14
|
-
old_value = resize_enabled
|
15
|
-
begin
|
16
|
-
self.resize_enabled = enabled
|
17
|
-
yield
|
18
|
-
ensure
|
19
|
-
self.resize_enabled = old_value
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def draw
|
25
|
-
super
|
26
|
-
::EhbGameLib::Globals.window.draw_resized if resize_enabled?
|
27
|
-
end
|
28
|
-
|
29
|
-
def resize_enabled?
|
30
|
-
::EhbGameLib::BaseState.resize_enabled
|
31
|
-
end
|
32
5
|
end
|
33
6
|
end
|
data/lib/ehb_game_lib/version.rb
CHANGED
data/lib/ehb_game_lib/window.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'eac_ruby_utils/require_sub'
|
4
5
|
require 'ehb_game_lib/canvas'
|
6
|
+
::EacRubyUtils.require_sub(__FILE__)
|
5
7
|
|
6
8
|
module EhbGameLib
|
7
9
|
class Window < ::Chingu::Window
|
@@ -14,6 +16,7 @@ module EhbGameLib
|
|
14
16
|
self.fit_canvas_to_window = true
|
15
17
|
self.draw_retro = true
|
16
18
|
super calculated_width, calculated_height
|
19
|
+
dimensions_reset
|
17
20
|
end
|
18
21
|
|
19
22
|
def calculated_width
|
@@ -26,52 +29,44 @@ module EhbGameLib
|
|
26
29
|
|
27
30
|
def canvas_factor=(factor)
|
28
31
|
@canvas_factor = factor
|
29
|
-
|
30
|
-
|
32
|
+
dimensions_reset
|
33
|
+
end
|
34
|
+
|
35
|
+
def fullscreen=(value)
|
36
|
+
super(value)
|
37
|
+
dimensions_reset
|
31
38
|
end
|
32
39
|
|
33
40
|
def draw
|
34
41
|
super if ::EhbGameLib::Globals.window
|
42
|
+
draw_resized
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def dimensions_reset
|
48
|
+
if fullscreen?
|
49
|
+
self.width = canvas.width
|
50
|
+
self.height = canvas.height
|
51
|
+
else
|
52
|
+
self.width = calculated_width
|
53
|
+
self.height = calculated_height
|
54
|
+
end
|
35
55
|
end
|
36
56
|
|
37
57
|
def draw_resized
|
38
|
-
return unless fit_canvas_to_window
|
58
|
+
return unless fit_canvas_to_window && !fullscreen?
|
39
59
|
|
40
60
|
::Gosu::Image.new(canvas_image_source, retro: draw_retro)
|
41
61
|
.draw(0, 0, 100, canvas_factor, canvas_factor)
|
42
62
|
end
|
43
63
|
|
44
|
-
private
|
45
|
-
|
46
64
|
def canvas_image_source
|
47
65
|
image_source(0, height - canvas.height, canvas.width, canvas.height)
|
48
66
|
end
|
49
67
|
|
50
|
-
def canvas_rect_uncached
|
51
|
-
::EhbGameLib::Math::Rect.new(0, 0, canvas.width, canvas.height)
|
52
|
-
end
|
53
|
-
|
54
68
|
def image_source(x, y, w, h)
|
55
69
|
GlReadPixelsImage.new(x, y, w, h)
|
56
70
|
end
|
57
|
-
|
58
|
-
class GlReadPixelsImage
|
59
|
-
attr_reader :columns, :rows
|
60
|
-
|
61
|
-
DEPTH = 4
|
62
|
-
|
63
|
-
def initialize(x, y, width, height)
|
64
|
-
@columns = width
|
65
|
-
@rows = height
|
66
|
-
Gosu.flush
|
67
|
-
Gosu.gl do
|
68
|
-
@blob = ::Gl.glReadPixels(x, y, width, height, Gl::GL_RGBA, Gl::GL_UNSIGNED_BYTE)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def to_blob
|
73
|
-
@blob.force_encoding('binary').scan(/.{#{columns * 4}}/m).reverse.join
|
74
|
-
end
|
75
|
-
end
|
76
71
|
end
|
77
72
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module EhbGameLib
|
4
|
+
class Window < ::Chingu::Window
|
5
|
+
class GlReadPixelsImage
|
6
|
+
attr_reader :columns, :rows
|
7
|
+
|
8
|
+
DEPTH = 4
|
9
|
+
|
10
|
+
def initialize(x, y, width, height)
|
11
|
+
@columns = width
|
12
|
+
@rows = height
|
13
|
+
Gosu.flush
|
14
|
+
Gosu.gl do
|
15
|
+
@blob = ::Gl.glReadPixels(x, y, width, height, Gl::GL_RGBA, Gl::GL_UNSIGNED_BYTE)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_blob
|
20
|
+
@blob.force_encoding('binary').scan(/.{#{columns * 4}}/m).reverse.join
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ehb_game_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo H. Bogoni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -153,6 +153,7 @@ files:
|
|
153
153
|
- lib/ehb_game_lib/utils/cursor.rb
|
154
154
|
- lib/ehb_game_lib/version.rb
|
155
155
|
- lib/ehb_game_lib/window.rb
|
156
|
+
- lib/ehb_game_lib/window/gl_read_pixels_image.rb
|
156
157
|
- test/lib/ehb_game_lib/math/circle_test.rb
|
157
158
|
- test/lib/ehb_game_lib/math/intersection/circle_line_segment_test.rb
|
158
159
|
- test/lib/ehb_game_lib/math/intersection/circle_line_test.rb
|