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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/docs/setting/splatoon2_macro_forward_ikarole.md +3 -0
- data/docs/setting/splatoon3_macro_forward_ikarole.md +34 -0
- data/docs/setting/splatoon3_recommended_setting.md +136 -0
- data/docs/setup_raspi.md +12 -15
- data/lib/procon_bypass_man/background/jobs/base_job.rb +3 -2
- data/lib/procon_bypass_man/background/jobs/post_completed_remote_macro_job.rb +4 -0
- data/lib/procon_bypass_man/background.rb +0 -1
- data/lib/procon_bypass_man/buttons_setting_configuration/layer.rb +1 -0
- data/lib/procon_bypass_man/buttons_setting_configuration/loader.rb +2 -1
- data/lib/procon_bypass_man/buttons_setting_configuration.rb +11 -0
- data/lib/procon_bypass_man/bypass/bypass_command.rb +1 -1
- data/lib/procon_bypass_man/bypass/procon_to_switch.rb +13 -2
- data/lib/procon_bypass_man/configuration.rb +1 -0
- data/lib/procon_bypass_man/device_connection/procon_setting_overrider.rb +0 -3
- data/lib/procon_bypass_man/ephemeral_configuration.rb +9 -0
- data/lib/procon_bypass_man/plugin/splatoon2/macro/{dasei_cancel.rb → forward_ikarole.rb} +4 -4
- data/lib/procon_bypass_man/plugin/splatoon3/macro/charge_tansan_bomb.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/fast_return.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/forward_ikarole.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_left_key.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_right_key.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_up_key.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/sokuwari_for_splash_bomb.rb +26 -0
- data/lib/procon_bypass_man/plugin/splatoon3/mode/guruguru.rb +63 -0
- data/lib/procon_bypass_man/plugin/splatoon3/version.rb +9 -0
- data/lib/procon_bypass_man/plugins.rb +11 -1
- data/lib/procon_bypass_man/procon/analog_stick_manipulator.rb +16 -4
- data/lib/procon_bypass_man/procon/macro_builder.rb +11 -0
- data/lib/procon_bypass_man/procon/performance_measurement.rb +1 -1
- data/lib/procon_bypass_man/procon/rumbler.rb +18 -0
- data/lib/procon_bypass_man/procon/user_operation.rb +1 -1
- data/lib/procon_bypass_man/procon.rb +5 -13
- data/lib/procon_bypass_man/runner.rb +0 -1
- data/lib/procon_bypass_man/support/http_client.rb +3 -2
- data/lib/procon_bypass_man/support/remote_macro_http_client.rb +4 -0
- data/lib/procon_bypass_man/version.rb +1 -1
- data/lib/procon_bypass_man/worker.rb +16 -8
- data/lib/procon_bypass_man.rb +6 -1
- data/project_template/app.rb +1 -1
- data/project_template/app.rb.erb +1 -1
- data/project_template/setting.yml +3 -0
- metadata +17 -6
- data/docs/setting/splatoon2_macro_dasei_cancel.md +0 -77
- data/lib/procon_bypass_man/background/job_performer.rb +0 -15
- data/lib/procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler.rb +0 -59
@@ -0,0 +1,63 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Mode
|
5
|
+
module Guruguru
|
6
|
+
def self.description
|
7
|
+
'適当に動きます'
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.binaries
|
11
|
+
[ "309481408000362d684658750968f71cfe2c0e51000001480053f71ffedf0d4b000a013d00caf6ecfd4c0d480003011c00000000000000000000000000000000",
|
12
|
+
"30978140800037dd6748687509fdf6adfded0d6d0081005d00eef68dfdef0d6d00830059001bf791fd140e720090005400000000000000000000000000000000",
|
13
|
+
"309a8140800038cd67495875099af821fe120e40006400880042f8fcfdfd0d470067008900d4f7e0fdf20d4e006a008c00000000000000000000000000000000",
|
14
|
+
"309c8140800036ed67466875099bf878fe4a0e35005b004c00c1f875fe400e35005d004c00c4f856fe2d0e390063006c00000000000000000000000000000000",
|
15
|
+
"30a081408000371d6847587509b9f71bfee70d22002c002300e3f73afe150e2b003500280014f854fe300e2d0038002900000000000000000000000000000000",
|
16
|
+
"30a38140800039fd6743587509def70ffea10d1a0031001f00d1f70ffeb10d19002c002200c5f711feb80d18002c002500000000000000000000000000000000",
|
17
|
+
"30a58140800037dd6746687509d8f70bfe980d270035001200ddf70dfe980d240038001900dff70ffe9b0d1f0035001a00000000000000000000000000000000",
|
18
|
+
"30a98140800037ed67484875099cf7edfdb00d310020000d009ef7eefda30d310022000c00adf7f2fd980d300028000a00000000000000000000000000000000",
|
19
|
+
"30ac8140800036ed67484875099cf709fed40d3a002400160097f7fafdd30d39002200150096f7f0fdc80d380022001400000000000000000000000000000000",
|
20
|
+
"30ae8140800038fd674558750987f72efed40d360021001c0089f729fed50d39002400180092f715fed10d390022001800000000000000000000000000000000",
|
21
|
+
"30b18140800037dd6747487509b8f705fea90d19001d002000c5f70dfeb00d210019002200bff71efec20d280018002400000000000000000000000000000000",
|
22
|
+
"30b48140800038fd684868750980f7e9fdd40d0200080024007df7f1fdba0d060011001e0084f7f8fdaa0d12001a001a00000000000000000000000000000000",
|
23
|
+
"30b7814080003fdd694958750918f6a9fd510f0d00d1ff370024f7b0fda90e0100ecff30006cf7d1fd210efffff5ff2c00000000000000000000000000000000",
|
24
|
+
"30ba81408080482d744768750963f71ffe190f5e00d9fea100ccf62dfe650f510009ff980015f702fe580f4b002eff8400000000000000000000000000000000",
|
25
|
+
"30bd814080802f7d864758750974f70efe4c0f5e00c0fea000d1f726fe1c0f5d00c5fea30028f859fe0e0f5c00cafea800000000000000000000000000000000",
|
26
|
+
"30bf8140808057cc984758750961f73afe630f99009dfeae0050f738fe710f7500adfea40050f721fe720f6e00b2fea300000000000000000000000000000000",
|
27
|
+
"30c281408080f479bd483875092ef8b6feab0f0a0180feba00f1f798fe900f000181febd00c2f77dfe7c0fdb008efebd00000000000000000000000000000000",
|
28
|
+
"30c581408080ad87d846487509e1f80000a6107e0178fea2004ef88dff54106c0185fea70063f826ffe60f520182feae00000000000000000000000000000000",
|
29
|
+
"30c8810080800797d84868750995f8e1fe4b0f7a0161fe88000df96dffd00f700149fe990035f9cdff361088016afea000000000000000000000000000000000",
|
30
|
+
"30cb810080804586d848487509cef672fe8a0f6d0217ff42002df63cfe280f1d0219ff410059f61cfe070fed01f5fe4a00000000000000000000000000000000",
|
31
|
+
"30d08100808002c5d745687509d8f5aaff830f5e03e6fe3e01fbf55bffc30f3f03e4fe100158f600ff3e102903e5fee700000000000000000000000000000000",
|
32
|
+
"30d3810080807b94d14838750991f6cd00690f9903f0fff10147f6e200560f7e038fffc60101f6c900560f71033bffa901000000000000000000000000000000",
|
33
|
+
"30d681008080b743ca475875095af7f2009c0fca03a400320242f7ca00950fb503820028020af7b000820fa4034e001a02000000000000000000000000000000",
|
34
|
+
"30d9810080805be3c047587509e7f77a03c70f0e04bb00410258f79801940f0004b800410251f74401910fd803b3003602000000000000000000000000000000",
|
35
|
+
"30dc810080808a02b245587509c0fbd5086a10710475020a03b0fb8d085d106c042102e8027efb660876106a04bc01af02000000000000000000000000000000",
|
36
|
+
"30de8100808036d2a14568750970fbbf09ad103704af038003a9fb600989105c0459036103c2fb2a097210690412034603000000000000000000000000000000",
|
37
|
+
"30e281008000cbb18d4738750989f8b40b2812380341044c0429f99e0bef11510340043704f2f93c0b7911b0033704f003000000000000000000000000000000",
|
38
|
+
"30e581008000c9c18945587509a5f7ca0a2e13e400c6024c0547f7fd0a941264011703270578f74a0b6012e40168030205000000000000000000000000000000",
|
39
|
+
"30e781008000c6618948687509acf86909e813d0fe2801a1057cf8cf09ed130fff6301990516f8710aaa13ccff13028205000000000000000000000000000000",
|
40
|
+
"30ea81008000c77189475875093af93b0762136efbaeff19060cf90107b113a9fb99ff0906e1f85b07b113bafc9fffcd05000000000000000000000000000000",
|
41
|
+
"30ed81008000c791894568750950f9ce047c1432f900026007a5f9a6051f146ef9bb013707bff99206a813fef9ce00c606000000000000000000000000000000",
|
42
|
+
"30ef81008000c6d1894558750944f8ad0358143ef81c02f10780f8b403841484f84102d107ccf801049314bcf84202ad07000000000000000000000000000000",
|
43
|
+
"30f381008000c761884868750914f72105e4134cf6d001c00743f71a05f11391f6bf01e407a0f7c904fa13faf6b3011008000000000000000000000000000000",
|
44
|
+
"30f681008000c7718344587509eaf54a04c812a6f40002500627f66d041313f2f40d02940682f6a60468133ef51a02d806000000000000000000000000000000",
|
45
|
+
"30f881008000c4e1814668750b5cf5f803b51125f3b5000d0560f50f04e8118cf33c015d057df525042c1210f4b101cc05000000000000000000000000000000",
|
46
|
+
"30fb81008000c5e1814458750b19f65a02a410acf29effb804e2f5db02df10b7f2c0ffbf04a9f55c032011dcf22400d804000000000000000000000000000000",
|
47
|
+
"30fe8100800035e2814858750b81f65c00f80f8df231fe940471f6e6001f1088f2a6fe92044ef6b1015a1092f21fffa004000000000000000000000000000000",
|
48
|
+
"3001810080004b03814868750b69f6e6fdad0ffef20efdd40479f678feb40fd9f249fdc40484f6f4fec00fb0f29ffdad04000000000000000000000000000000",
|
49
|
+
"30048100800079e47d4858750b17f64cfb5f0f46f46afb430529f6c4fb710ff1f3d4fb300538f64bfc830fbbf315fc1d05000000000000000000000000000000",
|
50
|
+
"300781008000a7057e4668750bb1f5d3f9fb0e8ef5ccf96405cdf5fcf90c0f44f52dfa6505e1f52dfa210f29f550fa6305000000000000000000000000000000",
|
51
|
+
"30098100800041f67d4668750bcdf4b0f9ab0e21f602f955057ef5adf9d00ee1f559f95f05b1f5d3f9fb0e8ef5ccf96405000000000000000000000000000000",
|
52
|
+
"300d810080003d877c4838750b84f458f7dd0c89f6d0f8fc0436f4e2f7620d83f614f8430526f4c0f8a00e71f666f85c05000000000000000000000000000000",
|
53
|
+
"30108100800058e77a4668750bf7f2c3f57c0c9cf6abfa0a0470f30ef6790c89f65dfa420414f476f67e0c80f6d0f98a04000000000000000000000000000000",
|
54
|
+
"30128100800059f77a4658750b7ef249f5580cd9f69bfaa40389f269f56c0cd1f6a9fab503a3f286f5760cacf6c9faeb03000000000000000000000000000000",
|
55
|
+
"3016810080005b177b4868750ba9f298f4450b2cf774fa3102b8f2a5f47a0b24f765fa6e02b8f2b8f4b10b1df755faac02000000000000000000000000000000",
|
56
|
+
"30198100800057777a4558750b39f258f4480a80f73efaf40016f26af4940a5ef76bfa37014ef275f4d40a46f780fa8401000000000000000000000000000000",
|
57
|
+
].map(&:freeze).freeze
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -4,10 +4,20 @@ require_relative "plugin/splatoon2/macro/jump_to_right_key"
|
|
4
4
|
require_relative "plugin/splatoon2/macro/jump_to_up_key"
|
5
5
|
require_relative "plugin/splatoon2/macro/jump_to_left_key"
|
6
6
|
require_relative "plugin/splatoon2/macro/sokuwari_for_splash_bomb"
|
7
|
-
require_relative "plugin/splatoon2/macro/
|
7
|
+
require_relative "plugin/splatoon2/macro/forward_ikarole"
|
8
8
|
require_relative "plugin/splatoon2/macro/charge_tansan_bomb"
|
9
9
|
require_relative "plugin/splatoon2/mode/guruguru"
|
10
10
|
|
11
|
+
require_relative "plugin/splatoon3/version"
|
12
|
+
require_relative "plugin/splatoon3/macro/fast_return"
|
13
|
+
require_relative "plugin/splatoon3/macro/jump_to_right_key"
|
14
|
+
require_relative "plugin/splatoon3/macro/jump_to_up_key"
|
15
|
+
require_relative "plugin/splatoon3/macro/jump_to_left_key"
|
16
|
+
require_relative "plugin/splatoon3/macro/sokuwari_for_splash_bomb"
|
17
|
+
require_relative "plugin/splatoon3/macro/forward_ikarole"
|
18
|
+
require_relative "plugin/splatoon3/macro/charge_tansan_bomb"
|
19
|
+
require_relative "plugin/splatoon3/mode/guruguru"
|
20
|
+
|
11
21
|
module ProconBypassMan
|
12
22
|
module Plugin
|
13
23
|
end
|
@@ -20,11 +20,23 @@ class ProconBypassMan::Procon::AnalogStickManipulator
|
|
20
20
|
self.manipulated_abs_x = 3400
|
21
21
|
self.manipulated_abs_y = 1808
|
22
22
|
end
|
23
|
-
|
24
|
-
|
25
|
-
self.manipulated_abs_x = analog_stick.abs_x
|
26
|
-
self.manipulated_abs_y = analog_stick.abs_y
|
23
|
+
|
24
|
+
return
|
27
25
|
end
|
26
|
+
|
27
|
+
if method =~ /tilt_left_stick_(completely)_to_(\d+)deg/
|
28
|
+
power_level = $1
|
29
|
+
arc_degree = $2.to_i
|
30
|
+
syahen = 1800 # 最大まで傾けた状態
|
31
|
+
neutral_position = ProconBypassMan::ButtonsSettingConfiguration.instance.neutral_position
|
32
|
+
self.manipulated_abs_x = (syahen * Math.cos(arc_degree * Math::PI / 180)).to_i - neutral_position.x
|
33
|
+
self.manipulated_abs_y = (syahen * Math.sin(arc_degree * Math::PI / 180)).to_i - neutral_position.y
|
34
|
+
return
|
35
|
+
end
|
36
|
+
|
37
|
+
warn "error stick manipulator"
|
38
|
+
self.manipulated_abs_x = analog_stick.abs_x
|
39
|
+
self.manipulated_abs_y = analog_stick.abs_y
|
28
40
|
end
|
29
41
|
|
30
42
|
|
@@ -94,6 +94,17 @@ class ProconBypassMan::Procon::MacroBuilder
|
|
94
94
|
]
|
95
95
|
end
|
96
96
|
|
97
|
+
# NOTE: マクロ構文で生成したいけど、スティックとボタン同時押しの構文が思いつかないので、ハードコードする
|
98
|
+
if /forward_ikarole1/ =~ step
|
99
|
+
# NOTE: 0degはx: 1, y: 0, 90degはx: 0, y: 1, 180degはx: -1, y: 0.
|
100
|
+
# NOTE: スティックを前方に倒している状態で270度回転させる
|
101
|
+
for_forward_ikarole_steps = [
|
102
|
+
[:tilt_left_stick_completely_to_0deg, :b],
|
103
|
+
[:tilt_left_stick_completely_to_90deg],
|
104
|
+
]
|
105
|
+
return { steps: for_forward_ikarole_steps }
|
106
|
+
end
|
107
|
+
|
97
108
|
if %r!^(pressing_|toggle_|shake_left_stick_)! =~ step && (subjects = step.scan(%r!pressing_[^_]+|shake_left_stick|toggle_[^_]+!)) && (match = step.match(%r!_for_([\d_]+)(sec)?\z!))
|
98
109
|
if sec = match[1]
|
99
110
|
return {
|
@@ -48,7 +48,7 @@ module ProconBypassMan::Procon::PerformanceMeasurement
|
|
48
48
|
# 全部送ると負荷になるので適当にまびく
|
49
49
|
def self.is_not_measure_with_random_or_if_fast(span: )
|
50
50
|
return false if span.time_taken > 0.1
|
51
|
-
return true if rand(
|
51
|
+
return true if rand(100) != 0 # 99/100は捨てる
|
52
52
|
return false
|
53
53
|
end
|
54
54
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class ProconBypassMan::Procon::Rumbler
|
2
|
+
def self.monitor
|
3
|
+
@@must_rumble = false
|
4
|
+
return yield
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.rumble!
|
8
|
+
@@must_rumble = true
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.must_rumble?
|
12
|
+
@@must_rumble
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.binary
|
16
|
+
["100c00000000" + "00001010"].pack("H*")
|
17
|
+
end
|
18
|
+
end
|
@@ -38,7 +38,7 @@ class ProconBypassMan::Procon::UserOperation
|
|
38
38
|
# @param [Symbol, Array<Symbol>] macro_step
|
39
39
|
def press_button_only_or_tilt_sticks(macro_step)
|
40
40
|
macro_step = [macro_step] if not macro_step.is_a?(Array)
|
41
|
-
#
|
41
|
+
# スティック操作を含む時はボタン入力を通す
|
42
42
|
binary.set_no_action! if is_button?(macro_step)
|
43
43
|
|
44
44
|
macro_step.uniq.each do |ms|
|
@@ -22,6 +22,7 @@ class ProconBypassMan::Procon
|
|
22
22
|
require "procon_bypass_man/procon/flip_cache"
|
23
23
|
require "procon_bypass_man/procon/press_button_aware"
|
24
24
|
require "procon_bypass_man/procon/suppress_rumble"
|
25
|
+
require "procon_bypass_man/procon/rumbler"
|
25
26
|
|
26
27
|
attr_accessor :user_operation
|
27
28
|
|
@@ -32,7 +33,6 @@ class ProconBypassMan::Procon
|
|
32
33
|
}
|
33
34
|
BlueGreenProcess::SharedVariable.instance.data["buttons"] = {}
|
34
35
|
BlueGreenProcess::SharedVariable.instance.data["current_layer_key"] = :up
|
35
|
-
@@left_stick_tilting_power_scaler = ProconBypassMan::AnalogStickTiltingPowerScaler.new
|
36
36
|
end
|
37
37
|
reset!
|
38
38
|
|
@@ -66,13 +66,15 @@ class ProconBypassMan::Procon
|
|
66
66
|
def apply!
|
67
67
|
layer_changer = ProconBypassMan::Procon::LayerChanger.new(binary: user_operation.binary)
|
68
68
|
if layer_changer.change_layer?
|
69
|
-
|
69
|
+
if layer_changer.pressed_next_layer?
|
70
|
+
self.current_layer_key = layer_changer.next_layer_key
|
71
|
+
ProconBypassMan::Procon::Rumbler.rumble!
|
72
|
+
end
|
70
73
|
user_operation.set_no_action!
|
71
74
|
return
|
72
75
|
end
|
73
76
|
|
74
77
|
analog_stick = ProconBypassMan::Procon::AnalogStick.new(binary: user_operation.binary.raw)
|
75
|
-
dumped_tilting_power = @@left_stick_tilting_power_scaler.add_sample(analog_stick.relative_hypotenuse)
|
76
78
|
|
77
79
|
enable_all_macro = true
|
78
80
|
enable_macro_map = Hash.new {|h,k| h[k] = true }
|
@@ -90,16 +92,6 @@ class ProconBypassMan::Procon
|
|
90
92
|
current_layer.macros.each do |macro_name, options|
|
91
93
|
next unless enable_macro_map[macro_name]
|
92
94
|
|
93
|
-
if(if_tilted_left_stick_value = options[:if_tilted_left_stick])
|
94
|
-
threshold = (if_tilted_left_stick_value.is_a?(Hash) && if_tilted_left_stick_value[:threshold]) || ProconBypassMan::AnalogStickTiltingPowerScaler::DEFAULT_THRESHOLD
|
95
|
-
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])
|
96
|
-
@@status[:ongoing_macro] = MacroRegistry.load(macro_name)
|
97
|
-
break
|
98
|
-
end
|
99
|
-
|
100
|
-
next
|
101
|
-
end
|
102
|
-
|
103
95
|
if user_operation.pressing_all_buttons?(options[:if_pressed])
|
104
96
|
@@status[:ongoing_macro] = MacroRegistry.load(macro_name, force_neutral_buttons: options[:force_neutral])
|
105
97
|
break
|
@@ -96,13 +96,14 @@ module ProconBypassMan
|
|
96
96
|
sleep(10)
|
97
97
|
retry
|
98
98
|
end
|
99
|
+
raise if respond_to?(:raise_if_failed) && raise_if_failed
|
99
100
|
rescue Timeout::Error
|
100
101
|
ProconBypassMan.logger.error(e)
|
101
102
|
sleep(10)
|
102
|
-
|
103
|
+
raise if respond_to?(:raise_if_failed) && raise_if_failed
|
103
104
|
rescue => e
|
104
|
-
puts e
|
105
105
|
ProconBypassMan.logger.error(e)
|
106
|
+
raise if respond_to?(:raise_if_failed) && raise_if_failed
|
106
107
|
end
|
107
108
|
end
|
108
109
|
end
|
@@ -6,24 +6,32 @@ module ProconBypassMan
|
|
6
6
|
new.run
|
7
7
|
end
|
8
8
|
|
9
|
-
# @
|
9
|
+
# @return [Worker]
|
10
10
|
def run
|
11
11
|
return self if @thread
|
12
12
|
@thread = Thread.new do
|
13
13
|
while(item = ProconBypassMan::Background::JobQueue.pop)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
rescue => e
|
18
|
-
ProconBypassMan.logger.error(e)
|
19
|
-
sleep(0.2) # busy loopしないように
|
20
|
-
end
|
14
|
+
# プロセスを越えるので文字列になっている. evalしてクラスにする
|
15
|
+
work(job_class: eval(item[:job_class]), args: item[:args])
|
16
|
+
sleep(0.2) # busy loopしないように
|
21
17
|
end
|
22
18
|
end
|
23
19
|
|
24
20
|
return self
|
25
21
|
end
|
26
22
|
|
23
|
+
def work(job_class: , args: )
|
24
|
+
begin
|
25
|
+
job_class.perform(*args)
|
26
|
+
rescue => e
|
27
|
+
ProconBypassMan.logger.error(e)
|
28
|
+
if job_class.respond_to?(:re_enqueue_if_failed) && job_class.re_enqueue_if_failed
|
29
|
+
job_class.perform_async(args)
|
30
|
+
ProconBypassMan.logger.error("エラーが起きたので#{job_class}を積み直しました。")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
27
35
|
# 重要な非同期ジョブは存在しないのでqueueが捌けるのを待たずにkill
|
28
36
|
def shutdown
|
29
37
|
@thread&.kill
|
data/lib/procon_bypass_man.rb
CHANGED
@@ -35,7 +35,6 @@ 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"
|
39
38
|
require_relative "procon_bypass_man/support/never_exit_accidentally"
|
40
39
|
require_relative "procon_bypass_man/support/cycle_sleep"
|
41
40
|
require_relative "procon_bypass_man/support/can_over_process"
|
@@ -50,6 +49,7 @@ require_relative "procon_bypass_man/device_status"
|
|
50
49
|
require_relative "procon_bypass_man/runner"
|
51
50
|
require_relative "procon_bypass_man/processor"
|
52
51
|
require_relative "procon_bypass_man/configuration"
|
52
|
+
require_relative "procon_bypass_man/ephemeral_configuration"
|
53
53
|
require_relative "procon_bypass_man/buttons_setting_configuration"
|
54
54
|
require_relative "procon_bypass_man/procon"
|
55
55
|
require_relative "procon_bypass_man/device_model"
|
@@ -143,6 +143,11 @@ module ProconBypassMan
|
|
143
143
|
@@configuration ||= ProconBypassMan::Configuration.new
|
144
144
|
end
|
145
145
|
|
146
|
+
# @return [ProconBypassMan::EphemeralConfiguration]
|
147
|
+
def self.ephemeral_config
|
148
|
+
@@ephemeral_configuration ||= ProconBypassMan::EphemeralConfiguration.new
|
149
|
+
end
|
150
|
+
|
146
151
|
# @return [void]
|
147
152
|
def self.reset!
|
148
153
|
ProconBypassMan::Procon::MacroRegistry.reset!
|
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.2'
|
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
|
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.2'
|
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
|
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.2
|
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-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pbmenv
|
@@ -95,10 +95,12 @@ files:
|
|
95
95
|
- docs/getting_started.md
|
96
96
|
- docs/how_to_connect_procon.md
|
97
97
|
- docs/setting/left-analogstick-cap.md
|
98
|
-
- docs/setting/
|
98
|
+
- docs/setting/splatoon2_macro_forward_ikarole.md
|
99
99
|
- docs/setting/splatoon2_macro_sokuwari_bubble.md
|
100
100
|
- docs/setting/splatoon2_recommended_setting.md
|
101
101
|
- docs/setting/splatoon2_shake_tansan.md
|
102
|
+
- docs/setting/splatoon3_macro_forward_ikarole.md
|
103
|
+
- docs/setting/splatoon3_recommended_setting.md
|
102
104
|
- docs/setup_raspi.md
|
103
105
|
- docs/setup_raspi.mitamae.rb
|
104
106
|
- docs/setup_raspi_by_mitamae.md
|
@@ -107,7 +109,6 @@ files:
|
|
107
109
|
- lib/ext/module.rb
|
108
110
|
- lib/procon_bypass_man.rb
|
109
111
|
- lib/procon_bypass_man/background.rb
|
110
|
-
- lib/procon_bypass_man/background/job_performer.rb
|
111
112
|
- lib/procon_bypass_man/background/job_queue.rb
|
112
113
|
- lib/procon_bypass_man/background/jobs/base_job.rb
|
113
114
|
- lib/procon_bypass_man/background/jobs/concerns/has_external_api_setting.rb
|
@@ -161,15 +162,25 @@ files:
|
|
161
162
|
- lib/procon_bypass_man/device_connection/spoofing_output_report_watcher.rb
|
162
163
|
- lib/procon_bypass_man/device_model.rb
|
163
164
|
- lib/procon_bypass_man/device_status.rb
|
165
|
+
- lib/procon_bypass_man/ephemeral_configuration.rb
|
164
166
|
- lib/procon_bypass_man/plugin/splatoon2/macro/charge_tansan_bomb.rb
|
165
|
-
- lib/procon_bypass_man/plugin/splatoon2/macro/dasei_cancel.rb
|
166
167
|
- lib/procon_bypass_man/plugin/splatoon2/macro/fast_return.rb
|
168
|
+
- lib/procon_bypass_man/plugin/splatoon2/macro/forward_ikarole.rb
|
167
169
|
- lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_left_key.rb
|
168
170
|
- lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_right_key.rb
|
169
171
|
- lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_up_key.rb
|
170
172
|
- lib/procon_bypass_man/plugin/splatoon2/macro/sokuwari_for_splash_bomb.rb
|
171
173
|
- lib/procon_bypass_man/plugin/splatoon2/mode/guruguru.rb
|
172
174
|
- lib/procon_bypass_man/plugin/splatoon2/version.rb
|
175
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/charge_tansan_bomb.rb
|
176
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/fast_return.rb
|
177
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/forward_ikarole.rb
|
178
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_left_key.rb
|
179
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_right_key.rb
|
180
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_up_key.rb
|
181
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/sokuwari_for_splash_bomb.rb
|
182
|
+
- lib/procon_bypass_man/plugin/splatoon3/mode/guruguru.rb
|
183
|
+
- lib/procon_bypass_man/plugin/splatoon3/version.rb
|
173
184
|
- lib/procon_bypass_man/plugins.rb
|
174
185
|
- lib/procon_bypass_man/processor.rb
|
175
186
|
- lib/procon_bypass_man/procon.rb
|
@@ -194,6 +205,7 @@ files:
|
|
194
205
|
- lib/procon_bypass_man/procon/performance_measurement/span_queue.rb
|
195
206
|
- lib/procon_bypass_man/procon/performance_measurement/span_transfer_buffer.rb
|
196
207
|
- lib/procon_bypass_man/procon/press_button_aware.rb
|
208
|
+
- lib/procon_bypass_man/procon/rumbler.rb
|
197
209
|
- lib/procon_bypass_man/procon/suppress_rumble.rb
|
198
210
|
- lib/procon_bypass_man/procon/user_operation.rb
|
199
211
|
- lib/procon_bypass_man/procon/value_objects/analog_stick.rb
|
@@ -232,7 +244,6 @@ files:
|
|
232
244
|
- lib/procon_bypass_man/remote_pbm_action/value_objects/remote_pbm_action_object.rb
|
233
245
|
- lib/procon_bypass_man/runner.rb
|
234
246
|
- lib/procon_bypass_man/scheduler.rb
|
235
|
-
- lib/procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler.rb
|
236
247
|
- lib/procon_bypass_man/support/callbacks.rb
|
237
248
|
- lib/procon_bypass_man/support/can_over_process.rb
|
238
249
|
- lib/procon_bypass_man/support/compress_array.rb
|
@@ -1,77 +0,0 @@
|
|
1
|
-
# スプラトゥーン2: 惰性キャンセル マクロの設定方法
|
2
|
-
|
3
|
-
* 本マクロは実験段階で、オプション名などの仕様が変更される可能性が高いです
|
4
|
-
* procon_bypass_man: 0.1.21以上が必要です
|
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
|
-
```
|
@@ -1,59 +0,0 @@
|
|
1
|
-
class ProconBypassMan::AnalogStickTiltingPowerScaler
|
2
|
-
DEFAULT_THRESHOLD = 500
|
3
|
-
|
4
|
-
class PowerChunk
|
5
|
-
def initialize(list)
|
6
|
-
@list = list
|
7
|
-
end
|
8
|
-
|
9
|
-
def moving_power
|
10
|
-
max = @list.max
|
11
|
-
min = @list.min
|
12
|
-
moving_power = (max - min).abs
|
13
|
-
end
|
14
|
-
|
15
|
-
def tilting?(threshold: DEFAULT_THRESHOLD, current_position_x: , current_position_y: )
|
16
|
-
# スティックがニュートラルな時
|
17
|
-
if (-200..200).include?(current_position_x) && (-200..200).include?(current_position_y)
|
18
|
-
return false
|
19
|
-
end
|
20
|
-
|
21
|
-
moving_power >= threshold
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def initialize
|
26
|
-
@map = {}
|
27
|
-
end
|
28
|
-
|
29
|
-
# @return [NilClass, Chunk] ローテトしたらvalueを返す
|
30
|
-
def add_sample(value)
|
31
|
-
rotated = nil
|
32
|
-
current_key = key
|
33
|
-
if @map[current_key].nil?
|
34
|
-
rotated = rotate
|
35
|
-
@map = { current_key => [] } # renew or initialize
|
36
|
-
end
|
37
|
-
|
38
|
-
@map[current_key] << value
|
39
|
-
rotated
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
# 0.1sec刻みで進行する
|
45
|
-
def key
|
46
|
-
time = Time.now
|
47
|
-
m1 = time.strftime('%L')[0]
|
48
|
-
[time.to_i, m1].join.to_i
|
49
|
-
end
|
50
|
-
|
51
|
-
def rotate
|
52
|
-
list = @map.values.first
|
53
|
-
if list
|
54
|
-
return PowerChunk.new(list)
|
55
|
-
else
|
56
|
-
return nil
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|