Skip to content

Commit 9896a1e

Browse files
committed
Change PLA custom path from ticks to milliseconds.
1 parent 61aa0c0 commit 9896a1e

File tree

3 files changed

+72
-38
lines changed

3 files changed

+72
-38
lines changed

SerialPrograms/Source/PokemonLA/Options/PokemonLA_CustomPathTable.cpp

Lines changed: 59 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ namespace PokemonAutomation{
2828
namespace NintendoSwitch{
2929
namespace PokemonLA{
3030

31+
using namespace std::chrono_literals;
32+
3133

3234

3335

@@ -78,58 +80,73 @@ CustomPathCell::~CustomPathCell(){
7880
void CustomPathCell::operator=(const CustomPathCell& x){
7981
text.set_text(x.text.text());
8082
mount.set(x.mount);
81-
move_forward_ticks.set(x.move_forward_ticks);
83+
move_forward.set(x.move_forward.current_text());
8284
move_speed.set(x.move_speed);
8385
left_x.set(x.left_x);
8486
left_y.set(x.left_y);
85-
jump_wait_ticks.set(x.jump_wait_ticks);
86-
wait_ticks.set(x.wait_ticks);
87+
jump_wait.set(x.jump_wait.current_text());
88+
wait.set(x.wait.current_text());
8789
}
8890
CustomPathCell::CustomPathCell(EnumDropdownCell<PathAction>& action)
8991
: BatchOption(LockMode::LOCK_WHILE_RUNNING, true)
9092
, m_action(action)
9193
, text("", false)
9294
, mount(PathMount_Database(), LockMode::LOCK_WHILE_RUNNING, PathMount::NO_MOUNT)
93-
, move_forward_ticks("Ticks to Move:", LockMode::LOCK_WHILE_RUNNING, 0)
95+
, move_forward(
96+
"Duration (ms):", false,
97+
LockMode::LOCK_WHILE_RUNNING,
98+
0ms, Milliseconds::max(),
99+
"2000 ms"
100+
)
94101
, move_speed(PathSpeed_Database(), LockMode::LOCK_WHILE_RUNNING,PathSpeed::NORMAL_SPEED)
95102
, left_x("x: [left: -1.0, right: 1.0]", LockMode::LOCK_WHILE_RUNNING, 0, -1.0, 1.0)
96103
, left_y("y: [backward: -1.0, forward: 1.0]", LockMode::LOCK_WHILE_RUNNING, 0, -1.0, 1.0)
97-
, jump_wait_ticks("Ticks after jump:", LockMode::LOCK_WHILE_RUNNING, 0)
98-
, wait_ticks("Ticks:", LockMode::LOCK_WHILE_RUNNING, 0)
104+
, jump_wait(
105+
"Wait after jump (ms):", false,
106+
LockMode::LOCK_WHILE_RUNNING,
107+
0ms, Milliseconds::max(),
108+
"2000 ms"
109+
)
110+
, wait(
111+
"Wait Time (ms):", false,
112+
LockMode::LOCK_WHILE_RUNNING,
113+
0ms, Milliseconds::max(),
114+
"2000 ms"
115+
)
99116
{
100117
PA_ADD_STATIC(text);
101118
PA_ADD_OPTION(mount);
102-
PA_ADD_OPTION(move_forward_ticks);
119+
PA_ADD_OPTION(move_forward);
103120
PA_ADD_OPTION(move_speed);
104121
PA_ADD_OPTION(left_x);
105122
PA_ADD_OPTION(left_y);
106-
PA_ADD_OPTION(jump_wait_ticks);
107-
PA_ADD_OPTION(wait_ticks);
123+
PA_ADD_OPTION(jump_wait);
124+
PA_ADD_OPTION(wait);
108125

109126
CustomPathCell::value_changed(this);
110127
action.add_listener(*this);
111128
}
112129
void CustomPathCell::value_changed(void* object){
113130
text.set_visibility(ConfigOptionState::HIDDEN);
114131
mount.set_visibility(ConfigOptionState::HIDDEN);
115-
move_forward_ticks.set_visibility(ConfigOptionState::HIDDEN);
132+
move_forward.set_visibility(ConfigOptionState::HIDDEN);
116133
move_speed.set_visibility(ConfigOptionState::HIDDEN);
117134
left_x.set_visibility(ConfigOptionState::HIDDEN);
118135
left_y.set_visibility(ConfigOptionState::HIDDEN);
119-
jump_wait_ticks.set_visibility(ConfigOptionState::HIDDEN);
120-
wait_ticks.set_visibility(ConfigOptionState::HIDDEN);
136+
jump_wait.set_visibility(ConfigOptionState::HIDDEN);
137+
wait.set_visibility(ConfigOptionState::HIDDEN);
121138
switch (m_action){
122139
case PathAction::NO_ACTION:
123140
break;
124141
case PathAction::CHANGE_MOUNT:
125142
mount.set_visibility(ConfigOptionState::ENABLED);
126143
break;
127144
case PathAction::MOVE_FORWARD:
128-
move_forward_ticks.set_visibility(ConfigOptionState::ENABLED);
145+
move_forward.set_visibility(ConfigOptionState::ENABLED);
129146
move_speed.set_visibility(ConfigOptionState::ENABLED);
130147
break;
131148
case PathAction::MOVE_IN_DIRECTION:
132-
move_forward_ticks.set_visibility(ConfigOptionState::ENABLED);
149+
move_forward.set_visibility(ConfigOptionState::ENABLED);
133150
left_x.set_visibility(ConfigOptionState::ENABLED);
134151
left_y.set_visibility(ConfigOptionState::ENABLED);
135152
break;
@@ -138,10 +155,10 @@ void CustomPathCell::value_changed(void* object){
138155
text.set_visibility(ConfigOptionState::ENABLED);
139156
break;
140157
case PathAction::JUMP:
141-
jump_wait_ticks.set_visibility(ConfigOptionState::ENABLED);
158+
jump_wait.set_visibility(ConfigOptionState::ENABLED);
142159
break;
143160
case PathAction::WAIT:
144-
wait_ticks.set_visibility(ConfigOptionState::ENABLED);
161+
wait.set_visibility(ConfigOptionState::ENABLED);
145162
break;
146163
case PathAction::START_LISTEN:
147164
text.set_text("If shiny detected, use \"Destination Shiny Action\".");
@@ -194,8 +211,12 @@ void CustomPathTableRow2::load_json(const JsonValue& json){
194211
break;
195212
case PathAction::MOVE_FORWARD:
196213
value = obj->get_value("MoveForwardTicks");
214+
if (value != nullptr && value->is_integer()){
215+
parameters.move_forward.set(std::to_string(value->to_integer_default() * 8));
216+
}
217+
value = obj->get_value("MoveForwardMs");
197218
if (value != nullptr){
198-
parameters.move_forward_ticks.load_json(*value);
219+
parameters.move_forward.load_json(*value);
199220
}
200221
value = obj->get_value("Speed");
201222
if (value != nullptr){
@@ -204,8 +225,12 @@ void CustomPathTableRow2::load_json(const JsonValue& json){
204225
break;
205226
case PathAction::MOVE_IN_DIRECTION:
206227
value = obj->get_value("MoveForwardTicks");
228+
if (value != nullptr && value->is_integer()){
229+
parameters.move_forward.set(std::to_string(value->to_integer_default() * 8));
230+
}
231+
value = obj->get_value("MoveForwardMs");
207232
if (value != nullptr){
208-
parameters.move_forward_ticks.load_json(*value);
233+
parameters.move_forward.load_json(*value);
209234
}
210235
// value = obj->get_value("Speed");
211236
// if (value != nullptr){
@@ -222,14 +247,22 @@ void CustomPathTableRow2::load_json(const JsonValue& json){
222247
break;
223248
case PathAction::JUMP:
224249
value = obj->get_value("JumpWaitTicks");
250+
if (value != nullptr && value->is_integer()){
251+
parameters.jump_wait.set(std::to_string(value->to_integer_default() * 8));
252+
}
253+
value = obj->get_value("JumpWaitMs");
225254
if (value != nullptr){
226-
parameters.jump_wait_ticks.load_json(*value);
255+
parameters.jump_wait.load_json(*value);
227256
}
228257
break;
229258
case PathAction::WAIT:
230259
value = obj->get_value("WaitTicks");
260+
if (value != nullptr && value->is_integer()){
261+
parameters.wait.set(std::to_string(value->to_integer_default() * 8));
262+
}
263+
value = obj->get_value("WaitMs");
231264
if (value != nullptr){
232-
parameters.wait_ticks.load_json(*value);
265+
parameters.wait.load_json(*value);
233266
}
234267
break;
235268
default:
@@ -244,20 +277,20 @@ JsonValue CustomPathTableRow2::to_json() const{
244277
obj["Mount"] = parameters.mount.to_json();
245278
break;
246279
case PathAction::MOVE_FORWARD:
247-
obj["MoveForwardTicks"] = parameters.move_forward_ticks.to_json();
280+
obj["MoveForwardMs"] = parameters.move_forward.to_json();
248281
obj["Speed"] = parameters.move_speed.to_json();
249282
break;
250283
case PathAction::MOVE_IN_DIRECTION:
251-
obj["MoveForwardTicks"] = parameters.move_forward_ticks.to_json();
284+
obj["MoveForwardMs"] = parameters.move_forward.to_json();
252285
// obj["Speed"] = parameters.move_speed.to_json();
253286
obj["MoveDirectionX"] = parameters.left_x.to_json();
254287
obj["MoveDirectionY"] = parameters.left_y.to_json();
255288
break;
256289
case PathAction::JUMP:
257-
obj["JumpWaitTicks"] = parameters.jump_wait_ticks.to_json();
290+
obj["JumpWaitMs"] = parameters.jump_wait.to_json();
258291
break;
259292
case PathAction::WAIT:
260-
obj["WaitTicks"] = parameters.wait_ticks.to_json();
293+
obj["WaitMs"] = parameters.wait.to_json();
261294
break;
262295
default:
263296
break;
@@ -294,7 +327,7 @@ std::vector<std::unique_ptr<EditableTableRow>> CustomPathTable2::make_defaults()
294327

295328
row = std::make_unique<CustomPathTableRow2>(*this);
296329
row->action.set(PathAction::MOVE_IN_DIRECTION);
297-
row->parameters.move_forward_ticks.set(400);
330+
row->parameters.move_forward.set("3200 ms");
298331
row->parameters.left_x.set(-1.0);
299332
row->parameters.left_y.set(1.0);
300333
ret.emplace_back(std::move(row));
@@ -306,7 +339,7 @@ std::vector<std::unique_ptr<EditableTableRow>> CustomPathTable2::make_defaults()
306339
row = std::make_unique<CustomPathTableRow2>(*this);
307340
row->action.set(PathAction::MOVE_FORWARD);
308341
row->parameters.move_speed.set(PathSpeed::DASH);
309-
row->parameters.move_forward_ticks.set(400);
342+
row->parameters.move_forward.set("3200 ms");
310343
ret.emplace_back(std::move(row));
311344

312345
return ret;

SerialPrograms/Source/PokemonLA/Options/PokemonLA_CustomPathTable.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "Common/Cpp/Options/StaticTextOption.h"
1313
#include "Common/Cpp/Options/SimpleIntegerOption.h"
1414
#include "Common/Cpp/Options/FloatingPointOption.h"
15+
#include "Common/Cpp/Options/TimeDurationOption.h"
1516
#include "Common/Cpp/Options/EnumDropdownOption.h"
1617
#include "Common/Cpp/Options/EditableTableOption.h"
1718
#include "PokemonLA_TravelLocation.h"
@@ -72,12 +73,12 @@ class CustomPathCell : public BatchOption, private ConfigOption::Listener{
7273
public:
7374
StaticTextOption text;
7475
EnumDropdownCell<PathMount> mount;
75-
SimpleIntegerOption<uint16_t> move_forward_ticks;
76+
MillisecondsOption move_forward;
7677
EnumDropdownCell<PathSpeed> move_speed;
7778
FloatingPointOption left_x;
7879
FloatingPointOption left_y;
79-
SimpleIntegerOption<uint16_t> jump_wait_ticks;
80-
SimpleIntegerOption<uint16_t> wait_ticks;
80+
MillisecondsOption jump_wait;
81+
MillisecondsOption wait;
8182
};
8283

8384
class CustomPathTableRow2 : public EditableTableRow{

SerialPrograms/Source/PokemonLA/Programs/ShinyHunting/PokemonLA_ShinyHunt-CustomPath.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,22 +164,22 @@ void ShinyHuntCustomPath::do_non_listen_action(
164164
{
165165
switch(row.parameters.move_speed){
166166
case PathSpeed::NORMAL_SPEED:
167-
pbf_move_left_joystick(context, 128, 0, row.parameters.move_forward_ticks, 0);
167+
pbf_move_left_joystick(context, 128, 0, row.parameters.move_forward, 0ms);
168168
break;
169169
case PathSpeed::SLOW_SPEED:
170-
pbf_move_left_joystick(context, 128, 64, row.parameters.move_forward_ticks, 0);
170+
pbf_move_left_joystick(context, 128, 64, row.parameters.move_forward, 0ms);
171171
break;
172172
case PathSpeed::RUN:
173-
pbf_controller_state(context, BUTTON_LCLICK, DPAD_NONE, 128, 0, 128, 128, row.parameters.move_forward_ticks);
173+
pbf_controller_state(context, BUTTON_LCLICK, DPAD_NONE, 128, 0, 128, 128, row.parameters.move_forward);
174174
break;
175175
case PathSpeed::DASH:
176-
pbf_press_button(context, BUTTON_B, row.parameters.move_forward_ticks, 0);
176+
pbf_press_button(context, BUTTON_B, row.parameters.move_forward, 0ms);
177177
break;
178178
case PathSpeed::DASH_B_SPAM:
179-
pbf_mash_button(context, BUTTON_B, row.parameters.move_forward_ticks);
179+
pbf_mash_button(context, BUTTON_B, row.parameters.move_forward);
180180
break;
181181
case PathSpeed::DIVE:
182-
pbf_press_button(context, BUTTON_Y, row.parameters.move_forward_ticks, 0);
182+
pbf_press_button(context, BUTTON_Y, row.parameters.move_forward, 0ms);
183183
break;
184184
}
185185
break;
@@ -188,7 +188,7 @@ void ShinyHuntCustomPath::do_non_listen_action(
188188
{
189189
uint8_t x = (uint8_t)((row.parameters.left_x + 1.0) * 127.5 + 0.5);
190190
uint8_t y = (uint8_t)((-row.parameters.left_y + 1.0) * 127.5 + 0.5);
191-
pbf_move_left_joystick(context, x, y, row.parameters.move_forward_ticks, 0);
191+
pbf_move_left_joystick(context, x, y, row.parameters.move_forward, 0ms);
192192
break;
193193
}
194194
case PathAction::CENTER_CAMERA:
@@ -198,12 +198,12 @@ void ShinyHuntCustomPath::do_non_listen_action(
198198
}
199199
case PathAction::JUMP:
200200
{
201-
pbf_press_button(context, BUTTON_Y, 10, row.parameters.jump_wait_ticks);
201+
pbf_press_button(context, BUTTON_Y, 80ms, row.parameters.jump_wait);
202202
break;
203203
}
204204
case PathAction::WAIT:
205205
{
206-
pbf_wait(context, row.parameters.wait_ticks);
206+
pbf_wait(context, row.parameters.wait);
207207
break;
208208
}
209209
default:

0 commit comments

Comments
 (0)