1818#include " Common/Cpp/Json/JsonTools.h"
1919#include " NintendoSwitch/Options/TurboMacroTable.h"
2020
21- #include < iostream>
22- using std::cout;
23- using std::endl;
21+ // #include <iostream>
22+ // using std::cout;
23+ // using std::endl;
2424
2525namespace PokemonAutomation {
2626namespace NintendoSwitch {
2727
28+ using namespace std ::chrono_literals;
29+
2830
2931
3032const EnumDropdownDatabase<TurboMacroAction>& TurboMacroAction_Database (){
@@ -63,42 +65,57 @@ TurboMacroCell::~TurboMacroCell(){
6365void TurboMacroCell::operator =(const TurboMacroCell& x){
6466 x_axis.set (x.x_axis );
6567 y_axis.set (x.y_axis );
66- button_hold_ticks .set (x.button_hold_ticks );
67- button_release_ticks .set (x.button_release_ticks );
68- wait_ticks .set (x.wait_ticks );
68+ button_hold .set (x.button_hold . current_text () );
69+ button_release .set (x.button_release . current_text () );
70+ wait .set (x.wait . current_text () );
6971}
7072TurboMacroCell::TurboMacroCell (EnumDropdownCell<TurboMacroAction>& action)
7173 : BatchOption(LockMode::LOCK_WHILE_RUNNING, true )
7274 , m_action(action)
7375 , x_axis(" X:" , LockMode::LOCK_WHILE_RUNNING, 128 )
7476 , y_axis(" Y:" , LockMode::LOCK_WHILE_RUNNING, 128 )
75- , button_hold_ticks(" Ticks to Hold:" , LockMode::LOCK_WHILE_RUNNING, 250 )
76- , button_release_ticks(" Ticks to Release:" , LockMode::LOCK_WHILE_RUNNING, 250 )
77- , wait_ticks(" Ticks to Wait:" , LockMode::LOCK_WHILE_RUNNING, 125 )
77+ , button_hold(
78+ " Hold (ms):" , false ,
79+ LockMode::LOCK_WHILE_RUNNING,
80+ 0ms, Milliseconds::max(),
81+ " 2000 ms"
82+ )
83+ , button_release(
84+ " Release (ms):" , false ,
85+ LockMode::LOCK_WHILE_RUNNING,
86+ 0ms, Milliseconds::max(),
87+ " 2000 ms"
88+ )
89+ , wait(
90+ " Wait (ms):" , false ,
91+ LockMode::LOCK_WHILE_RUNNING,
92+ 0ms, Milliseconds::max(),
93+ " 1000 ms"
94+ )
7895{
7996 PA_ADD_OPTION (x_axis);
8097 PA_ADD_OPTION (y_axis);
81- PA_ADD_OPTION (button_hold_ticks );
82- PA_ADD_OPTION (button_release_ticks );
83- PA_ADD_OPTION (wait_ticks );
98+ PA_ADD_OPTION (button_hold );
99+ PA_ADD_OPTION (button_release );
100+ PA_ADD_OPTION (wait );
84101
85102 TurboMacroCell::value_changed (this );
86103 action.add_listener (*this );
87104}
88105void TurboMacroCell::value_changed (void * object){
89106 x_axis.set_visibility (ConfigOptionState::HIDDEN);
90107 y_axis.set_visibility (ConfigOptionState::HIDDEN);
91- button_hold_ticks .set_visibility (ConfigOptionState::HIDDEN);
92- button_release_ticks .set_visibility (ConfigOptionState::HIDDEN);
93- wait_ticks .set_visibility (ConfigOptionState::HIDDEN);
108+ button_hold .set_visibility (ConfigOptionState::HIDDEN);
109+ button_release .set_visibility (ConfigOptionState::HIDDEN);
110+ wait .set_visibility (ConfigOptionState::HIDDEN);
94111 switch (m_action){
95112 case TurboMacroAction::LEFT_JOYSTICK:
96113 case TurboMacroAction::RIGHT_JOYSTICK:
97114 x_axis.set_visibility (ConfigOptionState::ENABLED);
98115 y_axis.set_visibility (ConfigOptionState::ENABLED);
99- case TurboMacroAction::B:
100116 case TurboMacroAction::LEFT_JOY_CLICK:
101117 case TurboMacroAction::RIGHT_JOY_CLICK:
118+ case TurboMacroAction::B:
102119 case TurboMacroAction::A:
103120 case TurboMacroAction::Y:
104121 case TurboMacroAction::X:
@@ -112,11 +129,11 @@ void TurboMacroCell::value_changed(void* object){
112129 case TurboMacroAction::DPADRIGHT:
113130 case TurboMacroAction::DPADUP:
114131 case TurboMacroAction::DPADDOWN:
115- button_hold_ticks .set_visibility (ConfigOptionState::ENABLED);
116- button_release_ticks .set_visibility (ConfigOptionState::ENABLED);
132+ button_hold .set_visibility (ConfigOptionState::ENABLED);
133+ button_release .set_visibility (ConfigOptionState::ENABLED);
117134 break ;
118135 case TurboMacroAction::WAIT:
119- wait_ticks .set_visibility (ConfigOptionState::ENABLED);
136+ wait .set_visibility (ConfigOptionState::ENABLED);
120137 break ;
121138 default :
122139 break ;
@@ -165,14 +182,24 @@ void TurboMacroRow::load_json(const JsonValue& json){
165182 parameters.y_axis .load_json (*value);
166183 }
167184 value = obj->get_value (" Hold" );
185+ if (value != nullptr && value->is_integer ()){
186+ parameters.button_hold .set (std::to_string (value->to_integer_default () * 8 ));
187+ }
188+ value = obj->get_value (" HoldMs" );
168189 if (value != nullptr ){
169- parameters.button_hold_ticks .load_json (*value);
190+ parameters.button_hold .load_json (*value);
170191 }
171192 value = obj->get_value (" Release" );
193+ if (value != nullptr && value->is_integer ()){
194+ parameters.button_release .set (std::to_string (value->to_integer_default () * 8 ));
195+ }
196+ value = obj->get_value (" ReleaseMs" );
172197 if (value != nullptr ){
173- parameters.button_release_ticks .load_json (*value);
198+ parameters.button_release .load_json (*value);
174199 }
175200 break ;
201+ case TurboMacroAction::LEFT_JOY_CLICK:
202+ case TurboMacroAction::RIGHT_JOY_CLICK:
176203 case TurboMacroAction::B:
177204 case TurboMacroAction::A:
178205 case TurboMacroAction::Y:
@@ -188,18 +215,30 @@ void TurboMacroRow::load_json(const JsonValue& json){
188215 case TurboMacroAction::DPADUP:
189216 case TurboMacroAction::DPADDOWN:
190217 value = obj->get_value (" Hold" );
218+ if (value != nullptr && value->is_integer ()){
219+ parameters.button_hold .set (std::to_string (value->to_integer_default () * 8 ));
220+ }
221+ value = obj->get_value (" HoldMs" );
191222 if (value != nullptr ){
192- parameters.button_hold_ticks .load_json (*value);
223+ parameters.button_hold .load_json (*value);
193224 }
194225 value = obj->get_value (" Release" );
226+ if (value != nullptr && value->is_integer ()){
227+ parameters.button_release .set (std::to_string (value->to_integer_default () * 8 ));
228+ }
229+ value = obj->get_value (" ReleaseMs" );
195230 if (value != nullptr ){
196- parameters.button_release_ticks .load_json (*value);
231+ parameters.button_release .load_json (*value);
197232 }
198233 break ;
199234 case TurboMacroAction::WAIT:
200235 value = obj->get_value (" Wait" );
236+ if (value != nullptr && value->is_integer ()){
237+ parameters.wait .set (std::to_string (value->to_integer_default () * 8 ));
238+ }
239+ value = obj->get_value (" WaitMs" );
201240 if (value != nullptr ){
202- parameters.wait_ticks .load_json (*value);
241+ parameters.wait .load_json (*value);
203242 }
204243 break ;
205244 default :
@@ -210,6 +249,8 @@ JsonValue TurboMacroRow::to_json() const{
210249 JsonObject obj;
211250 obj[" Action" ] = action.to_json ();
212251 switch (action){
252+ case TurboMacroAction::LEFT_JOY_CLICK:
253+ case TurboMacroAction::RIGHT_JOY_CLICK:
213254 case TurboMacroAction::B:
214255 case TurboMacroAction::A:
215256 case TurboMacroAction::Y:
@@ -224,18 +265,18 @@ JsonValue TurboMacroRow::to_json() const{
224265 case TurboMacroAction::DPADRIGHT:
225266 case TurboMacroAction::DPADUP:
226267 case TurboMacroAction::DPADDOWN:
227- obj[" Hold " ] = parameters.button_hold_ticks .to_json ();
228- obj[" Release " ] = parameters.button_release_ticks .to_json ();
268+ obj[" HoldMs " ] = parameters.button_hold .to_json ();
269+ obj[" ReleaseMs " ] = parameters.button_release .to_json ();
229270 break ;
230271 case TurboMacroAction::LEFT_JOYSTICK:
231272 case TurboMacroAction::RIGHT_JOYSTICK:
232273 obj[" MoveDirectionX" ] = parameters.x_axis .to_json ();
233274 obj[" MoveDirectionY" ] = parameters.y_axis .to_json ();
234- obj[" Hold " ] = parameters.button_hold_ticks .to_json ();
235- obj[" Release " ] = parameters.button_release_ticks .to_json ();
275+ obj[" HoldMs " ] = parameters.button_hold .to_json ();
276+ obj[" ReleaseMs " ] = parameters.button_release .to_json ();
236277 break ;
237278 case TurboMacroAction::WAIT:
238- obj[" Wait " ] = parameters.wait_ticks .to_json ();
279+ obj[" WaitMs " ] = parameters.wait .to_json ();
239280 break ;
240281 default :
241282 break ;
0 commit comments