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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3840aa088a24e90ff6a1e10d139624c38ecced3a7676aa2f4f11fb46fc433854
4
- data.tar.gz: 3c36fcc6e2eb00cdee1fad4c188c4c3ee3c1ea685ff35a6143daa2d2a565d00c
3
+ metadata.gz: 5b1a159b551a31d4a0ff8fda11c6c150a90bbef0d95ffedbd4dfd6e6142ccf8f
4
+ data.tar.gz: a1a2ee8d0853fc8bad1c63c85fb625c80291b8e4ab5f9a0deeb3c2f902a1dec5
5
5
  SHA512:
6
- metadata.gz: 6c67aee68830d5607901848659891a56330b6dbecc8c2a5ed06ac83bf911359735635b3e7a9aed1a260898ff0a654e0bbc45ee3d3c5c228cc49c34d982c25494
7
- data.tar.gz: 4c2687fb05a4d4ac2f22c3378fb991494c36ad5fb64b46f6d769ac22dc0683bd62efac113d07cf8bb8e65dec0f0a0810eea542f2b8dedd8ee5a4469ce700083c
6
+ metadata.gz: 7f03cbe78fd24c28c0c047d0af79c30dfdf30cfc489fd68266857f13b2bfcfacb741483874010950ba32eccebe4fe48017de48c73a9888080189a35d95e5f305
7
+ data.tar.gz: 907cc97ad98a88349b1d7b0bb8dbd06c8f04340cf38ecfa5bf4257593b6e1a96515390d916af67a0f8ffd7d5502210a3f0dfe6bf98831288a5e9458bc25f3094
data/.rspec CHANGED
@@ -1,3 +1,3 @@
1
- --require spec_helper --format doc -I src
1
+ --require spec_helper --format doc
2
2
  --color
3
3
  --order random
@@ -48,3 +48,5 @@ RSpec/NamedSubject:
48
48
  Enabled: false
49
49
  RSpec/NestedGroups:
50
50
  Max: 5
51
+ RSpec/VerifiedDoubles:
52
+ Enabled: false
@@ -1,23 +1,24 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hemi (0.0.1)
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.2)
12
+ coderay (1.1.3)
12
13
  diff-lcs (1.3)
13
14
  jaro_winkler (1.5.4)
14
- method_source (0.9.2)
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.12.2)
19
- coderay (~> 1.1.0)
20
- method_source (~> 0.9.0)
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
- ## Setup
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. Install Ruby and gems
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
+
@@ -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
- if (action = events[event.scancode]).is_a? Symbol
31
+ case action = events[event.scancode]
32
+ when Symbol
32
33
  instance_eval action.to_s
33
- else
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
- debug!
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
@@ -1,3 +1,3 @@
1
1
  module Hemi
2
- VERSION = "0.0.2".freeze
2
+ VERSION = "0.0.3".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hemi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakub Żuchowski