Class: RoadToRubykaigi::Config
- Inherits:
-
Object
- Object
- RoadToRubykaigi::Config
- Extended by:
- Forwardable
- Includes:
- Singleton
- Defined in:
- lib/road_to_rubykaigi/config.rb
Constant Summary collapse
- CONFIG_FILE =
'.road_to_rubykaigi'- DEFAULT_START_THRESHOLD =
0.025- DEFAULT_CONTINUATION_THRESHOLD =
0.05- INPUT_SOURCES =
%i[ble serial].freeze
- INPUT_SOURCE_CYCLE =
[nil, :ble, :serial].freeze
Instance Method Summary collapse
- #bgm_off? ⇒ Boolean
- #ble? ⇒ Boolean
- #continuation_threshold ⇒ Object
- #cycle_input_source ⇒ Object
- #debug? ⇒ Boolean
- #demo? ⇒ Boolean
- #detect_serial_port! ⇒ Object
- #external_input? ⇒ Boolean
- #gravity_vector ⇒ Object
-
#initialize ⇒ Config
constructor
A new instance of Config.
- #input_source ⇒ Object
- #input_source=(value) ⇒ Object
- #jump_v_max ⇒ Object
- #project_root ⇒ Object
- #save_calibration(start_threshold:, continuation_threshold:, walk_cadence:, walk_intensity:, gravity_vector: nil, jump_v_max: nil) ⇒ Object
- #serial? ⇒ Boolean
- #serial_port ⇒ Object
- #signal_source ⇒ Object
- #start_threshold ⇒ Object
- #walk_cadence ⇒ Object
- #walk_intensity ⇒ Object
Constructor Details
#initialize ⇒ Config
Returns a new instance of Config.
24 25 26 |
# File 'lib/road_to_rubykaigi/config.rb', line 24 def initialize @settings = load end |
Instance Method Details
#bgm_off? ⇒ Boolean
71 72 73 |
# File 'lib/road_to_rubykaigi/config.rb', line 71 def bgm_off? @settings['BGM_OFF'] end |
#ble? ⇒ Boolean
33 |
# File 'lib/road_to_rubykaigi/config.rb', line 33 def ble? = input_source == :ble |
#continuation_threshold ⇒ Object
83 84 85 |
# File 'lib/road_to_rubykaigi/config.rb', line 83 def continuation_threshold (@settings['CONTINUATION_THRESHOLD'] || DEFAULT_CONTINUATION_THRESHOLD).to_f end |
#cycle_input_source ⇒ Object
42 43 44 45 46 |
# File 'lib/road_to_rubykaigi/config.rb', line 42 def cycle_input_source current_index = INPUT_SOURCE_CYCLE.index(input_source) || 0 self.input_source = INPUT_SOURCE_CYCLE[(current_index + 1) % INPUT_SOURCE_CYCLE.size] detect_serial_port! if serial? end |
#debug? ⇒ Boolean
67 68 69 |
# File 'lib/road_to_rubykaigi/config.rb', line 67 def debug? @settings['DEBUG'] end |
#demo? ⇒ Boolean
75 76 77 |
# File 'lib/road_to_rubykaigi/config.rb', line 75 def demo? @settings['DEMO'] end |
#detect_serial_port! ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/road_to_rubykaigi/config.rb', line 52 def detect_serial_port! return serial_port if File.exist?(serial_port) port = detect_serial_port if port @settings['SERIAL_PORT'] = port save(['SERIAL_PORT']) end port end |
#external_input? ⇒ Boolean
35 |
# File 'lib/road_to_rubykaigi/config.rb', line 35 def external_input? = !input_source.nil? |
#gravity_vector ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/road_to_rubykaigi/config.rb', line 95 def gravity_vector value = @settings['GRAVITY'] return nil unless value parts = value.split(',').map(&:to_f) parts.size == 3 ? parts : nil end |
#input_source ⇒ Object
28 29 30 31 |
# File 'lib/road_to_rubykaigi/config.rb', line 28 def input_source value = @settings['INPUT_SOURCE']&.to_sym INPUT_SOURCES.include?(value) ? value : nil end |
#input_source=(value) ⇒ Object
37 38 39 40 |
# File 'lib/road_to_rubykaigi/config.rb', line 37 def input_source=(value) @settings['INPUT_SOURCE'] = value.to_s save(['INPUT_SOURCE']) end |
#jump_v_max ⇒ Object
103 104 105 |
# File 'lib/road_to_rubykaigi/config.rb', line 103 def jump_v_max @settings['JUMP_V_MAX']&.to_f end |
#project_root ⇒ Object
125 126 127 |
# File 'lib/road_to_rubykaigi/config.rb', line 125 def project_root __dir__.sub('lib/road_to_rubykaigi', '') end |
#save_calibration(start_threshold:, continuation_threshold:, walk_cadence:, walk_intensity:, gravity_vector: nil, jump_v_max: nil) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/road_to_rubykaigi/config.rb', line 107 def save_calibration(start_threshold:, continuation_threshold:, walk_cadence:, walk_intensity:, gravity_vector: nil, jump_v_max: nil) @settings['START_THRESHOLD'] = start_threshold.to_s @settings['CONTINUATION_THRESHOLD'] = continuation_threshold.to_s @settings['WALK_CADENCE'] = walk_cadence.to_s @settings['WALK_INTENSITY'] = walk_intensity.to_s keys = %w[START_THRESHOLD CONTINUATION_THRESHOLD WALK_CADENCE WALK_INTENSITY] if gravity_vector @settings['GRAVITY'] = gravity_vector.join(',') keys << 'GRAVITY' end if jump_v_max @settings['JUMP_V_MAX'] = jump_v_max.to_s keys << 'JUMP_V_MAX' end save(keys) end |
#serial? ⇒ Boolean
34 |
# File 'lib/road_to_rubykaigi/config.rb', line 34 def serial? = input_source == :serial |
#serial_port ⇒ Object
48 49 50 |
# File 'lib/road_to_rubykaigi/config.rb', line 48 def serial_port @settings['SERIAL_PORT'] || detect_serial_port end |
#signal_source ⇒ Object
63 64 65 |
# File 'lib/road_to_rubykaigi/config.rb', line 63 def signal_source serial? ? SerialReader : GameServer end |
#start_threshold ⇒ Object
79 80 81 |
# File 'lib/road_to_rubykaigi/config.rb', line 79 def start_threshold (@settings['START_THRESHOLD'] || DEFAULT_START_THRESHOLD).to_f end |
#walk_cadence ⇒ Object
87 88 89 |
# File 'lib/road_to_rubykaigi/config.rb', line 87 def walk_cadence @settings['WALK_CADENCE']&.to_f end |
#walk_intensity ⇒ Object
91 92 93 |
# File 'lib/road_to_rubykaigi/config.rb', line 91 def walk_intensity @settings['WALK_INTENSITY']&.to_f end |