procon_bypass_man 0.3.0 → 0.3.2

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +1 -1
  5. data/docs/setting/splatoon2_macro_forward_ikarole.md +3 -0
  6. data/docs/setting/splatoon3_macro_forward_ikarole.md +34 -0
  7. data/docs/setting/splatoon3_recommended_setting.md +136 -0
  8. data/docs/setup_raspi.md +12 -15
  9. data/lib/procon_bypass_man/background/jobs/base_job.rb +3 -2
  10. data/lib/procon_bypass_man/background/jobs/post_completed_remote_macro_job.rb +4 -0
  11. data/lib/procon_bypass_man/background.rb +0 -1
  12. data/lib/procon_bypass_man/buttons_setting_configuration/layer.rb +1 -0
  13. data/lib/procon_bypass_man/buttons_setting_configuration/loader.rb +2 -1
  14. data/lib/procon_bypass_man/buttons_setting_configuration.rb +11 -0
  15. data/lib/procon_bypass_man/bypass/bypass_command.rb +1 -1
  16. data/lib/procon_bypass_man/bypass/procon_to_switch.rb +13 -2
  17. data/lib/procon_bypass_man/configuration.rb +1 -0
  18. data/lib/procon_bypass_man/device_connection/procon_setting_overrider.rb +0 -3
  19. data/lib/procon_bypass_man/ephemeral_configuration.rb +9 -0
  20. data/lib/procon_bypass_man/plugin/splatoon2/macro/{dasei_cancel.rb → forward_ikarole.rb} +4 -4
  21. data/lib/procon_bypass_man/plugin/splatoon3/macro/charge_tansan_bomb.rb +21 -0
  22. data/lib/procon_bypass_man/plugin/splatoon3/macro/fast_return.rb +21 -0
  23. data/lib/procon_bypass_man/plugin/splatoon3/macro/forward_ikarole.rb +21 -0
  24. data/lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_left_key.rb +21 -0
  25. data/lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_right_key.rb +21 -0
  26. data/lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_up_key.rb +21 -0
  27. data/lib/procon_bypass_man/plugin/splatoon3/macro/sokuwari_for_splash_bomb.rb +26 -0
  28. data/lib/procon_bypass_man/plugin/splatoon3/mode/guruguru.rb +63 -0
  29. data/lib/procon_bypass_man/plugin/splatoon3/version.rb +9 -0
  30. data/lib/procon_bypass_man/plugins.rb +11 -1
  31. data/lib/procon_bypass_man/procon/analog_stick_manipulator.rb +16 -4
  32. data/lib/procon_bypass_man/procon/macro_builder.rb +11 -0
  33. data/lib/procon_bypass_man/procon/performance_measurement.rb +1 -1
  34. data/lib/procon_bypass_man/procon/rumbler.rb +18 -0
  35. data/lib/procon_bypass_man/procon/user_operation.rb +1 -1
  36. data/lib/procon_bypass_man/procon.rb +5 -13
  37. data/lib/procon_bypass_man/runner.rb +0 -1
  38. data/lib/procon_bypass_man/support/http_client.rb +3 -2
  39. data/lib/procon_bypass_man/support/remote_macro_http_client.rb +4 -0
  40. data/lib/procon_bypass_man/version.rb +1 -1
  41. data/lib/procon_bypass_man/worker.rb +16 -8
  42. data/lib/procon_bypass_man.rb +6 -1
  43. data/project_template/app.rb +1 -1
  44. data/project_template/app.rb.erb +1 -1
  45. data/project_template/setting.yml +3 -0
  46. metadata +17 -6
  47. data/docs/setting/splatoon2_macro_dasei_cancel.md +0 -77
  48. data/lib/procon_bypass_man/background/job_performer.rb +0 -15
  49. data/lib/procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler.rb +0 -59
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 556a827cf03895e4212aa4c524963ca7efd24499c2ea14edff2d692bc3e1e63f
4
- data.tar.gz: bf7cf5a735fffa13e1ff99c259a329a4c6981be755440477884ece0246188f21
3
+ metadata.gz: 7f48f74b2d080a695b673df7fead87e9c97a8fad14c8afc6c03027490e798f22
4
+ data.tar.gz: b1711feb8433cd8dc47e9a5eb05dc8b989ef0a3e95d33c292ab664b94b05ddda
5
5
  SHA512:
