void GameEngine::onTap()

in admob/tools/ios/testapp/testapp/game_engine.cpp [280:459]


void GameEngine::onTap(float x, float y) {
  int button_number = -1;
  GLfloat viewport_x = 1 - (((width_ - x) * 2) / width_);
  GLfloat viewport_y = 1 - (((y)*2) / height_);

  for (int i = 0; i < kNumberOfButtons; i++) {
    if ((viewport_x >= vertices_[i * 8]) &&
        (viewport_x <= vertices_[i * 8 + 2]) &&
        (viewport_y <= vertices_[i * 8 + 1]) &&
        (viewport_y >= vertices_[i * 8 + 5])) {
      button_number = i;
      break;
    }
  }

  // The BannerView or NativeExpressAdView's bounding box.
  firebase::admob::BoundingBox box;

  switch (button_number) {
    case 0:
      if (kTestBannerView) {
        // Load the banner ad.
        if (banner_view_->InitializeLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            banner_view_->InitializeLastResult().Error() ==
                firebase::admob::kAdMobErrorNone) {
          banner_view_->LoadAd(createRequest());
        }
      }
      if (kTestNativeExpressAdView) {
        // Load the native express ad.
        if (native_express_view_->InitializeLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            native_express_view_->InitializeLastResult().Error() ==
                firebase::admob::kAdMobErrorNone) {
          native_express_view_->LoadAd(createRequest());
        }
      }
      break;
    case 1:
      if (kTestBannerView) {
        // Show/Hide the BannerView.
        if (banner_view_->LoadAdLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            banner_view_->LoadAdLastResult().Error() ==
                firebase::admob::kAdMobErrorNone &&
            banner_view_->GetPresentationState() ==
                firebase::admob::BannerView::kPresentationStateHidden) {
          banner_view_->Show();
        } else if (banner_view_->LoadAdLastResult().Status() ==
                       firebase::kFutureStatusComplete &&
                   banner_view_->GetPresentationState() ==
                       firebase::admob::BannerView::
                           kPresentationStateVisibleWithAd) {
          banner_view_->Hide();
        }
      }
      if (kTestNativeExpressAdView) {
        // Show/Hide the NativeExpressAdView.
        if (native_express_view_->LoadAdLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            native_express_view_->LoadAdLastResult().Error() ==
                firebase::admob::kAdMobErrorNone &&
            native_express_view_->GetPresentationState() ==
                firebase::admob::NativeExpressAdView::
                    kPresentationStateHidden) {
          native_express_view_->Show();
        } else if (native_express_view_->LoadAdLastResult().Status() ==
                       firebase::kFutureStatusComplete &&
                   native_express_view_->LoadAdLastResult().Error() ==
                       firebase::admob::kAdMobErrorNone &&
                   native_express_view_->GetPresentationState() ==
                       firebase::admob::NativeExpressAdView::
                           kPresentationStateVisibleWithAd) {
          native_express_view_->Hide();
        }
      }
      break;
    case 2:
      if (kTestBannerView) {
        // Move the BannerView to a predefined position.
        if (banner_view_->LoadAdLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            banner_view_->LoadAdLastResult().Error() ==
                firebase::admob::kAdMobErrorNone) {
          banner_view_->MoveTo(firebase::admob::BannerView::kPositionBottom);
        }
      }
      if (kTestNativeExpressAdView) {
        // Move the NativeExpressAdView to a predefined position.
        if (native_express_view_->LoadAdLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            native_express_view_->LoadAdLastResult().Error() ==
                firebase::admob::kAdMobErrorNone) {
          native_express_view_->MoveTo(
              firebase::admob::NativeExpressAdView::kPositionBottom);
        }
      }
      break;
    case 3:
      if (kTestBannerView) {
        // Move the BannerView to a specific x and y coordinate.
        if (banner_view_->LoadAdLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            banner_view_->LoadAdLastResult().Error() ==
                firebase::admob::kAdMobErrorNone) {
          int x = 100;
          int y = 200;
          banner_view_->MoveTo(x, y);
        }
      }
      if (kTestNativeExpressAdView) {
        // Move the NativeExpressAdView to a specific x and y coordinate.
        if (native_express_view_->LoadAdLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            native_express_view_->LoadAdLastResult().Error() ==
                firebase::admob::kAdMobErrorNone) {
          int x = 100;
          int y = 200;
          native_express_view_->MoveTo(x, y);
        }
      }
      if (kTestRewardedVideo) {
        // Poll the reward.
        if (poll_listener_ != nullptr) {
          while (poll_listener_->PollReward(&reward_)) {
            LogMessage("Reward user with %f %s.", reward_.amount,
                       reward_.reward_type.c_str());
          }
        }
      }
      break;
    case 4:
      if (kTestInterstitialAd) {
        // Load the interstitial ad.
        if (interstitial_ad_->InitializeLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            interstitial_ad_->InitializeLastResult().Error() ==
                firebase::admob::kAdMobErrorNone) {
          interstitial_ad_->LoadAd(createRequest());
        }
      }
      if (kTestRewardedVideo) {
        // Load the rewarded video ad.
        if (rewarded_video::InitializeLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            rewarded_video::InitializeLastResult().Error() ==
                firebase::admob::kAdMobErrorNone) {
          rewarded_video::LoadAd(kRewardedVideoAdUnit, createRequest());
        }
      }
      break;
    case 5:
      if (kTestInterstitialAd) {
        // Show the interstitial ad.
        if (interstitial_ad_->LoadAdLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            interstitial_ad_->LoadAdLastResult().Error() ==
                firebase::admob::kAdMobErrorNone &&
            interstitial_ad_->ShowLastResult().Status() !=
                firebase::kFutureStatusComplete) {
          interstitial_ad_->Show();
        }
      }
      if (kTestRewardedVideo) {
        // Show the rewarded video ad.
        if (rewarded_video::LoadAdLastResult().Status() ==
                firebase::kFutureStatusComplete &&
            rewarded_video::LoadAdLastResult().Error() ==
                firebase::admob::kAdMobErrorNone &&
            rewarded_video::ShowLastResult().Status() !=
                firebase::kFutureStatusComplete) {
          rewarded_video::Show(parent_view_);
        }
      }
      break;
    default:
      break;
  }
}