Skip to content

Commit 4582a45

Browse files
committed
Make PLA touch trade decrement the trade counters as it runs.
1 parent c0a9895 commit 4582a45

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

SerialPrograms/Source/PokemonLA/Programs/Trading/PokemonLA_SelfTouchTrade.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ SelfTouchTrade::SelfTouchTrade()
8282

8383
bool SelfTouchTrade::trade_one(
8484
MultiSwitchProgramEnvironment& env, CancellableScope& scope,
85-
std::map<std::string, uint8_t>& trades_left
85+
std::map<std::string, SimpleIntegerCell<uint8_t>*>& trades_left
8686
){
8787
TradeStats& stats = env.current_stats<TradeStats>();
8888

@@ -99,7 +99,8 @@ bool SelfTouchTrade::trade_one(
9999
dump_image(host, env.program_info(), "ReadName", snapshot);
100100
return false;
101101
}
102-
if (iter->second <= 0){
102+
uint8_t current_trades_left = iter->second->current_value();
103+
if (current_trades_left <= 0){
103104
host.log(STRING_POKEMON + " not needed anymore. Moving on...");
104105
return false;
105106
}
@@ -109,14 +110,14 @@ bool SelfTouchTrade::trade_one(
109110
}
110111

111112
// Perform trade.
112-
host.log("\"" + slug + "\" - Trades Remaining: " + std::to_string(iter->second));
113+
host.log("\"" + slug + "\" - Trades Remaining: " + std::to_string(current_trades_left));
113114
#if 1
114115
MultiConsoleErrorState error_state;
115116
env.run_in_parallel(scope, [&](ConsoleHandle& console, ProControllerContext& context){
116117
trade_current_pokemon(console, context, error_state, stats);
117118
});
118119
stats.m_trades++;
119-
iter->second--;
120+
iter->second->set(current_trades_left - 1);
120121
#else
121122
env.wait_for(std::chrono::milliseconds(5000));
122123
return false;
@@ -154,9 +155,9 @@ bool SelfTouchTrade::move_to_next(Logger& logger, ProControllerContext& host, ui
154155

155156
void SelfTouchTrade::program(MultiSwitchProgramEnvironment& env, CancellableScope& scope){
156157
// Build list of what's needed.
157-
std::map<std::string, uint8_t> trades_left;
158-
for (const StaticTableRow* item : TRADE_COUNTS.table()){
159-
trades_left[item->slug()] = static_cast<const TradeCountTableRow&>(*item).count;
158+
std::map<std::string, SimpleIntegerCell<uint8_t>*> trades_left;
159+
for (StaticTableRow* item : TRADE_COUNTS.table()){
160+
trades_left[item->slug()] = &static_cast<TradeCountTableRow&>(*item).count;
160161
}
161162

162163
// Connect both controllers.

SerialPrograms/Source/PokemonLA/Programs/Trading/PokemonLA_SelfTouchTrade.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class SelfTouchTrade : public MultiSwitchProgramInstance{
3535
private:
3636
bool trade_one(
3737
MultiSwitchProgramEnvironment& env, CancellableScope& scope,
38-
std::map<std::string, uint8_t>& trades_left
38+
std::map<std::string, SimpleIntegerCell<uint8_t>*>& trades_left
3939
);
4040
bool move_to_next(Logger& logger, ProControllerContext& host, uint8_t& row, uint8_t& col);
4141

SerialPrograms/Source/PokemonSV/Programs/Trading/PokemonSV_TradeRoutines.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ void trade_current_pokemon(
173173
break;
174174
default:
175175
stats.m_errors++;
176+
176177
tracker.report_unrecoverable_error(stream, "Failed to return to box after 2 minutes after a trade.");
177178
}
178179
}

0 commit comments

Comments
 (0)