6
- metadata.gz: 7bdfd9d2c5bee033c8f6a1f87acebcf3374e353c0ea4d373c76f86ee33b87b248665b087276998f20dee9f0d1258ab2c7c49906cc55b94b51a5e35d84712da5c
7
- data.tar.gz: 176ac515a48935df2953c36fb747e09be71c31f7850b09397e338bc0685b5da25bcd7ff81795d235287f2a5870fcdec3fec5aa9334e12ba90ca26662fe8807e7
6
+ metadata.gz: ff4071d2a2bdb9c3f3a26e2f27c659ef1e080b683286998fe129f7bcac72dea9e0f97e23769da495f024bd55f55b54b952accf89f3118373cf46343f2a2dc4b2
7
+ data.tar.gz: bd0faface2c631886156850b67e1480c04a05b214fddffa277c9fd9ff7d4561c3991e34baca27da001a8444797f8ade1aa00d57a1c263166ff82c3b5d2c436fa
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [0.3.2] - 2022-10-13
2
+ * スプラトゥーン3に対応したプラグインを追加しました
3
+ * 詳しい設定方法については docs/setting/splatoon3_recommended_setting.md を参照してください
4
+ * 自動ドット打ちが稀に途中で止まってしまうのを修正しました
5
+
6
+ ## [0.3.1] - 2022-10-07
7
+ * レイヤーを変更しているときにコントローラーを振動できるようになりました
8
+ * setting.yml で `enable(:rumble_on_layer_change)` と記述してください
9
+ * イカロールをするマクロを追加しました
10
+ * 詳しい設定方法については docs/setting/splatoon2_macro_forward_ikarole.md を参照してください
11
+ * スプラ用マクロ、惰性キャンセルを削除しました
12
+
1
13
  ## [0.3.0] - 2022-9-9
2
14
  * 表示入力機能を一時的に削除しました #185
3
15
  * バイパス処理中の小さなラグがほぼなくなりました #185
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- procon_bypass_man (0.3.0)
4
+ procon_bypass_man (0.3.2)
5
5
  action_cable_client
6
6
  blue_green_process
7
7
  pbmenv (>= 0.1.9)
data/README.md CHANGED
@@ -7,7 +7,6 @@
7
7
  * ドキュメントは [getting_started.md](docs/getting_started.md) にまとめています
8
8
  * https://pbm-cloud.herokuapp.com を使うと、webだけで運用が可能です
9
9
 
10
-
11
10
  <img width="880" alt="スクリーンショット 2022-04-02 9 10 38" src="https://user-images.githubusercontent.com/1664497/161356057-71e4bc2a-0217-4434-9bf1-0002b9fb261a.png">
12
11
 
13
12
  https://user-images.githubusercontent.com/1664497/171327108-f12f56a5-fc36-48da-95a5-65e976553a20.mov
@@ -24,6 +23,7 @@ https://user-images.githubusercontent.com/1664497/171327108-f12f56a5-fc36-48da-9
24
23
 
25
24
  ## プラグイン
26
25
  * https://github.com/splaplapla/procon_bypass_man-splatoon2
26
+ * [スプラトゥーン3](docs/setting/splatoon3_recommended_setting.md)
27
27
 
28
28
  ## FAQ
29
29
  * どうやって動かすの?
