hemi 0.0.2 → 0.0.3
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/.rspec +1 -1
- data/.rubocop.yml +2 -0
- data/Gemfile.lock +7 -7
- data/README.md +25 -2
- data/lib/hemi/engine.rb +6 -1
- data/lib/hemi/event/event_loop.rb +7 -2
- data/lib/hemi/event/loop_machine.rb +11 -3
- data/lib/hemi/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b1a159b551a31d4a0ff8fda11c6c150a90bbef0d95ffedbd4dfd6e6142ccf8f
|
4
|
+
data.tar.gz: a1a2ee8d0853fc8bad1c63c85fb625c80291b8e4ab5f9a0deeb3c2f902a1dec5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f03cbe78fd24c28c0c047d0af79c30dfdf30cfc489fd68266857f13b2bfcfacb741483874010950ba32eccebe4fe48017de48c73a9888080189a35d95e5f305
|
7
|
+
data.tar.gz: 907cc97ad98a88349b1d7b0bb8dbd06c8f04340cf38ecfa5bf4257593b6e1a96515390d916af67a0f8ffd7d5502210a3f0dfe6bf98831288a5e9458bc25f3094
|
data/.rspec
CHANGED
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,23 +1,24 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
hemi (0.0.
|
4
|
+
hemi (0.0.2)
|
5
|
+
pry (~> 0.12)
|
5
6
|
ruby-sdl2 (= 0.3.5)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
9
10
|
specs:
|
10
11
|
ast (2.4.0)
|
11
|
-
coderay (1.1.
|
12
|
+
coderay (1.1.3)
|
12
13
|
diff-lcs (1.3)
|
13
14
|
jaro_winkler (1.5.4)
|
14
|
-
method_source (0.
|
15
|
+
method_source (1.0.0)
|
15
16
|
parallel (1.19.1)
|
16
17
|
parser (2.6.5.0)
|
17
18
|
ast (~> 2.4.0)
|
18
|
-
pry (0.
|
19
|
-
coderay (~> 1.1
|
20
|
-
method_source (~>
|
19
|
+
pry (0.13.1)
|
20
|
+
coderay (~> 1.1)
|
21
|
+
method_source (~> 1.0)
|
21
22
|
rainbow (3.0.0)
|
22
23
|
rspec (3.9.0)
|
23
24
|
rspec-core (~> 3.9.0)
|
@@ -52,7 +53,6 @@ PLATFORMS
|
|
52
53
|
|
53
54
|
DEPENDENCIES
|
54
55
|
hemi!
|
55
|
-
pry (~> 0.12)
|
56
56
|
rspec (~> 3.9)
|
57
57
|
rubocop (~> 0.77)
|
58
58
|
rubocop-performance (~> 1.5)
|
data/README.md
CHANGED
@@ -5,16 +5,39 @@ This is a _Work In Progress_ simplistic game engine based on SDL2.
|
|
5
5
|
|
6
6
|
Made for self-educational purposes.
|
7
7
|
|
8
|
-
##
|
8
|
+
## Usage
|
9
9
|
|
10
10
|
#### 1. Required libraries
|
11
11
|
|
12
12
|
Install `sdl2`, `sdl2_image`, `sdl2_mixer` and `sdl2_ttf` libraries. For MacOS you can simply `brew install` all of them.
|
13
13
|
|
14
|
-
#### 2.
|
14
|
+
#### 2. Using gem
|
15
|
+
|
16
|
+
Refer to [demo](https://github.com/ellmo/hemi/blob/master/demo/loop_machine_demo.rb) for now.
|
17
|
+
|
18
|
+
## Development
|
19
|
+
(`sdl2` libs are - obviously - still required)
|
20
|
+
|
21
|
+
#### 1. Install Ruby and gems
|
15
22
|
|
16
23
|
Install specific ruby version using Rbenv (`rbenv install`) or RVM (yuck)
|
17
24
|
|
18
25
|
Make sure you have Bundler gem installed for this revsion (`gem install bundler -v=1.17.3`)
|
19
26
|
|
20
27
|
And `bundle install` away.
|
28
|
+
|
29
|
+
#### 2. Update code (and bump the version)
|
30
|
+
|
31
|
+
Dont forget to `git tag` and push with `--tags option`
|
32
|
+
|
33
|
+
#### 3. Build and push to Rubygems
|
34
|
+
|
35
|
+
`gem build hemi.gemspec`
|
36
|
+
|
37
|
+
`gem push hemi-{VERSION}.gem`
|
38
|
+
|
39
|
+
And if you need to test gem installation locally:
|
40
|
+
|
41
|
+
`gem push hemi-{VERSION}.gem`
|
42
|
+
|
43
|
+
|
data/lib/hemi/engine.rb
CHANGED
@@ -6,6 +6,7 @@ require_relative "loader"
|
|
6
6
|
module Hemi
|
7
7
|
module Engine
|
8
8
|
@debug = false
|
9
|
+
@stop = false
|
9
10
|
|
10
11
|
def initialize
|
11
12
|
sdl_init
|
@@ -19,7 +20,7 @@ module Hemi
|
|
19
20
|
end
|
20
21
|
|
21
22
|
class << self
|
22
|
-
attr_reader :debug
|
23
|
+
attr_reader :debug, :stop
|
23
24
|
|
24
25
|
def prepended(klass)
|
25
26
|
klass.include Singleton
|
@@ -37,6 +38,10 @@ module Hemi
|
|
37
38
|
def debug_off!
|
38
39
|
@debug = false
|
39
40
|
end
|
41
|
+
|
42
|
+
def stop!
|
43
|
+
@stop = true
|
44
|
+
end
|
40
45
|
end
|
41
46
|
|
42
47
|
def run
|
@@ -28,9 +28,10 @@ module Hemi::Event
|
|
28
28
|
private
|
29
29
|
|
30
30
|
def handle_key
|
31
|
-
|
31
|
+
case action = events[event.scancode]
|
32
|
+
when Symbol
|
32
33
|
instance_eval action.to_s
|
33
|
-
|
34
|
+
when Proc
|
34
35
|
action.call
|
35
36
|
end
|
36
37
|
end
|
@@ -48,5 +49,9 @@ module Hemi::Event
|
|
48
49
|
def debug!
|
49
50
|
Hemi::Engine.debug_on!
|
50
51
|
end
|
52
|
+
|
53
|
+
def stop!
|
54
|
+
Hemi::Engine.stop!
|
55
|
+
end
|
51
56
|
end
|
52
57
|
end
|
@@ -15,7 +15,10 @@ module Hemi::Event
|
|
15
15
|
process_logic
|
16
16
|
|
17
17
|
Hemi::Render::Window.renderer.present
|
18
|
-
|
18
|
+
|
19
|
+
debug?
|
20
|
+
break if Hemi::Engine.stop
|
21
|
+
|
19
22
|
sleep 0.1
|
20
23
|
end
|
21
24
|
end
|
@@ -23,7 +26,7 @@ module Hemi::Event
|
|
23
26
|
class << self
|
24
27
|
attr_reader :loops, :current
|
25
28
|
|
26
|
-
def register(name, logic, events)
|
29
|
+
def register(name, logic = -> {}, events = {})
|
27
30
|
event_loop = EventLoop.new(logic, events)
|
28
31
|
@current = event_loop if loops.empty?
|
29
32
|
@loops[name] = event_loop
|
@@ -38,6 +41,11 @@ module Hemi::Event
|
|
38
41
|
def switch(name)
|
39
42
|
@current = LoopMachine[name]
|
40
43
|
end
|
44
|
+
|
45
|
+
def purge!
|
46
|
+
@loops = {}
|
47
|
+
@current = nil
|
48
|
+
end
|
41
49
|
end
|
42
50
|
|
43
51
|
private
|
@@ -54,7 +62,7 @@ module Hemi::Event
|
|
54
62
|
@event = SDL2::Event.poll
|
55
63
|
end
|
56
64
|
|
57
|
-
def debug
|
65
|
+
def debug?
|
58
66
|
binding.pry if Hemi::Engine.debug # rubocop:disable Lint/Debugger
|
59
67
|
Hemi::Engine.debug_off!
|
60
68
|
end
|
data/lib/hemi/version.rb
CHANGED