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 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