@@ -0,0 +1,3 @@
1
+ # スプラトゥーン3: イカロール マクロの設定方法
2
+
3
+ [スプラトゥーン3: イカロール マクロの設定方法](splatoon3_macro_forward_ikarole.md)
@@ -0,0 +1,34 @@
1
+ # スプラトゥーン3: イカロール マクロの設定方法
2
+
3
+ * procon_bypass_man: 0.3.1以上が必要です
4
+ * このマクロは、右から上へ高速にスティックを入れることでイカロールを行います
5
+ * 後述する設定例では、左スティックを押し込むことでイカロールを発動してます
6
+
7
+ https://user-images.githubusercontent.com/1664497/193837089-1c56af8d-2c1b-436a-b2a7-89c083a408d7.mov
8
+
9
+
10
+ ## 設定例1
11
+ ```yaml
12
+ version: 1.0
13
+ setting: |-
14
+ prefix_keys_for_changing_layer [:zr, :zl, :l]
15
+
16
+ layer :up do
17
+ open_macro :forward_ikarole, steps: [:forward_ikarole1], if_pressed: [:thumbl], force_neutral: []
18
+ end
19
+ ```
20
+
21
+ ## 設定例2
22
+ pluginとして登録してあるので、 `macro` を使っても同じことができます。
23
+
24
+ ```yaml
25
+ version: 1.0
26
+ setting: |-
27
+ prefix_keys_for_changing_layer [:zr, :zl, :l]
28
+
29
+ install_macro_plugin(ProconBypassMan::Plugin::Splatoon2::Macro::ForwardIkarole)
30
+
31
+ layer :up do
32
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::ForwardIkarole, if_pressed: [:thumbl], force_neutral: []
33
+ end
34
+ ```
@@ -0,0 +1,136 @@
1
+ # スプラトゥーン3: おすすめの設定
2
+ ## 1 全般
3
+ ### 1.1 デスしてから最速スパジャンのためのAボタン連打
4
+
5
+ `flip :a, if_pressed: [:a]`
6
+ Aボタンを連打にします。復帰してから最速で前線復帰ができます
7
+
8
+ ### 1.2 簡単スニーキング
9
+
10
+ ボタンを押している間は、水飛沫のたたないスニーキングの感度まで調整することができます。
11
+ [設定方法](/docs/setting/left-analogstick-cap.md)
12
+
13
+ ### 1.3 ナイス玉連打
14
+
15
+ `flip :down, if_pressed: :down`
16
+ 十字キーの下ボタンは常に連打にしておくとナイス玉が来たときに楽です。
17
+
18
+ ### 1.4 最速スーパージャンプ
19
+ マップを開かずにジャンプができます。トリガーは自由に設定できます。
20
+
21
+ ```ruby
22
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::FastReturn
23
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey
24
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey
25
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey
26
+
27
+ layer :up do
28
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::FastReturn, if_pressed: [:y, :b, :down]
29
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey, if_pressed: [:y, :b, :up]
30
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey, if_pressed: [:y, :b, :right]
31
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey, if_pressed: [:y, :b, :left]
32
+ end
33
+ ```
34
+
35
+ ### 1.5 イカロール
36
+ * このマクロは、右から上へ高速にスティックを入れることでイカロールを行います
37
+ * 後述の設定例では、左スティックを押し込むことでイカロールを発動してます
38
+
39
+ ```ruby
40
+ layer :up do
41
+ open_macro :forward_ikarole, steps: [:forward_ikarole1], if_pressed: [:thumbl], force_neutral: []
42
+ end
43
+ ```
44
+
45
+ ## 2 武器に特化した設定
46
+ ### 2.1 パブロ、ボトルガイザー向け
47
+
48
+ `flip :zr, if_pressed: :zr, force_neutral: :zl`
49
+ zrを連打にします。`force_neutral: :zl` というオプションをつけることで、ZRを押している間はZLを押しても無視されるようになります。パブロでは意味がありませんが、シューターだと煽りのような動作を抑制することができます。
50
+
51
+ ## 3 設定例
52
+ ### 3.1 シンプルなパブロ向け
53
+
54
+ * ZRボタン, ZLボタン, Lボタンを同時押しながら十字キーを押すとレイヤーを切り替える
55
+ * ナイス玉が来たときにゲージを貯めるために十字キーの下を連打
56
+ * 復帰から最速ジャンプのためにAボタンを連打
57
+ * 筆を振るためにZRボタンを連打
58
+ * 筆ダッシュをするためにLボタンをZRボタンに変更
59
+ * イカロール
60
+
61
+ ```yaml
62
+ version: 1.0
63
+ setting: |-
64
+ prefix_keys_for_changing_layer [:zr, :zl, :l]
65
+
66
+ layer :up do
67
+ flip :zr, if_pressed: :zr, force_neutral: :zl
68
+ flip :a, if_pressed: [:a]
69
+ flip :down, if_pressed: :down
70
+ remap :l, to: :zr
71
+ open_macro :forward_ikarole, steps: [:forward_ikarole1], if_pressed: [:thumbl], force_neutral: []
72
+ end
73
+
74
+ layer :right do
75
+ end
76
+
77
+ layer :left do
78
+ end
79
+
80
+ layer :down do
81
+ end
82
+ ```
83
+
84
+ ### 3.2 全部盛り
85
+
86
+ * ZRボタン, ZLボタン, Lボタンを同時押しながら十字キーを押すとレイヤーを切り替える
87
+ * ナイス玉が来たときにゲージを貯めるために十字キーの下を連打
88
+ * 筆を振るためにZRボタンを連打
89
+ * 復帰から最速ジャンプのためにAボタンを連打
90
+ * YボタンとBボタンと十字キーの上を同時に押したときに、マップ開いた時の↑に設定されている味方にスーパージャンプ
91
+ * YボタンとBボタンと十字キーの左を同時に押したときに、マップ開いた時の←に設定されている味方にスーパージャンプ
92
+ * YボタンとBボタンと十字キーの右を同時に押したときに、マップ開いた時の→に設定されている味方にスーパージャンプ
93
+ * YボタンとBボタンと十字キーの下を同時に押したときに、リスポーンにスーパージャンプ
94
+ * ZLボタンと十字キーの右ボタンを同時に、バブル即割を発動
95
+ * 筆ダッシュをするためにLボタンをZRボタンに変更
96
+ * ZLボタンとAボタンを同時に押したときに移動するとスニーキング
97
+ * イカロール
98
+
99
+ ```yaml
100
+ version: 1.0
101
+ setting: |-
102
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::FastReturn
103
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey
104
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey
105
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey
106
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::SokuwariForSplashBomb
107
+
108
+ prefix_keys_for_changing_layer [:zr, :zl, :l]
109
+ set_neutral_position 2100, 2000
110
+
111
+ layer :up do
112
+ flip :zr, if_pressed: :zr, force_neutral: :zl
113
+ flip :a, if_pressed: [:a]
114
+ flip :down, if_pressed: :down
115
+
116
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::FastReturn, if_pressed: [:y, :b, :down]
117
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey, if_pressed: [:y, :b, :up]
118
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey, if_pressed: [:y, :b, :right]
119
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey, if_pressed: [:y, :b, :left]
120
+ macro ProconBypassMan::Plugin::Splatoon3::Macro::SokuwariForSplashBomb, if_pressed: [:zl, :right]
121
+
122
+ remap :l, to: :zr
123
+ left_analog_stick_cap cap: 1100, if_pressed: [:zl, :a], force_neutral: :a
124
+
125
+ open_macro :forward_ikarole, steps: [:forward_ikarole1], if_pressed: [:thumbl], force_neutral: []
126
+ end
127
+
128
+ layer :right do
129
+ end
130
+
131
+ layer :left do
132
+ end
133
+
134
+ layer :down do
135
+ end
136
+ ```
data/docs/setup_raspi.md CHANGED
@@ -1,41 +1,38 @@
1
1
  https://github.com/splaplapla/procon_bypass_man/blob/master/docs/setup_raspi_by_mitamae.md に半自動化した手順があります
