@@ -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