AdControl

cpp

所有视频能否播放和播放都路由到CandyManager

bool CandyManager::of_video_can_play(const string& as_page) {
	cocos2d::log("maxadlog call func CandyManager::of_video_can_play(%s). game_level=%d", as_page.c_str(), g.game_level);
	if (g.game_level < 5 && "n_video_finish_ad_play" == as_page)
	{
		return false;
	}
	return PFJava::cpp_func_of_can_play_ad_video(as_page, g.game_level);
}
void CandyManager::of_video_play(const string& as_page) {
	PFJava::cpp_func_of_play_ad_video(as_page, g.game_level);
	g.cm->of_play_video_set_state();

	// 数据统计与追踪
	of_track_function(as_page);
	of_track_function("n_video_all");
	of_adjust_event_time("n_video_time");

	// 成就统计
	candy_achievement->of_add_key(_bbb_ccc_ffff_lll_pub_achieve_count_ad);
}
// PF.cpp
bool PFJava::cpp_func_of_can_play_ad_video(const string & as_page, long al_level)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
	JniMethodInfo t;
	if (JniHelper::getStaticMethodInfo(t, "org/cocos2dx/help/plugin/DreamPub", "of_vedio_can_play", "(Ljava/lang/String;J)J"))
	{
		jstring k1 = t.env->NewStringUTF(as_page.c_str());
		jlong j1(al_level);
		long ret = t.env->CallStaticLongMethod(t.classID, t.methodID, k1, j1);
		if (ret == 1) {
			return true;
		}
	}
	return false;
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
	return PFIOS::ios_func_is_video_can_play(as_page);
#endif
	// windows下
	auto s1 = PF::read_asset_string("config/app_config");
	s1 = PF::key_format(s1, "exe_have_video");
	if (s1 == "true") {
		return true;
	}
	return false;
}
void PFJava::cpp_func_of_play_ad_video(const string & as_page, long al_level)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
	JniMethodInfo t;
	if (JniHelper::getStaticMethodInfo(t, "org/cocos2dx/help/plugin/DreamPub", "of_vedio_play", "(Ljava/lang/String;J)V"))
	{
		jstring k1 = t.env->NewStringUTF(as_page.c_str());
		jlong j1(al_level);
		t.env->CallStaticVoidMethod(t.classID, t.methodID, k1, j1);
	}
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
	PFIOS::ios_func_play_video();
#endif
}
//DreamPub.java
public static long of_vedio_can_play(String as_page, long al_level){
    if (al_level < 5) return 0;
    if (as_page == null) as_page = "";
    if (MaxAdHelper.of_can_show_video(as_page)) {
        Log.d("maxadlog" , "of can show video(" + as_page + ") = true.");
        return 1;
    }
    Log.d("maxadlog" , "of can show video(" + as_page + ") = false." ) ;
    return 0;
}
/**
 * 视频播放状态   ,读取一次后将失效
 *    0 空
 *    1 成功
 *    2 失败
 *    9 正在播放
 */
public static long il_vedio_state = 0 ;
public static void of_vedio_play(String as_page, long al_level){

    // 如果没有广告,直接返回失败。
    if(of_vedio_can_play(as_page, al_level) == 0 ){
        AppActivity.buyItemOk("VIDEO_PLAY_CANCEL");
        return;
    }


    AppActivity.ib_video_have_award = false;


    Log.d("XXXXX" , "XXXXX SDKAgent.showVideo(  ls_page   ); "  + as_page ) ;
    il_vedio_state = 9 ;

    if( as_page == null) as_page = "";
    MaxAdHelper.of_show_video(as_page, al_level);

    Log.d("XXXXX" , "XXXXX SDKAgent.showVideo(  ls_page   ); "  + as_page ) ;

}

插屏

删去暂停插屏,只留下成功和失败

//PanelFinish.cpp
void PanelFinish::on_fail_continue(){
	g.of_inter_play("page_fail");
}
PanelFinish::PanelFinish(LayerGame* lay){
    if (g.ct->is_passed()) {
        g.of_inter_play("page_succ");
    }
}
//CandyManager.cpp
bool CandyManager::of_inter_can_play(const string& as_page)
{
	cocos2d::log("maxadlog call func CandyManager::of_inter_can_play(%s). bought=%f, game_level=%d", as_page.c_str(), g.cm->pub_money_buyed_total, g.game_level);;
	if (g.cm && g.cm->pub_money_buyed_total > 0.1f)
	{
		return false;
	}
	if (g.game_level < 10)
	{
		return false;
	}
	return PFJava::cpp_func_of_can_play_ad_inter(as_page, g.game_level);
}
void CandyManager::of_inter_play(const string& as_page)
{
	if (of_inter_can_play(as_page))
	{
		PFJava::cpp_func_of_play_inter_pub(as_page, g.game_level);
	}
}
//PF.cpp
bool PFJava::cpp_func_of_can_play_ad_inter(std::string as_page, long al_level)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
	JniMethodInfo t;
	if (JniHelper::getStaticMethodInfo(t, "org/cocos2dx/help/plugin/DreamPub", "java_func_of_inter_can_play", "(Ljava/lang/String;J)J"))
	{
		jstring k1 = t.env->NewStringUTF(as_page.c_str());
		jlong j1(al_level);
		long ret = t.env->CallStaticLongMethod(t.classID, t.methodID, k1, j1);
		if (ret == 1) {
			return true;
		}
	}
	return false;
#endif
	return false;
}
void PFJava::cpp_func_of_play_inter_pub(std::string as_page, long al_level)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
	JniMethodInfo t;
	string ls_fun = "of_ad_interval_pub";
	if (JniHelper::getStaticMethodInfo(t, "org/cocos2dx/help/plugin/DreamPub", ls_fun.c_str(), "(Ljava/lang/String;J)V"))
	{
		jstring k1 = t.env->NewStringUTF(as_page.c_str());
		jlong j1(al_level);
		t.env->CallStaticVoidMethod(t.classID, t.methodID, k1, j1);
	}
	return;
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
	cocos2d::log("win32 platform:as_page=%s, al_level=%d", as_page.c_str(), al_level);
#endif
}
//DreamPub.java
public static void of_ad_interval_pub(final String as_page, long al_level) {
    if (_activity == null ) return;
    if (ib_noad ) return;
    Log.d("maxadlog" , "XXXXX of ad interval pub(" + as_page +  "," + al_level + "). begin") ;
    MaxAdHelper.of_show_inter(as_page, al_level);
    Log.d("maxadlog" , "XXXXX of ad interval pub(" + as_page +  "," + al_level + "). end") ;
}
public static long java_func_of_inter_can_play(String as_page, long al_level) {
    if (MaxAdHelper.of_can_show_inter(as_page, al_level)) {
        return 1;
    }
    return 0;
}