2
2
 
3
3
  # Raspberry Pi4のセットアップ手順
4
- * SDカードにRaspberry Pi OS (32-bit)を焼く
4
+ * SDカードにRaspberry Pi OS (32 or 64-bit)を焼く
5
5
  * SDカードをRaspberry Pi4本体に挿して起動する
6
6
  * ラズパイGUI
7
7
  * 無線LANに接続する
8
8
  * sshdを許可する
9
9
  * macからsshする
10
+ * sudo apt-get update
10
11
  * sudo apt-get dist-upgrade
11
- * hostnameを変える
12
- * sudo hostnamectl set-hostname raspizero
13
- * /etc/hosts に追記する
14
- * 仮想メモリを増やす(optional)
15
- * /etc/dphys-swapfile を CONF_SWAPSIZE=1024 にする
16
- * sudo /etc/init.d/dphys-swapfile restart && swapon -s
17
- * tailscale をインストールする(optional)
18
12
  * sudo apt-get install vim rbenv git -y
19
13
  * rbenvでrubyを入れる
20
14
  * git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
21
15
  * rbenv install 3.0.1
22
16
  * rbenv local 3.0.1
23
17
  * gem i bundler
24
- * sshkeyを作成する
25
- * github に鍵を登録する
26
- * ~/.ssh/authorized_keys に鍵を登録する
27
18
  * ガジェットモードで起動する
28
19
  * /boot/config.txtに、dtoverlay=dwc2を追記
