Skip to content

Commit ea3ec1c

Browse files
committed
read both lines in auction offers
1 parent 5118981 commit ea3ec1c

File tree

1 file changed

+42
-38
lines changed

1 file changed

+42
-38
lines changed

SerialPrograms/Source/PokemonSV/Programs/Farming/PokemonSV_AuctionFarmer.cpp

Lines changed: 42 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ std::vector<std::pair<AuctionOffer, ImageFloatBox>> AuctionFarmer::check_offers(
211211
VideoSnapshot screen = env.console.video().snapshot();
212212
std::vector<ImagePixelBox> dialog_boxes = detect_dialog_boxes(screen);
213213
std::deque<OverlayBoxScope> bubbles_boxes;
214-
std::deque<OverlayBoxScope> offer_boxes;
214+
std::deque<OverlayBoxScope> offer_overlay_boxes;
215215
std::vector<std::pair<AuctionOffer, ImageFloatBox>> offers;
216216

217217
if (dialog_boxes.empty()){
@@ -220,57 +220,61 @@ std::vector<std::pair<AuctionOffer, ImageFloatBox>> AuctionFarmer::check_offers(
220220
}
221221

222222
// read dialog bubble
223+
ImageFloatBox top_offer_box(0.05, 0.02, 0.90, 0.49);
224+
ImageFloatBox bottom_offer_box(0.05, 0.49, 0.90, 0.49);
225+
std::vector<ImageFloatBox> offer_boxes = {top_offer_box, bottom_offer_box};
223226
for (ImagePixelBox dialog_box : dialog_boxes){
224-
// std::cout << "dialog_box: ["
225-
// << dialog_box.min_x << "," << dialog_box.min_y << "] - ["
226-
// << dialog_box.max_x << "," << dialog_box.max_y << "]" << std::endl;
227+
for (ImageFloatBox offer_box : offer_boxes) {
228+
// std::cout << "dialog_box: ["
229+
// << dialog_box.min_x << "," << dialog_box.min_y << "] - ["
230+
// << dialog_box.max_x << "," << dialog_box.max_y << "]" << std::endl;
227231

228-
ImageFloatBox dialog_float_box = pixelbox_to_floatbox(screen, dialog_box);
229-
bubbles_boxes.emplace_back(env.console, dialog_float_box, COLOR_GREEN);
232+
ImageFloatBox dialog_float_box = pixelbox_to_floatbox(screen, dialog_box);
233+
bubbles_boxes.emplace_back(env.console, dialog_float_box, COLOR_GREEN);
230234

231235

232-
// OverlayBoxScope dialog_overlay(env.console, dialog_box, COLOR_DARK_BLUE);
233-
ImageFloatBox offer_box(0.05, 0.02, 0.90, 0.49);
234-
ImageFloatBox translated_offer_box = translate_to_parent(
235-
screen,
236-
dialog_float_box,
237-
floatbox_to_pixelbox(dialog_box.width(), dialog_box.height(), offer_box)
238-
);
239-
// std::cout << "translated_offer_box: ["
240-
// << translated_offer_box.x << "," << translated_offer_box.y << "] - ["
241-
// << translated_offer_box.width << "," << translated_offer_box.height << "]" << std::endl;
236+
// OverlayBoxScope dialog_overlay(env.console, dialog_box, COLOR_DARK_BLUE);
237+
ImageFloatBox translated_offer_box = translate_to_parent(
238+
screen,
239+
dialog_float_box,
240+
floatbox_to_pixelbox(dialog_box.width(), dialog_box.height(), offer_box)
241+
);
242+
// std::cout << "translated_offer_box: ["
243+
// << translated_offer_box.x << "," << translated_offer_box.y << "] - ["
244+
// << translated_offer_box.width << "," << translated_offer_box.height << "]" << std::endl;
242245

243-
offer_boxes.emplace_back(env.console, translated_offer_box, COLOR_BLUE);
246+
offer_overlay_boxes.emplace_back(env.console, translated_offer_box, COLOR_BLUE);
244247

245-
// OverlayBoxScope offer_overlay(env.console, translated_offer_box, COLOR_BLUE);
246-
247-
ImageViewRGB32 dialog = extract_box_reference(screen, dialog_box);
248-
ImageViewRGB32 offer_image = extract_box_reference(dialog, offer_box);
248+
// OverlayBoxScope offer_overlay(env.console, translated_offer_box, COLOR_BLUE);
249249

250-
// std::cout << offer_image.width() << " x " << offer_image.height() << std::endl;
250+
ImageViewRGB32 dialog = extract_box_reference(screen, dialog_box);
251+
ImageViewRGB32 offer_image = extract_box_reference(dialog, offer_box);
251252

253+
// std::cout << offer_image.width() << " x " << offer_image.height() << std::endl;
252254

253-
const double LOG10P_THRESHOLD = -1.5;
254-
std::string best_item;
255-
OCR::StringMatchResult result = AuctionItemNameReader::instance().read_substring(
256-
env.console, LANGUAGE,
257-
offer_image,
258-
OCR::BLACK_TEXT_FILTERS()
259-
);
260255

261-
result.clear_beyond_log10p(LOG10P_THRESHOLD);
262-
if (best_item.empty() && !result.results.empty()){
263-
auto iter = result.results.begin();
264-
if (iter->first < LOG10P_THRESHOLD){
265-
best_item = iter->second.token;
256+
const double LOG10P_THRESHOLD = -1.5;
257+
std::string best_item;
258+
OCR::StringMatchResult result = AuctionItemNameReader::instance().read_substring(
259+
env.console, LANGUAGE,
260+
offer_image,
261+
OCR::BLACK_TEXT_FILTERS()
262+
);
263+
264+
result.clear_beyond_log10p(LOG10P_THRESHOLD);
265+
if (best_item.empty() && !result.results.empty()) {
266+
auto iter = result.results.begin();
267+
if (iter->first < LOG10P_THRESHOLD) {
268+
best_item = iter->second.token;
266269

267-
AuctionOffer offer{ best_item };
268-
std::pair<AuctionOffer, ImageFloatBox> pair(offer, dialog_float_box);
269-
offers.emplace_back(pair);
270+
AuctionOffer offer{ best_item };
271+
std::pair<AuctionOffer, ImageFloatBox> pair(offer, dialog_float_box);
272+
offers.emplace_back(pair);
273+
}
270274
}
271275
}
272276
}
273-
// context.wait_for(std::chrono::seconds(100));
277+
// context.wait_for(std::chrono::seconds(100));
274278
return offers;
275279
}
276280

0 commit comments

Comments
 (0)