procon_bypass_man 0.3.2 → 0.3.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +1 -1
- data/README.md +3 -3
- data/docs/getting_started.md +4 -4
- data/docs/run_pbm_on_my_branch.md +13 -0
- data/docs/setting/splatoon2_macro_dasei_cancel.md +77 -0
- data/docs/setting/splatoon3_macro_dasei_cancel.md +77 -0
- data/docs/setting/splatoon3_recommended_setting.md +0 -3
- data/docs/upgrade_pbm.md +1 -1
- data/lib/procon_bypass_man/buttons_setting_configuration/layer.rb +3 -2
- data/lib/procon_bypass_man/bypass/bypass_command.rb +1 -1
- data/lib/procon_bypass_man/plugin/splatoon2/macro/dasei_cancel.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/dasei_cancel.rb +22 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/sokuwari_for_splash_bomb.rb +1 -0
- data/lib/procon_bypass_man/plugins.rb +2 -0
- data/lib/procon_bypass_man/procon/value_objects/analog_stick.rb +1 -0
- data/lib/procon_bypass_man/procon.rb +28 -0
- data/lib/procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler.rb +31 -0
- data/lib/procon_bypass_man/version.rb +1 -1
- data/lib/procon_bypass_man.rb +2 -1
- data/project_template/app.rb +2 -2
- data/project_template/app.rb.erb +2 -2
- data/project_template/lib/app_generator.rb +5 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 670f02fde81fd8b24214ec52a6863b08721c97959d5c5e52d6cc78efa4ab3749
|
4
|
+
data.tar.gz: 217a38476e7dd732fb692b89541daea156d9b389ee7677bf03f29126729f8ca2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f28ce822ca7ff9d3ece29e7aacad4b721c033c93792c6613b207d6bdfeaac7f0cbdf55247c7df121c783166562b429a24060f2103ef0efeaddcb9e615d54f22
|
7
|
+
data.tar.gz: f118e303fb62252263cdb16fde94d31134f68745bbabfa3519a2e3aa652603e2f9dfe6609bd3e3bf8a1e4cdfdb64e15bdbf205db4c12c549b0ac1a2182ced0d1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [0.3.3.1] - 2022-11-13
|
2
|
+
* setting.ymlにmacroを使って「スプラ用マクロ、惰性キャンセル」の閾値を設定できない不具合を修正しました
|
3
|
+
|
4
|
+
## [0.3.3] - 2022-11-13
|
5
|
+
* 以前に削除した「スプラ用マクロ、惰性キャンセル」を使えるようにしました
|
6
|
+
* docs/setting/splatoon2_macro_dasei_cancel.md, docs/setting/splatoon3_macro_dasei_cancel.md を参照してください
|
7
|
+
|
1
8
|
## [0.3.2] - 2022-10-13
|
2
9
|
* スプラトゥーン3に対応したプラグインを追加しました
|
3
10
|
* 詳しい設定方法については docs/setting/splatoon3_recommended_setting.md を参照してください
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
* Nintendo Switch Proコントローラーを連射機などにするRaspberry Pi上で動かすコンバータです
|
7
7
|
* ドキュメントは [getting_started.md](docs/getting_started.md) にまとめています
|
8
|
-
* https://pbm-cloud.
|
8
|
+
* https://pbm-cloud.jiikko.com を使うと、webだけで運用が可能です
|
9
9
|
|
10
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">
|
11
11
|
|
@@ -46,7 +46,7 @@ https://user-images.githubusercontent.com/1664497/171327108-f12f56a5-fc36-48da-9
|
|
46
46
|
* 市販されているサードパーティ製連射機との違いは?
|
47
47
|
* サードパーティ製のコントローラーは、設定方法や形状が特殊で買い換えるたびに学習・設定コストが発生します。本ツールを使えば、設定内容はテキストで管理することができ、使い慣れたプロコンで同等のことができます
|
48
48
|
* sshなしで運用は可能ですか?
|
49
|
-
* https://pbm-cloud.
|
49
|
+
* https://pbm-cloud.jiikko.com を使えば、sshを使わずに運用が可能です
|
50
50
|
|
51
51
|
## 仕様・制約
|
52
52
|
* 日を跨ぐ24時ちょうどになった瞬間はLinuxのcronが起動などがするようで、この時間は数秒間バイパスが激しく遅延します
|
@@ -82,7 +82,7 @@ sudo kill -USR2 `cat ./pbm_pid`
|
|
82
82
|
|
83
83
|
## Raspberry Pi4のセットアップを代行します
|
84
84
|
* Raspberry Pi4を開発者である私の家に配送してくれれば、セットアップを代行します。セットアップが終わり次第送り返します
|
85
|
-
* 使い方に関しては、https://pbm-cloud.
|
85
|
+
* 使い方に関しては、https://pbm-cloud.jiikko.com ですべて完結するので、Linuxの知識は不要です
|
86
86
|
* 何か問題が起きた時はリモートログインでサポート可能です
|
87
87
|
* 希望者はDiscordの `kawagu#7684` にDMを送ってください
|
88
88
|
* お金はかかりません
|
data/docs/getting_started.md
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
|
49
49
|
## セットアップを代行できます
|
50
50
|
* Raspberry Pi4を開発者である私の家に配送してくれれば、セットアップを代行します。セットアップが終わり次第送り返します
|
51
|
-
* 使い方に関しては、https://pbm-cloud.
|
51
|
+
* 使い方に関しては、https://pbm-cloud.jiikko.com ですべて完結するので、Linuxの知識は不要です
|
52
52
|
* 何か問題が起きた時はリモートログインでサポート可能です
|
53
53
|
* 希望者はDiscordの `kawagu#7684` にDMを送ってください
|
54
54
|
* お金はかかりません
|
@@ -60,7 +60,7 @@
|
|
60
60
|
|
61
61
|
### procon_bypass_manのインストール
|
62
62
|
|
63
|
-
pbmenvを使うと https://pbm-cloud.
|
63
|
+
pbmenvを使うと https://pbm-cloud.jiikko.com と連携ができるのでおすすめですが、pbmenvを使わなくてもprocon_bypass_manをインストールすることは可能です。
|
64
64
|
次の4つからインストール方法を1つ選んでください。
|
65
65
|
|
66
66
|
* pbmenvを使う方法
|
@@ -239,13 +239,13 @@ discordで質問してみてください。
|
|
239
239
|
[procon_bypass_manのアップグレード方法](/docs/upgrade_pbm.md)
|
240
240
|
|
241
241
|
## procon_bypass_man_cloudについて
|
242
|
-
https://pbm-cloud.
|
242
|
+
https://pbm-cloud.jiikko.com/
|
243
243
|
procon_bypass_man_cloudの運用をWEBで完結できるようになる無料のWEBサービスです。
|
244
244
|
|
245
245
|
procon_bypass_man_cloudとの接続が完了後、Raspberry Piを起動時にprocon_bypass_manが自動で立ち上がるように設定すれば、Raspberry Piへのログインが不要で設定ファイルの変更やprocon_bypass_man自体のアップグレードができます。
|
246
246
|
セットアップ方法などでわからないことがあればdiscordで質問してみてください。
|
247
247
|
|
248
|
-
セットアップ方法は https://pbm-cloud.
|
248
|
+
セットアップ方法は https://pbm-cloud.jiikko.com/faq に書いています。
|
249
249
|
|
250
250
|
## 最適化について
|
251
251
|
本稿では、Rubyの最適化について書きます。上級者向けです。適用しなくても普通に動きますが、逆に適用したことで何らかのケースで遅くなる場合があるかもしれません。
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# forkしたリポジトリのPBMを動かす方法
|
2
|
+
|
3
|
+
forkしたリポジトリのPBMを動かす場合には、`app.rb` にある `gem 'procon_bypass_man'` を次のように変更する必要があります。
|
4
|
+
|
5
|
+
```diff
|
6
|
+
- gem 'procon_bypass_man', '0.3.2'
|
7
|
+
+ gem 'procon_bypass_man', github: 'splaplapla/procon_bypass_man', branch: "dev"
|
8
|
+
```
|
9
|
+
|
10
|
+
`github: xxx/procon_bypass_man', branch: "xxx"` の部分にあなたのリポジトリとブランチ名を入力してください。
|
11
|
+
変更する行はここだけです。
|
12
|
+
|
13
|
+
あとは通常通りに起動してください。
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# スプラトゥーン2: 惰性キャンセル マクロの設定方法
|
2
|
+
|
3
|
+
* 本マクロは実験段階で、オプション名などの仕様が変更される可能性が高いです
|
4
|
+
* procon_bypass_man: 0.3.3以上が必要です
|
5
|
+
|
6
|
+
## 1. install_macro_pluginでマクロを有効化します
|
7
|
+
* `setting.yml` に`install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel` と書きます
|
8
|
+
* これを記述することで、layer内でmacroを呼び出せるようになります
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel
|
12
|
+
```
|
13
|
+
|
14
|
+
## 2. どのlayerで発動するかを宣言します
|
15
|
+
* `setting.yml` のlayer内に`macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_pressed: [:zl]` と書きます
|
16
|
+
* `if_pressed` がどのボタンを押したときにこのマクロが発動するかの設定です
|
17
|
+
* 惰性キャンセルなのでイカ状態になるためにzlを押します
|
18
|
+
* `if_tilted_left_stick` がスティックを倒した時に発動するオプションで、trueを渡すと有効になります
|
19
|
+
* また、傾けた時の閾値を変更することができて、trueの代わりに `{ threshold: 500 }` と書くことができます
|
20
|
+
* デフォルトが500で、ここの数値を上げると、スティックを倒した判定がより厳しくなります。最大1400くらいです。
|
21
|
+
* 連打中に、マクロの発動を無効にしたい場合は `disable_macro` で無効にできます
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
layer :up do
|
25
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
26
|
+
end
|
27
|
+
```
|
28
|
+
```ruby
|
29
|
+
layer :up do
|
30
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: { threshold: 500 }, if_pressed: [:zl]
|
31
|
+
end
|
32
|
+
```
|
33
|
+
```ruby
|
34
|
+
layer :up do
|
35
|
+
disable_macro :all, if_pressed: :a
|
36
|
+
disable_macro :all, if_pressed: :zr
|
37
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
## 3. 設定を反映させる
|
42
|
+
* 上記の記述を加えたsetting.ymlを起動中のprocon_bypass_manプロセスで読み込むには、プロセスにその旨を伝える必要があります
|
43
|
+
* ラズベリーパイを再起動して、プロセスを立ち上げ直す、でも目的は達成できますが、もっと簡単にsetting.ymlを再読み込みする必要があります
|
44
|
+
* 書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
|
45
|
+
* setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
|
46
|
+
|
47
|
+
```shell
|
48
|
+
sudo kill -USR2 `cat ./pbm_pid`
|
49
|
+
```
|
50
|
+
|
51
|
+
## 設定例1
|
52
|
+
```yaml
|
53
|
+
version: 1.0
|
54
|
+
setting: |-
|
55
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
56
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel
|
57
|
+
|
58
|
+
layer :up do
|
59
|
+
disable_macro :all, if_pressed: :a
|
60
|
+
disable_macro :all, if_pressed: :zr
|
61
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
65
|
+
## 設定例2
|
66
|
+
* `open_macro` キーワードを使っても同じことが実行可能です。
|
67
|
+
* この場合は、 `install_macro_plugin` が不要です。
|
68
|
+
|
69
|
+
```yaml
|
70
|
+
version: 1.0
|
71
|
+
setting: |-
|
72
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
73
|
+
|
74
|
+
layer :up do
|
75
|
+
open_macro :dacan, steps: [:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec], if_tilted_left_stick: true, if_pressed: [:zl]
|
76
|
+
end
|
77
|
+
```
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# スプラトゥーン3: 惰性キャンセル マクロの設定方法
|
2
|
+
|
3
|
+
* 本マクロは実験段階で、オプション名などの仕様が変更される可能性が高いです
|
4
|
+
* procon_bypass_man: 0.3.3以上が必要です
|
5
|
+
|
6
|
+
## 1. install_macro_pluginでマクロを有効化します
|
7
|
+
* `setting.yml` に`install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel` と書きます
|
8
|
+
* これを記述することで、layer内でmacroを呼び出せるようになります
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel
|
12
|
+
```
|
13
|
+
|
14
|
+
## 2. どのlayerで発動するかを宣言します
|
15
|
+
* `setting.yml` のlayer内に`macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_pressed: [:zl]` と書きます
|
16
|
+
* `if_pressed` がどのボタンを押したときにこのマクロが発動するかの設定です
|
17
|
+
* 惰性キャンセルなのでイカ状態になるためにzlを押します
|
18
|
+
* `if_tilted_left_stick` がスティックを倒した時に発動するオプションで、trueを渡すと有効になります
|
19
|
+
* また、傾けた時の閾値を変更することができて、trueの代わりに `{ threshold: 500 }` と書くことができます
|
20
|
+
* デフォルトが500で、ここの数値を上げると、スティックを倒した判定がより厳しくなります。最大1400くらいです。
|
21
|
+
* 連打中に、マクロの発動を無効にしたい場合は `disable_macro` で無効にできます
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
layer :up do
|
25
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
26
|
+
end
|
27
|
+
```
|
28
|
+
```ruby
|
29
|
+
layer :up do
|
30
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_tilted_left_stick: { threshold: 500 }, if_pressed: [:zl]
|
31
|
+
end
|
32
|
+
```
|
33
|
+
```ruby
|
34
|
+
layer :up do
|
35
|
+
disable_macro :all, if_pressed: :a
|
36
|
+
disable_macro :all, if_pressed: :zr
|
37
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
## 3. 設定を反映させる
|
42
|
+
* 上記の記述を加えたsetting.ymlを起動中のprocon_bypass_manプロセスで読み込むには、プロセスにその旨を伝える必要があります
|
43
|
+
* ラズベリーパイを再起動して、プロセスを立ち上げ直す、でも目的は達成できますが、もっと簡単にsetting.ymlを再読み込みする必要があります
|
44
|
+
* 書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
|
45
|
+
* setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
|
46
|
+
|
47
|
+
```shell
|
48
|
+
sudo kill -USR2 `cat ./pbm_pid`
|
49
|
+
```
|
50
|
+
|
51
|
+
## 設定例1
|
52
|
+
```yaml
|
53
|
+
version: 1.0
|
54
|
+
setting: |-
|
55
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
56
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel
|
57
|
+
|
58
|
+
layer :up do
|
59
|
+
disable_macro :all, if_pressed: :a
|
60
|
+
disable_macro :all, if_pressed: :zr
|
61
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
65
|
+
## 設定例2
|
66
|
+
* `open_macro` キーワードを使っても同じことが実行可能です。
|
67
|
+
* この場合は、 `install_macro_plugin` が不要です。
|
68
|
+
|
69
|
+
```yaml
|
70
|
+
version: 1.0
|
71
|
+
setting: |-
|
72
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
73
|
+
|
74
|
+
layer :up do
|
75
|
+
open_macro :dacan, steps: [:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec], if_tilted_left_stick: true, if_pressed: [:zl]
|
76
|
+
end
|
77
|
+
```
|
@@ -91,7 +91,6 @@ setting: |-
|
|
91
91
|
* YボタンとBボタンと十字キーの左を同時に押したときに、マップ開いた時の←に設定されている味方にスーパージャンプ
|
92
92
|
* YボタンとBボタンと十字キーの右を同時に押したときに、マップ開いた時の→に設定されている味方にスーパージャンプ
|
93
93
|
* YボタンとBボタンと十字キーの下を同時に押したときに、リスポーンにスーパージャンプ
|
94
|
-
* ZLボタンと十字キーの右ボタンを同時に、バブル即割を発動
|
95
94
|
* 筆ダッシュをするためにLボタンをZRボタンに変更
|
96
95
|
* ZLボタンとAボタンを同時に押したときに移動するとスニーキング
|
97
96
|
* イカロール
|
@@ -103,7 +102,6 @@ setting: |-
|
|
103
102
|
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey
|
104
103
|
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey
|
105
104
|
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey
|
106
|
-
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::SokuwariForSplashBomb
|
107
105
|
|
108
106
|
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
109
107
|
set_neutral_position 2100, 2000
|
@@ -117,7 +115,6 @@ setting: |-
|
|
117
115
|
macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey, if_pressed: [:y, :b, :up]
|
118
116
|
macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey, if_pressed: [:y, :b, :right]
|
119
117
|
macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey, if_pressed: [:y, :b, :left]
|
120
|
-
macro ProconBypassMan::Plugin::Splatoon3::Macro::SokuwariForSplashBomb, if_pressed: [:zl, :right]
|
121
118
|
|
122
119
|
remap :l, to: :zr
|
123
120
|
left_analog_stick_cap cap: 1100, if_pressed: [:zl, :a], force_neutral: :a
|
data/docs/upgrade_pbm.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* pbm-cloudを使う方法、pbmenvを使う方法、pbmenvを使わない方法があります
|
3
3
|
|
4
4
|
## pbm-cloudを使う方法
|
5
|
-
* https://pbm-cloud.
|
5
|
+
* https://pbm-cloud.jiikko.com からデバイス詳細画面を開いてください
|
6
6
|
* `デバイスの設定` => `PBMのバージョンアップ`を選択して、表示されるモーダルからインストールしたいバージョンを選択し、 `このバージョンでバージョンアップする` をクリックしてください
|
7
7
|
* クリックするとRaspberry Piが再起動するのでしばらく待ってください
|
8
8
|
* 設定ファイルが初期状態に戻っているので適宜復元してください
|
@@ -53,13 +53,13 @@ module ProconBypassMan
|
|
53
53
|
end
|
54
54
|
|
55
55
|
# @param [String, Class] プラグインのclass
|
56
|
-
# @param [Hash, NilClass] if_tilted_left_stick
|
56
|
+
# @param [Hash, Boolean, NilClass] if_tilted_left_stick
|
57
57
|
def macro(name, if_pressed: nil, if_tilted_left_stick: nil, force_neutral: nil)
|
58
58
|
case if_tilted_left_stick
|
59
59
|
when Integer, String, Symbol, Array
|
60
60
|
warn "macro #{name}のif_tilted_left_stickで想定外の値です"
|
61
61
|
if_tilted_left_stick = nil
|
62
|
-
when TrueClass, NilClass, FalseClass
|
62
|
+
when TrueClass, NilClass, FalseClass, Hash
|
63
63
|
# OK
|
64
64
|
else
|
65
65
|
Kernel.warn "設定ファイルに記述ミスがあります. 未対応の値を受け取りました."
|
@@ -91,6 +91,7 @@ module ProconBypassMan
|
|
91
91
|
end
|
92
92
|
|
93
93
|
# 設定ファイルに直接マクロを打ち込める
|
94
|
+
# @param [Hash, Boolean, NilClass] if_tilted_left_stick
|
94
95
|
# @param [String, Class] macroの識別子
|
95
96
|
# @paramh[Array<Symbol>] macroの本体. ボタンの配列
|
96
97
|
def open_macro(name, steps: [], if_pressed: nil, if_tilted_left_stick: nil, force_neutral: nil)
|
@@ -53,7 +53,7 @@ class ProconBypassMan::BypassCommand
|
|
53
53
|
# シビア
|
54
54
|
t2 = Thread.new do
|
55
55
|
bypass = ProconBypassMan::Bypass::ProconToSwitch.new(gadget: @gadget, procon: @procon)
|
56
|
-
process = BlueGreenProcess.new(worker_instance: bypass, max_work:
|
56
|
+
process = BlueGreenProcess.new(worker_instance: bypass, max_work: 550)
|
57
57
|
loop do
|
58
58
|
if $will_terminate_token
|
59
59
|
if $will_terminate_token == WILL_TERMINATE_TOKEN::TERMINATE
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon2
|
4
|
+
module Macro
|
5
|
+
module DaseiCancel
|
6
|
+
def self.display_name
|
7
|
+
:dasei_cancel
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec].freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
'惰性キャンセル'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Macro
|
5
|
+
module DaseiCancel
|
6
|
+
def self.display_name
|
7
|
+
:dasei_cancel
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec].freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.descrition
|
15
|
+
'惰性キャンセル'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -6,6 +6,7 @@ require_relative "plugin/splatoon2/macro/jump_to_left_key"
|
|
6
6
|
require_relative "plugin/splatoon2/macro/sokuwari_for_splash_bomb"
|
7
7
|
require_relative "plugin/splatoon2/macro/forward_ikarole"
|
8
8
|
require_relative "plugin/splatoon2/macro/charge_tansan_bomb"
|
9
|
+
require_relative "plugin/splatoon2/macro/dasei_cancel"
|
9
10
|
require_relative "plugin/splatoon2/mode/guruguru"
|
10
11
|
|
11
12
|
require_relative "plugin/splatoon3/version"
|
@@ -16,6 +17,7 @@ require_relative "plugin/splatoon3/macro/jump_to_left_key"
|
|
16
17
|
require_relative "plugin/splatoon3/macro/sokuwari_for_splash_bomb"
|
17
18
|
require_relative "plugin/splatoon3/macro/forward_ikarole"
|
18
19
|
require_relative "plugin/splatoon3/macro/charge_tansan_bomb"
|
20
|
+
require_relative "plugin/splatoon3/macro/dasei_cancel"
|
19
21
|
require_relative "plugin/splatoon3/mode/guruguru"
|
20
22
|
|
21
23
|
module ProconBypassMan
|
@@ -33,6 +33,7 @@ class ProconBypassMan::Procon
|
|
33
33
|
}
|
34
34
|
BlueGreenProcess::SharedVariable.instance.data["buttons"] = {}
|
35
35
|
BlueGreenProcess::SharedVariable.instance.data["current_layer_key"] = :up
|
36
|
+
BlueGreenProcess::SharedVariable.instance.data["recent_left_stick_hypotenuses"] = []
|
36
37
|
end
|
37
38
|
reset!
|
38
39
|
|
@@ -41,6 +42,7 @@ class ProconBypassMan::Procon
|
|
41
42
|
self.user_operation = ProconBypassMan::Procon::UserOperation.new(
|
42
43
|
binary.dup
|
43
44
|
)
|
45
|
+
@left_stick_tilting_power_scaler = ProconBypassMan::AnalogStickTiltingPowerScaler.new
|
44
46
|
end
|
45
47
|
|
46
48
|
def status
|
@@ -55,6 +57,20 @@ class ProconBypassMan::Procon
|
|
55
57
|
BlueGreenProcess::SharedVariable.instance.data["current_layer_key"] = layer
|
56
58
|
end
|
57
59
|
|
60
|
+
RECENT_LEFT_STICK_POSITIONS_LIMIT = 5
|
61
|
+
# @param [Float] left_stick_hypotenuses
|
62
|
+
# @return [void]
|
63
|
+
def add_recent_left_stick_hypotenuses(left_stick_hypotenuses)
|
64
|
+
if (overflowed_size = recent_left_stick_hypotenuses.size - RECENT_LEFT_STICK_POSITIONS_LIMIT)
|
65
|
+
overflowed_size.times { recent_left_stick_hypotenuses.shift }
|
66
|
+
end
|
67
|
+
recent_left_stick_hypotenuses << left_stick_hypotenuses
|
68
|
+
end
|
69
|
+
|
70
|
+
def recent_left_stick_hypotenuses
|
71
|
+
BlueGreenProcess::SharedVariable.instance.data["recent_left_stick_hypotenuses"]
|
72
|
+
end
|
73
|
+
|
58
74
|
def ongoing_macro; @@status[:ongoing_macro]; end
|
59
75
|
def ongoing_mode; @@status[:ongoing_mode]; end
|
60
76
|
|
@@ -75,6 +91,8 @@ class ProconBypassMan::Procon
|
|
75
91
|
end
|
76
92
|
|
77
93
|
analog_stick = ProconBypassMan::Procon::AnalogStick.new(binary: user_operation.binary.raw)
|
94
|
+
add_recent_left_stick_hypotenuses(analog_stick.relative_hypotenuse)
|
95
|
+
dumped_tilting_power = @left_stick_tilting_power_scaler.calculate(recent_left_stick_hypotenuses)
|
78
96
|
|
79
97
|
enable_all_macro = true
|
80
98
|
enable_macro_map = Hash.new {|h,k| h[k] = true }
|
@@ -92,6 +110,16 @@ class ProconBypassMan::Procon
|
|
92
110
|
current_layer.macros.each do |macro_name, options|
|
93
111
|
next unless enable_macro_map[macro_name]
|
94
112
|
|
113
|
+
if(if_tilted_left_stick_value = options[:if_tilted_left_stick])
|
114
|
+
threshold = (if_tilted_left_stick_value.is_a?(Hash) && if_tilted_left_stick_value[:threshold]) || ProconBypassMan::AnalogStickTiltingPowerScaler::DEFAULT_THRESHOLD
|
115
|
+
if dumped_tilting_power.tilting?(threshold: threshold, current_position_x: analog_stick.relative_x, current_position_y: analog_stick.relative_y) && user_operation.pressing_all_buttons?(options[:if_pressed])
|
116
|
+
@@status[:ongoing_macro] = MacroRegistry.load(macro_name)
|
117
|
+
break
|
118
|
+
end
|
119
|
+
|
120
|
+
next
|
121
|
+
end
|
122
|
+
|
95
123
|
if user_operation.pressing_all_buttons?(options[:if_pressed])
|
96
124
|
@@status[:ongoing_macro] = MacroRegistry.load(macro_name, force_neutral_buttons: options[:force_neutral])
|
97
125
|
break
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class ProconBypassMan::AnalogStickTiltingPowerScaler
|
2
|
+
DEFAULT_THRESHOLD = 500
|
3
|
+
|
4
|
+
class PowerChunk
|
5
|
+
def initialize(hypotenuses)
|
6
|
+
@hypotenuses = hypotenuses
|
7
|
+
end
|
8
|
+
|
9
|
+
def moving_power
|
10
|
+
max = @hypotenuses.max
|
11
|
+
min = @hypotenuses.min
|
12
|
+
moving_power = (max - min).abs
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [Boolean]
|
16
|
+
def tilting?(threshold: DEFAULT_THRESHOLD, current_position_x: , current_position_y: )
|
17
|
+
# スティックがニュートラルな時
|
18
|
+
if (-200..200).include?(current_position_x) && (-200..200).include?(current_position_y)
|
19
|
+
return false
|
20
|
+
end
|
21
|
+
|
22
|
+
moving_power >= threshold
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# @param [Array<Float>] hypotenuses
|
27
|
+
# @return [PowerChunk]
|
28
|
+
def calculate(hypotenuses)
|
29
|
+
PowerChunk.new(hypotenuses)
|
30
|
+
end
|
31
|
+
end
|
data/lib/procon_bypass_man.rb
CHANGED
@@ -35,6 +35,7 @@ require_relative "procon_bypass_man/support/remote_macro_http_client"
|
|
35
35
|
require_relative "procon_bypass_man/support/update_remote_pbm_action_status_http_client"
|
36
36
|
require_relative "procon_bypass_man/support/send_device_stats_http_client"
|
37
37
|
require_relative "procon_bypass_man/support/procon_performance_http_client"
|
38
|
+
require_relative "procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler"
|
38
39
|
require_relative "procon_bypass_man/support/never_exit_accidentally"
|
39
40
|
require_relative "procon_bypass_man/support/cycle_sleep"
|
40
41
|
require_relative "procon_bypass_man/support/can_over_process"
|
@@ -195,7 +196,7 @@ module ProconBypassMan
|
|
195
196
|
ProconBypassMan::RemoteMacroReceiver.start!
|
196
197
|
BlueGreenProcess.config.logger = ProconBypassMan.logger
|
197
198
|
}
|
198
|
-
config.shared_variables = [:buttons, :current_layer_key]
|
199
|
+
config.shared_variables = [:buttons, :current_layer_key, :recent_left_stick_hypotenuses]
|
199
200
|
end
|
200
201
|
end
|
201
202
|
|
data/project_template/app.rb
CHANGED
@@ -12,7 +12,7 @@ begin
|
|
12
12
|
gemfile do
|
13
13
|
source 'https://rubygems.org'
|
14
14
|
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
15
|
-
gem 'procon_bypass_man', '0.3.
|
15
|
+
gem 'procon_bypass_man', '0.3.3.1'
|
16
16
|
end
|
17
17
|
rescue Bundler::Source::Git::GitCommandError => e
|
18
18
|
retry_count_on_git_command_error = retry_count_on_git_command_error + 1
|
@@ -39,7 +39,7 @@ ProconBypassMan.configure do |config|
|
|
39
39
|
|
40
40
|
# webからProconBypassManを操作できるwebサービスと連携します
|
41
41
|
# 連携中はエラーログ、パフォーマンスに関するメトリクスを送信します
|
42
|
-
# config.api_servers = 'https://pbm-cloud.
|
42
|
+
# config.api_servers = 'https://pbm-cloud.jiikko.com'
|
43
43
|
|
44
44
|
# エラーが起きたらerror.logに書き込みます
|
45
45
|
config.enable_critical_error_logging = true
|
data/project_template/app.rb.erb
CHANGED
@@ -12,7 +12,7 @@ begin
|
|
12
12
|
gemfile do
|
13
13
|
source 'https://rubygems.org'
|
14
14
|
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
15
|
-
gem 'procon_bypass_man', '0.3.
|
15
|
+
gem 'procon_bypass_man', '0.3.3.1'
|
16
16
|
end
|
17
17
|
rescue Bundler::Source::Git::GitCommandError => e
|
18
18
|
retry_count_on_git_command_error = retry_count_on_git_command_error + 1
|
@@ -39,7 +39,7 @@ ProconBypassMan.configure do |config|
|
|
39
39
|
|
40
40
|
# webからProconBypassManを操作できるwebサービスと連携します
|
41
41
|
# 連携中はエラーログ、パフォーマンスに関するメトリクスを送信します
|
42
|
-
<%- api_server_config = "config.api_servers = 'https://pbm-cloud.
|
42
|
+
<%- api_server_config = "config.api_servers = 'https://pbm-cloud.jiikko.com'" -%>
|
43
43
|
<%- if enable_integration_with_pbm_cloud -%>
|
44
44
|
<%= api_server_config %>
|
45
45
|
<%- else -%>
|
@@ -15,7 +15,11 @@ class AppGenerator
|
|
15
15
|
def generate
|
16
16
|
erb = File.read(template_path)
|
17
17
|
enable_integration_with_pbm_cloud = @enable_integration_with_pbm_cloud
|
18
|
-
|
18
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.6.0")
|
19
|
+
app_rb = ERB.new(erb, trim_mode: '-').result(binding)
|
20
|
+
else
|
21
|
+
app_rb = ERB.new(erb, nil, '-').result(binding)
|
22
|
+
end
|
19
23
|
File.write(output_path, app_rb)
|
20
24
|
end
|
21
25
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: procon_bypass_man
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jiikko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pbmenv
|
@@ -94,11 +94,14 @@ files:
|
|
94
94
|
- bin/setup
|
95
95
|
- docs/getting_started.md
|
96
96
|
- docs/how_to_connect_procon.md
|
97
|
+
- docs/run_pbm_on_my_branch.md
|
97
98
|
- docs/setting/left-analogstick-cap.md
|
99
|
+
- docs/setting/splatoon2_macro_dasei_cancel.md
|
98
100
|
- docs/setting/splatoon2_macro_forward_ikarole.md
|
99
101
|
- docs/setting/splatoon2_macro_sokuwari_bubble.md
|
100
102
|
- docs/setting/splatoon2_recommended_setting.md
|
101
103
|
- docs/setting/splatoon2_shake_tansan.md
|
104
|
+
- docs/setting/splatoon3_macro_dasei_cancel.md
|
102
105
|
- docs/setting/splatoon3_macro_forward_ikarole.md
|
103
106
|
- docs/setting/splatoon3_recommended_setting.md
|
104
107
|
- docs/setup_raspi.md
|
@@ -164,6 +167,7 @@ files:
|
|
164
167
|
- lib/procon_bypass_man/device_status.rb
|
165
168
|
- lib/procon_bypass_man/ephemeral_configuration.rb
|
166
169
|
- lib/procon_bypass_man/plugin/splatoon2/macro/charge_tansan_bomb.rb
|
170
|
+
- lib/procon_bypass_man/plugin/splatoon2/macro/dasei_cancel.rb
|
167
171
|
- lib/procon_bypass_man/plugin/splatoon2/macro/fast_return.rb
|
168
172
|
- lib/procon_bypass_man/plugin/splatoon2/macro/forward_ikarole.rb
|
169
173
|
- lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_left_key.rb
|
@@ -173,6 +177,7 @@ files:
|
|
173
177
|
- lib/procon_bypass_man/plugin/splatoon2/mode/guruguru.rb
|
174
178
|
- lib/procon_bypass_man/plugin/splatoon2/version.rb
|
175
179
|
- lib/procon_bypass_man/plugin/splatoon3/macro/charge_tansan_bomb.rb
|
180
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/dasei_cancel.rb
|
176
181
|
- lib/procon_bypass_man/plugin/splatoon3/macro/fast_return.rb
|
177
182
|
- lib/procon_bypass_man/plugin/splatoon3/macro/forward_ikarole.rb
|
178
183
|
- lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_left_key.rb
|
@@ -244,6 +249,7 @@ files:
|
|
244
249
|
- lib/procon_bypass_man/remote_pbm_action/value_objects/remote_pbm_action_object.rb
|
245
250
|
- lib/procon_bypass_man/runner.rb
|
246
251
|
- lib/procon_bypass_man/scheduler.rb
|
252
|
+
- lib/procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler.rb
|
247
253
|
- lib/procon_bypass_man/support/callbacks.rb
|
248
254
|
- lib/procon_bypass_man/support/can_over_process.rb
|
249
255
|
- lib/procon_bypass_man/support/compress_array.rb
|