29
20
  * echo "dwc2" | sudo tee -a /etc/modules
30
21
  * echo "libcomposite" | sudo tee -a /etc/modules
31
22
  * sudo cat /etc/modules
32
- * cd ~ && wget https://gist.githubusercontent.com/jiikko/3f9fb3194c0cc7685e31fbfcb5b5f9ff/raw/23ddee29d94350be80b79d290ac3c8ce8400bd88/add_procon_gadget.sh
33
- * chmod 755 ~/add_procon_gadget.sh
34
23
  * sudo reboot
35
- * sudo sh ~/add_procon_gadget.sh の実行に成功させる
36
24
  * cd ~ && mkdir -p src && cd ~/src && git clone https://github.com/jiikko/procon_bypass_man_sample && cd procon_bypass_man_sample
37
25
 
38
- おわり. 起動する時は都度 sudo ruby app.rb を実行する
26
+ おわりです.
27
+
28
+ 起動する時は下記を確認の上、`sudo /home/pi/.rbenv/versions/3.0.1/bin/ruby app.rb` を実行してください。
29
+
30
+ * 「ラズパイとSwitch」と「ラズパイとプロコン」を **データ通信可能なケーブル** で接続する
31
+ * **Proコントローラーの有線通信** をONにする
32
+
33
+
34
+ ![image](https://user-images.githubusercontent.com/1664497/193258615-1da27049-6d1f-4bfc-af1d-2f894f9c610e.png)
35
+
39
36
 
40
37
  ## 参考
41
38
  * https://mtosak-tech.hatenablog.jp/entry/2020/08/22/114622
@@ -1,7 +1,8 @@
1
1
  class ProconBypassMan::BaseJob
2
2
  extend ProconBypassMan::Background::JobPerformable
3
3
 
4
- def self.servers
5
- raise NotImplementedError
4
+ # @return [Boolean]
5
+ def self.re_enqueue_if_failed
6
+ false
6
7
  end
7
8
  end
@@ -13,5 +13,9 @@ class ProconBypassMan::PostCompletedRemoteMacroJob < ProconBypassMan::BaseJob
13
13
  device_id = ProconBypassMan.device_id
14
14
  "/api/devices/#{ProconBypassMan.device_id}/completed_pbm_remote_macro_jobs"
15
15
  end
16
+
17
+ def self.re_enqueue_if_failed
18
+ true
19
+ end
16
20
  end
17
21
 
@@ -1,7 +1,6 @@
1
1
  require "procon_bypass_man/background/jobs/concerns/has_external_api_setting"
2
2
  require "procon_bypass_man/background/jobs/concerns/job_performable"
3
3
  require "procon_bypass_man/background/job_queue"
4
- require "procon_bypass_man/background/job_performer"
5
4
  require "procon_bypass_man/background/jobs/base_job"
6
5
  require "procon_bypass_man/background/jobs/report_event_base_job"
7
6
  require "procon_bypass_man/background/jobs/report_boot_job"
@@ -53,6 +53,7 @@ module ProconBypassMan
53
53
  end
54
54
 
55
55
  # @param [String, Class] プラグインのclass
56
+ # @param [Hash, NilClass] if_tilted_left_stick 非推奨
56
57
  def macro(name, if_pressed: nil, if_tilted_left_stick: nil, force_neutral: nil)
57
58
  case if_tilted_left_stick
58
59
  when Integer, String, Symbol, Array
@@ -21,7 +21,7 @@ module ProconBypassMan
21
21
  rescue SyntaxError
22
22
  fallback_setting_if_has_backup(current_setting_path: setting_path)
23
23
  raise ProconBypassMan::CouldNotLoadConfigError, "Rubyスクリプトのシンタックスエラーです"
24
- rescue NoMethodError
24
+ rescue NameError
25
25
  fallback_setting_if_has_backup(current_setting_path: setting_path)
26
26
  raise ProconBypassMan::CouldNotLoadConfigError, "Rubyスクリプトに未定義の定数・変数があります"
27
27
  rescue Psych::SyntaxError
@@ -52,6 +52,7 @@ module ProconBypassMan
52
52
  end
53
53
 
54
54
  def self.reload_setting
55
+ ProconBypassMan.ephemeral_config.reset!
55
56
  self.load(setting_path: ProconBypassMan::ButtonsSettingConfiguration.instance.setting_path)
56
57
  end
57
58
 
@@ -98,6 +98,17 @@ module ProconBypassMan
98
98
  @prefix_keys_for_changing_layer
99
99
  end
100
100
 
101
+ # @param [Symbol, String] setting_name
102
+ # @return [void]
103
+ def enable(setting_name)
104
+ case setting_name.to_sym
105
+ when :rumble_on_layer_change
106
+ ProconBypassMan.ephemeral_config.enable_rumble_on_layer_change = true
107
+ else
108
+ warn "存在しないenable(#{setting_name.to_sym})が呼び出されました。"
109
+ end
110
+ end
111
+
101
112
  def reset!
102
113
  @prefix_keys_for_changing_layer = []
103
114
  self.mode_plugins = {}
@@ -58,8 +58,8 @@ class ProconBypassMan::BypassCommand
58
58
  if $will_terminate_token
59
59
  if $will_terminate_token == WILL_TERMINATE_TOKEN::TERMINATE
60
60
  bypass.direct_connect_switch_via_bluetooth
61
- process.shutdown
62
61
  end
62
+ process.shutdown
63
63
  break
64
64
  end
65
65
 
@@ -53,9 +53,20 @@ class ProconBypassMan::Bypass::ProconToSwitch
53
53
  begin
54
54
  # 終了処理を希望されているのでブロックを無視してメソッドを抜けてOK
55
55
  return(false) if $will_terminate_token # rubocop:disable Lint/NoReturnInBeginEndBlocks
56
- self.gadget.write_nonblock(
56
+ binary = ::ProconBypassMan::Procon::Rumbler.monitor do
57
57
  ProconBypassMan::Processor.new(bypass_value.binary).process
58
- )
58
+ end
59
+ self.gadget.write_nonblock(binary)
60
+
61
+ if ProconBypassMan.ephemeral_config.enable_rumble_on_layer_change && ProconBypassMan::Procon::Rumbler.must_rumble?
62
+ begin
63
+ self.procon.write_nonblock(ProconBypassMan::Procon::Rumbler.binary)
64
+ ProconBypassMan.logger.debug { ProconBypassMan::Procon::Rumbler.binary.unpack('H*').first }
65
+ rescue => e
66
+ ProconBypassMan::SendErrorCommand.execute(error: e)
67
+ end
68
+ end
69
+
59
70
  next(true)
60
71
  rescue IO::EAGAINWaitReadable
61
72
  return(false) if $will_terminate_token # rubocop:disable Lint/NoReturnInBeginEndBlocks
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # app.rbから設定される値。プロセスを起動してから不変
3
4
  class ProconBypassMan::Configuration
4
5
  module ClassMethods
5
6
  def root
@@ -5,17 +5,14 @@ class ProconBypassMan::DeviceConnection::ProconSettingOverrider
5
5
  SUB_COMMAND_VIBRATION = "48"
6
6
 
7
7
  SUB_COMMAND_ARG_HOME_LED_ON = "1FF0FF"
8
- SUB_COMMAND_ARG_VIBRATION_OFF = "00"
9
8
 
10
9
  ALL_SETTINGS = {
11
10
  home_led_on: [SUB_COMMAND_HOME_LED_ON, SUB_COMMAND_ARG_HOME_LED_ON],
12
- vibration_off: [SUB_COMMAND_VIBRATION, SUB_COMMAND_ARG_VIBRATION_OFF],
13
11
  }
14
12
 
15
13
  # TODO 自動生成する
16
14
  SPECIAL_SUB_COMMAND_ARGS = {
17
15
  SUB_COMMAND_HOME_LED_ON => SUB_COMMAND_ARG_HOME_LED_ON,
18
- SUB_COMMAND_VIBRATION => SUB_COMMAND_ARG_VIBRATION_OFF,
19
16
  }
20
17
 
21
18
  def initialize(procon: )
@@ -0,0 +1,9 @@
1
+
2
+ # setting.yamlから設定される値。設定ファイルを再読み込みするとすべて消える
3
+ class ProconBypassMan::EphemeralConfiguration
4
+ attr_accessor :enable_rumble_on_layer_change
5
+
6
+ def reset!
7
+ self.enable_rumble_on_layer_change = false
8
+ end
9
+ end
@@ -2,17 +2,17 @@ module ProconBypassMan
2
2
  module Plugin
3
3
  module Splatoon2
4
4
  module Macro
5
- module DaseiCancel
5
+ module ForwardIkarole
6
6
  def self.display_name
7
- :dasei_cancel
7
+ :forward_ikarole
8
8
  end
9
9
 
10
10
  def self.steps
11
- [:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec].freeze
11
+ [:forward_ikarole1].freeze
12
12
  end
13
13
 
14
14
  def self.description
15
- '惰性キャンセル'
15
+ '前方にイカロールをします'
16
16
  end
17
17
  end
18
18
  end
@@ -0,0 +1,21 @@
1
+ module ProconBypassMan
2
+ module Plugin
3
+ module Splatoon3
4
+ module Macro
5
+ module ChargeTansanBomb
6
+ def self.display_name
7
+ :charge_tansan_bomb
8
+ end
9
+
10
+ def self.steps
11
+ [:shake_left_stick_and_toggle_b_for_0_1sec].freeze
12
+ end
13
+
14
+ def self.description
15
+ 'タンサンボムのチャージ'
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module ProconBypassMan
2
+ module Plugin
3
+ module Splatoon3
4
+ module Macro
5
+ module FastReturn
6
+ def self.display_name
7
+ :fast_return
8
+ end
9
+
10
+ def self.steps
11
+ [:x, :x, :x, :down, :down, :down, :down, :down, :toggle_a_for_0_1sec, :wait_for_0_5sec]
12
+ end
13
+
14
+ def self.description
15
+ '試合中にリスポーンにスーパージャンプ'
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module ProconBypassMan
2
+ module Plugin
3
+ module Splatoon3
4
+ module Macro
5
+ module ForwardIkarole
6
+ def self.display_name
7
+ :forward_ikarole
8
+ end
9
+
10
+ def self.steps
11
+ [:forward_ikarole1].freeze
12
+ end
13
+
14
+ def self.description
15
+ '前方にイカロールをします'
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module ProconBypassMan
2
+ module Plugin
3
+ module Splatoon3
4
+ module Macro
5
+ module JumpToLeftKey
6
+ def self.display_name
7
+ :jump_to_left_key
8
+ end
9
+
10
+ def self.steps
11
+ [:x, :x, :x, :left, :left, :left, :left, :left, :toggle_a_for_0_1sec, :wait_for_0_5sec]
12
+ end
13
+
14
+ def self.description
15
+ '試合中に左キーに割り当てられている味方へのスーパージャンプ'
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module ProconBypassMan
2
+ module Plugin
3
+ module Splatoon3
4
+ module Macro
5
+ module JumpToRightKey
6
+ def self.display_name
7
+ :jump_to_right_key
8
+ end
9
+
10
+ def self.steps
11
+ [:x, :x, :x, :right, :right, :right, :right, :right, :toggle_a_for_0_1sec, :wait_for_0_5sec]
12
+ end
13
+
14
+ def self.description
15
+ '試合中に右キーに割り当てられている味方へのスーパージャンプ'
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module ProconBypassMan
2
+ module Plugin
3
+ module Splatoon3
4
+ module Macro
5
+ module JumpToUpKey
6
+ def self.display_name
7
+ :jump_to_up_key
8
+ end
9
+
10
+ def self.steps
11
+ [:x, :x, :x, :up, :up, :up, :up, :up, :toggle_a_for_0_1sec, :wait_for_0_5sec]
12
+ end
13
+
14
+ def self.description
15
+ '試合中に上キーに割り当てられている味方へのスーパージャンプ'
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ module ProconBypassMan
2
+ module Plugin
3
+ module Splatoon3
4
+ module Macro
5
+ module SokuwariForSplashBomb
6
+ def self.display_name
7
+ :sokuwari_for_splash_bomb
8
+ end
9
+
10
+ # procon_bypass_man: 0.1.18以上が必要
11
+ def self.steps
12
+ [ :toggle_r_for_0_2sec,
13
+ :toggle_thumbr_for_0_14sec,
14
+ :toggle_thumbr_and_toggle_zr_for_0_34sec,
15
+ :toggle_r_for_1sec,
16
+ ].freeze
17
+ end
18
+
19
+ def self.description
20
+ 'バブル即割'
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end