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