diff --git a/Assets/Configs.meta b/Assets/Configs.meta new file mode 100644 index 00000000..03f725a9 --- /dev/null +++ b/Assets/Configs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ce648fc8bf664d56bcf72c9d5be76e6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/CN.meta b/Assets/Configs/CN.meta new file mode 100644 index 00000000..55432a04 --- /dev/null +++ b/Assets/Configs/CN.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 24df658e83b09495585fa9cf08156d07 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/CN/tkg_config.plist b/Assets/Configs/CN/tkg_config.plist new file mode 100644 index 00000000..6376a9fb --- /dev/null +++ b/Assets/Configs/CN/tkg_config.plist @@ -0,0 +1,150 @@ + + + + + lock_screen + on + tenjin_api_key + PYOTVKJ4XZJHSMZW2V6GBQRCNXAFKWU2 + rn_app_key + + file + + tka_theme + + ad_sk_interstital_id + + fb_client_token + + package_name + com.toukagames.drawarmy + updatetime + 2022/06/23 15:00:52 + usb + on + adjust_id + + fb_download_url + + td_channel_id + default + firebase_name + GoogleService-Info.plist + game_screen_orientation + 0 + main_activity + com.u8.sdk.U8UnityContext + admob_id + ca-app-pub-3916046151571724~7731238444 + channel + AppStore_CN + tka_url_privacy + https://www.mooncakegame.com/privacy.html + um_app_key + 60890fe2f00c2e19b93e6155 + tw_txt + {"m-native_sdk":"","lock_screen":"on","fs":"3","m-interaction_sdk":"","wifi_interval":"30","td_app_id":"","m-banner":"b779308d2f67c37d","usb":"on","unlock":"on","citys":"北京,上海,广州,深圳,东莞,香港,澳门,武汉,阿里云,腾讯云,华为云","td_channel_id":"default","m-splash_sdk":"","unlock_next":"1","wifi":"on","pp":"30","m-splash":"","m-interaction":"babddc80a2651057","m-app_key":"QVt-ZBOR44Frm2Ub8gEfbPo-K8SeKHvyzoq-TJ3op08cFx29THV9DviWinxrQBxNePGKU14gHOkClTrNOi_1a9","unlock_style":"2","unlock_interval":"2","m-reward":"ddb2dd36ec0f5a85","m-app_id":"","m-native":"","bg_pop":"on"} + unlock_next + 1 + ad_banner_id + b6083a3a129482 + platform + ios + copyright_id + + copyright_holder + + publisher_url_scheme + + app_name + TKGSDKDemo + bugly_appid + + offer_id + + ga_secretkey + 6a2dd6d6189994e7af755efe6944e4a08e0929a7 + unlock_interval + 2 + fb_appid + + ad_interstital_half_id + + ad_native_banner_id + + tk_app_id + a607fe29de4363 + ad_native_splash_id + + bg_pop + on + bugly_appkey + + firebase_path + https://my-report.oss-cn-beijing.aliyuncs.com/icon/2022/06/23/5c91a28aac0543d1afcb1f1e92946cce.plist + fs + 3 + ad_appkey + c13e4357e57d78e76e472899eb182e98 + wifi_interval + 30 + tka_url_agreement + https://www.mooncakegame.com/agreements.html + ad_templete_natvie_id + + td_app_id + + tka_age + 12 + ad_full_reward_id + + tka_type + + splash_img + + channel_appkey + + unlock + on + ad_interstital_id + b607ae9b4529ed + citys + 北京,上海,广州,深圳,东莞,香港,澳门,武汉,阿里云,腾讯云,华为云 + publisher_appid + + ad_splash_id + + baidumobad_app_id + + channel_appsecret + + ad_appid + a607acb6913054 + ad_sk_native1_id + + publish_account + Mooncake Games Limited + channel_appid + + ad_render_native_id + b608251153978a + wifi + on + pp + 30 + ad_reward_id + b608250f4ec04a + ad_sk_native_id + + tka_url_moregame + https://apps.apple.com/developer/id1521253916 + unlock_style + 2 + ga_key + 000f968b863b47fc95ef55473ce955b1 + ad_sk_splash_id + + ad_platform + topon + + diff --git a/Assets/Configs/CN/tkg_config.plist.meta b/Assets/Configs/CN/tkg_config.plist.meta new file mode 100644 index 00000000..84f1ece3 --- /dev/null +++ b/Assets/Configs/CN/tkg_config.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eb64a089a31554aa5bffdb0e52149a14 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/CN/tkg_config.properties b/Assets/Configs/CN/tkg_config.properties new file mode 100644 index 00000000..3f9898e1 --- /dev/null +++ b/Assets/Configs/CN/tkg_config.properties @@ -0,0 +1,156 @@ + +#=================基础配置============================= +#游戏名称 +app_name=太空潜行者 +#包名 +package_name=com.autumnant.alienkill +#闪屏图(&健康提示),值:图片名字,没有填"",详见需求文档(- 新增splash图 部分):https://pic6ktmsyi.feishu.cn/docs/doccnRdYblZyPN2HpIK6nsJmqSb# +splash_img= +#游戏横竖屏,根据游戏横竖屏取值 值: 0 竖屏, 1 横屏 +game_screen_orientation=0 +#发行主体 +publish_account=北京慕恩凯克网络科技有限公司 + +#渠道 +channel=DY012 +#子渠道 +sub_channel="" +#客户端协议上报u8 appid +tk_app_id=8110 + +#外部测试使用facebook id +fb_appid= +fb_client_token= +#adjust_id{} +adjust_id= +#巨量app id +rangers_applog_id={rangers_applog_id} +#发行人app id +publisher_appid= +publisher_url_scheme= +#游戏软著著作人 +copyright_holder=北京慕恩凯克网络科技有限公司 +#游戏软著登记号 +copyright_id=2022SR0713177 + +#调试模式(写死不动,仅供调试使用) +#debug_mode=false + + +#=================用户协议(弹窗)配置============================= +#游戏类型 +TkA_Type=休闲益智 +#游戏题材 +TkA_Theme=冒险闯关 +#适龄,取值:8|12|16|18 +TkA_Age=12 +#隐私政策url +TkA_Url_Privacy=https://www.mooncakegame.com/privacy.html +#用户协议url +TkA_Url_Agreement=https://www.mooncakegame.com/agreements.html + +#=================广告通用配置============================= +#广告平台,max|topon|xiaomi +ad_platform=topon + +#广告appid (包括max applovin.sdk.key) +ad_appid=a1dt3hgr196p3q +#广告appkey +ad_appkey=c13e4357e57d78e76e472899eb182e98 +#admob id +admob_id= + + +#开屏广告位id +ad_splash_id=b6297221b599ae +ad_native_splash_id= +#插屏广告位id +ad_interstital_id=b1dt3hgr9pocks +#半屏插屏广告位id(小米广告区分全/半屏) +ad_interstital_half_id= +#激励视频广告位id +ad_reward_id=b1dt3hgrarr5pi +#banner广告位id +ad_banner_id= +ad_native_banner_id= +# 原生模板广告位id [增加] +ad_templete_natvie_id= + +# 原生自渲染广告位id [增加] +ad_render_native_id= + + +#=================TW配置============================= +#[TODO][meta-data]百度 APPID +BaiduMobAd_APP_ID= + +#副包下载链接 +FB_DOWNLOAD_URL= +FB_POP_CONFIG_DAT_URL=https://my-report.oss-cn-beijing.aliyuncs.com/config/pops-com.autumnant.alienkill.dat +#更多游戏链接 +tka_url_moregame= + +#TW广告位 +#SDK插屏 +ad_sk_interstital_id= +#SDK开屏 +ad_sk_splash_id= +#SDK信息流 +ad_sk_native_id= +#SDK信息流1 +ad_sk_native1_id= + +#[TODO][meta-data]游戏主 Activity: +#取值 Unity游戏: com.u8.sdk.U8UnityContext +#flash游戏: com.u8.sdk.ane.U8ANEActivity +#Cocos游戏: com.u8.sdk.U8CocosActivity +MAIN_ACTIVITY=com.u8.sdk.U8UnityContext + +#极光 AppKey,默认空 +JPUSH_APPKEY="" + + +#客服邮箱 +tkg_custom=dev@mooncakegame.com +channel_appid= +channel_appkey= +channel_appsecret= + + +#=================Bugly============================= +Bugly_AppID=17f7b7efc7 +Bugly_AppKey=1d989fdb-526e-49a7-b23b-94d12185e934 + + +#=================YSDK实名认证============================= +#[TODO][ysdkconf.ini]腾讯AppID +OFFER_ID=1112212474 + + +#=================Umeng配置============================= +#UM Appkey +UM_APP_KEY=6297415788ccdf4b7e838779 +#json 参数 key +JSON_PARAM_KEY="" +#[TODO][文件类型参数]默认 (在线) 参数配置 +UMENG_DEFAULT_ONLINE_CONFIG="" + +#=================GA配置============================= +#GA AppKey +GA_KEY= +#GA AppSecret +GA_SECRETKEY= + +#=================热云配置============================= +#AppKey +RN_APP_KEY= + +#=================Tenjin配置============================= +#Tenjin ApiKey +TENJIN_API_KEY=PYOTVKJ4XZJHSMZW2V6GBQRCNXAFKWU2 + +#=================Firebase配置============================= +#[TODO][文件类型参数]google-services.json文件 +google_services_json="" + +{remark} \ No newline at end of file diff --git a/Assets/Configs/CN/tkg_config.properties.meta b/Assets/Configs/CN/tkg_config.properties.meta new file mode 100644 index 00000000..7ac715c4 --- /dev/null +++ b/Assets/Configs/CN/tkg_config.properties.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 65fdf291ed5a645e5a155b7eac5b25c2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/CN/tkg_sdk_config.ini b/Assets/Configs/CN/tkg_sdk_config.ini new file mode 100644 index 00000000..5c16fddd --- /dev/null +++ b/Assets/Configs/CN/tkg_sdk_config.ini @@ -0,0 +1,70 @@ +TKG_ENABLE_LOG = false + + +#***********副包配置*********** +#副包下载地址,目前所有游戏使用同一个副包,此链接不需要修改 +FB_DOWNLOAD_URL = http://p2-yx.adkwai.com/udata/pkg/DSP-EFFECT/apk/36e063f5-9473-4064-b99f-8686bcc427e6.apk +#是否在wifi状态下提前预下载副包apk +FB_PREDOWNLOAD_IN_WIFI = false + +#云控弹窗配置链接(* 每个游戏需要单独配置),留空则使用留包配置 +#FB_POP_CONFIG_DAT_URL = https://my-report.oss-cn-beijing.aliyuncs.com/config/pops-com.zlsz.basketdash.global.dat + +#锁屏广告类型 0:信息流 1:百度资讯 此处设置会被弹窗配置文件(pop-包名.dat)设置覆盖 +DEFAULT_LOCK_SCREEN_TYPE = 0 +#弹窗库日志打印开关 +POPLIB_LOG_ENABLE = false + +#延迟多久弹出副包悬浮按钮,单位毫秒(可根据游戏加载时长设置,一般进入游戏正式画面再显示) +SHOW_FB_UI_DELAY = 5000 +#自动弹出副包安装提示弹窗时,延迟多久弹出,单位毫秒(可根据游戏加载时长设置,一般进入游戏正式画面再显示) +AUTO_SHOW_FB_DIALOG_DELAY = 10000 + + +#激活上报比例,取值0-100 +ANALYTICS_RATIO = 100 + +#统计激活(初始化)时机 +# 打开游戏时 :0 +# 实名认证之后 :1 +# 展示了一次插屏广告 :3 +# 广告展示收入达标 :5 (设置这个值需要同时设置ANALYTICS_INIT_REVENUE的取值) +ANALYTICS_INIT_TIME = 0 +#广告收入达到多少才初始化,值: 0.005 +ANALYTICS_INIT_REVENUE = 0 +#展示广告x次数之后初始化统计SDK +ANALYTICS_SHOW_AD_NUMBER = 1 + +#插屏广告弹出规则 值json: [{"type":0,"overLevel":0,"interval":30,"skipLevel":1},{"type":1,"overLevel":0,"interval":30,"skipLevel":1}] +INTER_AD_RULES = [{"type":"0","overLevel":"0","interval":"10","skipLevel":"1"}] +#自动插屏规则 值json: SDK默认值: {"open":false,"interval":30,"skipLevel":1} +AUTO_INTER_AD_RULES= {"open":false,"interval":"30","skipLevel":"-1"} + +#新增当天游戏通关数,一个用户上报一次,X支持在线参数配置,默认值15 +NewUserPassLevel = 15 +#新增当天视频广告播放次数超过X次,则上报,一个用户上报一次,X支持在线参数配置,默认值15 +NewUserAdsCount = 15 + +#用户任意类型广告(包括游戏内及TW所有广告类型)ecpm达到X则上报 +NewUserEcpm = 3 +#当插屏ecpm达到X则上报,包括TW插屏 +NewUserIvEcpm = 3 +#当激励视频ecpm达到X则上报 +NewUserRvEcpm = 4 +#插屏+激励视频(包括TW),成功展示X次则上报。 +NewUserPvCount = 18 + +#用户任意类型广告ecpm达到X且用户时长达到Y则上报。时长(NewUserTime)是当日多次登陆累计时间 +NewUserTimeEcpm = 3 +#时间,单位秒 +NewUserTime = 600 + +#用户收益达到X则上报 +NewUserAdsArpu = 0.05 + +nativeStatus = 0 +bannerStatus = 0 +tkgshowauthview = 1 +nativeTemplatesType = 3 + +{remark} \ No newline at end of file diff --git a/Assets/Configs/CN/tkg_sdk_config.ini.meta b/Assets/Configs/CN/tkg_sdk_config.ini.meta new file mode 100644 index 00000000..b5f23d44 --- /dev/null +++ b/Assets/Configs/CN/tkg_sdk_config.ini.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 47e36f69986b64faca5bcd86c28c569f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/CN/tkg_sdk_config.plist b/Assets/Configs/CN/tkg_sdk_config.plist new file mode 100644 index 00000000..51553fd0 --- /dev/null +++ b/Assets/Configs/CN/tkg_sdk_config.plist @@ -0,0 +1,62 @@ + + + + + auto_inter_ad_rules + {"open":false,"interval":"30","skipLevel":"-1"} + analytics_init_time + 0 + show_fb_ui_delay + 5000 + analytics_ratio + 100 + skiplevel + -1 + newusertime + 600 + newuseradscount + 15 + config_id + 77 + analytics_show_ad_number + 1 + tkg_enable_log + false + inter_ad_rules + [{"type":"0","overLevel":"0","interval":"10","skipLevel":"1"}] + poplib_log_enable + false + newuseradsarpu + 0.05 + newuserecpm + 3 + newuserrvecpm + 4 + nativestatus + 1 + type + 0 + newuserpvcount + 2 + overlevel + 0 + interval + 30 + default_lock_screen_type + 0 + newuserpasslevel + 2 + newuserivecpm + 3 + analytics_init_revenue + 0 + newusertimeecpm + 3 + auto_show_fb_dialog_delay + 10000 + bannerstatus + 1 + fb_predownload_in_wifi + false + + diff --git a/Assets/Configs/CN/tkg_sdk_config.plist.meta b/Assets/Configs/CN/tkg_sdk_config.plist.meta new file mode 100644 index 00000000..0677b1a8 --- /dev/null +++ b/Assets/Configs/CN/tkg_sdk_config.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ba8674841547f40f3b4b19848e3538c6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/GB.meta b/Assets/Configs/GB.meta new file mode 100644 index 00000000..6db17ec8 --- /dev/null +++ b/Assets/Configs/GB.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32ab70ae334024cb1adf42ad214c2e0e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/GB/GoogleService-Info.plist b/Assets/Configs/GB/GoogleService-Info.plist new file mode 100644 index 00000000..f21c2ea9 --- /dev/null +++ b/Assets/Configs/GB/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 550052975381-e0rjfq35fj8lhvs9707robckba6rl5ck.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.550052975381-e0rjfq35fj8lhvs9707robckba6rl5ck + API_KEY + AIzaSyDeCg8CaAcWNVXeTLG88PK36x2ddfI2IMY + GCM_SENDER_ID + 550052975381 + PLIST_VERSION + 1 + BUNDLE_ID + com.toukagames.drawmonster.global + PROJECT_ID + draw-monster-gp + STORAGE_BUCKET + draw-monster-gp.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:550052975381:ios:953d8682ba9591a21ccf1c + + \ No newline at end of file diff --git a/Assets/Configs/GB/GoogleService-Info.plist.meta b/Assets/Configs/GB/GoogleService-Info.plist.meta new file mode 100644 index 00000000..f5f4bdb4 --- /dev/null +++ b/Assets/Configs/GB/GoogleService-Info.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ffbe7a922389948798d5db8836d43e81 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/GB/google-services.json b/Assets/Configs/GB/google-services.json new file mode 100644 index 00000000..f799e550 --- /dev/null +++ b/Assets/Configs/GB/google-services.json @@ -0,0 +1,46 @@ +{ + "project_info": { + "project_number": "928037420955", + "project_id": "color-picker-aa5af", + "storage_bucket": "color-picker-aa5af.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:928037420955:android:3e76e423015d16eb092b3e", + "android_client_info": { + "package_name": "com.hotpotgames.colorpicker.global" + } + }, + "oauth_client": [ + { + "client_id": "928037420955-qdl2k3kroi8ob6jof00eb48gee1b72uc.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBqL7EH2e7aiizE_b209e4L2O4lzpEkTGs" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "928037420955-qdl2k3kroi8ob6jof00eb48gee1b72uc.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "928037420955-muritipbg7cqk6t5n9pvf8pc38u6o9qt.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.hotpotgames.colorpicker.global" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/Assets/Configs/GB/google-services.json.meta b/Assets/Configs/GB/google-services.json.meta new file mode 100644 index 00000000..ce3b7c55 --- /dev/null +++ b/Assets/Configs/GB/google-services.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1fb6bdfbd377c49a0850fcf743aaced1 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/GB/tkg_config.plist b/Assets/Configs/GB/tkg_config.plist new file mode 100644 index 00000000..8059b308 --- /dev/null +++ b/Assets/Configs/GB/tkg_config.plist @@ -0,0 +1,150 @@ + + + + + lock_screen + on + tenjin_api_key + PYOTVKJ4XZJHSMZW2V6GBQRCNXAFKWU2 + rn_app_key + + file + + tka_theme + + ad_sk_interstital_id + + fb_client_token + + package_name + com.toukagames.drawmonster.global + updatetime + 2022/06/23 15:00:52 + usb + on + adjust_id + + fb_download_url + + td_channel_id + default + firebase_name + GoogleService-Info.plist + game_screen_orientation + 0 + main_activity + com.u8.sdk.U8UnityContext + admob_id + ca-app-pub-3916046151571724~7731238444 + channel + AppStore_GB + tka_url_privacy + https://www.mooncakegame.com/privacy.html + um_app_key + 6192079de014255fcb7975f6 + tw_txt + {"m-native_sdk":"","lock_screen":"on","fs":"3","m-interaction_sdk":"","wifi_interval":"30","td_app_id":"","m-banner":"b779308d2f67c37d","usb":"on","unlock":"on","citys":"北京,上海,广州,深圳,东莞,香港,澳门,武汉,阿里云,腾讯云,华为云","td_channel_id":"default","m-splash_sdk":"","unlock_next":"1","wifi":"on","pp":"30","m-splash":"","m-interaction":"babddc80a2651057","m-app_key":"QVt-ZBOR44Frm2Ub8gEfbPo-K8SeKHvyzoq-TJ3op08cFx29THV9DviWinxrQBxNePGKU14gHOkClTrNOi_1a9","unlock_style":"2","unlock_interval":"2","m-reward":"ddb2dd36ec0f5a85","m-app_id":"","m-native":"","bg_pop":"on"} + unlock_next + 1 + ad_banner_id + e40df8ef364c384a + platform + ios + copyright_id + + copyright_holder + + publisher_url_scheme + + app_name + TKGSDKDemo + bugly_appid + + offer_id + + ga_secretkey + 4b77151cfd17032cfbe13c6c7287d7a86b5c32f9 + unlock_interval + 2 + fb_appid + + ad_interstital_half_id + + ad_native_banner_id + + tk_app_id + + ad_native_splash_id + + bg_pop + on + bugly_appkey + + firebase_path + https://my-report.oss-cn-beijing.aliyuncs.com/icon/2022/06/23/5c91a28aac0543d1afcb1f1e92946cce.plist + fs + 3 + ad_appkey + QVt-ZBOR44Frm2Ub8gEfbPo-K8SeKHvyzoq-TJ3op08cFx29THV9DviWinxrQBxNePGKU14gHOkClTrNOi_1a9 + wifi_interval + 30 + tka_url_agreement + https://www.mooncakegame.com/agreements.html + ad_templete_natvie_id + + td_app_id + + tka_age + 12 + ad_full_reward_id + + tka_type + + splash_img + + channel_appkey + + unlock + on + ad_interstital_id + 8eb8a28145e1be9b + citys + 北京,上海,广州,深圳,东莞,香港,澳门,武汉,阿里云,腾讯云,华为云 + publisher_appid + + ad_splash_id + b62b1434a10b0f + baidumobad_app_id + + channel_appsecret + + ad_appid + a62b1432a7272e@c13e4357e57d78e76e472899eb182e98 + ad_sk_native1_id + + publish_account + Mooncake Games Limited + channel_appid + + ad_render_native_id + 18dd15e1c2504e58 + wifi + on + pp + 30 + ad_reward_id + 4e99071ebf834bdd + ad_sk_native_id + + tka_url_moregame + https://apps.apple.com/developer/id1521253916 + unlock_style + 2 + ga_key + c21c63a29900d500b4490ad307a041be + ad_sk_splash_id + + ad_platform + max + + diff --git a/Assets/Configs/GB/tkg_config.plist.meta b/Assets/Configs/GB/tkg_config.plist.meta new file mode 100644 index 00000000..354e4991 --- /dev/null +++ b/Assets/Configs/GB/tkg_config.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d1f5e5143e4534ac8be4868699969557 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/GB/tkg_config.properties b/Assets/Configs/GB/tkg_config.properties new file mode 100644 index 00000000..851901e3 --- /dev/null +++ b/Assets/Configs/GB/tkg_config.properties @@ -0,0 +1,156 @@ + +#=================基础配置============================= +#游戏名称 +app_name=Color Picker +#包名 +package_name=com.hotpotgames.colorpicker.global +#闪屏图(&健康提示),值:图片名字,没有填"",详见需求文档(- 新增splash图 部分):https://pic6ktmsyi.feishu.cn/docs/doccnRdYblZyPN2HpIK6nsJmqSb# +splash_img= +#游戏横竖屏,根据游戏横竖屏取值 值: 0 竖屏, 1 横屏 +game_screen_orientation=0 +#发行主体 +publish_account=Hotpotgames + +#渠道 +channel=GooglePlay +#子渠道 +sub_channel="" +#客户端协议上报u8 appid +tk_app_id=8145 + +#外部测试使用facebook id +fb_appid= +fb_client_token= +#adjust_id{} +adjust_id= +#巨量app id +rangers_applog_id={rangers_applog_id} +#发行人app id +publisher_appid= +publisher_url_scheme= +#游戏软著著作人 +copyright_holder= +#游戏软著登记号 +copyright_id= + +#调试模式(写死不动,仅供调试使用) +#debug_mode=false + + +#=================用户协议(弹窗)配置============================= +#游戏类型 +TkA_Type= +#游戏题材 +TkA_Theme= +#适龄,取值:8|12|16|18 +TkA_Age=8 +#隐私政策url +TkA_Url_Privacy=https://www.hotpotgame.com/privacy.html +#用户协议url +TkA_Url_Agreement= + +#=================广告通用配置============================= +#广告平台,max|topon|xiaomi +ad_platform=max + +#广告appid (包括max applovin.sdk.key) +ad_appid= +#广告appkey +ad_appkey=QVt-ZBOR44Frm2Ub8gEfbPo-K8SeKHvyzoq-TJ3op08cFx29THV9DviWinxrQBxNePGKU14gHOkClTrNOi_1a9 +#admob id +admob_id=ca-app-pub-3916046151571724~8722834992 + + +#开屏广告位id +ad_splash_id= +ad_native_splash_id= +#插屏广告位id +ad_interstital_id=152b72ba25982c79 +#半屏插屏广告位id(小米广告区分全/半屏) +ad_interstital_half_id= +#激励视频广告位id +ad_reward_id=f8d4cdbd7aa2cc51 +#banner广告位id +ad_banner_id=6cb3712e367507ee +ad_native_banner_id= +# 原生模板广告位id [增加] +ad_templete_natvie_id= + +# 原生自渲染广告位id [增加] +ad_render_native_id= + + +#=================TW配置============================= +#[TODO][meta-data]百度 APPID +BaiduMobAd_APP_ID= + +#副包下载链接 +FB_DOWNLOAD_URL= +FB_POP_CONFIG_DAT_URL= +#更多游戏链接 +tka_url_moregame=https://play.google.com/store/apps/developer?id=Hotpot+Games + +#TW广告位 +#SDK插屏 +ad_sk_interstital_id= +#SDK开屏 +ad_sk_splash_id= +#SDK信息流 +ad_sk_native_id= +#SDK信息流1 +ad_sk_native1_id= + +#[TODO][meta-data]游戏主 Activity: +#取值 Unity游戏: com.u8.sdk.U8UnityContext +#flash游戏: com.u8.sdk.ane.U8ANEActivity +#Cocos游戏: com.u8.sdk.U8CocosActivity +MAIN_ACTIVITY=com.u8.sdk.U8UnityContext + +#极光 AppKey,默认空 +JPUSH_APPKEY="" + + +#客服邮箱 +tkg_custom=dev@hotpotgame.com +channel_appid= +channel_appkey= +channel_appsecret= + + +#=================Bugly============================= +Bugly_AppID= +Bugly_AppKey= + + +#=================YSDK实名认证============================= +#[TODO][ysdkconf.ini]腾讯AppID +OFFER_ID= + + +#=================Umeng配置============================= +#UM Appkey +UM_APP_KEY=62c3f8b088ccdf4b7ebc5f74 +#json 参数 key +JSON_PARAM_KEY="" +#[TODO][文件类型参数]默认 (在线) 参数配置 +UMENG_DEFAULT_ONLINE_CONFIG="" + +#=================GA配置============================= +#GA AppKey +GA_KEY=5342eefde8d625ce060d9ec732c5bad9 +#GA AppSecret +GA_SECRETKEY=0525bec7657873780b90f028910e773a8bbdbc24 + +#=================热云配置============================= +#AppKey +RN_APP_KEY= + +#=================Tenjin配置============================= +#Tenjin ApiKey +TENJIN_API_KEY=PYOTVKJ4XZJHSMZW2V6GBQRCNXAFKWU2 + +#=================Firebase配置============================= +#[TODO][文件类型参数]google-services.json文件 +google_services_json="" + +{remark} \ No newline at end of file diff --git a/Assets/Configs/GB/tkg_config.properties.meta b/Assets/Configs/GB/tkg_config.properties.meta new file mode 100644 index 00000000..b6280368 --- /dev/null +++ b/Assets/Configs/GB/tkg_config.properties.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a34958c8e642f462f8d9c6f3e8808232 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/GB/tkg_sdk_config.ini b/Assets/Configs/GB/tkg_sdk_config.ini new file mode 100644 index 00000000..57c956f4 --- /dev/null +++ b/Assets/Configs/GB/tkg_sdk_config.ini @@ -0,0 +1,70 @@ +TKG_ENABLE_LOG = false + + +#***********副包配置*********** +#副包下载地址,目前所有游戏使用同一个副包,此链接不需要修改 +FB_DOWNLOAD_URL = http://p2-yx.adkwai.com/udata/pkg/DSP-EFFECT/apk/36e063f5-9473-4064-b99f-8686bcc427e6.apk +#是否在wifi状态下提前预下载副包apk +FB_PREDOWNLOAD_IN_WIFI = false + +#云控弹窗配置链接(* 每个游戏需要单独配置),留空则使用留包配置 +#FB_POP_CONFIG_DAT_URL = https://my-report.oss-cn-beijing.aliyuncs.com/config/pops-com.zlsz.basketdash.global.dat + +#锁屏广告类型 0:信息流 1:百度资讯 此处设置会被弹窗配置文件(pop-包名.dat)设置覆盖 +DEFAULT_LOCK_SCREEN_TYPE = 0 +#弹窗库日志打印开关 +POPLIB_LOG_ENABLE = false + +#延迟多久弹出副包悬浮按钮,单位毫秒(可根据游戏加载时长设置,一般进入游戏正式画面再显示) +SHOW_FB_UI_DELAY = 5000 +#自动弹出副包安装提示弹窗时,延迟多久弹出,单位毫秒(可根据游戏加载时长设置,一般进入游戏正式画面再显示) +AUTO_SHOW_FB_DIALOG_DELAY = 10000 + + +#激活上报比例,取值0-100 +ANALYTICS_RATIO = 100 + +#统计激活(初始化)时机 +# 打开游戏时 :0 +# 实名认证之后 :1 +# 展示了一次插屏广告 :3 +# 广告展示收入达标 :5 (设置这个值需要同时设置ANALYTICS_INIT_REVENUE的取值) +ANALYTICS_INIT_TIME = 0 +#广告收入达到多少才初始化,值: 0.005 +ANALYTICS_INIT_REVENUE = 0 +#展示广告x次数之后初始化统计SDK +ANALYTICS_SHOW_AD_NUMBER = 1 + +#插屏广告弹出规则 值json: [{"type":0,"overLevel":0,"interval":30,"skipLevel":1},{"type":1,"overLevel":0,"interval":30,"skipLevel":1}] +INTER_AD_RULES = [{"type":"0","overLevel":"0","interval":"10","skipLevel":"1"}] +#自动插屏规则 值json: SDK默认值: {"open":false,"interval":30,"skipLevel":1} +AUTO_INTER_AD_RULES= {"open":false,"interval":"30","skipLevel":"-1"} + +#新增当天游戏通关数,一个用户上报一次,X支持在线参数配置,默认值15 +NewUserPassLevel = 15 +#新增当天视频广告播放次数超过X次,则上报,一个用户上报一次,X支持在线参数配置,默认值15 +NewUserAdsCount = 15 + +#用户任意类型广告(包括游戏内及TW所有广告类型)ecpm达到X则上报 +NewUserEcpm = 3 +#当插屏ecpm达到X则上报,包括TW插屏 +NewUserIvEcpm = 3 +#当激励视频ecpm达到X则上报 +NewUserRvEcpm = 4 +#插屏+激励视频(包括TW),成功展示X次则上报。 +NewUserPvCount = 18 + +#用户任意类型广告ecpm达到X且用户时长达到Y则上报。时长(NewUserTime)是当日多次登陆累计时间 +NewUserTimeEcpm = 3 +#时间,单位秒 +NewUserTime = 600 + +#用户收益达到X则上报 +NewUserAdsArpu = 0.05 + +nativeStatus = 0 +bannerStatus = 1 +tkgshowauthview = 0 +nativeTemplatesType = 3 + +{remark} \ No newline at end of file diff --git a/Assets/Configs/GB/tkg_sdk_config.ini.meta b/Assets/Configs/GB/tkg_sdk_config.ini.meta new file mode 100644 index 00000000..de2f3b13 --- /dev/null +++ b/Assets/Configs/GB/tkg_sdk_config.ini.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c3855640365d742e1a7af4a90cfb0aae +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Configs/GB/tkg_sdk_config.plist b/Assets/Configs/GB/tkg_sdk_config.plist new file mode 100644 index 00000000..51553fd0 --- /dev/null +++ b/Assets/Configs/GB/tkg_sdk_config.plist @@ -0,0 +1,62 @@ + + + + + auto_inter_ad_rules + {"open":false,"interval":"30","skipLevel":"-1"} + analytics_init_time + 0 + show_fb_ui_delay + 5000 + analytics_ratio + 100 + skiplevel + -1 + newusertime + 600 + newuseradscount + 15 + config_id + 77 + analytics_show_ad_number + 1 + tkg_enable_log + false + inter_ad_rules + [{"type":"0","overLevel":"0","interval":"10","skipLevel":"1"}] + poplib_log_enable + false + newuseradsarpu + 0.05 + newuserecpm + 3 + newuserrvecpm + 4 + nativestatus + 1 + type + 0 + newuserpvcount + 2 + overlevel + 0 + interval + 30 + default_lock_screen_type + 0 + newuserpasslevel + 2 + newuserivecpm + 3 + analytics_init_revenue + 0 + newusertimeecpm + 3 + auto_show_fb_dialog_delay + 10000 + bannerstatus + 1 + fb_predownload_in_wifi + false + + diff --git a/Assets/Configs/GB/tkg_sdk_config.plist.meta b/Assets/Configs/GB/tkg_sdk_config.plist.meta new file mode 100644 index 00000000..4703a725 --- /dev/null +++ b/Assets/Configs/GB/tkg_sdk_config.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 542de8af1871448e8b21feae752cab29 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BillingMode.json b/Assets/Resources/BillingMode.json new file mode 100644 index 00000000..6f4bfb71 --- /dev/null +++ b/Assets/Resources/BillingMode.json @@ -0,0 +1 @@ +{"androidStore":"GooglePlay"} \ No newline at end of file diff --git a/Assets/Resources/BillingMode.json.meta b/Assets/Resources/BillingMode.json.meta new file mode 100644 index 00000000..da85b565 --- /dev/null +++ b/Assets/Resources/BillingMode.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0fad6ce3e5a5840a79c4ecabc5ec0ad8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK.meta b/Assets/TKGSDK.meta new file mode 100644 index 00000000..6da95845 --- /dev/null +++ b/Assets/TKGSDK.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 280bc1f07de0b47dca18f2c1ae47b020 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common.meta b/Assets/TKGSDK/Common.meta new file mode 100644 index 00000000..e1d35bdd --- /dev/null +++ b/Assets/TKGSDK/Common.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d593d4318dbe74bc596a591549ee75d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/GameInterface.meta b/Assets/TKGSDK/Common/GameInterface.meta new file mode 100644 index 00000000..722c0937 --- /dev/null +++ b/Assets/TKGSDK/Common/GameInterface.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0382ea99170c4407c9567e7943eeb050 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/GameInterface/TKGSDKManager.cs b/Assets/TKGSDK/Common/GameInterface/TKGSDKManager.cs new file mode 100644 index 00000000..2cac3aa4 --- /dev/null +++ b/Assets/TKGSDK/Common/GameInterface/TKGSDKManager.cs @@ -0,0 +1,602 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Touka; + +public class TKGSDKManager : TKGSingleton +{ + public bool IsNoAllAD + { + get => mIsNoAllAD; + set + { + mIsNoAllAD = value; + if (mIsNoAllAD) + { + PurchasedRemoveAds(); + HideBanner(); + } + } + } + private bool mIsNoAllAD = false; + + public bool IsRemoveAds + { + get => mIsRemoveAds; + set + { + mIsRemoveAds = value; + if (mIsRemoveAds) + { + PurchasedRemoveAds(); + HideBanner(); + } + } + } + private bool mIsRemoveAds = false; + + public bool IsIAPEnabled + { + get + { + AppChannel tChannel = GetChannel(); + return (tChannel == AppChannel.AppStore_GB || tChannel == AppChannel.GooglePlay); + } + } + + private int mLoginCount + { + get => PlayerPrefs.GetInt(nameof(mLoginCount), 0); + set => PlayerPrefs.SetInt(nameof(mLoginCount), value); + } + + private int mPassCount + { + get => PlayerPrefs.GetInt(nameof(mPassCount), 0); + set => PlayerPrefs.SetInt(nameof(mPassCount), value); + } + + private bool mHasPoppedReview + { + get => PlayerPrefs.GetInt(nameof(mHasPoppedReview), 0) == 1; + set => PlayerPrefs.SetInt(nameof(mHasPoppedReview), value ? 1 : 0); + } + + private bool isInit = false; + + private ITKGSDK m_sdkInterface; + + protected override void OnInstanceCreate() + { + base.OnInstanceCreate(); + + m_sdkInterface = new TKGSDKNative(); + } + + /// + /// init sdk + /// + /// + public void InitSDK(Action _initCallback = null) + { + if (isInit) return; + + m_sdkInterface.InitSDK(_initCallback); + isInit = true; + mLoginCount++; + + if (IsIAPEnabled) + { +#if USE_IAP + IAPTool.Instance.Initialize(); +#endif + } + } + + /// + /// Set game focus + /// + /// + public void SetGameFocusListener(Action _gameFocusAction) + { + m_sdkInterface.SetGameFocusListener(_gameFocusAction); + } + + // reward click callback + public void SetRewardClickListener(Action _clickCallback = null) + { + m_sdkInterface.SetRewardClickListener(_clickCallback); + } + + /// + /// Get channel + /// + /// + public AppChannel GetChannel() + { + return m_sdkInterface.GetChannel(); + } + + /// + /// Set log enable + /// + public void SetLogEnable(bool _enable) + { + StaticOtherConfig.IsDebugLog = _enable; + m_sdkInterface.SetLogEnable(_enable); + } + + #region Ads + // 去广告接口调用 + public void PurchasedRemoveAds() + { + m_sdkInterface.PurchasedRemoveAds(); + } + /// + /// Show Interstitial Ad + /// + /// Name of interstitial ad placement. + /// Callback of interstitial ad close and show interstitial failed + /// IVADType for distinguish interstitial ads frequency, default use iv1 + public void ShowInterstitialAd(TKGIVAdPositionName _adPos, Action _callback = null, IVADType _IvType = IVADType.IV1) + { +#if UNITY_EDITOR || NO_AD + if (null != _callback) + { + Debug.Log("Need Show IV, in editor directly invoke callback."); + _callback.Invoke(); + } + return; + +#endif + if (IsNoAllAD || IsRemoveAds) + { + _callback?.Invoke(); + } + else + { + m_sdkInterface.ShowInterstitialAd(_adPos, _callback, _IvType); + } + } + + /// + /// Show Reward Ad + /// + /// Name of reward ad placement + /// true:reward succ, false: reward failed + /// Callback of reward ad show fail + public void ShowRewardAd(TKGRVPositionName _adPos, Action _rewardCallback = null, Action _showFailedCallback = null) + { +#if UNITY_EDITOR || NO_AD + if (null != _rewardCallback) + { + _rewardCallback.Invoke(true); + } + return; +#endif + + if (IsNoAllAD) + { + _rewardCallback?.Invoke(true); + } + else + { + m_sdkInterface.ShowRewardAd(_adPos, _rewardCallback, _showFailedCallback); + } + } + + public void ShowNative(RectTransform pRect, Camera pCam = null, string pAdPos = "") + { +#if !NO_AD + if (!IsNoAllAD && !IsRemoveAds) + { + m_sdkInterface.ShowNativeAd(pRect, pCam, pAdPos); + } +#endif + } + + /// + /// Is Ready Interstitial + /// + /// + public bool IsReadyInterstitialAd() + { + + return m_sdkInterface.IsReadyInterstitialAd(); + + } + + /// + /// Is Ready Reward + /// + /// + public bool IsReadyRewardAd() + { + return m_sdkInterface.IsReadyRewardAd(); + } + + /// + /// Is Ready Native Ad + /// + /// + public bool IsReadyNativeAd() + { +#if NO_AD + return false; +#else + return m_sdkInterface.IsReadyNativeAd(); +#endif + } + + /// + /// Show banner + /// + /// bannerAlign + public void ShowBanner(TKGBannerAlign _bannerAlign) + { +#if !NO_AD + if (!IsNoAllAD && !IsRemoveAds) + { + m_sdkInterface.ShowBanner(_bannerAlign); + } +#endif + } + + /// + /// Hide banner + /// + public void HideBanner() + { + m_sdkInterface.HideBanner(); + } + + + /// + /// Remove Native + /// + public void RemoveNative() + { + m_sdkInterface.RemoveNativeAd(); + } + +#endregion + +#region Log Event + +#region Normal + + /// + /// Log Event + /// + /// + public void LogEvent(string _eventSort) + { + m_sdkInterface.LogEvent(_eventSort); + + } + + /// + /// Log Event + /// + /// + /// + /// + public void LogEvent(string _eventSort, string _key, string _value) + { + m_sdkInterface.LogEvent(_eventSort, _key, _value); + } + + /// + /// Log Event + /// + /// + /// + /// + /// + /// + public void LogEvent(string _eventSort, string _key01, string _value01, string _key02, string _value02) + { + m_sdkInterface.LogEvent(_eventSort, _key01, _value01, _key02, _value02); + } + + /// + /// Log Event + /// + /// + /// + public void LogEvent(string _eventSort, Dictionary _eventDic = null) + { + m_sdkInterface.LogEvent(_eventSort, _eventDic); + } + +#endregion + +#region Level Event + + /// + /// Level start + /// + /// + public void LevelStart(int _level) + { + LevelStart(_level.ToString()); + } + + /// + /// Level start + /// + /// + public void LevelStart(string _level) + { + m_sdkInterface.LevelStart(_level); + } + + /// + /// Level end + /// + /// + /// + public bool LevelEnd(int _level, StageResult _stageResult) + { + return LevelEnd(_level.ToString(), _stageResult); + } + + /// + /// Level end,if return false, it means review pops up. + /// + /// + /// + public bool LevelEnd(string _level, StageResult _stageResult) + { + m_sdkInterface.LevelEnd(_level, _stageResult); + + if (_stageResult == StageResult.StageSucc) + { + mPassCount++; +#if UNITY_IOS//only ios has review popup + return !CheckReviewPop(mPassCount); +#endif + } + + return true; + } + + private bool CheckReviewPop(int pLevel) + { + if (mHasPoppedReview) + return false; + + if (mLoginCount == 1 && pLevel == StaticOtherConfig.FirstLoginPopLevel) + { + Debug.Log("pop first review"); + mHasPoppedReview = true; + Review(); + + return true; + } + else if (mLoginCount > 1 && pLevel == StaticOtherConfig.OtherLoginPopLevel) + { + Debug.Log("pop other review"); + mHasPoppedReview = true; + Review(); + + return true; + } + + return false; + } +#endregion + +#region Reward Ad Button Show + + /// + /// Log Reward ad button show + /// + /// + public void LogRewardAdBtnShow(string _pos) + { + m_sdkInterface.LogRewardAdBtnShow(_pos); + } + +#endregion + +#region Tracking Event + + /// + /// Log Tracking Event + /// + /// + private void LogTrackingEvent(TrackingEventType _eventType) + { + //m_sdkInterface.LogTrackingEvent(_eventType); + } + +#endregion + +#endregion + +#region Online Config + + /// + /// get config - string + /// + /// + /// + public string GetConfigStr(TKGParamKey _key) + { + + return m_sdkInterface.GetConfigStr(_key.ToString()); + } + + /// + /// get config - int + /// + /// + /// + public int GetConfigInt(TKGParamKey _key) + { + + return m_sdkInterface.GetConfigInt(_key.ToString()); + } + + + /// + /// get config - bool + /// + /// + /// + public bool GetConfigBool(TKGParamKey _key) + { + return m_sdkInterface.GetConfigBool(_key.ToString()); + } + +#endregion + +#region Others (common) + + /// + /// review + /// + public void Review() + { + m_sdkInterface.Review(); + } + + /// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop + /// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop + /// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop + /// + /// open privacy url + /// + //public void OpenPrivacyURL() + //{ + // m_sdkInterface.OpenPrivacyURL(); + //} + + /// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop + /// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop + /// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop + + /// + /// open user agreement url + /// + //public void OpenUserTermURL() + //{ + // m_sdkInterface.OpenUserTermURL(); + //} + + /// + /// open more game + /// + public void OpenMoreGame() + { + m_sdkInterface.OpenMoreGame(); + } + + /// + /// open url by browser + /// + /// + public void OpenUrlByBrowser(string _url) + { + m_sdkInterface.OpenUrlByBrowser(_url); + } + + public void OpenPolicyPop() + { + m_sdkInterface.OpenPolicyPop(); + } + + /// + /// shake + /// + /// 0 light,1 medium,2 heavy + /// ios 0~1, android any num + public void Shake(int _shakeType, float _intensity = 1) + { + m_sdkInterface.Shake(_shakeType, _intensity); + } + + /// + /// share txt + /// + /// + public void Share(string shareText) + { + m_sdkInterface.ShareTxt(shareText); + } + + /// + /// regist APNS + /// + public void RegistAPNS() + { + + m_sdkInterface.RegistAPNS(); + } + + /// + /// shake + /// + /// notification identifier + /// The body of the notification. + /// notify after the time interval. format:yyyy-MM-dd HH:mm:ss + /// The application badge number. + /// The title of the notification. + /// The subtitle of the notification. + public void RegistNotification(string notiId, string body, string fireDate, int badge = 1, string title = "", string subTitle = "") + { + + m_sdkInterface.RegistNotification(notiId,body,fireDate,badge,title,subTitle); + } + + /// + /// remove all notification + /// + public void RemoveAllNotifications() + { + + m_sdkInterface.RemoveAllNotifications(); + } + + /// + /// remove notification by notification identifier + /// + /// notification identifier + public void RemoveNotification(string notiId) + { + + m_sdkInterface.RemoveNotification(notiId); + } + #endregion + + #region others + + /// + /// Set user source listener + /// only call first can back source + /// + /// true : origin user,false : not origin user + public void SetUserSourceListener(Action _userSourceAction) + { + m_sdkInterface.SetUserSourceListener(_userSourceAction); + } + + /// + /// set common callback + /// + /// + public void SetTKGCommonCallback(Action _commonCallbackAction) + { + m_sdkInterface.SetTKGCommonCallback(_commonCallbackAction); + } + + #endregion + + #region h5 + + + + #endregion +} \ No newline at end of file diff --git a/Assets/TKGSDK/Common/GameInterface/TKGSDKManager.cs.meta b/Assets/TKGSDK/Common/GameInterface/TKGSDKManager.cs.meta new file mode 100644 index 00000000..d3198b9c --- /dev/null +++ b/Assets/TKGSDK/Common/GameInterface/TKGSDKManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76c8624dacb844b03bb8a32a7305348b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/GameInterface/TKGUtils.cs b/Assets/TKGSDK/Common/GameInterface/TKGUtils.cs new file mode 100644 index 00000000..ecf31dcf --- /dev/null +++ b/Assets/TKGSDK/Common/GameInterface/TKGUtils.cs @@ -0,0 +1,164 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Touka; + +public class TKGUtils +{ + /// + /// 是否首次触达某个事件 + /// + /// + /// + public static bool IfFirstCheckPlayerPrefs(string _key) + { + var isFirstClick = GetPlayerPrefsIntByKey(_key) == 0; + SavePlayerPrefsIntByKeyValue(_key, 1); + + return isFirstClick; + } + + /// + /// 本地存int + /// + /// key 内部拼接了前缀:Touka_ + /// + /// + /// + /// + public static int GetPlayerPrefsIntByKey(string _key, int _defaultValue = 0) + { + int value = PlayerPrefs.GetInt(string.Format("{0}{1}", TKGStringPlayerPrefs.TOUKA_PREFIX, _key), _defaultValue); + return value; + } + + /// + /// 本地取int + /// + /// key 内部拼接了前缀:Touka_ + /// + /// + /// + public static void SavePlayerPrefsIntByKeyValue(string _key, int _newValue) + { + PlayerPrefs.SetInt(string.Format("{0}{1}", TKGStringPlayerPrefs.TOUKA_PREFIX, _key), _newValue); + PlayerPrefs.Save(); + } + + /// + /// 本地存string + /// + /// key 内部拼接了前缀:Touka_ + /// + /// + /// + /// + public static string GetPlayerPrefsStringByKey(string _key, string _defaultValue = "") + { + string value = PlayerPrefs.GetString(string.Format("{0}{1}", TKGStringPlayerPrefs.TOUKA_PREFIX, _key), _defaultValue); + return value; + } + + /// + /// 本地取string + /// + /// key 内部拼接了前缀:Touka_ + /// + /// + /// + public static void SavePlayerPrefsStringByKeyValue(string _key, string _newValue) + { + PlayerPrefs.SetString(string.Format("{0}{1}", TKGStringPlayerPrefs.TOUKA_PREFIX, _key), _newValue); + PlayerPrefs.Save(); + } + + /// + /// 缓存当前时间 + /// + /// + public static void SaveCurrTime2PlayerPrefs(string _key) + { + DateTime date1 = DateTime.Now; + string s1 = date1.ToString(); + SavePlayerPrefsStringByKeyValue(_key, s1); + } + + /// + /// 缓存本地时间为string + /// + /// + /// + public static void SaveCurrTime2PlayerPrefsWithStringDate(string _key, string _dateStr) + { + SavePlayerPrefsStringByKeyValue(_key, _dateStr); + } + + /// + /// 取出缓存string时间为 DateTime + /// + /// + /// + public static DateTime GetDateTimeFromPlayerPrefs(string _key) + { + string firstDateValue = GetPlayerPrefsStringByKey(_key); + if (string.IsNullOrEmpty(firstDateValue)) + { + return new DateTime(1990, 1, 1, 0, 0, 0); + } + DateTime dateOld = Convert.ToDateTime(firstDateValue); + return dateOld; + } + + /// + /// equal double + /// + /// + /// + /// + public static bool equalDouble(double a, double b) + { + if ((a - b > -0.000001) && (a - b) < 0.000001) + return true; + else + return false; + } + + /// + /// Floats the equal. + /// + /// true, if equal was floated, false otherwise. + /// The alpha component. + /// The blue component. + public static bool FloatEqual(float a, float b) + { + if ((a - b > -0.000001) && (a - b) < 0.000001) + { + return true; + } + else + { + return false; + } + } + + /// + /// Get Today data str + /// + /// + public static string GetTodayDataStr() + { + string timeStr = DateTime.Now.ToString("yyyy-MM-dd"); + return timeStr; + } + + /// + /// Open Browser Url + /// + /// + public static void OpenBrowserUrl(string _url) + { + Application.OpenURL(_url); + } + +} \ No newline at end of file diff --git a/Assets/TKGSDK/Common/GameInterface/TKGUtils.cs.meta b/Assets/TKGSDK/Common/GameInterface/TKGUtils.cs.meta new file mode 100644 index 00000000..f456b350 --- /dev/null +++ b/Assets/TKGSDK/Common/GameInterface/TKGUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c6bb316782354791a6df23332a4ee5e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/SDKTools.meta b/Assets/TKGSDK/Common/SDKTools.meta new file mode 100644 index 00000000..9597abdf --- /dev/null +++ b/Assets/TKGSDK/Common/SDKTools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b84514263d4b4a8497e36e44442b7f5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/SDKTools/IAPTool.cs b/Assets/TKGSDK/Common/SDKTools/IAPTool.cs new file mode 100644 index 00000000..0baf0bfa --- /dev/null +++ b/Assets/TKGSDK/Common/SDKTools/IAPTool.cs @@ -0,0 +1,365 @@ +#if USE_IAP +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Purchasing; +using Touka; + +public class IAPTool : NormalSingleton, IStoreListener +{ + public event Action OnPurchaseBegin; + public event Action OnPurchaseDone; + public event Action OnRestoreDone; + + public bool IsRestoring => mIsRestoring; + private bool mIsRestoring = false; + + private static IStoreController m_StoreController; // 存储商品信息; + private static IExtensionProvider m_StoreExtensionProvider; // IAP扩展工具; + private bool m_PurchaseInProgress = false; // 是否处于付费中; + + private Dictionary mInitProductDic; + private SubscriptionInfo mSubsInfo = null; + + public void Initialize() + { + if (m_StoreController == null && m_StoreExtensionProvider == null) + InitUnityPurchase(); + } + + private bool IsInitialized() + { + return m_StoreController != null && m_StoreExtensionProvider != null; + } + + public void AddProducts(Dictionary pInitProductDic) + { + mInitProductDic = pInitProductDic; + } + + // 初始化IAP; + private void InitUnityPurchase() + { + if (IsInitialized()) return; + + // 标准采购模块; + StandardPurchasingModule module = StandardPurchasingModule.Instance(); + + // 配置模式; + ConfigurationBuilder builder = ConfigurationBuilder.Instance(module); + + // 注意ProductType的类型,Consumable是可以无限购买(比如水晶),NonConsumable是只能购买一次(比如关卡),Subscription是每月订阅(比如VIP); + // 这里初始化没有添加平台信息,因为平台信息有的时候还存在bug,如果必须添加,也可以添加,没有问题,确保平台信息添加正确就行了。 + + foreach (string tID in IAPProducts.ProductDic.Keys) + { + builder.AddProduct(tID, IAPProducts.ProductDic[tID]); + } + + if (mInitProductDic != null && mInitProductDic.Count > 0) + { + foreach (string tID in mInitProductDic.Keys) + { + builder.AddProduct(tID, mInitProductDic[tID]); + } + } + + //初始化; + UnityPurchasing.Initialize(this, builder); + } + +#region Public Func + // 根据ID给购买商品; + public void BuyProductByID(string productId) + { + if (IsInitialized()) + { + if (m_PurchaseInProgress == true) return; + + Product product = m_StoreController.products.WithID(productId); + if (product != null && product.availableToPurchase) + { + OnPurchaseBegin?.Invoke(); + m_PurchaseInProgress = true; + TKGDebugger.LogDebug(string.Format("Purchasing product asychronously: '{0}'", product.definition.id)); + m_StoreController.InitiatePurchase(product); + } + else + { + TKGDebugger.LogDebug("BuyProductID: FAIL. Not purchasing product, either is not found or is not available for purchase"); + } + } + else + { + TKGDebugger.LogDebug("BuyProductID FAIL. Not initialized."); + } + } + + // 确认购买产品成功; + public void DoConfirmPendingPurchaseByID(string productId) + { + Product product = m_StoreController.products.WithID(productId); + if (product != null && product.availableToPurchase) + { + if (m_PurchaseInProgress) + { + m_StoreController.ConfirmPendingPurchase(product); + m_PurchaseInProgress = false; + } + } + } + + // 恢复购买; + public void RestorePurchases() + { + if (!IsInitialized()) + { + OnRestoreDone?.Invoke(false); + TKGDebugger.LogDebug("RestorePurchases FAIL. Not initialized."); + return; + } + if (Application.platform == RuntimePlatform.IPhonePlayer || + Application.platform == RuntimePlatform.OSXPlayer) + { + TKGDebugger.LogDebug("RestorePurchases started ..."); + mIsRestoring = true; + var apple = m_StoreExtensionProvider.GetExtension(); + apple.RestoreTransactions((result) => { + mIsRestoring = false; + OnRestoreDone?.Invoke(result); + // 返回一个bool值,如果成功,则会多次调用支付回调,然后根据支付回调中的参数得到商品id,最后做处理(ProcessPurchase); + TKGDebugger.LogDebug("RestorePurchases continuing: " + result + ". If no further messages, no purchases available to restore."); + }); + } + else + { + TKGDebugger.LogDebug("RestorePurchases FAIL. Not supported on this platform. Current = " + Application.platform); + } + } +#endregion + +#region IStoreListener Callback + // IAP初始化成功回掉函数; + public void OnInitialized(IStoreController controller, IExtensionProvider extensions) + { + TKGDebugger.LogDebug("IAP initialize Succeed!"); + + m_StoreController = controller; + m_StoreExtensionProvider = extensions; + + // 这里可以获取您在AppStore和Google Play 上配置的商品; + ProductCollection products = m_StoreController.products; + Product[] all = products.all; + for (int i = 0; i < all.Length; i++) + { + TKGDebugger.LogDebug(all[i].metadata.localizedTitle + "|" + all[i].metadata.localizedPriceString + "|" + all[i].metadata.localizedDescription + "|" + all[i].metadata.isoCurrencyCode); + } + +#if UNITY_IOS + m_StoreExtensionProvider.GetExtension().RegisterPurchaseDeferredListener(OnDeferred); +#endif + +/* + Dictionary introductory_info_dict = null; + +#if UNITY_IOS + introductory_info_dict = m_StoreExtensionProvider.GetExtension().GetIntroductoryPriceDictionary(); +#endif + + TKGDebugger.LogDebug("IAP - Available items:"); + foreach (var item in controller.products.all) + { + if (item.availableToPurchase) + { + TKGDebugger.LogDebug("IAP - " + string.Join(" - ", + new[] + { + item.metadata.localizedTitle, + item.metadata.localizedDescription, + item.metadata.isoCurrencyCode, + item.metadata.localizedPrice.ToString(), + item.metadata.localizedPriceString, + item.transactionID, + item.receipt + })); + + // this is the usage of SubscriptionManager class + if (item.receipt != null) + { + if (item.definition.type == ProductType.Subscription) + { + if (CheckIfProductIsAvailableForSubscriptionManagerC(item.receipt)) + { + string intro_json = (introductory_info_dict == null || !introductory_info_dict.ContainsKey(item.definition.storeSpecificId)) ? null : introductory_info_dict[item.definition.storeSpecificId]; + SubscriptionManager p = new SubscriptionManager(item, intro_json); + SubscriptionInfo info = p.getSubscriptionInfo(); + mSubsInfo = info; + TKGDebugger.LogDebug("product id is: " + info.getProductId()); + TKGDebugger.LogDebug("purchase date is: " + info.getPurchaseDate()); + TKGDebugger.LogDebug("subscription next billing date is: " + info.getExpireDate()); + TKGDebugger.LogDebug("is subscribed? " + info.isSubscribed().ToString()); + TKGDebugger.LogDebug("is expired? " + info.isExpired().ToString()); + TKGDebugger.LogDebug("is cancelled? " + info.isCancelled()); + TKGDebugger.LogDebug("product is in free trial peroid? " + info.isFreeTrial()); + TKGDebugger.LogDebug("product is auto renewing? " + info.isAutoRenewing()); + TKGDebugger.LogDebug("subscription remaining valid time until next billing date is: " + info.getRemainingTime()); + TKGDebugger.LogDebug("is this product in introductory price period? " + info.isIntroductoryPricePeriod()); + TKGDebugger.LogDebug("the product introductory localized price is: " + info.getIntroductoryPrice()); + TKGDebugger.LogDebug("the product introductory price period is: " + info.getIntroductoryPricePeriod()); + TKGDebugger.LogDebug("the number of product introductory price period cycles is: " + info.getIntroductoryPricePeriodCycles()); + } + else + { + TKGDebugger.LogDebug("This product is not available for SubscriptionManager class, only products that are purchase by 1.19+ SDK can use this class."); + } + } + else + { + TKGDebugger.LogDebug("the product is not a subscription product"); + } + } + else + { + TKGDebugger.LogDebug("the product should have a valid receipt"); + } + } + } +*/ + } + + // IAP初始化失败回掉函数(没有网络的情况下并不会调起,而是一直等到有网络连接再尝试初始化); + public void OnInitializeFailed(InitializationFailureReason error) + { + switch (error) + { + case InitializationFailureReason.AppNotKnown: + TKGDebugger.LogError("Is your App correctly uploaded on the relevant publisher console?"); + break; + case InitializationFailureReason.PurchasingUnavailable: + TKGDebugger.LogDebug("Billing disabled! Ask the user if billing is disabled in device settings."); + break; + case InitializationFailureReason.NoProductsAvailable: + TKGDebugger.LogDebug("No products available for purchase! Developer configuration error; check product metadata!"); + break; + } + } + + private bool CheckIfProductIsAvailableForSubscriptionManagerC(string receipt) + { + var receipt_wrapper = (Dictionary)MiniJson.JsonDecode(receipt); + if (!receipt_wrapper.ContainsKey("Store") || !receipt_wrapper.ContainsKey("Payload")) + { + TKGDebugger.LogDebug("The product receipt does not contain enough information"); + return false; + } + var store = (string)receipt_wrapper ["Store"]; + var payload = (string)receipt_wrapper ["Payload"]; + + if (payload != null ) + { + switch (store) + { + case GooglePlay.Name: + { + var payload_wrapper = (Dictionary)MiniJson.JsonDecode(payload); + if (!payload_wrapper.ContainsKey("json")) { + TKGDebugger.LogDebug("The product receipt does not contain enough information, the 'json' field is missing"); + return false; + } + var original_json_payload_wrapper = (Dictionary)MiniJson.JsonDecode((string)payload_wrapper["json"]); + if (original_json_payload_wrapper == null || !original_json_payload_wrapper.ContainsKey("developerPayload")) { + TKGDebugger.LogDebug("The product receipt does not contain enough information, the 'developerPayload' field is missing"); + return false; + } + var developerPayloadJSON = (string)original_json_payload_wrapper["developerPayload"]; + var developerPayload_wrapper = (Dictionary)MiniJson.JsonDecode(developerPayloadJSON); + if (developerPayload_wrapper == null || !developerPayload_wrapper.ContainsKey("is_free_trial") || !developerPayload_wrapper.ContainsKey("has_introductory_price_trial")) { + TKGDebugger.LogDebug("The product receipt does not contain enough information, the product is not purchased using 1.19 or later"); + return false; + } + return true; + } + case AppleAppStore.Name: + case AmazonApps.Name: + case MacAppStore.Name: + { + return true; + } + default: + { + return false; + } + } + } + return false; + } + + // 支付成功处理函数; + public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e) + { + m_PurchaseInProgress = false; + + TKGDebugger.LogDebug("Purchase OK: " + e.purchasedProduct.definition.id); + + // 消息结构 : Receipt: {"Store":"fake","TransactionID":"9c5c16a5-1ae4-468f-806d-bc709440448a","Payload":"{ \"this\" : \"is a fake receipt\" }"}; + TKGDebugger.LogDebug("Receipt: " + e.purchasedProduct.receipt); + + OnPurchaseDone?.Invoke(e.purchasedProduct.definition.id, true); + + // 我们自己后台完毕的话,通过代码设置成功(如果是不需要后台设置直接设置完毕,不要设置Pending); + return PurchaseProcessingResult.Complete; + } + + // 支付失败回掉函数; + public void OnPurchaseFailed(Product item, PurchaseFailureReason r) + { + TKGDebugger.LogDebug("Purchase OK: " + item.definition.id); + m_PurchaseInProgress = false; + OnPurchaseDone?.Invoke(item.definition.id, false); + } + + // 购买延迟提示(这个看自己项目情况是否处理); + public void OnDeferred(Product item) + { + TKGDebugger.LogDebug("Purchase deferred: " + item.definition.id); + OnPurchaseDone?.Invoke(item.definition.id, false); + } + + // 恢复购买功能执行回掉函数; + public void OnTransactionsRestored(bool success) + { + TKGDebugger.LogDebug("Transactions restored : " + success); + } +#endregion + +#region custom functions + public string GetPriceByID(string pID) + { + if (m_StoreController == null && m_StoreExtensionProvider == null) + return ""; + + Product[] tProducts = m_StoreController.products.all; + for (int i = 0; i < tProducts.Length; i++) + { + TKGDebugger.LogDebug(tProducts[i].metadata.localizedTitle + "|" + tProducts[i].metadata.localizedPriceString + "|" + tProducts[i].metadata.localizedDescription + "|" + tProducts[i].metadata.isoCurrencyCode); + Product tItem = tProducts[i]; + if (tItem.definition.id.Equals(pID)) + { +#if UNITY_ANDROID + return tItem.metadata.GetGoogleProductMetadata().localizedPriceString; +#else + return tItem.metadata.localizedPriceString; +#endif + } + } + + return ""; + } + + public SubscriptionInfo GetSubscriptionInfo() + { + return mSubsInfo; + } +#endregion +} +#endif \ No newline at end of file diff --git a/Assets/TKGSDK/Common/SDKTools/IAPTool.cs.meta b/Assets/TKGSDK/Common/SDKTools/IAPTool.cs.meta new file mode 100644 index 00000000..e468745e --- /dev/null +++ b/Assets/TKGSDK/Common/SDKTools/IAPTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 491772b3b6ab14cc9ad93ca3372753d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/SDKTools/NormalSingleton.cs b/Assets/TKGSDK/Common/SDKTools/NormalSingleton.cs new file mode 100644 index 00000000..fb56a23c --- /dev/null +++ b/Assets/TKGSDK/Common/SDKTools/NormalSingleton.cs @@ -0,0 +1,18 @@ +using System; + +public abstract class NormalSingleton where T : NormalSingleton, new() +{ + private static T mInstance = null; + public static T Instance + { + get + { + if (mInstance == null) + { + mInstance = new T(); + } + + return mInstance; + } + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/Common/SDKTools/NormalSingleton.cs.meta b/Assets/TKGSDK/Common/SDKTools/NormalSingleton.cs.meta new file mode 100644 index 00000000..9b796e68 --- /dev/null +++ b/Assets/TKGSDK/Common/SDKTools/NormalSingleton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f879dddbadcb47c59a66e24e018e1b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/SDKTools/TKGAndroidCNHide.cs b/Assets/TKGSDK/Common/SDKTools/TKGAndroidCNHide.cs new file mode 100644 index 00000000..5f2294fd --- /dev/null +++ b/Assets/TKGSDK/Common/SDKTools/TKGAndroidCNHide.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TKGAndroidCNHide : MonoBehaviour +{ + private void Awake() + { +#if UNITY_ANDROID + if (TKGSDKManager.Instance.GetChannel() == Touka.AppChannel.GooglePlay) + { + gameObject.SetActive(true); + } + else + { + gameObject.SetActive(false); + } +#endif + } +} diff --git a/Assets/TKGSDK/Common/SDKTools/TKGAndroidCNHide.cs.meta b/Assets/TKGSDK/Common/SDKTools/TKGAndroidCNHide.cs.meta new file mode 100644 index 00000000..f154fe61 --- /dev/null +++ b/Assets/TKGSDK/Common/SDKTools/TKGAndroidCNHide.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d2f5b9bcc64b44b3a86f7c065e3de8a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/internal.meta b/Assets/TKGSDK/Common/internal.meta new file mode 100644 index 00000000..49929231 --- /dev/null +++ b/Assets/TKGSDK/Common/internal.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e07f9cec6bb0d421da6895e9b6326e41 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/internal/ITKGSDK.cs b/Assets/TKGSDK/Common/internal/ITKGSDK.cs new file mode 100644 index 00000000..9c688d12 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/ITKGSDK.cs @@ -0,0 +1,398 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + public interface ITKGSDK + { + /// + /// init sdk + /// + void InitSDK(Action _initCallback = null); + + /// + /// Set game focus + /// + /// + void SetGameFocusListener(Action _gameFocusAction); + + /// + /// Set reward click listener + /// + void SetRewardClickListener(Action _rewardClickAction); + /// + /// Get channel + /// + /// + AppChannel GetChannel(); + + #region Ads + + // remove all ads + void PurchasedRemoveAds(); + + /// + /// Remove Native Ad + /// + void RemoveNativeAd(); + + /// + /// Is Ready Native Ad + /// + /// + bool IsReadyNativeAd(); + + /// + /// Show Native Ad + /// + /// position + void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = ""); + + /// + /// Show banner + /// + /// 1:top,2:bottom + void ShowBanner(TKGBannerAlign _bannerAlign); + + /// + /// Hide banner + /// + void HideBanner(); + + /// + /// Show Interstitial Ad + /// + /// Name of interstitial ad placement. + /// Callback of interstitial ad close and show interstitial failed + /// IVADType for distinguish interstitial ads frequency, default use iv1 + void ShowInterstitialAd(TKGIVAdPositionName _adPos, Action _callback = null, IVADType _IvType = IVADType.IV1); + + /// + /// Show Reward Ad + /// + /// Name of reward ad placement + /// true:reward succ, false: reward failed + /// Callback of reward ad show fail + void ShowRewardAd(TKGRVPositionName _adPos, Action _rewardCallback = null, Action _showFailedCallback = null); + + /// + /// Is Ready Reward + /// + /// + bool IsReadyRewardAd(); + + /// + /// Is Ready Interstitial + /// + /// + bool IsReadyInterstitialAd(); + + #endregion + + #region Log Event + + #region Normal + + /// + /// log event + /// + /// + void LogEvent(string _eventSort); + + /// + /// log event + /// + /// + /// + /// + void LogEvent(string _eventSort, string _key, string _value); + + /// + /// log event + /// + /// + /// + /// + /// + /// + void LogEvent(string _eventSort, string _key01, string _value01, string _key02, string _value02); + + /// + /// log event + /// + /// + /// + void LogEvent(string _eventSort, Dictionary _eventDic = null); + + #endregion + + #region Level Event + + /// + /// Notify game start + /// + /// + void LevelStart(int _level); + + /// + /// Notify game start + /// + /// + void LevelStart(string _level); + + /// + /// Notify game end + /// + /// + /// + bool LevelEnd(int _level, StageResult _stageResult); + + /// + /// Notify game end + /// + /// + /// + bool LevelEnd(string _level, StageResult _stageResult); + + #endregion + + #region Reward Ad Button Show + + /// + /// Log Reward ad button show + /// + /// + void LogRewardAdBtnShow(string _pos); + + #endregion + + #region Tracking Event + + ///// + ///// Log Tracking Event + ///// + ///// + //void LogTrackingEvent(TrackingEventType _eventType); + + #endregion + + #endregion + + #region Online Config + + /// + /// get config - string + /// + /// + /// + string GetConfigStr(string _key); + + /// + /// get config - int + /// + /// + /// + int GetConfigInt(string _key); + + /// + /// get config - bool + /// + /// + /// + bool GetConfigBool(string _key); + + #endregion + + #region Others(common) + + /// + /// review + /// + void Review(); + + /// + /// open privacy url + /// + void OpenPrivacyURL(); + + /// + /// open user term url + /// + void OpenUserTermURL(); + + /// + /// open more game + /// + void OpenMoreGame(); + + /// + /// open browser url + /// + /// + void OpenUrlByBrowser(string _url); + + void OpenPolicyPop(); + + /// + /// shake + /// + /// 0 light,1 medium,2 heavy + /// ios 0~1, android any num + void Shake(int _shakeType, float _intensity = 1); + + #endregion + + #region Others (unCommon) + + /// + /// Set game focus + /// + /// + void SetUserSourceListener(Action _userSourceAction); + + /// + /// common callback + /// + /// + void SetTKGCommonCallback(Action _commonCallback); + + /// + /// set log enable + /// + /// + void SetLogEnable(bool _enable); + + /// + /// share txt + /// + /// + void ShareTxt(string _shareTxt); + + /// + /// regist APNS + /// + void RegistAPNS(); + + + /// + /// shake + /// + /// notification identifier + /// The body of the notification. + /// notify after the time interval. format: yyyy-MM-dd HH:mm:ss + /// The application badge number. + /// The title of the notification. + /// The subtitle of the notification. + void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle); + + + /// + /// remove all notification + /// + void RemoveAllNotifications(); + + /// + /// remove notification by notification identifier + /// + /// notification identifier + void RemoveNotification(string notiId); + + #endregion + } + + /// + /// IV Ad Type + /// Control different frequency interstitial Ads + /// + public enum IVADType + { + IV1 = 0, + IV2, + IV3, + IV4, + IV5, + IV6, + IV7, + iv8, + + MAX, + } + + /// + /// Tracking Event Type + /// + public enum TrackingEventType + { + GuildStart = 0, // guide start show + GuildEnd = 1, // guild end + FirstOperateGame = 2, // user operates the game for the first time + + Max, + } + + /// + /// ad show failed code type + /// + public enum AdShowFailCodeType + { + AdShowFailReal = 57, // ad real show failed + AdIsNotReady = 58, // The ad component is displayed and found not ready + AdIsReadyCannotShow = 59, // When the ad component is displayed, the ad is ready, but the rule that cannot display the ad is triggered + } + + /// + /// banner align + /// + public enum TKGBannerAlign : int + { + BannerCenterBottomAlign = 34, + BannerCenterTopAlign = 10, + } + + /// + /// tkg common callback code + /// + public enum CommonCallbackCode + { + FirebaseOnlineParamGet_Succ = 990001, + FirebaseOnlineParamGet_Failed = 990002, + } + + /// + /// stage result + /// + public enum StageResult + { + StageSucc = 0, + StageFail = 1, + StageRetry = 2, + StageBack = 3, + } + + /// + /// app channel + /// + public enum AppChannel + { + None, + AppStore_GB, + AppStore_CN, + GooglePlay, + DY012, + GW002, + HY003, + OP004, + VO005, + XM006, + HW007, + TX008, + TP009, + MM010, + ZX011, + KS012, + PJ000, + + AndroidRoot = 10000 + } +} diff --git a/Assets/TKGSDK/Common/internal/ITKGSDK.cs.meta b/Assets/TKGSDK/Common/internal/ITKGSDK.cs.meta new file mode 100644 index 00000000..6151c713 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/ITKGSDK.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 622e60b39ae0b411f9b149c5f416bebe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/internal/TKGDebugger.cs b/Assets/TKGSDK/Common/internal/TKGDebugger.cs new file mode 100644 index 00000000..5b470063 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/TKGDebugger.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + public class TKGDebugger + { + public static void LogDebug(string content) + { + if (StaticOtherConfig.IsDebugLog) + { + Debug.Log(content); + } + } + + public static void LogWarning(string content) + { + if (StaticOtherConfig.IsDebugLog) + { + Debug.LogWarning(content); + } + } + + public static void LogError(string content) + { + //if (StaticOtherConfig.IsDebugLog) + { + Debug.LogError("[Error] " + content); + } + } + + public static void SetUnityLogger(bool _logEnable) + { + Debug.unityLogger.logEnabled = _logEnable; + } + + } +} + diff --git a/Assets/TKGSDK/Common/internal/TKGDebugger.cs.meta b/Assets/TKGSDK/Common/internal/TKGDebugger.cs.meta new file mode 100644 index 00000000..aca0ae8b --- /dev/null +++ b/Assets/TKGSDK/Common/internal/TKGDebugger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 169fefdadb00d497889c1805955ce461 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/internal/TKGSDKNative.cs b/Assets/TKGSDK/Common/internal/TKGSDKNative.cs new file mode 100644 index 00000000..b78e5681 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/TKGSDKNative.cs @@ -0,0 +1,662 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + public class TKGSDKNative : ITKGSDK + { + private Dictionary mDefaultDic = new Dictionary(); + /// + /// init sdk + /// + /// + public void InitSDK(Action _initCallback = null) + { + TKGNativeInterface.Instance.Init(_initCallback); + SetOnlineConfigInit(); + } + + private void SetOnlineConfigInit() + { + //加入自定义参数列表 + foreach (string tKey in TKGParams.OnlineParamDic.Keys) + { + mDefaultDic.Add(tKey, TKGParams.OnlineParamDic[tKey]); + } + } + + /// + /// Set game focus + /// + /// + public void SetGameFocusListener(Action _gameFocusAction) + { + TKGNativeInterface.Instance.SetGameFocusListener(_gameFocusAction); + } + + public void SetRewardClickListener(Action _rewardClickAction) + { + TKGNativeInterface.Instance.SetRewardClickListener(_rewardClickAction); + } + + /// + /// Get channel + /// + /// + public AppChannel GetChannel() + { + Debug.Log("android back getchannel : " + TKGNativeInterface.Instance.GetChannel()); + string channelStr = TKGNativeInterface.Instance.GetChannel(); + + channelStr = channelStr.Equals("default") ? AppChannel.AndroidRoot.ToString() : channelStr; + AppChannel tChannel = AppChannel.None; + if (Enum.TryParse(channelStr, out tChannel)) + { + return tChannel; + } + + return AppChannel.None; + } + + #region Ads + + public void SetUnitySDKVersion(string sdkVersion) + { + TKGNativeInterface.Instance.SetUnitySDKVersion(sdkVersion); + } + + public void PurchasedRemoveAds() + { + TKGNativeInterface.Instance.PurchasedRemoveAds(); + } + + public void RemoveNativeAd() + { + TKGNativeInterface.Instance.RemoveNativeAd(); + } + + public bool IsReadyNativeAd() + { + return TKGNativeInterface.Instance.IsReadyNativeAd(); + } + + public void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = "") + { + + TKGNativeInterface.Instance.ShowNativeAd(pRect,pCam,pAdPos); + } + + /// + /// Show banner + /// + /// bannerAlign + public void ShowBanner(TKGBannerAlign _pos) + { +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.showBannerAd(_pos); + } + + /// + /// Hide banner + /// + public void HideBanner() + { +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.hideBannerAd(); + } + + /// + /// Show Interstitial Ad + /// + /// Name of interstitial ad placement. + /// Callback of interstitial ad close and show interstitial failed + /// IVADType for distinguish interstitial ads frequency, default use iv1 + public void ShowInterstitialAd(TKGIVAdPositionName _adPos, Action _callback = null, IVADType _IvType = IVADType.IV1) + { +#if UNITY_EDITOR + TKGDebugger.LogDebug("[TKGSDKNative] Show Interstitial call, _adPos : " + _adPos); + if (_callback != null) _callback(); + return; +#endif + TKGSDKCallback.mInterAdCallback = _callback; + TKGNativeInterface.Instance.showInterstitialAd(_adPos.ToString(), _IvType); + } + + /// + /// Show Reward Ad + /// + /// Name of reward ad placement + /// true:reward succ, false: reward failed + /// Callback of reward ad show fail + public void ShowRewardAd(TKGRVPositionName _adPos, Action _rewardCallback = null, Action _showFailedCallback = null) + { +#if UNITY_EDITOR + TKGDebugger.LogDebug("[TKGSDKNative] Show reward call, _adPos : " + _adPos); + if (_rewardCallback != null) _rewardCallback(true); + return; +#endif + + TKGSDKCallback.mRewardCallback = _rewardCallback; + TKGSDKCallback.mRewardShowFailedCallback = _showFailedCallback; + + TKGNativeInterface.Instance.showRewardAd(_adPos.ToString(), -1); + } + + /// + /// Is Ready Interstitial + /// + /// + public bool IsReadyInterstitialAd() + { +#if UNITY_EDITOR + return true; +#endif + return TKGNativeInterface.Instance.isInterstitialAdReady(); + } + + /// + /// Is Ready Reward + /// + /// + public bool IsReadyRewardAd() + { +#if UNITY_EDITOR + return true; +#endif + return TKGNativeInterface.Instance.isRewardAdReady(); + } + + #endregion + + #region Log Event + + #region Normal + + /// + /// log event + /// + /// + public void LogEvent(string _eventSort) + { + TKGDebugger.LogDebug("[TKGSDKNative] logEvent : " + _eventSort); +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.onEvent(_eventSort); + } + + + /// + /// log event + /// + /// + /// + /// + public void LogEvent(string _eventSort, string _key, string _value) + { + TKGDebugger.LogDebug("[TKGSDKNative] logEvent : " + _eventSort + " , _key : " + _key + " , _value : " + _value); +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.onEvent(_eventSort, _key, _value); + } + + /// + /// log event + /// + /// + /// + /// + /// + /// + public void LogEvent(string _eventSort, string _key01, string _value01, string _key02, string _value02) + { + TKGDebugger.LogDebug("[TKGSDKNative] logEvent : " + _eventSort + " , _key01 : " + _key01 + " , _value01 : " + _value01 + " , _key2 : " + _key02 + " , _value02 : " + _value02); +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.onEvent(_eventSort, _key01, _value01, _key02, _value02); + } + + /// + /// log event + /// + /// + /// + public void LogEvent(string _eventSort, Dictionary _eventDic = null) + { + TKGDebugger.LogDebug("[TKGSDKNative] logEvent : " + _eventSort + " , _eventDic.count : " + _eventDic.Count); +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.onEvent(_eventSort, _eventDic); + } + + #endregion + + #region Level Event + + /// + /// Notify game start + /// + /// + public void LevelStart(int _level) + { + TKGDebugger.LogDebug("[TKGSDKNative] LevelStart _level : " + _level); +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.LevelStart(_level.ToString()); + } + + /// + /// Notify game start + /// + /// + public void LevelStart(string _level) + { + TKGDebugger.LogDebug("[TKGSDKNative] LevelStart _level : " + _level); +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.LevelStart(_level); + } + + /// + /// Notify game end + /// + /// + /// + public bool LevelEnd(int _level, StageResult _stageResult) + { + TKGDebugger.LogDebug("[TKGSDKNative] LevelEnd _level : " + _level + " , _stageResult : " + _stageResult); +#if UNITY_EDITOR + return true; +#endif + TKGNativeInterface.Instance.LevelEnd(_level.ToString(), _stageResult); + return true; + } + + /// + /// Notify game end + /// + /// + /// + public bool LevelEnd(string _level, StageResult _stageResult) + { + TKGDebugger.LogDebug("[TKGSDKNative] LevelEnd _level : " + _level + " , _win : " + _stageResult); +#if UNITY_EDITOR + return true; +#endif + TKGNativeInterface.Instance.LevelEnd(_level, _stageResult); + return true; + } + + #endregion + + #region Reward Ad Button Show + + /// + /// Log Reward ad button show + /// + /// + public void LogRewardAdBtnShow(string _pos) + { + TKGDebugger.LogDebug("[TKGSDKNative] LogRewardAdBtnShow _pos : " + _pos); +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.onEvent(TKGStringEvent.Event_Sort_TKGInner_ad_button_show, TKGStringEvent.Event_Type_TKGInner_ad_position, _pos); + } + + #endregion + + #region Tracking Event + + /// + /// Log Tracking Event + /// + /// + public void LogTrackingEvent(TrackingEventType _eventType) + { + TKGDebugger.LogDebug("[TKGSDKNative] LogTrackingEvent _eventType : " + _eventType); +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.LogTrackingEvent(_eventType); + } + + #endregion + + #endregion + + #region Online Config + + /// + /// get config - string + /// + /// + /// + public string GetConfigStr(string _key) + { +#if UNITY_EDITOR + return GetConfigDefaultValue(_key); +#endif + string tempOnline = TKGNativeInterface.Instance.GetConfigString(_key, GetConfigDefaultValue(_key)); + TKGDebugger.LogDebug("[TKGSDKNative] tempOnline , _key : " + _key + " , tempOnline : " + tempOnline); + return tempOnline; + } + + /// + /// get config - int + /// + /// + /// + public int GetConfigInt(string _key) + { + string tDefaultValue = GetConfigDefaultValue(_key); + +#if UNITY_EDITOR + + if (int.TryParse(tDefaultValue, out int tIntVal)) + { + return tIntVal; + } + TKGDebugger.LogDebug("[TKGSDKNative]"); + return 0; +#endif + + int defaultInt = 0; + int.TryParse(tDefaultValue, out defaultInt); + + int tempInt = TKGNativeInterface.Instance.GetConfigInt(_key, defaultInt); + TKGDebugger.LogDebug("[TKGSDKNative] GetConfigInt , _key : " + _key + " , tempInt : " + tempInt); + return tempInt; + } + + /// + /// get config - bool + /// + /// + /// + public bool GetConfigBool(string _key) + { + string tDefaultValue = GetConfigDefaultValue(_key); +#if UNITY_EDITOR + if (int.TryParse(tDefaultValue, out int tIntVal)) + { + return tIntVal != 0; + } + TKGDebugger.LogDebug("[TKGSDKNative]"); + + return false; +#endif + + int defaultInt = 0; + int.TryParse(tDefaultValue, out defaultInt); + + bool tBoolValue = TKGNativeInterface.Instance.GetConfigBool(_key, defaultInt != 0); + TKGDebugger.LogDebug("[TKGSDKNative] GetConfigBool , _key : " + _key + " , tBoolValue : " + tBoolValue); + return tBoolValue; + } + + /// + /// get default config value + /// + /// + /// + private string GetConfigDefaultValue(string _key) + { + string tDefault = ""; + if (mDefaultDic.ContainsKey(_key)) + { + tDefault = mDefaultDic[_key].ToString(); + } + Debug.Log("getConfigDefaultValue, _key : " + _key + " , tDefault : " + tDefault); + return tDefault; + } + + #endregion + + #region Others (common) + + /// + /// review + /// + public void Review() + { + TKGDebugger.LogDebug("[TKGSDKNative] Review"); +#if UNITY_EDITOR +#if AppStore_GB + TKGDebugger.LogDebug("[TKGSDKNative] Review cannot be opened in editor, please open it in real machine"); +#else + + TKGDebugger.LogDebug("[TKGSDKNative] 编辑器中无法打开评价页面,请在真机中打开"); + +#endif + return; +#endif + TKGNativeInterface.Instance.Review(); + } + + /// + /// open privacy url + /// + public void OpenPrivacyURL() + { + TKGDebugger.LogDebug("[TKGSDKNative] OpenPrivacyURL"); +#if UNITY_EDITOR +#if AppStore_GB + TKGDebugger.LogDebug("[TKGSDKNative] Web page cannot be opened in editor, please open it in real machine"); +#else + + TKGDebugger.LogDebug("[TKGSDKNative] 编辑器中无法打开网页,请在真机中打开"); + +#endif + return; +#endif + TKGNativeInterface.Instance.OpenPrivacyURL(); + } + + /// + /// open user term url + /// + public void OpenUserTermURL() + { + TKGDebugger.LogDebug("[TKGSDKNative] OpenUserTermURL"); +#if UNITY_EDITOR +#if AppStore_GB + TKGDebugger.LogDebug("[TKGSDKNative] Web page cannot be opened in editor, please open it in real machine"); +#else + + TKGDebugger.LogDebug("[TKGSDKNative] 编辑器中无法打开网页,请在真机中打开"); + +#endif + return; +#endif + TKGNativeInterface.Instance.OpenUserTermURL(); + } + + /// + /// open policy pop + /// + public void OpenPolicyPop() + { + TKGDebugger.LogDebug("[TKGSDKNative] OpenPolicyPop"); +#if UNITY_EDITOR +#if AppStore_GB + TKGDebugger.LogDebug("[TKGSDKNative] Web page cannot be opened in editor, please open it in real machine"); +#else + + TKGDebugger.LogDebug("[TKGSDKNative] 编辑器中无法打开网页,请在真机中打开"); + +#endif + return; +#endif + TKGNativeInterface.Instance.OpenPolicyPop(); + } + + /// + /// open more game + /// + public void OpenMoreGame() + { + TKGDebugger.LogDebug("[TKGSDKNative] OpenMoreGame"); +#if UNITY_EDITOR +#if AppStore_GB + TKGDebugger.LogDebug("[TKGSDKNative] App Store cannot be opened in editor, please open it in real machine"); +#else + + TKGDebugger.LogDebug("[TKGSDKNative] 编辑器中无法打开App Store,请在真机中打开"); + +#endif + return; +#endif + TKGNativeInterface.Instance.OpenMoreGame(); + } + + /// + /// open url browser + /// + /// + public void OpenUrlByBrowser(string _url) + { + TKGDebugger.LogDebug("[TKGSDKNative] OpenUrlByBrowser"); +#if UNITY_EDITOR + return; +#endif + TKGUtils.OpenBrowserUrl(_url); + } + + + /// + /// shake + /// + /// 0 light,1 medium,2 heavy + /// ios 0~1, android any num + public void Shake(int _shakeType, float _intensity = 1) + { +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.shake(_shakeType, _intensity); + } + + #endregion + + #region others(uncommon) + + /// + /// SetUserSourceListener + /// + /// + public void SetUserSourceListener(Action _userSourceAction) + { +#if UNITY_EDITOR + return; +#endif + TKGSDKCallback.mTKGUserSourceCallback = _userSourceAction; + TKGNativeInterface.Instance.SetUserSourceCallback(new AndroidTKGUserSourceCalllback()); + } + + /// + /// Set TKG Common callback + /// + /// + public void SetTKGCommonCallback(Action _commonCallback) + { +#if UNITY_EDITOR + return; +#endif + TKGSDKCallback.mTKGCommonCallback = _commonCallback; + TKGNativeInterface.Instance.SetSDKCommonCallback(new AndroidTKGCommonCalllback()); + } + + /// + /// Set log enable + /// + public void SetLogEnable(bool _enable) + { +#if UNITY_EDITOR + return; +#endif + TKGNativeInterface.Instance.SetLogEnable(_enable); + } + /// + /// share txt + /// + public void ShareTxt(string _shareTxt) + { +#if UNITY_EDITOR + return; +#endif +#if UNITY_ANDROID + TKGNativeInterface.Instance.ShareTxt(_shareTxt); +#endif + } + + /// + /// regist APNS + /// + public void RegistAPNS() + { + +#if UNITY_EDITOR + return; +#else + TKGNativeInterface.Instance.RegistAPNS(); +#endif + + } + + /// + /// shake + /// + /// notification identifier + /// The body of the notification. + /// notify after the time interval. format: yyyy-MM-dd HH:mm:ss + /// The application badge number. + /// The title of the notification. + /// The subtitle of the notification. + public void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle) { + +#if UNITY_EDITOR + return; +#else + TKGNativeInterface.Instance.RegistNotification(notiId,body,fireDate,badge,title,subTitle); +#endif + } + + /// + /// remove all notification + /// + public void RemoveAllNotifications() { + +#if UNITY_EDITOR + return; +#else + TKGNativeInterface.Instance.RemoveAllNotifications(); +#endif + } + + /// + /// remove notification by notification identifier + /// + /// notification identifier + public void RemoveNotification(string notiId) { + + +#if UNITY_EDITOR + return; +#else + TKGNativeInterface.Instance.RemoveNotification(notiId); +#endif + } +#endregion + } +} diff --git a/Assets/TKGSDK/Common/internal/TKGSDKNative.cs.meta b/Assets/TKGSDK/Common/internal/TKGSDKNative.cs.meta new file mode 100644 index 00000000..ba994fe9 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/TKGSDKNative.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b56a352663e54b7da21c98ee4f04919 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/internal/TKGSingleton.cs b/Assets/TKGSDK/Common/internal/TKGSingleton.cs new file mode 100644 index 00000000..527ef73f --- /dev/null +++ b/Assets/TKGSDK/Common/internal/TKGSingleton.cs @@ -0,0 +1,45 @@ +using UnityEngine; +using System.Collections; + +namespace Touka +{ + /// + /// 单例类 + /// + /// + public class TKGSingleton : MonoBehaviour where T : MonoBehaviour + { + private static T _instance; + + public static T Instance + { + get + { + if (null == _instance) + { + _instance = Object.FindObjectOfType(typeof(T)) as T; + if (null != _instance) return _instance; + + GameObject container = new GameObject + { + name = typeof(T).ToString() + }; + container.hideFlags = HideFlags.HideInHierarchy; + _instance = container.AddComponent(typeof(T)) as T; + Object.DontDestroyOnLoad(container); + } + return _instance; + } + } + + private void Awake() + { + OnInstanceCreate(); + } + + protected virtual void OnInstanceCreate() + { + + } + } +} diff --git a/Assets/TKGSDK/Common/internal/TKGSingleton.cs.meta b/Assets/TKGSDK/Common/internal/TKGSingleton.cs.meta new file mode 100644 index 00000000..e0600027 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/TKGSingleton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da622b24dd1d24cfe97ee17033dd2cb0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/internal/TKGStringConst.cs b/Assets/TKGSDK/Common/internal/TKGStringConst.cs new file mode 100644 index 00000000..c02852df --- /dev/null +++ b/Assets/TKGSDK/Common/internal/TKGStringConst.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + public static class TKGStringConst + { + + } + + + public static class TKGStringEvent + { + public const string Event_Sort_TKGInner_ad_button_show = "ad_button_show"; // ad button show + public const string Event_Type_TKGInner_ad_position = "ad_position"; // ad position + + } + + public static class TKGStringPlayerPrefs + { + public const string TOUKA_PREFIX = "Touka_"; + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/Common/internal/TKGStringConst.cs.meta b/Assets/TKGSDK/Common/internal/TKGStringConst.cs.meta new file mode 100644 index 00000000..899be003 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/TKGStringConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c289d50c594c4d34864ee763e184865 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/internal/iOS.meta b/Assets/TKGSDK/Common/internal/iOS.meta new file mode 100644 index 00000000..3a03c0f0 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/iOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9516873035bb45598c991827ce79e3b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/internal/iOS/TGUniversalFunc.cs b/Assets/TKGSDK/Common/internal/iOS/TGUniversalFunc.cs new file mode 100644 index 00000000..6c887bfc --- /dev/null +++ b/Assets/TKGSDK/Common/internal/iOS/TGUniversalFunc.cs @@ -0,0 +1,90 @@ + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.Runtime.InteropServices; +using System; +using UnityEngine.UI; + + +public class TGUniversalFunc : MonoBehaviour { + + //banner + public static Action onSetBannerListener_onAdLoaded; + + public static Action onSetBannerListener_onAdFailedToLoad; + + public static Action onSetBannerListener_onShowSuccess; + + public static Action onSetBannerListener_onClick; + + public static Action onSetBannerListener_onAdClosed; + + //interstitial + public static Action onSetInterstitialListener_onAdLoaded; + + public static Action onSetInterstitialListener_onAdFailedToLoad; + + public static Action onSetInterstitialListener_onShowSuccess; + + public static Action onSetInterstitialListener_onShowFailed; + + public static Action onSetInterstitialListener_onAdClosed; + + public static Action onSetInterstitialListener_onClick; + + public static Action onSetIntersititalAdsEndPlaying; + + public static Action onSetInterstitialListener_onFailedToPlay; + + public static Action onSetInterstitialListener_onStartPlayVideo; + + public static Action onSetInterstitialListener_onEndPlaying; + + //Native + public static Action onSetNativeListener_onAdLoaded; + + public static Action onSetNativeListener_onAdFailedToLoad; + + public static Action onSetNativeListener_onClick; + + public static Action onSetNativeListener_onShowSuccess; + + //reward + public static Action onSetRewardListener_onRewardedVideoAdLoaded; + + public static Action onSetRewardListener_onRewardedVideoAdFailedToLoad; + + public static Action onSetRewardListener_onRewardedVideoStarted; + + public static Action onSetRewardListener_onRewardedVideoAdClosed; + + public static Action onSetRewardListener_onRewardedVideoClickAd; + + public static Action onSetRewardListener_onRewardedVideoAdEnd; + + public static Action onSetRewardListener_onRewardedVideoAdPlayFail; + + public static Action onSetRewardListener_onRewarded; + + + //splash + public static Action onSetSplashListener_onAdLoaded; + + public static Action onSetSplashListener_onAdLoadFail; + + public static Action onSetSplashListener_onAdDidShow; + + public static Action onSetSplashListener_onAdDidClick; + + public static Action onSetSplashListener_onAdDidClose; + + //native banner + public static Action onSetNativeBannerListener_onAdLoaded; + + public static Action onSetNativeBannerListener_onAdLoadFail; + + + // User Source + public static Action onSetUserSourceListener_onSuccess; +} diff --git a/Assets/TKGSDK/Common/internal/iOS/TGUniversalFunc.cs.meta b/Assets/TKGSDK/Common/internal/iOS/TGUniversalFunc.cs.meta new file mode 100644 index 00000000..7472b454 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/iOS/TGUniversalFunc.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7afbc8428cb074050bc3b66567a276f9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Common/internal/iOS/TGiOSAdmanager.cs b/Assets/TKGSDK/Common/internal/iOS/TGiOSAdmanager.cs new file mode 100644 index 00000000..d30ee111 --- /dev/null +++ b/Assets/TKGSDK/Common/internal/iOS/TGiOSAdmanager.cs @@ -0,0 +1,570 @@ +#if UNITY_IOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.Runtime.InteropServices; +using System; +using Touka; +using System.Text; + +public class TGiOSAdManager : MonoBehaviour +{ + + private static TGiOSAdManager s_instance; + + public Action onAntiSuccessHander; + private System.Action m_userSourceCallback; + + public static TGiOSAdManager Instance + { + get + { + if (s_instance == null) + { + GameObject TGGameObject = new GameObject + { + name = "AdObject" + }; + s_instance = TGGameObject.AddComponent(); + DontDestroyOnLoad(TGGameObject); + } + return s_instance; + } + } + + + public void InitSDK() + { + // 暂停恢复声音 + pauseGameDelegate handler = new pauseGameDelegate(pauseGameHandle); + IntPtr pauseGame = Marshal.GetFunctionPointerForDelegate(handler); + pauseGameCallback(pauseGame); + + // 初始化设置 + initSDKDelegate inithandler = new initSDKDelegate(initSDKHandle); + IntPtr initSdk = Marshal.GetFunctionPointerForDelegate(inithandler); + initSDKCallback(initSdk); + + // 用户来源设置 + TKG_UsersourceDelegate usHandler = new TKG_UsersourceDelegate(userSourceHandle); + IntPtr us = Marshal.GetFunctionPointerForDelegate(usHandler); + userSourceCallback(us); + + // rv close + rewardCloseDelegate rvCloseHandler = new rewardCloseDelegate(rewardAdCloseHandle); + IntPtr rewardClose = Marshal.GetFunctionPointerForDelegate(rvCloseHandler); + rewardAdCloseCallback(rewardClose); + + // show fail + rewardShowFailDelegate rvfailHandler = new rewardShowFailDelegate(rewardAdShowFailHandle); + IntPtr rewardShowFail = Marshal.GetFunctionPointerForDelegate(rvfailHandler); + rewardAdShowFailCallback(rewardShowFail); + + // iv close + interCloseDelegate ivCloseHandler = new interCloseDelegate(interAdCloseHandle); + IntPtr interClose = Marshal.GetFunctionPointerForDelegate(ivCloseHandler); + interAdCloseCallback(interClose); + + // rv click + rewardClickDelegate rvClickHandler = new rewardClickDelegate(rewardAdClickHandle); + IntPtr rvClick = Marshal.GetFunctionPointerForDelegate(rvClickHandler); + rewardAdClickCallback(rvClick); + + TKG_InitSDK(); + + } + + // 通知 + public void registAPNS() + { + TKG_RegistAPNS(); + } + + public void registNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle) + { + TKG_RegistNotification(notiId,body,fireDate,badge,title,subTitle); + } + + public void removeNotification(string notiId) + { + TKG_RemoveNotification(notiId); + } + + public void removeAllNotifications() + { + TKG_RemoveAllNotification(); + } + // 震动 + public void shake(int mType, float mIntensity = 1) + { + TKG_Shake(mType,mIntensity); + } + + // ads + + public void RemoveAllAds() + { + TKG_RemoveAds(); + } + + //banner + public void LoadBanner() + { + TKG_LoadBanner(); + } + + public bool IsReadyBanner() + { + return TKG_IsReadyBanner(); + } + + public void ShowBanner(int align) + { + TKG_ShowBanner(align); + } + + public void HideBanner() + { + TKG_HideBanner(); + } + + // iv + public void LoadIntersititial() + { + TKG_LoadIntersititial(); + } + + public bool IsReadyIntersititial() + { + return TKG_IsReadyIntersititial(); + } + + public void ShowIntersititial(string _adPos, int ivType) + { + TKG_ShowIntersititial(_adPos,ivType); + } + + // rv + public void LoadRewardVideo() + { + TKG_LoadRewardVideo(); + } + + public bool IsReadyRewardVideo() + { + return TKG_IsReadyRewardVideo(); + } + + public void ShowRewardVideo(string adPos) + { + + TKG_ShowRewardVideo(adPos); + } + + // native + public void LoadNative(float width, float height) + { + TKG_LoadNative(width, height); + } + + public bool IsReadyNative() + { + return TKG_IsReadyNative(); + } + + public void ShowNative(RectTransform pRect, Camera pCam = null, string pAdPos = "") + { + TKG_TurnNativePosition(pRect, pCam, pAdPos); + } + + public void RemoveNative() + { + TKG_RemoveNative(); + } + + // other + public void Review() + { + TKG_Review(); + } + + public void OpenPrivacyURL() + { + TKG_OpenPrivacyURL(); + } + + public void OpenUserTermURL() + { + TKG_OpenUserTermURL(); + } + + public void OpenPolicyPop() + { + TKG_OpenPolicyPop(); + } + public void OpenMoreGame() + { + TKG_OpenMoreGame(); + } + + + // 在线参数 + public int GetConfigInt(string key, int defaultValue) + { + return TKG_GetConfigInt(key, defaultValue); + } + + public string GetConfigString(string key, string defaultValue) + { + return TKG_GetConfigString(key, defaultValue); + } + + public bool GetConfigBool(string key, bool defaultValue) + { + return TKG_GetConfigBool(key, defaultValue); + } + + // 游戏事件上报 + public void onEvent_GameStart(string levelId) + { + TKG_OnEvent_GameStart(levelId); + } + + public void onEvent_GameEnd(string levelId, int result) + { + TKG_OnEvent_GameEnd(levelId,result); + } + + // umeng 事件上报 + public void onEvent_UMeng(string eventSort) + { + TKG_OnEvent_UMeng1(eventSort); + } + + public void onEvent_UMeng(string eventSort, Dictionary _keyValues) + { + TKG_OnEvent_UMeng2(eventSort, TKG_DictionaryToJson(_keyValues)); + } + + public void onEvent_UMeng(string eventSort,string key,string value) + { + TKG_OnEvent_UMeng3(eventSort,key,value); + } + + public void onEvent_UMeng(string eventSort, string key1, string value1,string key2,string value2) + { + TKG_OnEvent_UMeng4(eventSort, key1, value1,key2,value2); + } + + // tenjin事件上报 + public void onEvent_Tenjin(int eventType) + { + TKG_OnEvent_Tenjin(eventType); + } + + // unity 字典转 json string + static string TKG_DictionaryToJson(Dictionary dict) + { + + var builder = new StringBuilder("{"); + foreach (KeyValuePair kv in dict) + { + builder.AppendFormat("\"{0}\":\"{1}\",", kv.Key, kv.Value); + } + builder[builder.Length - 1] = '}'; + return builder.ToString(); + } + + // 坐标转换 + public void TKG_TurnNativePosition(RectTransform pRect, Camera pCam = null, string pAdPos = "") + { + Vector3[] tWorldCorners = new Vector3[4]; + pRect.GetWorldCorners(tWorldCorners); + + Vector2 tTopLeft = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[1]); + Vector2 tBottomRight = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[3]); + float tWidth = Mathf.Abs(tBottomRight.x - tTopLeft.x); + float tHeight = Mathf.Abs(tBottomRight.y - tTopLeft.y); + //Debug.Log("x:" + tTopLeft.x + "y:" + (Screen.height - tTopLeft.y) + "width" + tWidth + "hei:" + tHeight); + + TKG_ShowNative(tTopLeft.x, Screen.height - tTopLeft.y, tWidth, tHeight, pAdPos); + } + + // callback + // iv callback + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void interCloseDelegate(); + [AOT.MonoPInvokeCallback(typeof(interCloseDelegate))] + static void interAdCloseHandle() + { + if (TKGSDKCallback.mInterAdCallback != null) + { + TKGSDKCallback.mInterAdCallback.Invoke(); + TKGSDKCallback.mInterAdCallback = null; + } + } + + // rv close-reward callback + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void rewardCloseDelegate(bool isReward); + [AOT.MonoPInvokeCallback(typeof(rewardCloseDelegate))] + static void rewardAdCloseHandle(bool isReward) + { + if (isReward) + { + if (TKGSDKCallback.mRewardCallback != null) + { + TKGSDKCallback.mRewardCallback.Invoke(true); + TKGSDKCallback.mRewardCallback = null; + } + } + else + { + if (TKGSDKCallback.mRewardCallback != null) + { + TKGSDKCallback.mRewardCallback.Invoke(false); + TKGSDKCallback.mRewardCallback = null; + } + } + } + + // rv show fail callback + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void rewardShowFailDelegate(); + [AOT.MonoPInvokeCallback(typeof(rewardShowFailDelegate))] + static void rewardAdShowFailHandle() + { + if (TKGSDKCallback.mRewardShowFailedCallback != null) + { + TKGSDKCallback.mRewardShowFailedCallback(); + TKGSDKCallback.mRewardShowFailedCallback = null; + } + } + + // rv click callback + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void rewardClickDelegate(); + [AOT.MonoPInvokeCallback(typeof(rewardClickDelegate))] + static void rewardAdClickHandle() + { + if (TKGSDKCallback.mRewardClickCallback != null) + { + TKGSDKCallback.mRewardClickCallback(); + } + } + + // pause game + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void pauseGameDelegate(bool m_pause); + [AOT.MonoPInvokeCallback(typeof(pauseGameDelegate))] + static void pauseGameHandle(bool m_pause) + { + TKGSDKCallback.mGameFocusCallback?.Invoke(!m_pause); + } + + // init sdk + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void initSDKDelegate(); + [AOT.MonoPInvokeCallback(typeof(initSDKDelegate))] + static void initSDKHandle() + { + if (TKGSDKCallback.mInitCallback != null) + { + TKGSDKCallback.mInitCallback(); + TKGSDKCallback.mInitCallback = null; + } + } + + // user source + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void TKG_UsersourceDelegate(bool isOrganic,string source); + [AOT.MonoPInvokeCallback(typeof(TKG_UsersourceDelegate))] + static void userSourceHandle(bool isOrganic, string source) + { + if (TKGSDKCallback.mTKGUserSourceCallback != null) + { + TKGSDKCallback.mTKGUserSourceCallback(isOrganic,source); + TKGSDKCallback.mTKGUserSourceCallback = null; + } + } + + // dll + [DllImport("__Internal")] + private static extern void TKG_Shake(int mType, float mIntensity); + + [DllImport("__Internal")] + private static extern void TKG_InitSDK(); + + // event umeng + [DllImport("__Internal")] + private static extern void TKG_OnEvent_UMeng1(string s1); + + [DllImport("__Internal")] + private static extern void TKG_OnEvent_UMeng2(string s1, string s2); + + [DllImport("__Internal")] + private static extern void TKG_OnEvent_UMeng3(string s1, string key, string value); + + [DllImport("__Internal")] + private static extern void TKG_OnEvent_UMeng4(string s1, string key1, string value1, string key2, string value2); + + // event tenjin + [DllImport("__Internal")] + private static extern void TKG_OnEvent_Tenjin(int eventType); + + // event game + [DllImport("__Internal")] + private static extern void TKG_OnEvent_GameStart(string levelId); + [DllImport("__Internal")] + private static extern void TKG_OnEvent_GameEnd(string levelId, int result); + + // other + [DllImport("__Internal")] + private static extern void TKG_Review(); + + [DllImport("__Internal")] + private static extern void TKG_OpenPrivacyURL(); + + [DllImport("__Internal")] + private static extern void TKG_OpenUserTermURL(); + + [DllImport("__Internal")] + private static extern void TKG_OpenPolicyPop(); + + [DllImport("__Internal")] + private static extern void TKG_OpenMoreGame(); + + // ads + [DllImport("__Internal")] + private static extern void TKG_LoadBanner(); + + [DllImport("__Internal")] + private static extern bool TKG_IsReadyBanner(); + + [DllImport("__Internal")] + private static extern void TKG_ShowBanner(int align); + + [DllImport("__Internal")] + private static extern void TKG_HideBanner(); + + [DllImport("__Internal")] + private static extern void TKG_LoadIntersititial(); + + [DllImport("__Internal")] + private static extern bool TKG_IsReadyIntersititial(); + + [DllImport("__Internal")] + private static extern void TKG_ShowIntersititial(string adPos,int ivType); + + [DllImport("__Internal")] + private static extern void TKG_LoadRewardVideo(); + + [DllImport("__Internal")] + private static extern bool TKG_IsReadyRewardVideo(); + + [DllImport("__Internal")] + private static extern void TKG_ShowRewardVideo(string adPos); + + [DllImport("__Internal")] + private static extern void TKG_LoadNative(float width, float height); + + [DllImport("__Internal")] + private static extern bool TKG_IsReadyNative(); + + [DllImport("__Internal")] + private static extern void TKG_ShowNative(float x, float y, float w, float h, string adPos); + + [DllImport("__Internal")] + private static extern void TKG_RemoveNative(); + + // remote config + [DllImport("__Internal")] + private static extern int TKG_GetConfigInt(string key, int defaultValue); + + [DllImport("__Internal")] + private static extern string TKG_GetConfigString(string key, string defaultValue); + + [DllImport("__Internal")] + private static extern bool TKG_GetConfigBool(string key, bool defaultValue); + + [DllImport("__Internal")] + private static extern bool TKG_SetLogged(bool enable); + + [DllImport("__Internal")] + private static extern bool TKG_RemoveAds(); + + // callback + // iv close + [DllImport("__Internal")] + public static extern void interAdCloseCallback( + IntPtr interClose + ); + + // rv close + [DllImport("__Internal")] + public static extern void rewardAdCloseCallback( + IntPtr rewardClose + ); + + // rv click + [DllImport("__Internal")] + public static extern void rewardAdClickCallback( + IntPtr rewardClick + ); + + // rv show fail + [DllImport("__Internal")] + public static extern void rewardAdShowFailCallback( + IntPtr rewardShowFail + ); + + // pause game + [DllImport("__Internal")] + public static extern void pauseGameCallback( + IntPtr pauseGame + ); + + // init sdk + [DllImport("__Internal")] + public static extern void initSDKCallback( + IntPtr initSdk + ); + + // user source + [DllImport("__Internal")] + public static extern void userSourceCallback( + IntPtr userSource + ); + + // 设置unity版本 + [DllImport("__Internal")] + private static extern void TKG_SetUnityVersion(string version); + + // 通知 + [DllImport("__Internal")] + private static extern void TKG_RegistAPNS(); + + [DllImport("__Internal")] + private static extern void TKG_RemoveAllNotification(); + + [DllImport("__Internal")] + private static extern void TKG_RemoveNotification(string notiId); + + [DllImport("__Internal")] + private static extern void TKG_RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle); + + // ============================ old sdk todo ======================== + + //设置log开关 + public void SetLogEnable(bool enable) + { + TKG_SetLogged(enable); + } + + public void SetUnitySDKVersion(string version) + { + TKG_SetUnityVersion(version); + } +} + +#endif diff --git a/Assets/TKGSDK/Common/internal/iOS/TGiOSAdmanager.cs.meta b/Assets/TKGSDK/Common/internal/iOS/TGiOSAdmanager.cs.meta new file mode 100644 index 00000000..f538460a --- /dev/null +++ b/Assets/TKGSDK/Common/internal/iOS/TGiOSAdmanager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4796c003fbf746869238b54b37eab3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config.meta b/Assets/TKGSDK/Config.meta new file mode 100644 index 00000000..164c1f5e --- /dev/null +++ b/Assets/TKGSDK/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6fb27b1d36bb84b9784a282b702a3ce0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/ConfigKeys.cs b/Assets/TKGSDK/Config/ConfigKeys.cs new file mode 100644 index 00000000..8a7a7058 --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigKeys.cs @@ -0,0 +1,79 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + public class ConfigKeys + { + #region App info + + // app name + public const string KEY_AppName = "app_name"; + // bundle id + public const string KEY_BunldId = "package_name"; + + #endregion + + #region Analytics + // umeng + public const string KEY_UMENG_APPKEY = "um_app_key"; + public const string KEY_UMENG_CHANNELID = "channel"; + + // ga + public const string KEY_GA_gameKey = "ga_key"; + public const string KEY_GA_secretKey = "ga_secretkey"; + + // tenjin + public const string KEY_TENJIN_KEY = "tenjin_api_key"; + + #endregion + + #region Ads + + // admob id + public const string KEY_Admob_AppID = "admob_id"; + + // app id + public const string KEY_TOUKA_SDK_APPID = "ad_appid"; + // app key + public const string KEY_TOUKA_SDK_APPKEY = "ad_appkey"; + + // iv id + public const string KEY_TOUKA_SDK_INTERID = "ad_interstital_id"; + // rv id + public const string KEY_TOUKA_SDK_REWARDID = "ad_reward_id"; + // splash id + public const string KEY_TOUKA_SDK_SPLASHID = "ad_splash_id"; + + // template native id // iOS use + public const string KEY_TOUKA_SDK_NATIVEID = "ad_templete_natvie_id"; + // render native id + public const string KEY_TOUKA_SDK_RENDERNATIVEID = "ad_render_native_id"; + // banner id + public const string KEY_TOUKA_SDK_BANNERID = "ad_banner_id"; + // native banner id + public const string KEY_TOUKA_SDK_NATIVEBANNERID = "ad_native_banner_id"; + // native splash id + public const string KEY_TOUKA_SDK_NATIVESPLASHID = "ad_native_splash_id"; + + + #endregion + + #region Basic Config + // PlayerAge + public const string KEY_PlayerAge = "tka_age"; + // GameTheme + public const string KEY_GameTheme = "tka_theme"; + // privacy url + public const string KEY_PrivacyURL = "tka_url_privacy"; + // agreement url + public const string KEY_AgreementURL = "tka_url_agreement"; + // more game url + public const string KEY_MoreGameURL = "tka_url_moregame"; + + #endregion + + } + +} diff --git a/Assets/TKGSDK/Config/ConfigKeys.cs.meta b/Assets/TKGSDK/Config/ConfigKeys.cs.meta new file mode 100644 index 00000000..691602ab --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigKeys.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6f1983a87ac847b694ceaea128c3867 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/ConfigTools.meta b/Assets/TKGSDK/Config/ConfigTools.meta new file mode 100644 index 00000000..70b2945f --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8dbadde55b7344be28aa3c3093247c8f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGFileTools.cs b/Assets/TKGSDK/Config/ConfigTools/TKGFileTools.cs new file mode 100644 index 00000000..1ff7d5b8 --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGFileTools.cs @@ -0,0 +1,58 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Networking; + +namespace Touka +{ + public class TKGFileTools + { + /// + /// 通过UnityWebRequest获取本地StreamingAssets文件夹中的文件 + /// + /// only for android .properties + /// + /// 文件名称 + /// + public static string UnityWebRequestFile(string fileName) + { + string url = GetFileURL(fileName); + TKGDebugger.LogError("Warning: If an exception occurs, check whether the 「Assets/StreamingAssets/Configs/tkg_config.properties」 file exists : " + url); + UnityWebRequest request = UnityWebRequest.Get(url); + request.SendWebRequest();//读取数据 + while (true) + { + if (request.downloadHandler.isDone)//是否读取完数据 + { + return request.downloadHandler.text; + } + } + } + + /// + /// get file url + /// + /// + /// + public static string GetFileURL(string fileName) + { + string url = ""; + + #region 分平台判断 StreamingAssets 路径 + //如果在编译器或者单机中 + #endregion + +#if UNITY_EDITOR || UNITY_STANDALONE + url = "file://" + Application.dataPath + "/StreamingAssets/" + fileName; + //否则如果在Iphone下 +#elif UNITY_IPHONE + url = "file://" + Application.dataPath + "/Raw/"+ fileName; + //否则如果在android下 +#elif UNITY_ANDROID + url = "jar:file://" + Application.dataPath + "!/assets/"+ fileName; +#endif + return url; + } + + } +} diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGFileTools.cs.meta b/Assets/TKGSDK/Config/ConfigTools/TKGFileTools.cs.meta new file mode 100644 index 00000000..f6c54732 --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGFileTools.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3f79e2611bd44fde98da03664dc68ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGLoadPlistConfig.cs b/Assets/TKGSDK/Config/ConfigTools/TKGLoadPlistConfig.cs new file mode 100644 index 00000000..24450ba5 --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGLoadPlistConfig.cs @@ -0,0 +1,93 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Xml; +using UnityEngine; + +namespace Touka +{ + public class TKGLoadPlistConfig + { + static string resourcePath = Application.dataPath; + static string extraStr = ".plist"; + + public static PlayerPrefPair[] GetToukaConfig( string _configFile , string region) + { + return GetAllFromPlist(resourcePath + "/Configs/"+region+"/" + _configFile + extraStr); + } + + public static PlayerPrefPair[] GetAllFromPlist(string _configPath) + { + if (File.Exists(_configPath)) + { + object plist = TKGPlist.readPlist(_configPath); + Dictionary parsed = plist as Dictionary; + + PlayerPrefPair[] tempPlayerPrefs = new PlayerPrefPair[parsed.Count]; + int i = 0; + foreach (KeyValuePair pair in parsed) + { + if (pair.Value.GetType() == typeof(double)) + { + // Some float values may come back as double, so convert them back to floats + tempPlayerPrefs[i] = new PlayerPrefPair() { Key = pair.Key, Value = (float)(double)pair.Value }; + } + else + { + tempPlayerPrefs[i] = new PlayerPrefPair() { Key = pair.Key, Value = pair.Value }; + } + + i++; + } + return tempPlayerPrefs; + } + else + { + Debug.LogError(_configPath + " Not Exist!"); + return new PlayerPrefPair[0]; + } + } + + public static PlayerPrefPair[] GetAllFromXML(string _configPath) + { + if (File.Exists(resourcePath + _configPath + ".xml")) + { + TextAsset configText = (TextAsset)Resources.Load(_configPath); + + object plist = TKGPlist.readPlistSource(configText.text); + Dictionary parsed = plist as Dictionary; + + PlayerPrefPair[] tempPlayerPrefs = new PlayerPrefPair[parsed.Count]; + int i = 0; + foreach (KeyValuePair pair in parsed) + { + if (pair.Value.GetType() == typeof(double)) + { + // Some float values may come back as double, so convert them back to floats + tempPlayerPrefs[i] = new PlayerPrefPair() { Key = pair.Key, Value = (float)(double)pair.Value }; + } + else + { + tempPlayerPrefs[i] = new PlayerPrefPair() { Key = pair.Key, Value = pair.Value }; + } + + i++; + } + return tempPlayerPrefs; + } + else + { + Debug.LogError(_configPath + " Not Exist!"); + return new PlayerPrefPair[0]; + } + } + } +} + + +public struct PlayerPrefPair +{ + public string Key { get; set; } + + public object Value { get; set; } +} diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGLoadPlistConfig.cs.meta b/Assets/TKGSDK/Config/ConfigTools/TKGLoadPlistConfig.cs.meta new file mode 100644 index 00000000..4c5d4531 --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGLoadPlistConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc8e0e50a0f134006ba379d27b5e42ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGLoadPropertiesConfig.cs b/Assets/TKGSDK/Config/ConfigTools/TKGLoadPropertiesConfig.cs new file mode 100644 index 00000000..9ffc98ee --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGLoadPropertiesConfig.cs @@ -0,0 +1,61 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; + +namespace Touka +{ + public class TKGLoadPropertiesConfig : MonoBehaviour + { + static string resourcePath = Application.dataPath + "/"; // + "Configs/"; + static string toukaconfigConfigPath = "Configs/"; + static string toukaconfigPathCN = "CN/"; + static string toukaconfigPathGB = "GB/"; + static string toukaConfigFileName = "tkg_config"; + + static string extraStr = ".properties"; + + public static PlayerPrefPair[] GetToukaConfig(AppChannel _appChannel) + { + string configpath = ""; + if(_appChannel == AppChannel.GooglePlay) + { + configpath = toukaconfigPathGB; + } + else + { + configpath = toukaconfigPathCN; + } + + return GetAllFromProperties(toukaconfigConfigPath + configpath + toukaConfigFileName + extraStr); + } + + public static PlayerPrefPair[] GetAllFromProperties(string _configPath) + { + string path = resourcePath + _configPath; + TKGDebugger.LogDebug("GetAllFromProperties path : " + path + " , _configPath : " + _configPath); + + Hashtable ht = TKGProperties.Load(path); + if(ht.Count > 0) + { + PlayerPrefPair[] tempPlayerPrefs = new PlayerPrefPair[ht.Count]; + int i = 0; + foreach (string key in ht.Keys) + { + tempPlayerPrefs[i] = new PlayerPrefPair() { Key = key, Value = ht[key] }; + i++; + } + + return tempPlayerPrefs; + } + else + { + TKGDebugger.LogDebug("Config is null, path : " + path); + return new PlayerPrefPair[0]; + } + + + } + } + +} diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGLoadPropertiesConfig.cs.meta b/Assets/TKGSDK/Config/ConfigTools/TKGLoadPropertiesConfig.cs.meta new file mode 100644 index 00000000..34087827 --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGLoadPropertiesConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1033ac15a5e2645579fa3e884ef3db23 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGPlist.cs b/Assets/TKGSDK/Config/ConfigTools/TKGPlist.cs new file mode 100644 index 00000000..f85c0638 --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGPlist.cs @@ -0,0 +1,961 @@ +// +// PlistCS Property List (plist) serialization and parsing library. +// +// https://github.com/animetrics/PlistCS +// +// Copyright (c) 2011 Animetrics Inc. (marc@animetrics.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Xml; + +namespace Touka +{ + public static class TKGPlist + { + private static List offsetTable = new List(); + private static List objectTable = new List(); + private static int refCount; + private static int objRefSize; + private static int offsetByteSize; + private static long offsetTableOffset; + + #region Public Functions + + public static object readPlist(string path) + { + using (FileStream f = new FileStream(path, FileMode.Open, FileAccess.Read)) + { + return readPlist(f, plistType.Auto); + } + } + + public static object readPlistSource(string source) + { + return readPlist(System.Text.Encoding.UTF8.GetBytes(source)); + } + + public static object readPlist(byte[] data) + { + return readPlist(new MemoryStream(data), plistType.Auto); + } + + public static plistType getPlistType(Stream stream) + { + byte[] magicHeader = new byte[8]; + stream.Read(magicHeader, 0, 8); + + if (BitConverter.ToInt64(magicHeader, 0) == 3472403351741427810) + { + return plistType.Binary; + } + else + { + return plistType.Xml; + } + } + + public static object readPlist(Stream stream, plistType type) + { + if (type == plistType.Auto) + { + type = getPlistType(stream); + stream.Seek(0, SeekOrigin.Begin); + } + + if (type == plistType.Binary) + { + using (BinaryReader reader = new BinaryReader(stream)) + { + byte[] data = reader.ReadBytes((int) reader.BaseStream.Length); + return readBinary(data); + } + } + else + { + XmlDocument xml = new XmlDocument(); + xml.XmlResolver = null; + xml.Load(stream); + return readXml(xml); + } + } + + public static void writeXml(object value, string path) + { + using (StreamWriter writer = new StreamWriter(path)) + { + writer.Write(writeXml(value)); + } + } + + public static void writeXml(object value, Stream stream) + { + using (StreamWriter writer = new StreamWriter(stream)) + { + writer.Write(writeXml(value)); + } + } + + public static string writeXml(object value) + { + using (MemoryStream ms = new MemoryStream()) + { + XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); + xmlWriterSettings.Encoding = new System.Text.UTF8Encoding(false); + xmlWriterSettings.ConformanceLevel = ConformanceLevel.Document; + xmlWriterSettings.Indent = true; + + using (XmlWriter xmlWriter = XmlWriter.Create(ms, xmlWriterSettings)) + { + xmlWriter.WriteStartDocument(); + //xmlWriter.WriteComment("DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" " + "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\""); + xmlWriter.WriteDocType("plist", "-//Apple Computer//DTD PLIST 1.0//EN", "http://www.apple.com/DTDs/PropertyList-1.0.dtd", null); + xmlWriter.WriteStartElement("plist"); + xmlWriter.WriteAttributeString("version", "1.0"); + compose(value, xmlWriter); + xmlWriter.WriteEndElement(); + xmlWriter.WriteEndDocument(); + xmlWriter.Flush(); + xmlWriter.Close(); + return System.Text.Encoding.UTF8.GetString(ms.ToArray()); + } + } + } + + public static void writeBinary(object value, string path) + { + using (BinaryWriter writer = new BinaryWriter(new FileStream(path, FileMode.Create))) + { + writer.Write(writeBinary(value)); + } + } + + public static void writeBinary(object value, Stream stream) + { + using (BinaryWriter writer = new BinaryWriter(stream)) + { + writer.Write(writeBinary(value)); + } + } + + public static byte[] writeBinary(object value) + { + offsetTable.Clear(); + objectTable.Clear(); + refCount = 0; + objRefSize = 0; + offsetByteSize = 0; + offsetTableOffset = 0; + + //Do not count the root node, subtract by 1 + int totalRefs = countObject(value) - 1; + + refCount = totalRefs; + + objRefSize = RegulateNullBytes(BitConverter.GetBytes(refCount)).Length; + + composeBinary(value); + + writeBinaryString("bplist00", false); + + offsetTableOffset = (long)objectTable.Count; + + offsetTable.Add(objectTable.Count - 8); + + offsetByteSize = RegulateNullBytes(BitConverter.GetBytes(offsetTable[offsetTable.Count-1])).Length; + + List offsetBytes = new List(); + + offsetTable.Reverse(); + + for (int i = 0; i < offsetTable.Count; i++) + { + offsetTable[i] = objectTable.Count - offsetTable[i]; + byte[] buffer = RegulateNullBytes(BitConverter.GetBytes(offsetTable[i]), offsetByteSize); + Array.Reverse(buffer); + offsetBytes.AddRange(buffer); + } + + objectTable.AddRange(offsetBytes); + + objectTable.AddRange(new byte[6]); + objectTable.Add(Convert.ToByte(offsetByteSize)); + objectTable.Add(Convert.ToByte(objRefSize)); + + var a = BitConverter.GetBytes((long) totalRefs + 1); + Array.Reverse(a); + objectTable.AddRange(a); + + objectTable.AddRange(BitConverter.GetBytes((long)0)); + a = BitConverter.GetBytes(offsetTableOffset); + Array.Reverse(a); + objectTable.AddRange(a); + + return objectTable.ToArray(); + } + + #endregion + + #region Private Functions + + private static object readXml(XmlDocument xml) + { + XmlNode rootNode = xml.DocumentElement.ChildNodes[0]; + return parse(rootNode); + } + + private static object readBinary(byte[] data) + { + offsetTable.Clear(); + List offsetTableBytes = new List(); + objectTable.Clear(); + refCount = 0; + objRefSize = 0; + offsetByteSize = 0; + offsetTableOffset = 0; + + List bList = new List(data); + + List trailer = bList.GetRange(bList.Count - 32, 32); + + parseTrailer(trailer); + + objectTable = bList.GetRange(0, (int)offsetTableOffset); + + offsetTableBytes = bList.GetRange((int)offsetTableOffset, bList.Count - (int)offsetTableOffset - 32); + + parseOffsetTable(offsetTableBytes); + + return parseBinary(0); + } + + private static Dictionary parseDictionary(XmlNode node) + { + XmlNodeList children = node.ChildNodes; + if (children.Count % 2 != 0) + { + throw new DataMisalignedException("Dictionary elements must have an even number of child nodes"); + } + + Dictionary dict = new Dictionary(); + + for (int i = 0; i < children.Count; i += 2) + { + XmlNode keynode = children[i]; + XmlNode valnode = children[i + 1]; + + if (keynode.Name != "key") + { + throw new ApplicationException("expected a key node"); + } + + object result = parse(valnode); + + if (result != null) + { + dict.Add(keynode.InnerText, result); + } + } + + return dict; + } + + private static List parseArray(XmlNode node) + { + List array = new List(); + + foreach (XmlNode child in node.ChildNodes) + { + object result = parse(child); + if (result != null) + { + array.Add(result); + } + } + + return array; + } + + private static void composeArray(List value, XmlWriter writer) + { + writer.WriteStartElement("array"); + foreach (object obj in value) + { + compose(obj, writer); + } + writer.WriteEndElement(); + } + + private static object parse(XmlNode node) + { + switch (node.Name) + { + case "dict": + return parseDictionary(node); + case "array": + return parseArray(node); + case "string": + return node.InnerText; + case "integer": + // int result; + //int.TryParse(node.InnerText, System.Globalization.NumberFormatInfo.InvariantInfo, out result); + return Convert.ToInt32(node.InnerText, System.Globalization.NumberFormatInfo.InvariantInfo); + case "real": + return Convert.ToDouble(node.InnerText,System.Globalization.NumberFormatInfo.InvariantInfo); + case "false": + return false; + case "true": + return true; + case "null": + return null; + case "date": + return XmlConvert.ToDateTime(node.InnerText, XmlDateTimeSerializationMode.Utc); + case "data": + return Convert.FromBase64String(node.InnerText); + } + + throw new ApplicationException(String.Format("Plist Node `{0}' is not supported", node.Name)); + } + + private static void compose(object value, XmlWriter writer) + { + + if (value == null || value is string) + { + writer.WriteElementString("string", value as string); + } + else if (value is int || value is long) + { + writer.WriteElementString("integer", ((int)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo)); + } + else if (value is System.Collections.Generic.Dictionary || + value.GetType().ToString().StartsWith("System.Collections.Generic.Dictionary`2[System.String")) + { + //Convert to Dictionary + Dictionary dic = value as Dictionary; + if (dic == null) + { + dic = new Dictionary(); + IDictionary idic = (IDictionary)value; + foreach (var key in idic.Keys) + { + dic.Add(key.ToString(), idic[key]); + } + } + writeDictionaryValues(dic, writer); + } + else if (value is List) + { + composeArray((List)value, writer); + } + else if (value is byte[]) + { + writer.WriteElementString("data", Convert.ToBase64String((Byte[])value)); + } + else if (value is float || value is double) + { + writer.WriteElementString("real", ((double)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo)); + } + else if (value is DateTime) + { + DateTime time = (DateTime)value; + string theString = XmlConvert.ToString(time, XmlDateTimeSerializationMode.Utc); + writer.WriteElementString("date", theString);//, "yyyy-MM-ddTHH:mm:ssZ")); + } + else if (value is bool) + { + writer.WriteElementString(value.ToString().ToLower(), ""); + } + else + { + throw new Exception(String.Format("Value type '{0}' is unhandled", value.GetType().ToString())); + } + } + + private static void writeDictionaryValues(Dictionary dictionary, XmlWriter writer) + { + writer.WriteStartElement("dict"); + foreach (string key in dictionary.Keys) + { + object value = dictionary[key]; + writer.WriteElementString("key", key); + compose(value, writer); + } + writer.WriteEndElement(); + } + + private static int countObject(object value) + { + int count = 0; + switch (value.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + Dictionary dict = (Dictionary)value; + foreach (string key in dict.Keys) + { + count += countObject(dict[key]); + } + count += dict.Keys.Count; + count++; + break; + case "System.Collections.Generic.List`1[System.Object]": + List list = (List)value; + foreach (object obj in list) + { + count += countObject(obj); + } + count++; + break; + default: + count++; + break; + } + return count; + } + + private static byte[] writeBinaryDictionary(Dictionary dictionary) + { + List buffer = new List(); + List header = new List(); + List refs = new List(); + for (int i = dictionary.Count - 1; i >= 0; i--) + { + var o = new object[dictionary.Count]; + dictionary.Values.CopyTo(o, 0); + composeBinary(o[i]); + offsetTable.Add(objectTable.Count); + refs.Add(refCount); + refCount--; + } + for (int i = dictionary.Count - 1; i >= 0; i--) + { + var o = new string[dictionary.Count]; + dictionary.Keys.CopyTo(o, 0); + composeBinary(o[i]);//); + offsetTable.Add(objectTable.Count); + refs.Add(refCount); + refCount--; + } + + if (dictionary.Count < 15) + { + header.Add(Convert.ToByte(0xD0 | Convert.ToByte(dictionary.Count))); + } + else + { + header.Add(0xD0 | 0xf); + header.AddRange(writeBinaryInteger(dictionary.Count, false)); + } + + + foreach (int val in refs) + { + byte[] refBuffer = RegulateNullBytes(BitConverter.GetBytes(val), objRefSize); + Array.Reverse(refBuffer); + buffer.InsertRange(0, refBuffer); + } + + buffer.InsertRange(0, header); + + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] composeBinaryArray(List objects) + { + List buffer = new List(); + List header = new List(); + List refs = new List(); + + for (int i = objects.Count - 1; i >= 0; i--) + { + composeBinary(objects[i]); + offsetTable.Add(objectTable.Count); + refs.Add(refCount); + refCount--; + } + + if (objects.Count < 15) + { + header.Add(Convert.ToByte(0xA0 | Convert.ToByte(objects.Count))); + } + else + { + header.Add(0xA0 | 0xf); + header.AddRange(writeBinaryInteger(objects.Count, false)); + } + + foreach (int val in refs) + { + byte[] refBuffer = RegulateNullBytes(BitConverter.GetBytes(val), objRefSize); + Array.Reverse(refBuffer); + buffer.InsertRange(0, refBuffer); + } + + buffer.InsertRange(0, header); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] composeBinary(object obj) + { + byte[] value; + switch (obj.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + value = writeBinaryDictionary((Dictionary)obj); + return value; + + case "System.Collections.Generic.List`1[System.Object]": + value = composeBinaryArray((List)obj); + return value; + + case "System.Byte[]": + value = writeBinaryByteArray((byte[])obj); + return value; + + case "System.Double": + value = writeBinaryDouble((double)obj); + return value; + + case "System.Int32": + value = writeBinaryInteger((int)obj, true); + return value; + + case "System.String": + value = writeBinaryString((string)obj, true); + return value; + + case "System.DateTime": + value = writeBinaryDate((DateTime)obj); + return value; + + case "System.Boolean": + value = writeBinaryBool((bool)obj); + return value; + + default: + return new byte[0]; + } + } + + public static byte[] writeBinaryDate(DateTime obj) + { + List buffer =new List(RegulateNullBytes(BitConverter.GetBytes(PlistDateConverter.ConvertToAppleTimeStamp(obj)), 8)); + buffer.Reverse(); + buffer.Insert(0, 0x33); + objectTable.InsertRange(0, buffer); + return buffer.ToArray(); + } + + public static byte[] writeBinaryBool(bool obj) + { + List buffer = new List(new byte[1] { (bool)obj ? (byte)9 : (byte)8 }); + objectTable.InsertRange(0, buffer); + return buffer.ToArray(); + } + + private static byte[] writeBinaryInteger(int value, bool write) + { + List buffer = new List(BitConverter.GetBytes((long) value)); + buffer =new List(RegulateNullBytes(buffer.ToArray())); + while (buffer.Count != Math.Pow(2, Math.Log(buffer.Count) / Math.Log(2))) + buffer.Add(0); + int header = 0x10 | (int)(Math.Log(buffer.Count) / Math.Log(2)); + + buffer.Reverse(); + + buffer.Insert(0, Convert.ToByte(header)); + + if (write) + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] writeBinaryDouble(double value) + { + List buffer =new List(RegulateNullBytes(BitConverter.GetBytes(value), 4)); + while (buffer.Count != Math.Pow(2, Math.Log(buffer.Count) / Math.Log(2))) + buffer.Add(0); + int header = 0x20 | (int)(Math.Log(buffer.Count) / Math.Log(2)); + + buffer.Reverse(); + + buffer.Insert(0, Convert.ToByte(header)); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] writeBinaryByteArray(byte[] value) + { + List buffer = new List(value); + List header = new List(); + if (value.Length < 15) + { + header.Add(Convert.ToByte(0x40 | Convert.ToByte(value.Length))); + } + else + { + header.Add(0x40 | 0xf); + header.AddRange(writeBinaryInteger(buffer.Count, false)); + } + + buffer.InsertRange(0, header); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] writeBinaryString(string value, bool head) + { + List buffer = new List(); + List header = new List(); + foreach (char chr in value.ToCharArray()) + buffer.Add(Convert.ToByte(chr)); + + if (head) + { + if (value.Length < 15) + { + header.Add(Convert.ToByte(0x50 | Convert.ToByte(value.Length))); + } + else + { + header.Add(0x50 | 0xf); + header.AddRange(writeBinaryInteger(buffer.Count, false)); + } + } + + buffer.InsertRange(0, header); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] RegulateNullBytes(byte[] value) + { + return RegulateNullBytes(value, 1); + } + + private static byte[] RegulateNullBytes(byte[] value, int minBytes) + { + Array.Reverse(value); + List bytes = new List(value); + for (int i = 0; i < bytes.Count; i++) + { + if (bytes[i] == 0 && bytes.Count > minBytes) + { + bytes.Remove(bytes[i]); + i--; + } + else + break; + } + + if (bytes.Count < minBytes) + { + int dist = minBytes - bytes.Count; + for (int i = 0; i < dist; i++) + bytes.Insert(0, 0); + } + + value = bytes.ToArray(); + Array.Reverse(value); + return value; + } + + private static void parseTrailer(List trailer) + { + offsetByteSize = BitConverter.ToInt32(RegulateNullBytes(trailer.GetRange(6, 1).ToArray(), 4), 0); + objRefSize = BitConverter.ToInt32(RegulateNullBytes(trailer.GetRange(7, 1).ToArray(), 4), 0); + byte[] refCountBytes = trailer.GetRange(12, 4).ToArray(); + Array.Reverse(refCountBytes); + refCount = BitConverter.ToInt32(refCountBytes, 0); + byte[] offsetTableOffsetBytes = trailer.GetRange(24, 8).ToArray(); + Array.Reverse(offsetTableOffsetBytes); + offsetTableOffset = BitConverter.ToInt64(offsetTableOffsetBytes, 0); + } + + private static void parseOffsetTable(List offsetTableBytes) + { + for (int i = 0; i < offsetTableBytes.Count; i += offsetByteSize) + { + byte[] buffer = offsetTableBytes.GetRange(i, offsetByteSize).ToArray(); + Array.Reverse(buffer); + offsetTable.Add(BitConverter.ToInt32(RegulateNullBytes(buffer, 4), 0)); + } + } + + private static object parseBinaryDictionary(int objRef) + { + Dictionary buffer = new Dictionary(); + List refs = new List(); + int refCount = 0; + + int refStartPosition; + refCount = getCount(offsetTable[objRef], out refStartPosition); + + + if (refCount < 15) + refStartPosition = offsetTable[objRef] + 1; + else + refStartPosition = offsetTable[objRef] + 2 + RegulateNullBytes(BitConverter.GetBytes(refCount), 1).Length; + + for (int i = refStartPosition; i < refStartPosition + refCount * 2 * objRefSize; i += objRefSize) + { + byte[] refBuffer = objectTable.GetRange(i, objRefSize).ToArray(); + Array.Reverse(refBuffer); + refs.Add(BitConverter.ToInt32(RegulateNullBytes(refBuffer, 4), 0)); + } + + for (int i = 0; i < refCount; i++) + { + buffer.Add((string)parseBinary(refs[i]), parseBinary(refs[i + refCount])); + } + + return buffer; + } + + private static object parseBinaryArray(int objRef) + { + List buffer = new List(); + List refs = new List(); + int refCount = 0; + + int refStartPosition; + refCount = getCount(offsetTable[objRef], out refStartPosition); + + + if (refCount < 15) + refStartPosition = offsetTable[objRef] + 1; + else + //The following integer has a header aswell so we increase the refStartPosition by two to account for that. + refStartPosition = offsetTable[objRef] + 2 + RegulateNullBytes(BitConverter.GetBytes(refCount), 1).Length; + + for (int i = refStartPosition; i < refStartPosition + refCount * objRefSize; i += objRefSize) + { + byte[] refBuffer = objectTable.GetRange(i, objRefSize).ToArray(); + Array.Reverse(refBuffer); + refs.Add(BitConverter.ToInt32(RegulateNullBytes(refBuffer, 4), 0)); + } + + for (int i = 0; i < refCount; i++) + { + buffer.Add(parseBinary(refs[i])); + } + + return buffer; + } + + private static int getCount(int bytePosition, out int newBytePosition) + { + byte headerByte = objectTable[bytePosition]; + byte headerByteTrail = Convert.ToByte(headerByte & 0xf); + int count; + if (headerByteTrail < 15) + { + count = headerByteTrail; + newBytePosition = bytePosition + 1; + } + else + count = (int)parseBinaryInt(bytePosition + 1, out newBytePosition); + return count; + } + + private static object parseBinary(int objRef) + { + byte header = objectTable[offsetTable[objRef]]; + switch (header & 0xF0) + { + case 0: + { + //If the byte is + //0 return null + //9 return true + //8 return false + return (objectTable[offsetTable[objRef]] == 0) ? (object)null : ((objectTable[offsetTable[objRef]] == 9) ? true : false); + } + case 0x10: + { + return parseBinaryInt(offsetTable[objRef]); + } + case 0x20: + { + return parseBinaryReal(offsetTable[objRef]); + } + case 0x30: + { + return parseBinaryDate(offsetTable[objRef]); + } + case 0x40: + { + return parseBinaryByteArray(offsetTable[objRef]); + } + case 0x50://String ASCII + { + return parseBinaryAsciiString(offsetTable[objRef]); + } + case 0x60://String Unicode + { + return parseBinaryUnicodeString(offsetTable[objRef]); + } + case 0xD0: + { + return parseBinaryDictionary(objRef); + } + case 0xA0: + { + return parseBinaryArray(objRef); + } + } + throw new Exception("This type is not supported"); + } + + public static object parseBinaryDate(int headerPosition) + { + byte[] buffer = objectTable.GetRange(headerPosition + 1, 8).ToArray(); + Array.Reverse(buffer); + double appleTime = BitConverter.ToDouble(buffer, 0); + DateTime result = PlistDateConverter.ConvertFromAppleTimeStamp(appleTime); + return result; + } + + private static object parseBinaryInt(int headerPosition) + { + int output; + return parseBinaryInt(headerPosition, out output); + } + + private static object parseBinaryInt(int headerPosition, out int newHeaderPosition) + { + byte header = objectTable[headerPosition]; + int byteCount = (int)Math.Pow(2, header & 0xf); + byte[] buffer = objectTable.GetRange(headerPosition + 1, byteCount).ToArray(); + Array.Reverse(buffer); + //Add one to account for the header byte + newHeaderPosition = headerPosition + byteCount + 1; + return BitConverter.ToInt32(RegulateNullBytes(buffer, 4), 0); + } + + private static object parseBinaryReal(int headerPosition) + { + byte header = objectTable[headerPosition]; + int byteCount = (int)Math.Pow(2, header & 0xf); + byte[] buffer = objectTable.GetRange(headerPosition + 1, byteCount).ToArray(); + Array.Reverse(buffer); + + return BitConverter.ToDouble(RegulateNullBytes(buffer, 8), 0); + } + + private static object parseBinaryAsciiString(int headerPosition) + { + int charStartPosition; + int charCount = getCount(headerPosition, out charStartPosition); + + var buffer = objectTable.GetRange(charStartPosition, charCount); + return buffer.Count > 0 ? Encoding.ASCII.GetString(buffer.ToArray()) : string.Empty; + } + + private static object parseBinaryUnicodeString(int headerPosition) + { + int charStartPosition; + int charCount = getCount(headerPosition, out charStartPosition); + charCount = charCount * 2; + + byte[] buffer = new byte[charCount]; + byte one, two; + + for (int i = 0; i < charCount; i+=2) + { + one = objectTable.GetRange(charStartPosition+i,1)[0]; + two = objectTable.GetRange(charStartPosition + i+1, 1)[0]; + + if (BitConverter.IsLittleEndian) + { + buffer[i] = two; + buffer[i + 1] = one; + } + else + { + buffer[i] = one; + buffer[i + 1] = two; + } + } + + return Encoding.Unicode.GetString(buffer); + } + + private static object parseBinaryByteArray(int headerPosition) + { + int byteStartPosition; + int byteCount = getCount(headerPosition, out byteStartPosition); + return objectTable.GetRange(byteStartPosition, byteCount).ToArray(); + } + + #endregion + } + + public enum plistType + { + Auto, Binary, Xml + } + + public static class PlistDateConverter + { + public static long timeDifference = 978307200; + + public static long GetAppleTime(long unixTime) + { + return unixTime - timeDifference; + } + + public static long GetUnixTime(long appleTime) + { + return appleTime + timeDifference; + } + + public static DateTime ConvertFromAppleTimeStamp(double timestamp) + { + DateTime origin = new DateTime(2001, 1, 1, 0, 0, 0, 0); + return origin.AddSeconds(timestamp); + } + + public static double ConvertToAppleTimeStamp(DateTime date) + { + DateTime begin = new DateTime(2001, 1, 1, 0, 0, 0, 0); + TimeSpan diff = date - begin; + return Math.Floor(diff.TotalSeconds); + } + } +} diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGPlist.cs.meta b/Assets/TKGSDK/Config/ConfigTools/TKGPlist.cs.meta new file mode 100644 index 00000000..8d060691 --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGPlist.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 381bd318429f34fab8edc6eb1d38d997 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGProperties.cs b/Assets/TKGSDK/Config/ConfigTools/TKGProperties.cs new file mode 100644 index 00000000..83808c6b --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGProperties.cs @@ -0,0 +1,42 @@ +using System; +using System.IO; +using System.Text; +using System.Collections; +using UnityEngine; + +namespace Touka +{ + public class TKGProperties + { + public static Hashtable Load(string file) + { + Hashtable ht = new Hashtable(16); + string content = null; + try + { + content = File.ReadAllText(file, Encoding.UTF8); + } + catch (Exception e) + { + return null; + } + string[] rows = content.Split('\n'); + string[] kv = null; + foreach (string c in rows) + { + if (c.Trim().Length == 0) + continue; + kv = c.Split('='); + if (kv.Length == 1) + { + ht[kv[0].Trim()] = ""; + } + else if (kv.Length == 2) + { + ht[kv[0].Trim()] = kv[1].Trim(); + } + } + return ht; + } + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/Config/ConfigTools/TKGProperties.cs.meta b/Assets/TKGSDK/Config/ConfigTools/TKGProperties.cs.meta new file mode 100644 index 00000000..28c2a7f9 --- /dev/null +++ b/Assets/TKGSDK/Config/ConfigTools/TKGProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 11fe57842d0ce30478249f770ab1bf06 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/Scripts.meta b/Assets/TKGSDK/Config/Scripts.meta new file mode 100644 index 00000000..4bc6d202 --- /dev/null +++ b/Assets/TKGSDK/Config/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9d379b89fde4f4ad4812b7f41a3cf719 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/Scripts/IAPProducts.cs b/Assets/TKGSDK/Config/Scripts/IAPProducts.cs new file mode 100644 index 00000000..dafba808 --- /dev/null +++ b/Assets/TKGSDK/Config/Scripts/IAPProducts.cs @@ -0,0 +1,16 @@ +#if USE_IAP +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Purchasing; + +public static class IAPProducts//商品ID统一小写 +{ + public const string NoAds = "com.hotpotgames.lovepuzzle.global.noads";//去广告商品ID + + public static readonly Dictionary ProductDic = new Dictionary() + { + { NoAds, ProductType.NonConsumable} + }; +} +#endif \ No newline at end of file diff --git a/Assets/TKGSDK/Config/Scripts/IAPProducts.cs.meta b/Assets/TKGSDK/Config/Scripts/IAPProducts.cs.meta new file mode 100644 index 00000000..65dae360 --- /dev/null +++ b/Assets/TKGSDK/Config/Scripts/IAPProducts.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 273966118b1974c51a4f05ecbad30d15 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/Scripts/StaticOtherConfig.cs b/Assets/TKGSDK/Config/Scripts/StaticOtherConfig.cs new file mode 100644 index 00000000..bbf4bd79 --- /dev/null +++ b/Assets/TKGSDK/Config/Scripts/StaticOtherConfig.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public static class StaticOtherConfig +{ + #region // #define + + /* + NO_SDK : If there are no SDK related library files in the project, it will not cause error reporting + */ + + #endregion + + /// + /// isDebug + /// + public static bool IsDebugLog = true; + + #region Review popup + public static int FirstLoginPopLevel = -1;//首次进入游戏弹出评价的关卡 + public static int OtherLoginPopLevel = -1;//非首次进入游戏弹出评价的关卡 + #endregion +} \ No newline at end of file diff --git a/Assets/TKGSDK/Config/Scripts/StaticOtherConfig.cs.meta b/Assets/TKGSDK/Config/Scripts/StaticOtherConfig.cs.meta new file mode 100644 index 00000000..3471b739 --- /dev/null +++ b/Assets/TKGSDK/Config/Scripts/StaticOtherConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7109073540d94454b818a71ae1cb02c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/Scripts/TKGAdPositionName.cs b/Assets/TKGSDK/Config/Scripts/TKGAdPositionName.cs new file mode 100644 index 00000000..19f31493 --- /dev/null +++ b/Assets/TKGSDK/Config/Scripts/TKGAdPositionName.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// InterstitialAd PositionName +/// (get from the product requirements) +/// +public enum TKGIVAdPositionName +{ + Game_Autoiv, + + IV_Success, + IV_Fail, + IV_Retry, + IV_NextLevel, + IV_Back, +} + +public enum TKGNativePositionName +{ + Native_Stage_Success, + Native_Stage_Fail +} + +/// +/// RewardAd PositionName +/// (get from the product requirements) +/// +public enum TKGRVPositionName +{ + RV_GetDoubleCoin, + RV_GetTips, + RV_Get_Tips, + RV_Get_Skip, + RV_Get_Revive, + RV_Get_SpecialLevel, + RV_sound_unlock, + RV_level_unlock, + RV_end_skip, +} \ No newline at end of file diff --git a/Assets/TKGSDK/Config/Scripts/TKGAdPositionName.cs.meta b/Assets/TKGSDK/Config/Scripts/TKGAdPositionName.cs.meta new file mode 100644 index 00000000..d06e769d --- /dev/null +++ b/Assets/TKGSDK/Config/Scripts/TKGAdPositionName.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26998be7ea9744ef4b965699148ba132 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/Scripts/TKGParams.cs b/Assets/TKGSDK/Config/Scripts/TKGParams.cs new file mode 100644 index 00000000..e0928199 --- /dev/null +++ b/Assets/TKGSDK/Config/Scripts/TKGParams.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; + +/* + Custom Remote Config + 1. add TKGParamKey below + 2. add key and default value to dic + 3. use online param + + */ +public static class TKGParams +{ + public static readonly Dictionary OnlineParamDic = new Dictionary() + { + // key - default value + { TKGParamKey.RemoveAdsShowCount.ToString(), 4 }, // int value // + { TKGParamKey.LevelList.ToString(), "1,78,72,70,64,65,4,66" }, // string value + { TKGParamKey.HasBlock.ToString(), 0 }, // bool value // 1:true 0:false + }; +} + +public enum TKGParamKey +{ + RemoveAdsShowCount, + LevelList, + HasBlock, +} \ No newline at end of file diff --git a/Assets/TKGSDK/Config/Scripts/TKGParams.cs.meta b/Assets/TKGSDK/Config/Scripts/TKGParams.cs.meta new file mode 100644 index 00000000..a33aae24 --- /dev/null +++ b/Assets/TKGSDK/Config/Scripts/TKGParams.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f40c87431a324172941102c4817923e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/StaticStringsKey.cs b/Assets/TKGSDK/Config/StaticStringsKey.cs new file mode 100644 index 00000000..566891a9 --- /dev/null +++ b/Assets/TKGSDK/Config/StaticStringsKey.cs @@ -0,0 +1,81 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka { + /// + /// Ads SDK Param + /// + public static class StaticStringsKey + { + #region App info + + // app name + public static string AppName = ""; + // bundle id + public static string BundleId = ""; + + #endregion + + #region Analytics + // umeng + public static string UMENG_APPKEY = ""; + public static string UMENG_CHANNELID = ""; + + // ga + public static string GA_gameKey = ""; + public static string GA_secretKey = ""; + + // tenjin + public static string TENJIN_KEY = ""; + + #endregion + + + #region Ads + + // admob id + public static string Admob_AppID = ""; + + // app id + public static string TOUKA_SDK_APPID = ""; + // app key + public static string TOUKA_SDK_APPKEY = ""; + + // iv id + public static string TOUKA_SDK_INTERID = ""; + // rv id + public static string TOUKA_SDK_REWARDID = ""; + // splash id + public static string TOUKA_SDK_SPLASHID = ""; + + // native id // iOS use + public static string TOUKA_SDK_NATIVEID = ""; + //// render native id + //public static string TOUKA_SDK_RENDERNATIVEID = ""; + // banner id + public static string TOUKA_SDK_BANNERID = ""; + // native banner id + public static string TOUKA_SDK_NATIVEBANNERID = ""; + // native splash id + public static string TOUKA_SDK_NATIVESPLASHID = ""; + + #endregion + + #region Basic Config + + // PlayerAge + public static string PlayerAge = ""; + // GameTheme + public static string GameTheme = ""; + // privacy url + public static string PrivacyURL = ""; + // agreement url + public static string AgreementURL = ""; + // more game url + public static string MoreGameURL = ""; + + #endregion + } +} + diff --git a/Assets/TKGSDK/Config/StaticStringsKey.cs.meta b/Assets/TKGSDK/Config/StaticStringsKey.cs.meta new file mode 100644 index 00000000..5b0491b6 --- /dev/null +++ b/Assets/TKGSDK/Config/StaticStringsKey.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c69a34df2d87c47a4ba9349c64b3562f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Config/TKGLoadConfig.cs b/Assets/TKGSDK/Config/TKGLoadConfig.cs new file mode 100644 index 00000000..469361a1 --- /dev/null +++ b/Assets/TKGSDK/Config/TKGLoadConfig.cs @@ -0,0 +1,241 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + public static class TKGLoadConfig + { + static string toukaconfigFile = "tkg_config"; + static string toukaconfigPathCN = "CN"; + static string toukaconfigPathGB = "GB"; + + /// + /// Load SDK Config + /// + public static void LoadSDKConfig() + { +#if UNITY_IOS + ParseiOSConfig(); +#elif UNITY_ANDROID + ParseAndroidConfig(); +#else + ParseiOSConfig(); +#endif + } + + /// + /// Parse iOS Config + /// .plist file + /// + private static PlayerPrefPair[] ParseiOSConfig() + { + PlayerPrefPair[] configs = TKGLoadConfig.ParseiOSConfigInner(); + return configs; + } + + /// + /// Parse Android Config + /// + private static PlayerPrefPair[] ParseAndroidConfig() + { +#if GooglePlay + PlayerPrefPair[] configs = TKGLoadPropertiesConfig.GetToukaConfig(AppChannel.GooglePlay); + ParseConfigsInner(configs); + return configs; +#else + PlayerPrefPair[] configs = TKGLoadPropertiesConfig.GetToukaConfig(AppChannel.GW002); + ParseConfigsInner(configs); + return configs; +#endif + + } + + /// + /// Parse iOS Config + /// .plist file + /// + private static PlayerPrefPair[] ParseiOSConfigInner() + { +#if AppStore_GB + PlayerPrefPair[] configs = TKGLoadPlistConfig.GetToukaConfig(toukaconfigFile,toukaconfigPathGB); +#else + PlayerPrefPair[] configs = TKGLoadPlistConfig.GetToukaConfig(toukaconfigFile, toukaconfigPathCN); +#endif + ParseConfigsInner(configs); + return configs; + } + + /// + /// Parse Android Config + /// + private static PlayerPrefPair[] ParseAndroidConfig(AppChannel _appChannel) + { + PlayerPrefPair[] configs = TKGLoadPropertiesConfig.GetToukaConfig(_appChannel); + ParseConfigsInner(configs); + return configs; + } + + + // get config value by key + public static string GetConfigByKey(string _key, AppChannel _appChannel) + { + PlayerPrefPair[] configs = new PlayerPrefPair[0]; +#if UNITY_IOS + configs = ParseiOSConfigInner(); +#elif UNITY_ANDROID + configs = ParseAndroidConfig(_appChannel); +#endif + for (int i = 0; i < configs.Length; i++) + { + if (configs[i].Key.Equals(_key)) + { + return configs[i].Value.ToString(); + } + } + return ""; + } + +#region parse inner + + // parse config + private static void ParseConfigsInner(PlayerPrefPair[] _configs) + { + TKGDebugger.LogDebug("----------- config content begin-----------"); + for (int i = 0; i < _configs.Length; i++) + { + bool isDebug = false; + string valueTemp = _configs[i].Value.ToString(); + // app info + if (_configs[i].Key.ToLower() == ConfigKeys.KEY_AppName.ToLower()) + { + StaticStringsKey.AppName = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_BunldId.ToLower()) + { + StaticStringsKey.BundleId = valueTemp; + isDebug = true; + } + // Analytics + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_UMENG_APPKEY.ToLower()) + { + StaticStringsKey.UMENG_APPKEY = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_UMENG_CHANNELID.ToLower()) + { + StaticStringsKey.UMENG_CHANNELID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_GA_gameKey.ToLower()) + { + StaticStringsKey.GA_gameKey = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_GA_secretKey.ToLower()) + { + StaticStringsKey.GA_secretKey = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TENJIN_KEY.ToLower()) + { + StaticStringsKey.TENJIN_KEY = valueTemp; + isDebug = true; + } + // Ads + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_Admob_AppID.ToLower()) + { + StaticStringsKey.Admob_AppID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_APPID.ToLower()) + { + StaticStringsKey.TOUKA_SDK_APPID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_APPKEY.ToLower()) + { + StaticStringsKey.TOUKA_SDK_APPKEY = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_INTERID.ToLower()) + { + StaticStringsKey.TOUKA_SDK_INTERID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_REWARDID.ToLower()) + { + StaticStringsKey.TOUKA_SDK_REWARDID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_SPLASHID.ToLower()) + { + StaticStringsKey.TOUKA_SDK_SPLASHID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_NATIVEID.ToLower()) + { + StaticStringsKey.TOUKA_SDK_NATIVEID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_RENDERNATIVEID.ToLower()) + { + StaticStringsKey.TOUKA_SDK_NATIVEID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_BANNERID.ToLower()) + { + StaticStringsKey.TOUKA_SDK_BANNERID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_NATIVEBANNERID.ToLower()) + { + StaticStringsKey.TOUKA_SDK_NATIVEBANNERID = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_TOUKA_SDK_NATIVESPLASHID.ToLower()) + { + StaticStringsKey.TOUKA_SDK_NATIVESPLASHID = valueTemp; + isDebug = true; + } + // Basic Config + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_PlayerAge.ToLower()) + { + StaticStringsKey.PlayerAge = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_GameTheme.ToLower()) + { + StaticStringsKey.GameTheme = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_PrivacyURL.ToLower()) + { + StaticStringsKey.PrivacyURL = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_AgreementURL.ToLower()) + { + StaticStringsKey.AgreementURL = valueTemp; + isDebug = true; + } + else if (_configs[i].Key.ToLower() == ConfigKeys.KEY_MoreGameURL.ToLower()) + { + StaticStringsKey.MoreGameURL = valueTemp; + isDebug = true; + } + + if (isDebug) + { + TKGDebugger.LogDebug(_configs[i].Key + " - " + _configs[i].Value); + } + } + TKGDebugger.LogDebug("----------- config content end -----------"); + } + + +#endregion + + } +} diff --git a/Assets/TKGSDK/Config/TKGLoadConfig.cs.meta b/Assets/TKGSDK/Config/TKGLoadConfig.cs.meta new file mode 100644 index 00000000..2e7d556b --- /dev/null +++ b/Assets/TKGSDK/Config/TKGLoadConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2bd116d0b8ee64d9599a1033dd163600 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Demo.meta b/Assets/TKGSDK/Demo.meta new file mode 100644 index 00000000..e3fd19a5 --- /dev/null +++ b/Assets/TKGSDK/Demo.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e5f9fc490b051448298138ce3172b399 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Demo/ToukaSDKDemo.cs b/Assets/TKGSDK/Demo/ToukaSDKDemo.cs new file mode 100644 index 00000000..86392c12 --- /dev/null +++ b/Assets/TKGSDK/Demo/ToukaSDKDemo.cs @@ -0,0 +1,311 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Touka +{ + public class ToukaSDKDemo : MonoBehaviour + { + + + public Image nativeImage; + + // Start is called before the first frame update + void Start() + { + InitSDK(); + } + + #region Init + + public void OnShowNativeAd() + { + TKGSDKManager.Instance.ShowNative(nativeImage.rectTransform); + } + + public void OnButton_Init() + { + Debug.Log("[ToukaSDKDemo] OnButton_Init click, InitSDK auto Callfirst"); + + } + + private void InitSDK() + { + OnButton_UserSource(); + OnButton_SetLogEnable(); + + TKGSDKManager.Instance.InitSDK(initCallback); + TKGSDKManager.Instance.SetLogEnable(true); + TKGSDKManager.Instance.SetRewardClickListener(ClickRewardCallback); + TKGSDKManager.Instance.RegistAPNS(); + } + + private void ClickRewardCallback() + { + Debug.Log("[ToukaSDKDemo] click reward callback"); + } + private void initCallback() + { + Debug.Log("[ToukaSDKDemo] init callback"); + } + + public void OnButton_SetLogEnable() + { + Debug.Log("[ToukaSDKDemo] SetLogEnable btn click"); + //TKGSDKManager.Instance.SetLogEnable(true); + } + + #endregion + + #region Ads + + public void OnButton_ShowInterstitialAd() + { + Debug.Log("[ToukaSDKDemo] OnButton_ShowInterstitialAd click"); + //TKGSDKManager.Instance.ShowInterstitialAd(TKGIVAdPositionName.IV_Retry, IVCallback); + DateTime now; + DateTime delay; + now = DateTime.Now; + TKGSDKManager.Instance.RegistNotification("yangwu","hello world", now.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss"),1,"Title","SubTitle"); + } + + + private void IV2Callback() + { + Debug.Log("unity [ToukaSDKDemo] IVCallback"); + } + + private void IVCallback() + { + Debug.Log("unity [ToukaSDKDemo] IVCallback 2" ); + } + + public void OnButton_ShowRewardAd() + { + Debug.Log("[ToukaSDKDemo] OnButton_ShowRewardAd click"); + TKGSDKManager.Instance.ShowRewardAd(TKGRVPositionName.RV_GetDoubleCoin, RewardResult, RvShowFailed); + } + + /// + /// Reward result + /// + /// true:reward succ, false: reward failed + private void RewardResult(bool pSucceed) + { + Debug.Log("[ToukaSDKDemo] Reward result:" + pSucceed); + + } + + /// + /// Callback of reward ad show fail + /// + private void RvShowFailed() + { + Debug.Log("[ToukaSDKDemo] Reward ads show failed"); + } + + public void OnButton_IsReadyIV() + { + Debug.Log("[ToukaSDKDemo] OnButton_IsReadyIV click"); + bool isReadyIV = TKGSDKManager.Instance.IsReadyInterstitialAd(); + Debug.Log("[ToukaSDKDemo] isReadyIV : " + isReadyIV); + } + + public void OnButton_IsReadyRV() + { + Debug.Log("[ToukaSDKDemo] OnButton_IsReadyRV click"); + bool isReadyRV = TKGSDKManager.Instance.IsReadyRewardAd(); + Debug.Log("[ToukaSDKDemo] isReadyRV : " + isReadyRV); + } + + public void OnButton_ShowBanner() + { + Debug.Log("[ToukaSDKDemo] OnButton_ShowBanner click"); + TKGSDKManager.Instance.ShowBanner(TKGBannerAlign.BannerCenterBottomAlign); + } + + public void OnButton_HideBanner() + { + Debug.Log("[ToukaSDKDemo] OnButton_HideBanner click"); + TKGSDKManager.Instance.HideBanner(); + } + + #endregion + + #region Event Tracking + + public void OnButton_LevelStart() + { + Debug.Log("[ToukaSDKDemo] OnButton_LevelStart click"); + TKGSDKManager.Instance.LevelStart(1); + } + + public void OnButton_LevelSucc() + { + Debug.Log("[ToukaSDKDemo] OnButton_LevelSucc click"); + TKGSDKManager.Instance.LevelEnd(1, StageResult.StageSucc); + } + + public void OnButton_LevelFailed() + { + Debug.Log("[ToukaSDKDemo] OnButton_LevelFailed click"); + TKGSDKManager.Instance.LevelEnd(2, StageResult.StageFail); + } + + public void OnButton_LevelRetry() + { + Debug.Log("[ToukaSDKDemo] OnButton_LevelRetry click"); + TKGSDKManager.Instance.LevelEnd(3, StageResult.StageRetry); + } + + public void OnButton_LevelBack() + { + Debug.Log("[ToukaSDKDemo] OnButton_LevelBack click"); + TKGSDKManager.Instance.LevelEnd("S_1", StageResult.StageBack); + } + + public void OnButton_LogEventClick() + { + Debug.Log("[ToukaSDKDemo] OnButton_LogEventClick click"); + TKGSDKManager.Instance.LogEvent("logEvent01"); + TKGSDKManager.Instance.LogEvent("logEvent02", "key02", "value02"); + TKGSDKManager.Instance.LogEvent("logEvent03", "key03-1", "value03-1", "key03-2", "value03-2"); + TKGSDKManager.Instance.LogEvent("logEvent04", new Dictionary { { "DicKey04", "DicKey04" } }); + + } + + #endregion + + #region Get Remote Config + + public void OnButton_GetConfigInt() + { + Debug.Log("[ToukaSDKDemo] OnButton_GetConfigInt click"); + int onlineIntValue = TKGSDKManager.Instance.GetConfigInt(TKGParamKey.RemoveAdsShowCount); + Debug.Log("online int value : " + onlineIntValue); + } + + public void OnButton_GetConfigStr() + { + Debug.Log("[ToukaSDKDemo] OnButton_GetConfigStr click"); + string onlineStrValue = TKGSDKManager.Instance.GetConfigStr(TKGParamKey.LevelList); + Debug.Log("online string value : " + onlineStrValue); + } + + public void OnButton_GetConfigBool() + { + Debug.Log("[ToukaSDKDemo] OnButton_GetConfigBool click"); + bool onlineBoolValue = TKGSDKManager.Instance.GetConfigBool(TKGParamKey.HasBlock); + Debug.Log("online bool value : " + onlineBoolValue); + } + + #endregion + + #region Privacy Compliance + + public void OnButton_OpenPrivacyUrl() + { + Debug.Log("[ToukaSDKDemo] OnButton_OpenPrivacyUrl click"); + TKGSDKManager.Instance.OpenPolicyPop(); + } + + public void OnButton_OpenUserTermBtn() + { + Debug.Log("[ToukaSDKDemo] OnButton_OpenUserTermBtn click"); + } + + #endregion + + #region Others + + public void OnButton_OpenMoreGame() + { + Debug.Log("[ToukaSDKDemo] OnButton_OpenMoreGame click"); + TKGSDKManager.Instance.OpenMoreGame(); + } + + public void OnButton_ReviewBtn() + { + Debug.Log("[ToukaSDKDemo] OnButton_ReviewBtn click"); + TKGSDKManager.Instance.Review(); + } + + + public void OnButton_SetGameFocusListener() + { + Debug.Log("[ToukaSDKDemo] OnButton_SetGameFocusListener click"); + TKGSDKManager.Instance.SetGameFocusListener((_flg) => { + if (_flg) + { + Debug.Log("[ToukaSDKDemo] OnButton_SetGameFocusListener false flg"); + PauseGame(); + } + else + { + Debug.Log("[ToukaSDKDemo] OnButton_SetGameFocusListener true flg"); + ResumeGame(); + } + }); + } + + private void PauseGame() + { + Debug.Log("[ToukaSDKDemo] pause game callback"); + } + + private void ResumeGame() + { + Debug.Log("[ToukaSDKDemo] resume game callback"); + } + + public void OnButton_OpenLocalPush() + { + Debug.Log("[ToukaSDKDemo] OpenLocalPush click"); + + /* + * Assets/TKGSDK/Config/Scripts/StaticOtherConfig.cs + 1. set LocalNotitcifaction_Switch = true; + 2. set pushContent; // copy from product requirements + MorrowMsgCN = ""; + Day357MsgCN = ""; + Day468MsgCN = ""; + */ + } + + public void OnButton_UserSource() + { + Debug.Log("[ToukaSDKDemo] Set UserSource Click, call before init"); + + TKGSDKManager.Instance.SetUserSourceListener((_isOrigin, _source) => + { + Debug.Log("usersource"+_isOrigin+_source); + if (_isOrigin) + { + Debug.Log("is origin user"); + } + else + { + Debug.Log("is not origin user"); + } + }); + } + + public void OnButton_CommonCallback() + { + Debug.Log("[ToukaSDKDemo] Set commonCallback Click"); + TKGSDKManager.Instance.SetTKGCommonCallback((code, msg) => { + Debug.Log("common callback, code : " + code + " , msg : " + msg); + }); + } + + public void OnButton_GetChannel() + { + Debug.Log("[ToukaSDKDemo] getChannel click"); + Debug.Log("channel : " + TKGSDKManager.Instance.GetChannel()); + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/Demo/ToukaSDKDemo.cs.meta b/Assets/TKGSDK/Demo/ToukaSDKDemo.cs.meta new file mode 100644 index 00000000..b3fae985 --- /dev/null +++ b/Assets/TKGSDK/Demo/ToukaSDKDemo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 542a9563293ba47b4b6070cc9197f431 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Demo/ToukaSDKDemo.unity b/Assets/TKGSDK/Demo/ToukaSDKDemo.unity new file mode 100644 index 00000000..a9adbcc1 --- /dev/null +++ b/Assets/TKGSDK/Demo/ToukaSDKDemo.unity @@ -0,0 +1,6017 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657838, g: 0.49641234, b: 0.57481676, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &3537536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3537537} + - component: {fileID: 3537540} + - component: {fileID: 3537539} + - component: {fileID: 3537538} + m_Layer: 5 + m_Name: ShowInterstitialAd + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3537537 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3537536} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 937706851} + m_Father: {fileID: 325825367} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -343, y: 594} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3537538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3537536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3537539} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_ShowInterstitialAd + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &3537539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3537536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8666667, g: 0.6666667, b: 0.6666667, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &3537540 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3537536} + m_CullTransparentMesh: 0 +--- !u!1 &51009052 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 51009053} + - component: {fileID: 51009055} + - component: {fileID: 51009054} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &51009053 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51009052} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1566732038} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &51009054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51009052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: GetConfigStr +--- !u!222 &51009055 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51009052} + m_CullTransparentMesh: 0 +--- !u!1 &75690272 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 75690273} + - component: {fileID: 75690275} + - component: {fileID: 75690274} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &75690273 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75690272} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 376717127} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &75690274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75690272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: LevelStart +--- !u!222 &75690275 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75690272} + m_CullTransparentMesh: 0 +--- !u!1 &94457502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 94457503} + - component: {fileID: 94457506} + - component: {fileID: 94457505} + - component: {fileID: 94457504} + m_Layer: 5 + m_Name: LevelFailed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &94457503 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94457502} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 709686346} + m_Father: {fileID: 325825367} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 21, y: 362} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &94457504 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94457502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 94457505} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_LevelFailed + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &94457505 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94457502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8679245, g: 0.6673193, b: 0.6673193, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &94457506 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94457502} + m_CullTransparentMesh: 0 +--- !u!1 &128301538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 128301539} + - component: {fileID: 128301542} + - component: {fileID: 128301541} + - component: {fileID: 128301540} + m_Layer: 5 + m_Name: OpenLocalPush + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &128301539 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128301538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 631627959} + m_Father: {fileID: 325825367} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 360, y: -544} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &128301540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128301538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 128301541} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_OpenLocalPush + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &128301541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128301538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &128301542 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128301538} + m_CullTransparentMesh: 0 +--- !u!1 &139068136 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 139068137} + - component: {fileID: 139068139} + - component: {fileID: 139068138} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &139068137 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139068136} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 833040323} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &139068138 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139068136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: IsReadyInterstitialAd +--- !u!222 &139068139 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139068136} + m_CullTransparentMesh: 0 +--- !u!1 &184230246 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 184230247} + - component: {fileID: 184230250} + - component: {fileID: 184230249} + - component: {fileID: 184230248} + m_Layer: 5 + m_Name: UserSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &184230247 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 184230246} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1602270784} + m_Father: {fileID: 325825367} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -343, y: -784} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &184230248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 184230246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.8490566, g: 0.8490566, b: 0.8490566, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 184230249} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_UserSource + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &184230249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 184230246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &184230250 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 184230246} + m_CullTransparentMesh: 0 +--- !u!1 &207883109 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 207883110} + - component: {fileID: 207883113} + - component: {fileID: 207883112} + - component: {fileID: 207883111} + m_Layer: 5 + m_Name: SetLogEnable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &207883110 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 207883109} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 519471260} + m_Father: {fileID: 325825367} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 357, y: -93} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &207883111 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 207883109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 207883112} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_LogEventClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &207883112 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 207883109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &207883113 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 207883109} + m_CullTransparentMesh: 0 +--- !u!1 &214015475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 214015476} + - component: {fileID: 214015478} + - component: {fileID: 214015477} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &214015476 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214015475} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1878439527} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &214015477 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214015475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: OpenMoreGame +--- !u!222 &214015478 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214015475} + m_CullTransparentMesh: 0 +--- !u!1 &283656277 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 283656278} + - component: {fileID: 283656281} + - component: {fileID: 283656280} + - component: {fileID: 283656279} + m_Layer: 5 + m_Name: LevelSucc + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &283656278 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283656277} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2117151082} + m_Father: {fileID: 325825367} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 21, y: 595} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &283656279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283656277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 283656280} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_LevelSucc + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &283656280 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283656277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8679245, g: 0.6673193, b: 0.6673193, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &283656281 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283656277} + m_CullTransparentMesh: 0 +--- !u!1 &303924128 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 303924130} + - component: {fileID: 303924129} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &303924129 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303924128} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &303924130 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303924128} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &325825363 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 325825367} + - component: {fileID: 325825366} + - component: {fileID: 325825365} + - component: {fileID: 325825364} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &325825364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 325825363} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &325825365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 325825363} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1080, y: 1920} + m_ScreenMatchMode: 1 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &325825366 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 325825363} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &325825367 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 325825363} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1003927778} + - {fileID: 3537537} + - {fileID: 334027820} + - {fileID: 833040323} + - {fileID: 2068216387} + - {fileID: 1768773390} + - {fileID: 1431857565} + - {fileID: 376717127} + - {fileID: 283656278} + - {fileID: 94457503} + - {fileID: 1618017043} + - {fileID: 2091151499} + - {fileID: 1390492138} + - {fileID: 663673964} + - {fileID: 1566732038} + - {fileID: 1756377908} + - {fileID: 1738281941} + - {fileID: 1607946295} + - {fileID: 1878439527} + - {fileID: 1716363525} + - {fileID: 1412624023} + - {fileID: 128301539} + - {fileID: 184230247} + - {fileID: 435487952} + - {fileID: 925781833} + - {fileID: 207883110} + - {fileID: 1152021903} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &334027819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 334027820} + - component: {fileID: 334027823} + - component: {fileID: 334027822} + - component: {fileID: 334027821} + m_Layer: 5 + m_Name: ShowRewardAd + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &334027820 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334027819} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1767319390} + m_Father: {fileID: 325825367} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -343, y: 363} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &334027821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334027819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 334027822} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_ShowRewardAd + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &334027822 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334027819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8666667, g: 0.6666667, b: 0.6666667, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &334027823 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334027819} + m_CullTransparentMesh: 0 +--- !u!1 &376717126 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 376717127} + - component: {fileID: 376717130} + - component: {fileID: 376717129} + - component: {fileID: 376717128} + m_Layer: 5 + m_Name: LevelStart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &376717127 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376717126} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 75690273} + m_Father: {fileID: 325825367} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 21, y: 826} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &376717128 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376717126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 376717129} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_LevelStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &376717129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376717126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8679245, g: 0.6673193, b: 0.6673193, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &376717130 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376717126} + m_CullTransparentMesh: 0 +--- !u!1 &380199652 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 380199653} + - component: {fileID: 380199655} + - component: {fileID: 380199654} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &380199653 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 380199652} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1003927778} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &380199654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 380199652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'InitSDK + + (*Call First*)' +--- !u!222 &380199655 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 380199652} + m_CullTransparentMesh: 0 +--- !u!1 &435487951 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 435487952} + - component: {fileID: 435487955} + - component: {fileID: 435487954} + - component: {fileID: 435487953} + m_Layer: 5 + m_Name: CommonCallback + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &435487952 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435487951} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1994770553} + m_Father: {fileID: 325825367} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 7, y: -784} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &435487953 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435487951} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.8490566, g: 0.8490566, b: 0.8490566, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 435487954} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_CommonCallback + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &435487954 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435487951} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &435487955 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435487951} + m_CullTransparentMesh: 0 +--- !u!1 &472859312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 472859313} + - component: {fileID: 472859315} + - component: {fileID: 472859314} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &472859313 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472859312} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1431857565} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &472859314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472859312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: HideBanner +--- !u!222 &472859315 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472859312} + m_CullTransparentMesh: 0 +--- !u!1 &506627926 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 506627927} + - component: {fileID: 506627929} + - component: {fileID: 506627928} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &506627927 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506627926} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1716363525} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &506627928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506627926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Review +--- !u!222 &506627929 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506627926} + m_CullTransparentMesh: 0 +--- !u!1 &519471259 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519471260} + - component: {fileID: 519471262} + - component: {fileID: 519471261} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &519471260 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519471259} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 207883110} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &519471261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519471259} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SetLogEnable +--- !u!222 &519471262 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519471259} + m_CullTransparentMesh: 0 +--- !u!1 &631627958 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 631627959} + - component: {fileID: 631627961} + - component: {fileID: 631627960} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &631627959 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 631627958} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 128301539} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &631627960 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 631627958} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: OpenLocalPush +--- !u!222 &631627961 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 631627958} + m_CullTransparentMesh: 0 +--- !u!1 &663673963 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 663673964} + - component: {fileID: 663673967} + - component: {fileID: 663673966} + - component: {fileID: 663673965} + m_Layer: 5 + m_Name: GetConfigInt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &663673964 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 663673963} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1241734249} + m_Father: {fileID: 325825367} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -333, y: -308.99997} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &663673965 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 663673963} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 663673966} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_GetConfigInt + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &663673966 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 663673963} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5098344, g: 0.6320754, b: 0.61225694, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &663673967 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 663673963} + m_CullTransparentMesh: 0 +--- !u!1 &709686345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 709686346} + - component: {fileID: 709686348} + - component: {fileID: 709686347} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &709686346 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 709686345} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 94457503} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &709686347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 709686345} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 34 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: LevelEnd-Fail +--- !u!222 &709686348 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 709686345} + m_CullTransparentMesh: 0 +--- !u!1 &802373410 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 802373411} + - component: {fileID: 802373413} + - component: {fileID: 802373412} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &802373411 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802373410} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2091151499} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &802373412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802373410} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 34 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: LevelEnd-Retry +--- !u!222 &802373413 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802373410} + m_CullTransparentMesh: 0 +--- !u!1 &814770823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 814770824} + - component: {fileID: 814770826} + - component: {fileID: 814770825} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &814770824 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814770823} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1618017043} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &814770825 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814770823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 34 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: LevelEnd-Back +--- !u!222 &814770826 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814770823} + m_CullTransparentMesh: 0 +--- !u!1 &833040322 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 833040323} + - component: {fileID: 833040326} + - component: {fileID: 833040325} + - component: {fileID: 833040324} + m_Layer: 5 + m_Name: IsReadyInterstitialAd + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &833040323 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 833040322} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 139068137} + m_Father: {fileID: 325825367} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -343, y: 116} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &833040324 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 833040322} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 833040325} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_IsReadyIV + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &833040325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 833040322} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &833040326 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 833040322} + m_CullTransparentMesh: 0 +--- !u!1 &925781832 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 925781833} + - component: {fileID: 925781836} + - component: {fileID: 925781835} + - component: {fileID: 925781834} + m_Layer: 5 + m_Name: GetChannel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &925781833 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 925781832} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1467075331} + m_Father: {fileID: 325825367} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 353, y: -784} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &925781834 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 925781832} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.8490566, g: 0.8490566, b: 0.8490566, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 925781835} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_GetChannel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &925781835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 925781832} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &925781836 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 925781832} + m_CullTransparentMesh: 0 +--- !u!1 &937706850 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 937706851} + - component: {fileID: 937706853} + - component: {fileID: 937706852} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &937706851 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937706850} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3537537} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &937706852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937706850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 34 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: ShowInterstitialAd +--- !u!222 &937706853 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937706850} + m_CullTransparentMesh: 0 +--- !u!1 &971625574 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 971625577} + - component: {fileID: 971625576} + - component: {fileID: 971625575} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &971625575 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971625574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &971625576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971625574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &971625577 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971625574} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &997167158 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 997167159} + - component: {fileID: 997167161} + - component: {fileID: 997167160} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &997167159 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997167158} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1738281941} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &997167160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997167158} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: OpenPrivacyURL +--- !u!222 &997167161 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997167158} + m_CullTransparentMesh: 0 +--- !u!1 &1003927777 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1003927778} + - component: {fileID: 1003927781} + - component: {fileID: 1003927780} + - component: {fileID: 1003927779} + m_Layer: 5 + m_Name: InitSDK + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1003927778 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1003927777} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 380199653} + m_Father: {fileID: 325825367} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -343, y: 824} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1003927779 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1003927777} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1003927780} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_Init + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1003927780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1003927777} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8490566, g: 0.3484336, b: 0.3484336, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1003927781 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1003927777} + m_CullTransparentMesh: 0 +--- !u!1 &1152021902 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1152021903} + - component: {fileID: 1152021905} + - component: {fileID: 1152021904} + m_Layer: 5 + m_Name: nativeImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1152021903 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1152021902} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 325825367} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 800, y: 700} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1152021904 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1152021902} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1152021905 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1152021902} + m_CullTransparentMesh: 0 +--- !u!1 &1227552509 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1227552510} + - component: {fileID: 1227552511} + m_Layer: 0 + m_Name: ToukaSDKDemo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1227552510 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227552509} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1227552511 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227552509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 542a9563293ba47b4b6070cc9197f431, type: 3} + m_Name: + m_EditorClassIdentifier: + nativeImage: {fileID: 1152021904} +--- !u!1 &1241734248 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1241734249} + - component: {fileID: 1241734251} + - component: {fileID: 1241734250} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1241734249 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241734248} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 663673964} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1241734250 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241734248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: GetConfigInt +--- !u!222 &1241734251 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241734248} + m_CullTransparentMesh: 0 +--- !u!1 &1259755077 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1259755078} + - component: {fileID: 1259755080} + - component: {fileID: 1259755079} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1259755078 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1259755077} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1756377908} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1259755079 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1259755077} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: GetConfigBool +--- !u!222 &1259755080 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1259755077} + m_CullTransparentMesh: 0 +--- !u!1 &1301630990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1301630993} + - component: {fileID: 1301630992} + - component: {fileID: 1301630991} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1301630991 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301630990} + m_Enabled: 1 +--- !u!20 &1301630992 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301630990} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1301630993 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301630990} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1390492137 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1390492138} + - component: {fileID: 1390492141} + - component: {fileID: 1390492140} + - component: {fileID: 1390492139} + m_Layer: 5 + m_Name: LogEventButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1390492138 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390492137} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2028574759} + m_Father: {fileID: 325825367} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -333, y: -546} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1390492139 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390492137} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1390492140} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_LogEventClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1390492140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390492137} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1390492141 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390492137} + m_CullTransparentMesh: 0 +--- !u!1 &1412624022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1412624023} + - component: {fileID: 1412624026} + - component: {fileID: 1412624025} + - component: {fileID: 1412624024} + m_Layer: 5 + m_Name: SetGameFocus + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1412624023 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412624022} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1727005810} + m_Father: {fileID: 325825367} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 19, y: -543} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1412624024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412624022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1412624025} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_SetGameFocusListener + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1412624025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412624022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1412624026 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412624022} + m_CullTransparentMesh: 0 +--- !u!1 &1431857564 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431857565} + - component: {fileID: 1431857568} + - component: {fileID: 1431857567} + - component: {fileID: 1431857566} + m_Layer: 5 + m_Name: HideBanner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1431857565 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431857564} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 472859313} + m_Father: {fileID: 325825367} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -343, y: -560} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1431857566 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431857564} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1431857567} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_HideBanner + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1431857567 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431857564} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1431857568 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431857564} + m_CullTransparentMesh: 0 +--- !u!1 &1467075330 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1467075331} + - component: {fileID: 1467075333} + - component: {fileID: 1467075332} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1467075331 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467075330} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 925781833} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1467075332 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467075330} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: GetChannel +--- !u!222 &1467075333 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467075330} + m_CullTransparentMesh: 0 +--- !u!1 &1566732037 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1566732038} + - component: {fileID: 1566732041} + - component: {fileID: 1566732040} + - component: {fileID: 1566732039} + m_Layer: 5 + m_Name: GetConfigStr + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1566732038 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566732037} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 51009053} + m_Father: {fileID: 325825367} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 365, y: -310} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1566732039 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566732037} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1566732040} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_GetConfigStr + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1566732040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566732037} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5137255, g: 0.63529414, b: 0.6156863, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1566732041 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566732037} + m_CullTransparentMesh: 0 +--- !u!1 &1602270783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1602270784} + - component: {fileID: 1602270786} + - component: {fileID: 1602270785} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1602270784 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602270783} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 184230247} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1602270785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602270783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: User Source(GB) +--- !u!222 &1602270786 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602270783} + m_CullTransparentMesh: 0 +--- !u!1 &1607946294 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1607946295} + - component: {fileID: 1607946298} + - component: {fileID: 1607946297} + - component: {fileID: 1607946296} + m_Layer: 5 + m_Name: OpenUserTermURL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1607946295 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1607946294} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2074289756} + m_Father: {fileID: 325825367} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 360, y: 592} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1607946296 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1607946294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1607946297} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_OpenUserTermBtn + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1607946297 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1607946294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8666667, g: 0.6666667, b: 0.6666667, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1607946298 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1607946294} + m_CullTransparentMesh: 0 +--- !u!1 &1618017042 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1618017043} + - component: {fileID: 1618017046} + - component: {fileID: 1618017045} + - component: {fileID: 1618017044} + m_Layer: 5 + m_Name: LevelBack + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1618017043 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1618017042} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 814770824} + m_Father: {fileID: 325825367} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 21, y: 123} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1618017044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1618017042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1618017045} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_LevelBack + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1618017045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1618017042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1618017046 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1618017042} + m_CullTransparentMesh: 0 +--- !u!1 &1716363524 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1716363525} + - component: {fileID: 1716363528} + - component: {fileID: 1716363527} + - component: {fileID: 1716363526} + m_Layer: 5 + m_Name: Review + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1716363525 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716363524} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 506627927} + m_Father: {fileID: 325825367} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 360, y: 119} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1716363526 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716363524} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1716363527} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_ReviewBtn + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1716363527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716363524} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1716363528 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716363524} + m_CullTransparentMesh: 0 +--- !u!1 &1727005809 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727005810} + - component: {fileID: 1727005812} + - component: {fileID: 1727005811} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1727005810 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727005809} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1412624023} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1727005811 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727005809} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SetGameFocus +--- !u!222 &1727005812 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727005809} + m_CullTransparentMesh: 0 +--- !u!1 &1738281940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1738281941} + - component: {fileID: 1738281944} + - component: {fileID: 1738281943} + - component: {fileID: 1738281942} + m_Layer: 5 + m_Name: OpenPrivacyURL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1738281941 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1738281940} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 997167159} + m_Father: {fileID: 325825367} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 360, y: 825} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1738281942 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1738281940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1738281943} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_OpenPrivacyUrl + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1738281943 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1738281940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8666667, g: 0.6666667, b: 0.6666667, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1738281944 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1738281940} + m_CullTransparentMesh: 0 +--- !u!1 &1756377907 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1756377908} + - component: {fileID: 1756377911} + - component: {fileID: 1756377910} + - component: {fileID: 1756377909} + m_Layer: 5 + m_Name: GetConfigBool + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1756377908 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1756377907} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1259755078} + m_Father: {fileID: 325825367} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 21, y: -310.99997} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1756377909 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1756377907} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1756377910} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_GetConfigBool + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1756377910 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1756377907} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5137255, g: 0.63529414, b: 0.6156863, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1756377911 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1756377907} + m_CullTransparentMesh: 0 +--- !u!1 &1767319389 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1767319390} + - component: {fileID: 1767319392} + - component: {fileID: 1767319391} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1767319390 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1767319389} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 334027820} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1767319391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1767319389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: ShowRewardAd +--- !u!222 &1767319392 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1767319389} + m_CullTransparentMesh: 0 +--- !u!1 &1768773389 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1768773390} + - component: {fileID: 1768773393} + - component: {fileID: 1768773392} + - component: {fileID: 1768773391} + m_Layer: 5 + m_Name: ShowBanner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1768773390 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768773389} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2002019465} + m_Father: {fileID: 325825367} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -343, y: -340} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1768773391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768773389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1768773392} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_ShowBanner + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1768773392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768773389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1768773393 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768773389} + m_CullTransparentMesh: 0 +--- !u!1 &1817295530 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1817295531} + - component: {fileID: 1817295533} + - component: {fileID: 1817295532} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1817295531 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817295530} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2068216387} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1817295532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817295530} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: IsReadyRewardAd +--- !u!222 &1817295533 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817295530} + m_CullTransparentMesh: 0 +--- !u!1 &1878439526 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1878439527} + - component: {fileID: 1878439530} + - component: {fileID: 1878439529} + - component: {fileID: 1878439528} + m_Layer: 5 + m_Name: OpenMoreGame + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1878439527 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1878439526} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 214015476} + m_Father: {fileID: 325825367} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 360, y: 362} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1878439528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1878439526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1878439529} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_OpenMoreGame + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1878439529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1878439526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1878439530 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1878439526} + m_CullTransparentMesh: 0 +--- !u!1 &1994770552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1994770553} + - component: {fileID: 1994770555} + - component: {fileID: 1994770554} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1994770553 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994770552} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 435487952} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1994770554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994770552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Common Callback +--- !u!222 &1994770555 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994770552} + m_CullTransparentMesh: 0 +--- !u!1 &2002019464 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2002019465} + - component: {fileID: 2002019467} + - component: {fileID: 2002019466} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2002019465 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2002019464} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1768773390} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2002019466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2002019464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: ShowBanner +--- !u!222 &2002019467 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2002019464} + m_CullTransparentMesh: 0 +--- !u!1 &2028574758 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2028574759} + - component: {fileID: 2028574761} + - component: {fileID: 2028574760} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2028574759 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2028574758} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1390492138} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2028574760 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2028574758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: LogEvent +--- !u!222 &2028574761 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2028574758} + m_CullTransparentMesh: 0 +--- !u!1 &2068216386 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2068216387} + - component: {fileID: 2068216390} + - component: {fileID: 2068216389} + - component: {fileID: 2068216388} + m_Layer: 5 + m_Name: IsReadyRewardAd + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2068216387 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068216386} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1817295531} + m_Father: {fileID: 325825367} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -343, y: -91} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2068216388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068216386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2068216389} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_IsReadyRV + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &2068216389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068216386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2068216390 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068216386} + m_CullTransparentMesh: 0 +--- !u!1 &2074289755 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2074289756} + - component: {fileID: 2074289758} + - component: {fileID: 2074289757} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2074289756 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074289755} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1607946295} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2074289757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074289755} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: OpenUserTermURL +--- !u!222 &2074289758 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074289755} + m_CullTransparentMesh: 0 +--- !u!1 &2091151498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2091151499} + - component: {fileID: 2091151502} + - component: {fileID: 2091151501} + - component: {fileID: 2091151500} + m_Layer: 5 + m_Name: LevelRetry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2091151499 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091151498} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 802373411} + m_Father: {fileID: 325825367} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 21, y: -94} + m_SizeDelta: {x: 300, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2091151500 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091151498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2091151501} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1227552511} + m_MethodName: OnButton_LevelRetry + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &2091151501 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091151498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2091151502 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091151498} + m_CullTransparentMesh: 0 +--- !u!1 &2117151081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2117151082} + - component: {fileID: 2117151084} + - component: {fileID: 2117151083} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2117151082 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2117151081} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 283656278} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2117151083 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2117151081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 38 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: LevelEnd-Succ +--- !u!222 &2117151084 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2117151081} + m_CullTransparentMesh: 0 diff --git a/Assets/TKGSDK/Demo/ToukaSDKDemo.unity.meta b/Assets/TKGSDK/Demo/ToukaSDKDemo.unity.meta new file mode 100644 index 00000000..be1ff020 --- /dev/null +++ b/Assets/TKGSDK/Demo/ToukaSDKDemo.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6981b962eb4cd450398514e00a5f7a11 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Editor.meta b/Assets/TKGSDK/Editor.meta new file mode 100644 index 00000000..4d6d0b4f --- /dev/null +++ b/Assets/TKGSDK/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b72e726f1d95467aa884508bee4f00e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Editor/TKGAllPostprocessor.cs b/Assets/TKGSDK/Editor/TKGAllPostprocessor.cs new file mode 100644 index 00000000..a6fa003c --- /dev/null +++ b/Assets/TKGSDK/Editor/TKGAllPostprocessor.cs @@ -0,0 +1,55 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +public class MyAllPostprocessor : AssetPostprocessor +{ + static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) + { + foreach (string str in importedAssets) + { + if (str.Contains("tkg_game_configs.json")) + { + Debug.Log("Reimported Asset: " + str); + + TKGInnerGameConfig configs = LoadJson.LoadJsonFromFile(str); + Debug.Log("configs : " + configs.TKGParams.Count); + + for(int i = 0; i < configs.TKGParams.Count; i++) + { + Debug.Log("param key : " + configs.TKGParams[i].key + " , value : " + configs.TKGParams[i].value); + } + + for (int i = 0; i < configs.TKGAdPositionName.TKGIVAdPositionName.Count; i++) + { + Debug.Log("iv pos : " + configs.TKGAdPositionName.TKGIVAdPositionName[i]); + } + + for (int i = 0; i < configs.TKGAdPositionName.TKGRVPositionName.Count; i++) + { + Debug.Log("rv pos : " + configs.TKGAdPositionName.TKGRVPositionName[i]); + } + } + } + } +} + +public class PlayerState : MonoBehaviour +{ + public string playerName; + public int lives; + public float health; + + public string SaveToString() + { + return JsonUtility.ToJson(this); + } + + // Given: + // playerName = "Dr Charles" + // lives = 3 + // health = 0.8f + // SaveToString returns: + // {"playerName":"Dr Charles","lives":3,"health":0.8} +} diff --git a/Assets/TKGSDK/Editor/TKGAllPostprocessor.cs.meta b/Assets/TKGSDK/Editor/TKGAllPostprocessor.cs.meta new file mode 100644 index 00000000..01486c2c --- /dev/null +++ b/Assets/TKGSDK/Editor/TKGAllPostprocessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8fcede2e4317b4d1197e85047dbbd880 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Editor/TKGParseGameConfig.cs b/Assets/TKGSDK/Editor/TKGParseGameConfig.cs new file mode 100644 index 00000000..82ffd109 --- /dev/null +++ b/Assets/TKGSDK/Editor/TKGParseGameConfig.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; + +public class TKGParseGameConfig +{ + public static void Test() + { + TKGInnerParamsKey paramKey01 = new TKGInnerParamsKey(); + paramKey01.key = "LevelList"; + paramKey01.value = "1,78,72,70,64,65,4,66"; + + TKGInnerParamsKey paramKey02 = new TKGInnerParamsKey(); + paramKey02.key = "HasBlock"; + paramKey02.value = "0"; + + TKGInnerGameConfig config01 = new TKGInnerGameConfig(); + config01.TKGParams.Add(paramKey01); + config01.TKGParams.Add(paramKey02); + + config01.TKGAdPositionName = new TKGInnerAdPositionName(); + + config01.TKGAdPositionName.TKGIVAdPositionName.Add("IV_Success"); + config01.TKGAdPositionName.TKGIVAdPositionName.Add("IV_Fail"); + + config01.TKGAdPositionName.TKGRVPositionName.Add("RV_GetDoubleCoin"); + config01.TKGAdPositionName.TKGRVPositionName.Add("RV_GetTips"); + + + string ss = config01.SaveToString(); + Debug.Log("ss : " + ss); + } +} + +#region Inner Class + +[Serializable] +public class TKGInnerParamsKey +{ + public string key; + public string value; + +} + +[Serializable] +public class TKGInnerAdPositionName +{ + public List TKGIVAdPositionName = new List(); + public List TKGRVPositionName = new List(); +} + + +[Serializable] +public class TKGInnerGameConfig +{ + public List TKGParams = new List(); + public TKGInnerAdPositionName TKGAdPositionName; + + public string SaveToString() + { + return JsonUtility.ToJson(this); + } +} + +#endregion + +#region load json + +public class LoadJson +{ + public static T LoadJsonFromFile(string _path) where T : class + { + if (!File.Exists(_path)) + { + Debug.LogError("Don't Find " + _path); + return null; + } + + StreamReader sr = new StreamReader(_path); + if (sr == null) + { + return null; + } + string json = sr.ReadToEnd(); + + if (json.Length > 0) + { + return JsonUtility.FromJson(json); + } + return null; + } +} + +#endregion + + diff --git a/Assets/TKGSDK/Editor/TKGParseGameConfig.cs.meta b/Assets/TKGSDK/Editor/TKGParseGameConfig.cs.meta new file mode 100644 index 00000000..a05d8a86 --- /dev/null +++ b/Assets/TKGSDK/Editor/TKGParseGameConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 069e18db978ff4c3cbf25edac908307d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Editor/ToukaAdsBuildPostProcessor.cs b/Assets/TKGSDK/Editor/ToukaAdsBuildPostProcessor.cs new file mode 100644 index 00000000..a3a7d56f --- /dev/null +++ b/Assets/TKGSDK/Editor/ToukaAdsBuildPostProcessor.cs @@ -0,0 +1,733 @@ +using System.IO; +using System.Runtime.InteropServices.WindowsRuntime; +using UnityEditor; +using UnityEditor.Callbacks; +#if UNITY_IOS +using UnityEditor.iOS.Xcode; +#endif +using UnityEngine; +#if UNITY_IOS +namespace Touka +{ + public partial class ToukaAdsBuildPostProcessor + { + [PostProcessBuild] + public static void OnPostprocessBuild(BuildTarget buildTarget, string path) + { + if (buildTarget != BuildTarget.iOS) return; + +#if UNITY_IOS + ModifyURLTypes(path); + ModifyCode(path); + ModifyBundle(path); +#endif + } + + + +#if UNITY_IOS + private static void ModifyURLTypes(string _path) + { + var plistPath = Path.Combine(_path, "Info.plist"); + var plist = new PlistDocument(); + plist.ReadFromFile(plistPath); + + + plist.root.SetBoolean("GADIsAdManagerApp", true); + +#if !AppStore_GB + plist.root.SetString("GADApplicationIdentifier", TKGLoadConfig.GetConfigByKey(ConfigKeys.KEY_Admob_AppID, AppChannel.AppStore_CN)); + plist.root.SetString("AppId", TKGLoadConfig.GetConfigByKey(ConfigKeys.KEY_TOUKA_SDK_APPID, AppChannel.AppStore_CN)); + + plist.root.SetString("AppKey", TKGLoadConfig.GetConfigByKey(ConfigKeys.KEY_TOUKA_SDK_APPKEY, AppChannel.AppStore_CN) ); + plist.root.SetString("splashPlacement", TKGLoadConfig.GetConfigByKey(ConfigKeys.KEY_TOUKA_SDK_SPLASHID, AppChannel.AppStore_CN)); + + +#else + plist.root.SetString("GADApplicationIdentifier", TKGLoadConfig.GetConfigByKey(ConfigKeys.KEY_Admob_AppID, AppChannel.AppStore_GB)); + plist.root.SetString("AppLovinSdkKey", TKGLoadConfig.GetConfigByKey(ConfigKeys.KEY_TOUKA_SDK_APPKEY, AppChannel.AppStore_GB)); + + +#endif + + plist.root.SetBoolean("ITSAppUsesNonExemptEncryption", false); + + //NSAppTransportSecurity set yes + PlistElementDict atf = plist.root["NSAppTransportSecurity"].AsDict(); + atf.SetBoolean("NSAllowsArbitraryLoads", true); + + #region iOS 14 + //SKAdnetwork追加 + PlistElementArray URLWhiteListArr2 = plist.root.CreateArray("SKAdNetworkItems"); + + //admob (1) + PlistElementDict dic01; + dic01 = URLWhiteListArr2.AddDict(); + dic01.SetString("SKAdNetworkIdentifier", "cstr6suwn9.skadnetwork"); + + //ironsource(1) + PlistElementDict dic02; + dic02 = URLWhiteListArr2.AddDict(); + dic02.SetString("SKAdNetworkIdentifier", "su67r6k2v3.skadnetwork"); + + //mintegral (19) + PlistElementDict dic03; + dic03 = URLWhiteListArr2.AddDict(); + dic03.SetString("SKAdNetworkIdentifier", "kbd757ywx3.skadnetwork"); + + PlistElementDict dic04; + dic04 = URLWhiteListArr2.AddDict(); + dic04.SetString("SKAdNetworkIdentifier", "wg4vff78zm.skadnetwork"); + + PlistElementDict dic05; + dic05 = URLWhiteListArr2.AddDict(); + dic05.SetString("SKAdNetworkIdentifier", "737z793b9f.skadnetwork"); + + PlistElementDict dic06; + dic06 = URLWhiteListArr2.AddDict(); + dic06.SetString("SKAdNetworkIdentifier", "ydx93a7ass.skadnetwork"); + + PlistElementDict dic07; + dic07 = URLWhiteListArr2.AddDict(); + dic07.SetString("SKAdNetworkIdentifier", "prcb7njmu6.skadnetwork"); + + PlistElementDict dic08; + dic08 = URLWhiteListArr2.AddDict(); + dic08.SetString("SKAdNetworkIdentifier", "7ug5zh24hu.skadnetwork"); + + PlistElementDict dic09; + dic09 = URLWhiteListArr2.AddDict(); + dic09.SetString("SKAdNetworkIdentifier", "44jx6755aq.skadnetwork"); + + + PlistElementDict dic10; + dic10 = URLWhiteListArr2.AddDict(); + dic10.SetString("SKAdNetworkIdentifier", "w9q455wk68.skadnetwork"); + + + + PlistElementDict dic11; + dic11 = URLWhiteListArr2.AddDict(); + dic11.SetString("SKAdNetworkIdentifier", "8s468mfl3y.skadnetwork"); + + PlistElementDict dic12; + dic12 = URLWhiteListArr2.AddDict(); + dic12.SetString("SKAdNetworkIdentifier", "glqzh8vgby.skadnetwork"); + + PlistElementDict dic13; + dic13 = URLWhiteListArr2.AddDict(); + dic13.SetString("SKAdNetworkIdentifier", "c6k4g5qg8m.skadnetwork"); + + PlistElementDict dic14; + dic14 = URLWhiteListArr2.AddDict(); + dic14.SetString("SKAdNetworkIdentifier", "mlmmfzh3r3.skadnetwork"); + + PlistElementDict dic15; + dic15 = URLWhiteListArr2.AddDict(); + dic15.SetString("SKAdNetworkIdentifier", "4pfyvq9l8r.skadnetwork"); + + PlistElementDict dic16; + dic16 = URLWhiteListArr2.AddDict(); + dic16.SetString("SKAdNetworkIdentifier", "av6w8kgt66.skadnetwork"); + + PlistElementDict dic17; + dic17 = URLWhiteListArr2.AddDict(); + dic17.SetString("SKAdNetworkIdentifier", "6xzpu9s2p8.skadnetwork"); + + PlistElementDict dic18; + dic18 = URLWhiteListArr2.AddDict(); + dic18.SetString("SKAdNetworkIdentifier", "hs6bdukanm.skadnetwork"); + + + //adcolony (19) + PlistElementDict dic19; + dic19 = URLWhiteListArr2.AddDict(); + dic19.SetString("SKAdNetworkIdentifier", "v72qych5uu.skadnetwork"); + + + + PlistElementDict dic20; + dic20 = URLWhiteListArr2.AddDict(); + dic20.SetString("SKAdNetworkIdentifier", "ppxm28t8ap.skadnetwork"); + + + + PlistElementDict dic21; + dic21 = URLWhiteListArr2.AddDict(); + dic21.SetString("SKAdNetworkIdentifier", "klf5c3l5u5.skadnetwork"); + + + + PlistElementDict dic22; + dic22 = URLWhiteListArr2.AddDict(); + dic22.SetString("SKAdNetworkIdentifier", "4468km3ulz.skadnetwork"); + + PlistElementDict dic23; + dic23 = URLWhiteListArr2.AddDict(); + dic23.SetString("SKAdNetworkIdentifier", "3rd42ekr43.skadnetwork"); + + //unity ads (2) + PlistElementDict dic24; + dic24 = URLWhiteListArr2.AddDict(); + dic24.SetString("SKAdNetworkIdentifier", "4dzt52r2t5.skadnetwork"); + + PlistElementDict dic25; + dic25 = URLWhiteListArr2.AddDict(); + dic25.SetString("SKAdNetworkIdentifier", "bvpn9ufa9b.skadnetwork"); + + //maio (1) + PlistElementDict dic26; + dic26 = URLWhiteListArr2.AddDict(); + dic26.SetString("SKAdNetworkIdentifier", "V4NXQHLYQP.skadnetwork"); + + //facebook(2) + PlistElementDict dic27; + dic27 = URLWhiteListArr2.AddDict(); + dic27.SetString("SKAdNetworkIdentifier", "v9wttpbfk9.skadnetwork"); + + PlistElementDict dic28; + dic28 = URLWhiteListArr2.AddDict(); + dic28.SetString("SKAdNetworkIdentifier", "n38lu8286q.skadnetwork"); + //vungle (1) + PlistElementDict dic29; + dic29 = URLWhiteListArr2.AddDict(); + dic29.SetString("SKAdNetworkIdentifier", "gta9lk7p23.skadnetwork"); + + //pangle (2) + PlistElementDict dic30; + dic30 = URLWhiteListArr2.AddDict(); + dic30.SetString("SKAdNetworkIdentifier", "238da6jt44.skadnetwork"); + + PlistElementDict dic31; + dic31 = URLWhiteListArr2.AddDict(); + dic31.SetString("SKAdNetworkIdentifier", "22mmun2rn5.skadnetwork"); + + //applovin(19) + + PlistElementDict dic32; + dic32 = URLWhiteListArr2.AddDict(); + dic32.SetString("SKAdNetworkIdentifier", "2u9pt9hc89.skadnetwork"); + + PlistElementDict dic33; + dic33 = URLWhiteListArr2.AddDict(); + dic33.SetString("SKAdNetworkIdentifier", "275upjj5gd.skadnetwork"); + + PlistElementDict dic34; + dic34 = URLWhiteListArr2.AddDict(); + dic34.SetString("SKAdNetworkIdentifier", "4fzdc2evr5.skadnetwork"); + + + PlistElementDict dic35; + dic35 = URLWhiteListArr2.AddDict(); + dic35.SetString("SKAdNetworkIdentifier", "9rd848q2bz.skadnetwork"); + + PlistElementDict dic36; + dic36 = URLWhiteListArr2.AddDict(); + dic36.SetString("SKAdNetworkIdentifier", "9t245vhmpl.skadnetwork"); + + + + PlistElementDict dic37; + dic37 = URLWhiteListArr2.AddDict(); + dic37.SetString("SKAdNetworkIdentifier", "f38h382jlk.skadnetwork"); + + PlistElementDict dic38; + dic38 = URLWhiteListArr2.AddDict(); + dic38.SetString("SKAdNetworkIdentifier", "ludvb6z3bs.skadnetwork"); + + PlistElementDict dic39; + dic39 = URLWhiteListArr2.AddDict(); + dic39.SetString("SKAdNetworkIdentifier", "m8dbw4sv7c.skadnetwork"); + + PlistElementDict dic40; + dic40 = URLWhiteListArr2.AddDict(); + dic40.SetString("SKAdNetworkIdentifier", "t38b2kh725.skadnetwork"); + + PlistElementDict dic41; + dic41 = URLWhiteListArr2.AddDict(); + dic41.SetString("SKAdNetworkIdentifier", "tl55sbb4fm.skadnetwork"); + + PlistElementDict dic42; + dic42 = URLWhiteListArr2.AddDict(); + dic42.SetString("SKAdNetworkIdentifier", "wzmmz9fp6w.skadnetwork"); + + PlistElementDict dic43; + dic43 = URLWhiteListArr2.AddDict(); + dic43.SetString("SKAdNetworkIdentifier", "yclnxrl5pm.skadnetwork"); + + PlistElementDict dic44; + dic44 = URLWhiteListArr2.AddDict(); + dic44.SetString("SKAdNetworkIdentifier", "2fnua5tdw4.skadnetwork"); + + PlistElementDict dic45; + dic45 = URLWhiteListArr2.AddDict(); + dic45.SetString("SKAdNetworkIdentifier", "3qcr597p9d.skadnetwork"); + + PlistElementDict dic46; + dic46 = URLWhiteListArr2.AddDict(); + dic46.SetString("SKAdNetworkIdentifier", "3qy4746246.skadnetwork"); + + PlistElementDict dic47; + dic47 = URLWhiteListArr2.AddDict(); + dic47.SetString("SKAdNetworkIdentifier", "3sh42y64q3.skadnetwork"); + + PlistElementDict dic48; + dic48 = URLWhiteListArr2.AddDict(); + dic48.SetString("SKAdNetworkIdentifier", "424m5254lk.skadnetwork"); + + PlistElementDict dic49; + dic49 = URLWhiteListArr2.AddDict(); + dic49.SetString("SKAdNetworkIdentifier", "5a6flpkh64.skadnetwork"); + + PlistElementDict dic50; + dic50 = URLWhiteListArr2.AddDict(); + dic50.SetString("SKAdNetworkIdentifier", "e5fvkxwrpn.skadnetwork"); + + PlistElementDict dic51; + dic51 = URLWhiteListArr2.AddDict(); + dic51.SetString("SKAdNetworkIdentifier", "ecpz2srf59.skadnetwork"); + + PlistElementDict dic52; + dic52 = URLWhiteListArr2.AddDict(); + dic52.SetString("SKAdNetworkIdentifier", "hjevpa356n.skadnetwork"); + PlistElementDict dic53; + dic53 = URLWhiteListArr2.AddDict(); + dic53.SetString("SKAdNetworkIdentifier", "k674qkevps.skadnetwork"); + + + PlistElementDict dic54; + dic54 = URLWhiteListArr2.AddDict(); + dic54.SetString("SKAdNetworkIdentifier", "n6fk4nfna4.skadnetwork"); + + PlistElementDict dic55; + dic55 = URLWhiteListArr2.AddDict(); + dic55.SetString("SKAdNetworkIdentifier", "p78axxw29g.skadnetwork"); + + PlistElementDict dic56; + dic56 = URLWhiteListArr2.AddDict(); + dic56.SetString("SKAdNetworkIdentifier", "s39g8k73mm.skadnetwork"); + PlistElementDict dic57; + dic57 = URLWhiteListArr2.AddDict(); + dic57.SetString("SKAdNetworkIdentifier", "uw77j35x4d.skadnetwork"); + + PlistElementDict dic58; + dic58 = URLWhiteListArr2.AddDict(); + dic58.SetString("SKAdNetworkIdentifier", "y2ed4ez56y.skadnetwork"); + + PlistElementDict dic59; + dic59 = URLWhiteListArr2.AddDict(); + dic59.SetString("SKAdNetworkIdentifier", "zq492l623r.skadnetwork"); + + PlistElementDict dic60; + dic60 = URLWhiteListArr2.AddDict(); + dic60.SetString("SKAdNetworkIdentifier", "24t9a8vw3c.skadnetwork"); + + PlistElementDict dic61; + dic61 = URLWhiteListArr2.AddDict(); + dic61.SetString("SKAdNetworkIdentifier", "32z4fx6l9h.skadnetwork"); + + PlistElementDict dic62; + dic62 = URLWhiteListArr2.AddDict(); + dic62.SetString("SKAdNetworkIdentifier", "523jb4fst2.skadnetwork"); + + PlistElementDict dic63; + dic63 = URLWhiteListArr2.AddDict(); + dic63.SetString("SKAdNetworkIdentifier", "54nzkqm89y.skadnetwork"); + + PlistElementDict dic64; + dic64 = URLWhiteListArr2.AddDict(); + dic64.SetString("SKAdNetworkIdentifier", "578prtvx9j.skadnetwork"); + + PlistElementDict dic65; + dic65 = URLWhiteListArr2.AddDict(); + dic65.SetString("SKAdNetworkIdentifier", "5l3tpt7t6e.skadnetwork"); + + PlistElementDict dic66; + dic66 = URLWhiteListArr2.AddDict(); + dic66.SetString("SKAdNetworkIdentifier", "5lm9lj6jb7.skadnetwork"); + + PlistElementDict dic67; + dic67 = URLWhiteListArr2.AddDict(); + dic67.SetString("SKAdNetworkIdentifier", "79pbpufp6p.skadnetwork"); + + PlistElementDict dic68; + dic68 = URLWhiteListArr2.AddDict(); + dic68.SetString("SKAdNetworkIdentifier", "7rz58n8ntl.skadnetwork"); + + PlistElementDict dic69; + dic69 = URLWhiteListArr2.AddDict(); + dic69.SetString("SKAdNetworkIdentifier", "n66cz3y3bx.skadnetwork"); + + PlistElementDict dic70; + dic70 = URLWhiteListArr2.AddDict(); + dic70.SetString("SKAdNetworkIdentifier", "9b89h5y424.skadnetwork"); + + PlistElementDict dic71; + dic71 = URLWhiteListArr2.AddDict(); + dic71.SetString("SKAdNetworkIdentifier", "9nlqeag3gk.skadnetwork"); + + PlistElementDict dic72; + dic72 = URLWhiteListArr2.AddDict(); + dic72.SetString("SKAdNetworkIdentifier", "cg4yq2srnc.skadnetwork"); + + PlistElementDict dic73; + dic73 = URLWhiteListArr2.AddDict(); + dic73.SetString("SKAdNetworkIdentifier", "cj5566h2ga.skadnetwork"); + + PlistElementDict dic74; + dic74 = URLWhiteListArr2.AddDict(); + dic74.SetString("SKAdNetworkIdentifier", "5tjdwbrq8w.skadnetwork"); + PlistElementDict dic75; + dic75 = URLWhiteListArr2.AddDict(); + dic75.SetString("SKAdNetworkIdentifier", "ejvt5qm6ak.skadnetwork"); + + PlistElementDict dic76; + dic76 = URLWhiteListArr2.AddDict(); + dic76.SetString("SKAdNetworkIdentifier", "feyaarzu9v.skadnetwork"); + + PlistElementDict dic77; + dic77 = URLWhiteListArr2.AddDict(); + dic77.SetString("SKAdNetworkIdentifier", "g28c52eehv.skadnetwork"); + + PlistElementDict dic78; + dic78 = URLWhiteListArr2.AddDict(); + dic78.SetString("SKAdNetworkIdentifier", "ggvn48r87g.skadnetwork"); + + PlistElementDict dic79; + dic79 = URLWhiteListArr2.AddDict(); + dic79.SetString("SKAdNetworkIdentifier", "mtkv5xtk9e.skadnetwork"); + + PlistElementDict dic80; + dic80 = URLWhiteListArr2.AddDict(); + dic80.SetString("SKAdNetworkIdentifier", "n9x2a789qt.skadnetwork"); + + PlistElementDict dic81; + dic81 = URLWhiteListArr2.AddDict(); + dic81.SetString("SKAdNetworkIdentifier", "pwa73g5rt2.skadnetwork"); + + PlistElementDict dic82; + dic82 = URLWhiteListArr2.AddDict(); + dic82.SetString("SKAdNetworkIdentifier", "xy9t38ct57.skadnetwork"); + + PlistElementDict dic83; + dic83 = URLWhiteListArr2.AddDict(); + dic83.SetString("SKAdNetworkIdentifier", "zmvfpc5aq8.skadnetwork"); + + PlistElementDict dic84; + dic84 = URLWhiteListArr2.AddDict(); + dic84.SetString("SKAdNetworkIdentifier", "44n7hlldy6.skadnetwork"); + + PlistElementDict dic85; + dic85 = URLWhiteListArr2.AddDict(); + dic85.SetString("SKAdNetworkIdentifier", "488r3q3dtq.skadnetwork"); + + PlistElementDict dic86; + dic86 = URLWhiteListArr2.AddDict(); + dic86.SetString("SKAdNetworkIdentifier", "f73kdq92p3.skadnetwork"); + + PlistElementDict dic87; + dic87 = URLWhiteListArr2.AddDict(); + dic87.SetString("SKAdNetworkIdentifier", "f7s53z58qe.skadnetwork"); + + PlistElementDict dic88; + dic88 = URLWhiteListArr2.AddDict(); + dic88.SetString("SKAdNetworkIdentifier", "lr83yxwka7.skadnetwork"); + + PlistElementDict dic89; + dic89 = URLWhiteListArr2.AddDict(); + dic89.SetString("SKAdNetworkIdentifier", "v79kvwwj4g.skadnetwork"); + + PlistElementDict dic90; + dic90 = URLWhiteListArr2.AddDict(); + dic90.SetString("SKAdNetworkIdentifier", "7953jerfzd.skadnetwork"); + + PlistElementDict dic91; + dic91 = URLWhiteListArr2.AddDict(); + dic91.SetString("SKAdNetworkIdentifier", "9yg77x724h.skadnetwork"); + + PlistElementDict dic92; + dic92 = URLWhiteListArr2.AddDict(); + dic92.SetString("SKAdNetworkIdentifier", "mls7yz5dvl.skadnetwork"); + + PlistElementDict dic93; + dic93 = URLWhiteListArr2.AddDict(); + dic93.SetString("SKAdNetworkIdentifier", "x8jxxk4ff5.skadnetwork"); + + PlistElementDict dic94; + dic94 = URLWhiteListArr2.AddDict(); + dic94.SetString("SKAdNetworkIdentifier", "mp6xlyr22a.skadnetwork"); + + PlistElementDict dic95; + dic95 = URLWhiteListArr2.AddDict(); + dic95.SetString("SKAdNetworkIdentifier", "x44k69ngh6.skadnetwork"); + + PlistElementDict dic96; + dic96 = URLWhiteListArr2.AddDict(); + dic96.SetString("SKAdNetworkIdentifier", "6g9af3uyq4.skadnetwork"); + + PlistElementDict dic97; + dic97 = URLWhiteListArr2.AddDict(); + dic97.SetString("SKAdNetworkIdentifier", "qqp299437r.skadnetwork"); + + PlistElementDict dic98; + dic98 = URLWhiteListArr2.AddDict(); + dic98.SetString("SKAdNetworkIdentifier", "252b5q8x7y.skadnetwork"); + + PlistElementDict dic99; + dic99 = URLWhiteListArr2.AddDict(); + dic99.SetString("SKAdNetworkIdentifier", "rx5hdcabgc.skadnetwork"); + + PlistElementDict dic100; + dic100 = URLWhiteListArr2.AddDict(); + dic100.SetString("SKAdNetworkIdentifier", "294l99pt4k.skadnetwork"); + + PlistElementDict dic101; + dic101 = URLWhiteListArr2.AddDict(); + dic101.SetString("SKAdNetworkIdentifier", "kbmxgpxpgc.skadnetwork"); + + PlistElementDict dic102; + dic102 = URLWhiteListArr2.AddDict(); + dic102.SetString("SKAdNetworkIdentifier", "52fl2v3hgk.skadnetwork"); + + PlistElementDict dic103; + dic103 = URLWhiteListArr2.AddDict(); + dic103.SetString("SKAdNetworkIdentifier", "r45fhb6rf7.skadnetwork"); + + PlistElementDict dic104; + dic104 = URLWhiteListArr2.AddDict(); + dic104.SetString("SKAdNetworkIdentifier", "rvh3l7un93.skadnetwork"); + + PlistElementDict dic105; + dic105 = URLWhiteListArr2.AddDict(); + dic105.SetString("SKAdNetworkIdentifier", "97r2b46745.skadnetwork"); + + PlistElementDict dic106; + dic106 = URLWhiteListArr2.AddDict(); + dic106.SetString("SKAdNetworkIdentifier", "9g2aggbj52.skadnetwork"); + + PlistElementDict dic107; + dic107 = URLWhiteListArr2.AddDict(); + dic107.SetString("SKAdNetworkIdentifier", "dzg6xy7pwj.skadnetwork"); + + PlistElementDict dic108; + dic108 = URLWhiteListArr2.AddDict(); + dic108.SetString("SKAdNetworkIdentifier", "x8uqf25wch.skadnetwork"); + + PlistElementDict dic109; + dic109 = URLWhiteListArr2.AddDict(); + dic109.SetString("SKAdNetworkIdentifier", "58922nb4gd.skadnetwork"); + + PlistElementDict dic110; + dic110 = URLWhiteListArr2.AddDict(); + dic110.SetString("SKAdNetworkIdentifier", "gvmwg8q7h5.skadnetwork"); + + PlistElementDict dic111; + dic111 = URLWhiteListArr2.AddDict(); + dic111.SetString("SKAdNetworkIdentifier", "hdw39hrw9y.skadnetwork"); + + PlistElementDict dic112; + dic112 = URLWhiteListArr2.AddDict(); + dic112.SetString("SKAdNetworkIdentifier", "8c4e2ghe7u.skadnetwork"); + + PlistElementDict dic113; + dic113 = URLWhiteListArr2.AddDict(); + dic113.SetString("SKAdNetworkIdentifier", "v4nxqhlyqp.skadnetwork"); + + PlistElementDict dic114; + dic114 = URLWhiteListArr2.AddDict(); + dic114.SetString("SKAdNetworkIdentifier", "c3frkrj4fj.skadnetwork"); + + PlistElementDict dic115; + dic115 = URLWhiteListArr2.AddDict(); + dic115.SetString("SKAdNetworkIdentifier", "nzq8sh4pbs.skadnetwork"); + + PlistElementDict dic116; + dic116 = URLWhiteListArr2.AddDict(); + dic116.SetString("SKAdNetworkIdentifier", "pu4na253f3.skadnetwork"); + + PlistElementDict dic117; + dic117 = URLWhiteListArr2.AddDict(); + dic117.SetString("SKAdNetworkIdentifier", "6964rsfnh4.skadnetwork"); + + PlistElementDict dic118; + dic118 = URLWhiteListArr2.AddDict(); + dic118.SetString("SKAdNetworkIdentifier", "74b6s63p6l.skadnetwork"); + + PlistElementDict dic119; + dic119 = URLWhiteListArr2.AddDict(); + dic119.SetString("SKAdNetworkIdentifier", "84993kbrcf.skadnetwork"); + + PlistElementDict dic120; + dic120 = URLWhiteListArr2.AddDict(); + dic120.SetString("SKAdNetworkIdentifier", "y45688jllp.skadnetwork"); + + PlistElementDict dic121; + dic121 = URLWhiteListArr2.AddDict(); + dic121.SetString("SKAdNetworkIdentifier", "yrqqpx2mcb.skadnetwork"); + + PlistElementDict dic122; + dic122 = URLWhiteListArr2.AddDict(); + dic122.SetString("SKAdNetworkIdentifier", "z4gj7hsk7h.skadnetwork"); + + PlistElementDict dic123; + dic123 = URLWhiteListArr2.AddDict(); + dic123.SetString("SKAdNetworkIdentifier", "u679fj5vs4.skadnetwork"); + + PlistElementDict dic124; + dic124 = URLWhiteListArr2.AddDict(); + dic124.SetString("SKAdNetworkIdentifier", "a7xqa6mtl2.skadnetwork"); + + PlistElementDict dic125; + dic125 = URLWhiteListArr2.AddDict(); + dic125.SetString("SKAdNetworkIdentifier", "g2y4y55b64.skadnetwork"); + + PlistElementDict dic126; + dic126 = URLWhiteListArr2.AddDict(); + dic126.SetString("SKAdNetworkIdentifier", "pwdxu55a5a.skadnetwork"); + #endregion + + PlistElementArray urlTypes = plist.root.CreateArray("CFBundleURLTypes"); + + PlistElementDict dict = urlTypes.AddDict(); + dict.SetString("CFBundleURLName", Application.identifier); + PlistElementArray schemesArray = dict.CreateArray("CFBundleURLSchemes"); + schemesArray.AddString(Application.identifier); + + File.WriteAllText(plistPath, plist.WriteToString()); + } + + private static void ModifyBundle(string _path) + { +#if !AppStore_GB + string projectPath = PBXProject.GetPBXProjectPath(_path); + + PBXProject pbxProject = new PBXProject(); + pbxProject.ReadFromFile(projectPath); + // 获取主 target +#if UNITY_2019_3_OR_NEWER + string mainTarget = pbxProject.GetUnityMainTargetGuid(); +#else + string targetName = UnityEditor.iOS.Xcode.PBXProject.GetUnityTargetName(); + string mainTarget = pbxProject.TargetGuidByName(targetName); +#endif + pbxProject.AddFileToBuild(mainTarget, pbxProject.AddFile("Frameworks/Plugins/ToukaGames/Plugins/iOS/ToponSDK/Core/AnyThinkSDK.bundle", "Frameworks/Plugins/ToukaGames/Plugins/iOS/ToponSDK/Core/AnyThinkSDK.bundle", PBXSourceTree.Sdk)); + pbxProject.AddFileToBuild(mainTarget, pbxProject.AddFile("Frameworks/Plugins/ToukaGames/Plugins/iOS/ToponSDK/pangle_China/BUAdSDK.bundle", "Frameworks/Plugins/ToukaGames/Plugins/iOS/ToponSDK/pangle_China/BUAdSDK.bundle", PBXSourceTree.Sdk)); + pbxProject.WriteToFile(projectPath); +#endif + } + + private static void ModifyCode(string _path) + { +#if !AppStore_GB + ToukaClassHelper SplashScreenController = new ToukaClassHelper(_path + "/Classes/UI/SplashScreen.mm"); + + if (!SplashScreenController.HasBolow("#import ")) + { + + SplashScreenController.WriteBelow("#include \"SplashScreen.h\"", "#import "); + SplashScreenController.WriteBelow("void HideSplashScreen()\n{", "[[TONativeSplashHelper helper]showSplashInLaunch];"); + + } +#endif + +#if USE_SPLASH + + ToukaClassHelper SplashScreenControllers = new ToukaClassHelper(_path + "/Classes/UI/SplashScreen.mm"); + + if (!SplashScreenControllers.HasBolow("#import ")) + { + + SplashScreenControllers.WriteBelow("#include \"SplashScreen.h\"", "#import "); + SplashScreenControllers.WriteBelow("void HideSplashScreen()\n{", "[[TKGSplashManager manager]showSplashInLaunch];"); + + } + + ToukaClassHelper UnityAppController = new ToukaClassHelper(_path + "/Classes/UnityAppController.mm"); + if (!UnityAppController.HasBolow("[[TKGSplashManager manager] showSplashInEnterForground];")) + { + UnityAppController.WriteBelow("#import \"UnityAppController.h\"", "\n#import "); + UnityAppController.WriteBelow("UnityPause(0);", "\n[[TKGSplashManager manager] showSplashInEnterForground];"); + } + + +#endif + + + } +#endif + } + + public partial class ToukaClassHelper + { + + private string filePath; + + public ToukaClassHelper(string fPath) + { + filePath = fPath; + if (!System.IO.File.Exists(filePath)) + { + TKGDebugger.LogError(filePath + "路径下文件不存在"); + return; + } + } + + public void WriteBelow(string below, string text) + { + StreamReader streamReader = new StreamReader(filePath); + string text_all = streamReader.ReadToEnd(); + streamReader.Close(); + + int beginIndex = text_all.IndexOf(below); + if (beginIndex == -1) + { + TKGDebugger.LogError(filePath + "中没有找到标致" + below); + return; + } + + int endIndex = text_all.LastIndexOf("\n", beginIndex + below.Length); + + text_all = text_all.Substring(0, endIndex) + "\n" + text + "\n" + text_all.Substring(endIndex); + + StreamWriter streamWriter = new StreamWriter(filePath); + streamWriter.Write(text_all); + streamWriter.Close(); + } + + public void Replace(string below, string newText) + { + StreamReader streamReader = new StreamReader(filePath); + string text_all = streamReader.ReadToEnd(); + streamReader.Close(); + + int beginIndex = text_all.IndexOf(below); + if (beginIndex == -1) + { + TKGDebugger.LogError(filePath + "中没有找到标致" + below); + return; + } + + text_all = text_all.Replace(below, newText); + StreamWriter streamWriter = new StreamWriter(filePath); + streamWriter.Write(text_all); + streamWriter.Close(); + + } + + public bool HasBolow(string below) + { + StreamReader streamReader = new StreamReader(filePath); + string text_all = streamReader.ReadToEnd(); + streamReader.Close(); + + int beginIndex = text_all.IndexOf(below); + if (beginIndex == -1) + { + TKGDebugger.LogDebug("[" + GetType() + "]" + filePath + "中没有找到标致" + below); + return false; + } + return true; + } + } +} +#endif diff --git a/Assets/TKGSDK/Editor/ToukaAdsBuildPostProcessor.cs.meta b/Assets/TKGSDK/Editor/ToukaAdsBuildPostProcessor.cs.meta new file mode 100644 index 00000000..87befe95 --- /dev/null +++ b/Assets/TKGSDK/Editor/ToukaAdsBuildPostProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5a192a0244ba471d9b62fcbd74eb4ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Editor/ToukaAnalyticsBuildPostProcessor.cs b/Assets/TKGSDK/Editor/ToukaAnalyticsBuildPostProcessor.cs new file mode 100644 index 00000000..4d09d37b --- /dev/null +++ b/Assets/TKGSDK/Editor/ToukaAnalyticsBuildPostProcessor.cs @@ -0,0 +1,221 @@ +#if UNITY_IOS +using System.IO; +using System.Runtime.InteropServices.WindowsRuntime; +using UnityEditor; +using UnityEditor.Callbacks; +#if UNITY_IOS +using UnityEditor.iOS.Xcode; +#endif +using UnityEngine; + +public class ToukaAnalyticsBuildPostProcessor +{ + [PostProcessBuild] + public static void OnPostprocessBuild(BuildTarget buildTarget, string path) + { + if (buildTarget != BuildTarget.iOS) return; + +#if UNITY_IOS + copyConfigFile(path); + SetTeamIdAutoSign(path); + ModifyFrameworks(path); + ModifyBuildSettings(path); + + ModifyInfoPlist(path); + + //AddLocalization(path); + CopySplashImg(path); +#endif + } + + private static void ModifyFrameworks(string _path) + { +#if UNITY_IOS + string projPath = PBXProject.GetPBXProjectPath(_path); + PBXProject proj = new PBXProject(); + + + proj.ReadFromString(File.ReadAllText(projPath)); +#if UNITY_2019_3_OR_NEWER + string target = proj.GetUnityFrameworkTargetGuid(); +#else + string target = proj.TargetGuidByName("Unity-iPhone"); +#endif + + proj.AddFrameworkToProject(target, "GLKit.framework", false); + proj.AddFrameworkToProject(target, "CoreGraphics.framework", false); + proj.AddFrameworkToProject(target, "SystemConfiguration.framework", false); + proj.AddFrameworkToProject(target, "Photos.framework", false); + proj.AddFrameworkToProject(target, "AppTrackingTransparency.framework", false); + proj.AddFrameworkToProject(target, "StoreKit.framework", false); + proj.AddFrameworkToProject(target, "CoreData.framework", false); + proj.AddFrameworkToProject(target, "AVFoundation.framework", false); + proj.AddFrameworkToProject(target, "Accelerate.framework", false); + proj.AddFrameworkToProject(target, "AdSupport.framework", false); + proj.AddFrameworkToProject(target, "AudioToolbox.framework", false); + proj.AddFrameworkToProject(target, "CoreLocation.framework", false); + proj.AddFrameworkToProject(target, "CoreMedia.framework", false); + proj.AddFrameworkToProject(target, "CoreMotion.framework", false); + proj.AddFrameworkToProject(target, "CoreTelephony.framework", false); + proj.AddFrameworkToProject(target, "MobileCoreServices.framework", false); + proj.AddFrameworkToProject(target, "SafariServices.framework", false); + proj.AddFrameworkToProject(target, "VideoToolbox.framework", false); + proj.AddFrameworkToProject(target, "WebKit.framework", false); + + + + string fileGuidSqlite = proj.AddFile("usr/lib/libxml2.tbd", "Libraries/libxml2.tbd", PBXSourceTree.Sdk); + proj.AddFileToBuild(target, fileGuidSqlite); + fileGuidSqlite = proj.AddFile("usr/lib/libsqlite3.tbd", "Libraries/libsqlite3.tbd", PBXSourceTree.Sdk); + proj.AddFileToBuild(target, fileGuidSqlite); + fileGuidSqlite = proj.AddFile("usr/lib/libc++.tbd", "Libraries/libc++.tbd", PBXSourceTree.Sdk); + proj.AddFileToBuild(target, fileGuidSqlite); + fileGuidSqlite = proj.AddFile("usr/lib/libz.tbd", "Libraries/libz.tbd", PBXSourceTree.Sdk); + proj.AddFileToBuild(target, fileGuidSqlite); + fileGuidSqlite = proj.AddFile("usr/lib/libresolv.tbd", "Libraries/libresolv.tbd", PBXSourceTree.Sdk); + proj.AddFileToBuild(target, fileGuidSqlite); + fileGuidSqlite = proj.AddFile("usr/lib/libbz2.1.0.tbd", "Libraries/libbz2.1.0.tbd", PBXSourceTree.Sdk); + proj.AddFileToBuild(target, fileGuidSqlite); + fileGuidSqlite = proj.AddFile("usr/lib/libresolv.9.tbd", "Libraries/libresolv.9.tbd", PBXSourceTree.Sdk); + proj.AddFileToBuild(target, fileGuidSqlite); + fileGuidSqlite = proj.AddFile("usr/lib/libc++abi.tbd", "Libraries/libc++abi.tbd", PBXSourceTree.Sdk); + proj.AddFileToBuild(target, fileGuidSqlite); + + // sdk config files + proj.AddFileToBuild(target, proj.AddFile("tkg_config.plist", "tkg_config.plist",PBXSourceTree.Source)); + File.WriteAllText(projPath, proj.WriteToString()); + +#if UNITY_2019_3_OR_NEWER + string mainTarget = proj.GetUnityMainTargetGuid(); +#else + string targetName = UnityEditor.iOS.Xcode.PBXProject.GetUnityTargetName(); + string mainTarget = proj.TargetGuidByName(targetName); +#endif + proj.AddFileToBuild(mainTarget, proj.AddFile("tkg_config.plist", "tkg_config.plist", PBXSourceTree.Source)); + proj.WriteToFile(projPath); + + proj.AddFileToBuild(target, proj.AddFile("tkg_sdk_config.plist", "tkg_sdk_config.plist", PBXSourceTree.Source)); + File.WriteAllText(projPath, proj.WriteToString()); + + proj.AddFileToBuild(mainTarget, proj.AddFile("tkg_sdk_config.plist", "tkg_sdk_config.plist", PBXSourceTree.Source)); + proj.WriteToFile(projPath); + +#if AppStore_GB + proj.AddFileToBuild(target, proj.AddFile("GoogleService-Info.plist", "GoogleService-Info.plist", PBXSourceTree.Source)); + File.WriteAllText(projPath, proj.WriteToString()); + + proj.AddFileToBuild(mainTarget, proj.AddFile("GoogleService-Info.plist", "GoogleService-Info.plist", PBXSourceTree.Source)); + proj.WriteToFile(projPath); + +#endif + +#endif + } + + private static void copyConfigFile(string path) + { +#if AppStore_GB + string configPath = Application.dataPath + "/Configs/GB/tkg_config.plist"; + File.Copy(configPath, path + "/tkg_config.plist", true); + + string sdkConfigPath = Application.dataPath + "/Configs/GB/tkg_sdk_config.plist"; + File.Copy(sdkConfigPath, path + "/tkg_sdk_config.plist", true); + + string googlePath = Application.dataPath + "/Configs/GB/GoogleService-Info.plist"; + File.Copy(googlePath, path + "/GoogleService-Info.plist", true); +#else + string configPath = Application.dataPath + "/Configs/CN/tkg_config.plist"; + File.Copy(configPath, path + "/tkg_config.plist", true); + + string sdkConfigPath = Application.dataPath + "/Configs/CN/tkg_sdk_config.plist"; + File.Copy(sdkConfigPath, path + "/tkg_sdk_config.plist", true); +#endif + } + + + private static void ModifyBuildSettings(string _path) + { +#if UNITY_IOS + string projPath = PBXProject.GetPBXProjectPath(_path); + PBXProject proj = new PBXProject(); + proj.ReadFromString(File.ReadAllText(projPath)); + +#if UNITY_2019_3_OR_NEWER + string target = proj.GetUnityFrameworkTargetGuid(); +#else + string target = proj.TargetGuidByName("Unity-iPhone"); +#endif + + proj.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC"); + proj.SetBuildProperty(target, "ENABLE_BITCODE", "NO"); + proj.SetBuildProperty(target, "GCC_C_LANGUAGE_STANDARD", "gnu11"); + + + File.WriteAllText(projPath, proj.WriteToString()); +#endif + } + + private static void SetTeamIdAutoSign(string _path) + { +#if UNITY_IOS + string projPath = PBXProject.GetPBXProjectPath(_path); + PBXProject proj = new PBXProject(); + proj.ReadFromString(File.ReadAllText(projPath)); + File.WriteAllText(projPath, proj.WriteToString()); +#endif + } + + private static void ModifyInfoPlist(string _path) + { +#if UNITY_IOS + //2、修改Info.plist文件 + var plistPath = Path.Combine(_path, "Info.plist"); + var plist = new PlistDocument(); + plist.ReadFromFile(plistPath); +#if !AppStore_GB + plist.root.SetString("NSLocationAlwaysUsageDescription", "为了更好的体验游戏"); + plist.root.SetString("NSLocationWhenInUseUsageDescription", "为了更好的体验游戏"); + plist.root.SetString("NSUserTrackingUsageDescription", "该标识符将用于向您投放个性化广告"); + plist.root.SetString("NSPhotoLibraryUsageDescription", "为了更好的体验游戏,请允许APP保存图片到您的相册"); +#else + plist.root.SetString ("NSLocationAlwaysUsageDescription", "for better experience the game"); + plist.root.SetString ("NSLocationWhenInUseUsageDescription", "for better experience the game"); + plist.root.SetString("NSUserTrackingUsageDescription", "This identifier will be used to deliver personalized ads to you."); + plist.root.SetString("NSPhotoLibraryUsageDescription", "In order to experience the game better, please allow the APP to save pictures to your album."); + +#endif + File.WriteAllText(plistPath, plist.WriteToString()); +#endif + } + + + +// static void AddLocalization(string path) +// { +//#if !NO_SDK +// string pliststringPath = Application.dataPath + "/TKGSDK/UnitySDK/Plugins/ToukaGames/iOS/CommonPackage/lang/infoplist"; +// NativeLocale.AddLocalizedStringsIOS(path, pliststringPath); +//#endif +// } + + static void CopySplashImg(string path) + { +#if !AppStore_GB + string splashImgPath = Application.dataPath + "/TKGSDK/Splash/CN/LaunchScreen-iPhonePortrait.png"; + File.Copy(splashImgPath, path + "/LaunchScreen-iPhonePortrait.png", true); + + string splashImgPathIpad = Application.dataPath + "/TKGSDK/Splash/CN/LaunchScreen-iPad.png"; + File.Copy(splashImgPathIpad, path + "/LaunchScreen-iPad.png", true); +#else + + string splashImgPath = Application.dataPath + "/TKGSDK/Splash/GB/LaunchScreen-iPhonePortrait.png"; + File.Copy(splashImgPath, path + "/LaunchScreen-iPhonePortrait.png", true); + + string splashImgPathIpad = Application.dataPath + "/TKGSDK/Splash/GB/LaunchScreen-iPad.png"; + File.Copy(splashImgPathIpad, path + "/LaunchScreen-iPad.png", true); +#endif + + } + +} +#endif \ No newline at end of file diff --git a/Assets/TKGSDK/Editor/ToukaAnalyticsBuildPostProcessor.cs.meta b/Assets/TKGSDK/Editor/ToukaAnalyticsBuildPostProcessor.cs.meta new file mode 100644 index 00000000..edadab3f --- /dev/null +++ b/Assets/TKGSDK/Editor/ToukaAnalyticsBuildPostProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c02797fe6f3e4bdea04105d52492716 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Editor/ToukaEditor.cs b/Assets/TKGSDK/Editor/ToukaEditor.cs new file mode 100644 index 00000000..ee700f9e --- /dev/null +++ b/Assets/TKGSDK/Editor/ToukaEditor.cs @@ -0,0 +1,208 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using System; +using System.IO; +using System.Text; + +namespace Touka +{ + public class ToukaEditor + { + static string assetPath = Application.dataPath; + static string maxPath = assetPath + "/Plugins/ToukaGames/ADSSDK/MAXSDKs"; + static string toponPath = assetPath + "/Plugins/ToukaGames/ADSSDK/ToponSDK"; + static string maxPathX = assetPath + "/Plugins/ToukaGames/ADSSDK/MAXSDKs~"; + static string toponPathX = assetPath + "/Plugins/ToukaGames/ADSSDK/ToponSDK~"; + + [MenuItem("ToukaGames/ClearPlayerPrefs", priority = 1)] + public static void ClearPlayerPrefs() + { + PlayerPrefs.DeleteAll(); + PlayerPrefs.Save(); + } + + [MenuItem("ToukaGames/Settings For IOS CN", priority=1001)] + public static void SetIOSCNTOPONSeting() + { +#if UNITY_IOS + SetAPPSetting(AppChannel.AppStore_CN); +#endif + } + + [MenuItem("ToukaGames/Settings For Android CN", priority = 1002)] + public static void SetAndroidCNSeting() + { +#if UNITY_ANDROID + SetAPPSetting(AppChannel.GW002); +#endif + } + + [MenuItem("ToukaGames/Settings For IOS GB", priority = 10001)] + public static void SetIOSUSSeting() + { +#if UNITY_IOS + SetAPPSetting(AppChannel.AppStore_GB); +#endif + } + + [MenuItem("ToukaGames/Settings For Android GB", priority = 10002)] + public static void SetAndroidGPSeting() + { +#if UNITY_ANDROID + + SetAPPSetting(AppChannel.GooglePlay); +#endif + + } + + + + #region inner + + /// + /// Set APP Setting + /// + /// + public static void SetAPPSetting(AppChannel _appChannel) + { + Debug.Log("SetAPPSetting _appChannel : " + _appChannel); +#if UNITY_IOS + // bundle id + if(_appChannel == AppChannel.AppStore_CN || _appChannel == AppChannel.AppStore_GB) + { + Debug.Log("SetAPPSetting 01 ----- _AppChannelSymbol : " + _appChannel); + PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.iOS, TKGLoadConfig.GetConfigByKey(ConfigKeys.KEY_BunldId, _appChannel)); + } +#endif + +#if UNITY_ANDROID + Debug.Log("SetAPPSetting 02 android ----- _AppChannelSymbol : " + _appChannel); + PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, TKGLoadConfig.GetConfigByKey(ConfigKeys.KEY_BunldId, _appChannel)); +#endif + + // game name + PlayerSettings.productName = TKGLoadConfig.GetConfigByKey(ConfigKeys.KEY_AppName, _appChannel); + Debug.Log("productName : " + PlayerSettings.productName); + + // ScriptingDefineSymbols & ads sdks + ChangeDefineSymbols(_appChannel); + } + + + /// + /// change define symbols + /// + /// + private static void ChangeDefineSymbols(AppChannel _appChannel) + { + BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; + string symbolsStr = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); + Debug.Log("symbolsStr : " + symbolsStr); + + string[] symbols = symbolsStr.Split(';'); + HashSet symbolSet = new HashSet(); + for (int i = 0; i < symbols.Length; ++i) + { + if (!symbolSet.Contains(symbols[i])) + { + symbolSet.Add(symbols[i]); + } + } + + // remove all + if (symbolSet.Contains(AppChannel.AppStore_CN.ToString())) + { + symbolSet.Remove(AppChannel.AppStore_CN.ToString()); + } + + if (symbolSet.Contains(AppChannel.AppStore_GB.ToString())) + { + symbolSet.Remove(AppChannel.AppStore_GB.ToString()); + } + + if (symbolSet.Contains(AppChannel.GooglePlay.ToString())) + { + symbolSet.Remove(AppChannel.GooglePlay.ToString()); + } + + if (symbolSet.Contains(AppChannel.GW002.ToString())) + { + symbolSet.Remove(AppChannel.GW002.ToString()); + } + + // set new + if (_appChannel == AppChannel.AppStore_GB || _appChannel == AppChannel.GooglePlay) + { + symbolSet.Add(_appChannel.ToString()); + } + + + + // save data + StringBuilder sb = new StringBuilder(); + foreach (string s in symbolSet) + { + sb.Append(s + ";"); + } + PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, sb.ToString()); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + /// + /// SeIOSSDKDir + /// + /// + private static void SeIOSSDKDir(AppChannel _AppChannelSymbol) + { + if (_AppChannelSymbol == AppChannel.AppStore_CN) // iOS CN + { + if (Directory.Exists(maxPath)) + { + ChangePathName(maxPath, maxPathX); + } + + if (!Directory.Exists(toponPath)) + { + if (Directory.Exists(toponPathX)) + { + ChangePathName(toponPathX, toponPath); + } + } + } + else if (_AppChannelSymbol == AppChannel.AppStore_GB) // iOS GB + { + if (Directory.Exists(toponPath)) + { + ChangePathName(toponPath, toponPathX); + } + + if (!Directory.Exists(maxPath)) + { + if (Directory.Exists(maxPathX)) + { + ChangePathName(maxPathX, maxPath); + } + } + } + else + { + TKGDebugger.LogDebug("other channel"); + } + } + + /// + /// change path name + /// + /// + /// + private static void ChangePathName(string _oldPath, string _newPath) + { + System.IO.File.Move(_oldPath, _newPath); + } + +#endregion + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/Editor/ToukaEditor.cs.meta b/Assets/TKGSDK/Editor/ToukaEditor.cs.meta new file mode 100644 index 00000000..a81b2d67 --- /dev/null +++ b/Assets/TKGSDK/Editor/ToukaEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 715e90528ea174aef907d1f891638973 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK.meta b/Assets/TKGSDK/NativeSDK.meta new file mode 100644 index 00000000..57e4f451 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bc968b79be21f4edc9adab0ca6fba537 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts.meta b/Assets/TKGSDK/NativeSDK/Scripts.meta new file mode 100644 index 00000000..fec5dfb9 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eed640b9c819040d39a8835cc0c84f43 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK.meta b/Assets/TKGSDK/NativeSDK/Scripts/SDK.meta new file mode 100644 index 00000000..71ef2c46 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a1639d320c7b43edbd68ef2df35cad7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterface.cs b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterface.cs new file mode 100644 index 00000000..447a2cc5 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterface.cs @@ -0,0 +1,447 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + /// + /// TKG Native SDK interface call + /// + public abstract class TKGNativeInterface + { + private static TKGNativeInterface _instance; + + private string UnitySDKVersion = "2.2.2"; + + public static TKGNativeInterface Instance + { + get + { + if (_instance == null) + { +#if UNITY_EDITOR || UNITY_STANDLONE + _instance = new TKGNativeInterfaceWebgl(); +#elif UNITY_ANDROID + _instance = new TKGNativeInterfaceAndroid(); +#elif UNITY_IOS + _instance = new TKGNativeInterfaceIOS(); +#elif UNITY_WEBGL + _instance = new TKGNativeInterfaceWebgl(); +#endif + } + + return _instance; + } + } + + /// + /// init + /// + public virtual void Init(Action _initCallback = null) + { + TKGSDKCallback.SetInitCallback(_initCallback); + SetUnitySDKVersion(UnitySDKVersion); + } + + /// + /// Set game focus + /// + /// + public virtual void SetGameFocusListener(Action _gameFocusAction) + { + TKGSDKCallback.SetGameFocusCallback(_gameFocusAction); + } + + public virtual void SetRewardClickListener(Action _rewardClickAction) + { + TKGSDKCallback.SetRewardClickCallback(_rewardClickAction); + } + + /// + /// Get Channel + /// + /// + public abstract string GetChannel(); + + #region Ads + + public abstract void PurchasedRemoveAds(); + + public abstract void SetUnitySDKVersion(string sdkVersion); + + + #region Ads Show + + public abstract void RemoveNativeAd(); + + public abstract bool IsReadyNativeAd(); + + public abstract void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = ""); + + /// + /// Show banner Ad + /// + /// bannerAlign + public abstract void showBannerAd(TKGBannerAlign _pos); + + /// + /// Hide Banner Ad + /// + public abstract void hideBannerAd(); + + /// + /// Show Interstitial Ad + /// + /// auto log event : iv_ad_show + /// + public abstract void showInterstitialAd(); + + /// + /// Show Interstitial Ad + /// + /// auto log event : iv_ad_show & _adPos(eg.stage_end) + /// + /// + public abstract void showInterstitialAd(string _adPos, IVADType _IvType = IVADType.IV1); + + /// + /// Show Reward Ad + /// + /// + /// + public abstract void showRewardAd(string _adPos, int _itemCount = -1); + + /// + /// Show Reward Ad + /// + /// + /// + /// + public abstract void showRewardAd(string _adPos, int _itemCount, Dictionary _extraEvent); + + /// + /// Show Video Ad + /// + /// + /// + public abstract void showVideoAd(string _adPos, int _itemCount = -1); + + #endregion + + #region Ads isready + + /// + /// banner isReady + /// + /// + public abstract bool isBannerAdReady(); + + /// + /// Interstitial isReady + /// + /// + public abstract bool isInterstitialAdReady(); + + /// + /// Reward isReady + /// + /// + public abstract bool isRewardAdReady(); + + /// + /// FullScreen isReady + /// + /// + public abstract bool isVideoAdReady(); + + + #endregion + + #region Set Ads callback + + /// + /// Set Banner Ad Callback + /// + /// + public abstract void SetBannerAdCallback(AndroidBannerADTKGAdCallback _bannerCallback); + + /// + /// Set Interstital Ad Callback + /// + /// + public abstract void setInterstitalAdCallback(AndroidInterADTKGAdCallback _interCallback); + + /// + /// Set reward Ad Callback + /// + /// + public abstract void SetRewardAdCallback(AndroidRewardADTKGAdCallback _rewardCallback); + + /// + /// Set video Ad Callback(full screen ad, reward ad with no reward callback) + /// + /// + public abstract void setVideoAdCallback(AndroidInterADTKGAdCallback _videoCallback); + + + #endregion + + #region load ads + + /// + /// load interstitial ad + /// (retry 3 times, per time interval 10s) + /// + public abstract void loadInterstitialAD(); + + /// + /// load reward ad + /// (retry 3 times, per time interval 10s) + /// + public abstract void loadRewardAD(); + + /// + /// load video ad + /// (retry 3 times, per time interval 10s) + /// + public abstract void loadVideoAD(); + + #endregion + + + #endregion + + #region Log Event + + #region Normal + + /// + /// onEvent + /// + /// + /// + public abstract void onEvent(string _eventName); + + /// + /// onEvent + /// + /// + /// + /// + /// + public abstract void onEvent(string _eventName, string _key01, string _value01); + + /// + /// onEvent + /// + /// + /// + /// + /// + /// + /// + public abstract void onEvent(string _eventName, string _key01, string _value01, string _key02, string _value02); + + /// + /// onEvent + /// + /// + /// + public abstract void onEvent(string _eventName, Dictionary _keyValues); + + #endregion + + #region Level Event + + /// + /// Level Start + /// + /// + public abstract void LevelStart(string _levelId); + + /// + /// Level end + /// + /// + /// + public abstract void LevelEnd(string _levelId, StageResult _stageResult); + + #endregion + + #region Tracking Event + + /// + /// Log Tracking Event + /// + /// + public abstract void LogTrackingEvent(TrackingEventType _eventType); + + #endregion + + #endregion + + #region Online Config + + /// + /// get config - int + /// + /// + /// + public abstract int GetConfigInt(string _key, int _default); + + /// + /// get config - string + /// + /// + /// + /// + public abstract string GetConfigString(string _key, string _default); + + /// + /// get config - bool + /// + /// + /// + /// + public abstract bool GetConfigBool(string _key, bool _default); + + #endregion + + #region Others (Common) + + /// + /// review + /// + public abstract void Review(); + + /// + /// open Privacy url + /// + public abstract void OpenPrivacyURL(); + + /// + /// open user term url + /// + public abstract void OpenUserTermURL(); + + /// + /// open policy pop + /// + public abstract void OpenPolicyPop(); + + + /// + /// More Games + /// + public abstract void OpenMoreGame(); + + #endregion + + #region Others (Uncommon) + + /// + /// shake(no repeat) + /// + /// shake time + public abstract void shake(int _shakeType, float _intensity = 1); + + /// + /// shake(can repeat) + /// + /// repeat times : -1 + /// wait time,shake time(100,1000,100,111) + //public abstract void shake(int _repeatTimes, params int[] _shakeTime); + + /// + /// cancel shake + /// + public abstract void cancelShake(); + + /// + /// Show Tips + /// Pop-up prompt (the one with black transparent background) unified style, Chinese, Japanese, Korean and English, support multi-language, multi-language text + /// + /// game judges different languages ​​by itself and passes different strings + /// + /// title + /// content + public abstract void dialogTips(string _titleStr, string _contentStr); + + /// + /// Open ULR by Browser + /// + /// + public abstract void openUrlBrowser(string _url); + + /// + /// Open ULR By WEB POP + /// + /// + public abstract void openWebUrl(string _url); + + /// + /// show Toast + /// + /// + public abstract void toast(string _content); + + /// + /// push message + /// + public abstract void pushMsg(); + + /// + /// set log enable + /// + /// + public abstract void SetLogEnable(bool _enable); + + /// + /// share txt + /// + /// + public abstract void ShareTxt(string _shareTxt); + + /// + /// regist APNS + /// + public abstract void RegistAPNS(); + + /// + /// shake + /// + /// notification identifier + /// The body of the notification. + /// notify after the time interval. format: yyyy-MM-dd HH:mm:ss + /// The application badge number. + /// The title of the notification. + /// The subtitle of the notification. + public abstract void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle); + + /// + /// remove all notification + /// + public abstract void RemoveAllNotifications(); + + /// + /// remove notification by notification identifier + /// + /// notification identifier + public abstract void RemoveNotification(string notiId); + #endregion + + #region other callback + + /// + /// set tkg common callback + /// + public abstract void SetSDKCommonCallback(AndroidTKGCommonCalllback _commonCallback); + + /// + /// set user source callback + /// + public abstract void SetUserSourceCallback(AndroidTKGUserSourceCalllback _userSourceCallback); + + #endregion + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterface.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterface.cs.meta new file mode 100644 index 00000000..2dbda7d6 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e6ecace952721427f90ad8d4b4f8f6c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceAndroid.cs b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceAndroid.cs new file mode 100644 index 00000000..1e60d526 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceAndroid.cs @@ -0,0 +1,712 @@ +#if UNITY_ANDROID + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + /// + /// TKG Native SDK Android platform interface call + /// + public class TKGNativeInterfaceAndroid : TKGNativeInterface + { + + private AndroidJavaObject jo; + + public TKGNativeInterfaceAndroid() + { + // java interface class + using (AndroidJavaClass jc = new AndroidJavaClass("com.touka.tkg.TKGProxyJava")) + { + jo = jc.CallStatic("getInstance"); + } + } + + private T SDKCall(string _method, params object[] _param) + { + try + { + return jo.Call(_method, _param); + } + catch (Exception e) + { + Debug.LogError(e); + } + return default(T); + } + + private void SDKCall(string _method, params object[] _param) + { + try + { + jo.Call(_method, _param); + } + catch (Exception e) + { + Debug.LogError(e); + } + } + +#region init + + /// + /// init + /// + /// + public override void Init(Action _initCallback = null) + { + TKGDebugger.LogDebug("init ----- 00"); + base.Init(_initCallback); + TKGDebugger.LogDebug("init ----- 01"); + SetBannerAdCallback(new AndroidBannerADTKGAdCallback()); + TKGDebugger.LogDebug("init ----- 01 ------- a"); + setInterstitalAdCallback(new AndroidInterADTKGAdCallback()); + TKGDebugger.LogDebug("init ----- 01 ------- b"); + SetRewardAdCallback(new AndroidRewardADTKGAdCallback()); + TKGDebugger.LogDebug("init ----- 01 ------- c"); + SetSDKCommonCallback(new AndroidTKGCommonCalllback()); + TKGDebugger.LogDebug("init ----- 01 ------- d"); + + SDKCall("init", new AndroidProxyCallback()); + TKGDebugger.LogDebug("init ----- 02"); + } + +#endregion + + /// + /// Get Channel + /// + /// + public override string GetChannel() + { +#if UNITY_ANDROID + return SDKCall("getChannel"); +#endif + return "AndroidRoot"; + } + +#region Ads + + public override void PurchasedRemoveAds() + { +#if UNITY_ANDROID + SDKCall("purchasedRemoveAds"); +#endif + } + + public override void SetUnitySDKVersion(string sdkVersion) + { + +#if UNITY_ANDROID + SDKCall("setUnitySDKVersion","UnitySDK",sdkVersion); +#endif + + } + +#region Ads Show + + /// + /// Show banner Ad + /// + /// bannerAlign + public override void showBannerAd(TKGBannerAlign _pos) + { + int _posIndex = 2; + if(_pos == TKGBannerAlign.BannerCenterTopAlign) + { + _posIndex = 1; + + } + else if(_pos == TKGBannerAlign.BannerCenterBottomAlign) + { + _posIndex = 2; + } +#if UNITY_ANDROID + SDKCall("showBannerAd", _posIndex); +#endif + } + + /// + /// Hide Banner Ad + /// + public override void hideBannerAd() + { +#if UNITY_ANDROID + SDKCall("hideBannerAd"); +#endif + } + + public override void RemoveNativeAd() + { +#if UNITY_ANDROID + SDKCall("hideNative"); +#endif + } + + /// + /// Show Interstitial Ad + /// + public override void showInterstitialAd() + { +#if UNITY_ANDROID + SDKCall("showInterstitialAd"); +#endif + } + + /// + /// Show Interstitial Ad + /// + /// + public override void showInterstitialAd(string _adPos, IVADType _IvType = IVADType.IV1) + { + +#if UNITY_ANDROID + SDKCall("showInterstitialAd", _adPos, (int)_IvType); +#endif + } + + /// + /// Show Reward Ad + /// + /// + /// + public override void showRewardAd(string _adPos, int _itemCount = -1) + { + +#if UNITY_ANDROID + SDKCall("showRewardAd", _adPos, _itemCount); +#endif + } + + /// + /// Show Reward Ad + /// + /// + /// + /// + public override void showRewardAd(string _adPos, int _itemCount, Dictionary _extraEvent) + { +#if UNITY_ANDROID + SDKCall("showRewardAd", _adPos, _itemCount, _extraEvent); +#endif + } + + /// + /// Show Video Ad + /// + /// + /// + public override void showVideoAd(string _adPos, int _itemCount = -1) + { +#if UNITY_ANDROID + SDKCall("showVideoAd", _adPos, _itemCount); +#endif + } + + public override void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = "") + { +#if UNITY_ANDROID + Vector3[] tWorldCorners = new Vector3[4]; + pRect.GetWorldCorners(tWorldCorners); + + Vector2 tTopLeft = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[1]); + Vector2 tBottomRight = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[3]); + float tWidth = Mathf.Abs(tBottomRight.x - tTopLeft.x); + float tHeight = Mathf.Abs(tBottomRight.y - tTopLeft.y); + // x , y , width , height + // ((tTopLeft.x, Screen.height - tTopLeft.y, tWidth, tHeight) + SDKCall("showNative", pAdPos, tTopLeft.x, Screen.height - tTopLeft.y, tWidth, tHeight, pAdPos); +#endif + + } +#endregion + + +#region Ads isready + + /// + /// banner isReady + /// + /// + public override bool isBannerAdReady() + { + +#if UNITY_ANDROID + bool isReady = SDKCall("isBannerAdReady"); + return isReady; +#else + return false; +#endif + } + + /// + /// Interstitial isReady + /// + /// + public override bool isInterstitialAdReady() + { +#if UNITY_ANDROID + bool isReady = SDKCall("isInterstitialAdReady"); + return isReady; +#else + return false; +#endif + } + + /// + /// Reward isReady + /// + /// + public override bool isRewardAdReady() + { + +#if UNITY_ANDROID + bool isReady = SDKCall("isRewardAdReady"); + return isReady; +#else + return false; +#endif + } + + /// + /// FullScreen isReady + /// + /// + public override bool isVideoAdReady() + { +#if UNITY_ANDROID + bool isReady = SDKCall("isVideoAdReady"); + return isReady; +#else + return false; +#endif + } + + public override bool IsReadyNativeAd() + { +#if UNITY_ANDROID + bool isReady = SDKCall("isNativeReady"); + return isReady; +#else + return false; +#endif + } + +#endregion + +#region Set ads callback + + /// + /// Set Banner Ad Callback + /// + /// + public override void SetBannerAdCallback(AndroidBannerADTKGAdCallback _bannerCallback) + { +#if UNITY_ANDROID + SDKCall("setBannerAdCallback", _bannerCallback); +#endif + } + + /// + /// Set Interstital Ad Callback + /// + /// + public override void setInterstitalAdCallback(AndroidInterADTKGAdCallback _interCallback) + { +#if UNITY_ANDROID + SDKCall("setInterstitalAdCallback", _interCallback); +#endif + } + + /// + /// Set reward Ad Callback + /// + /// + public override void SetRewardAdCallback(AndroidRewardADTKGAdCallback _rewardCallback) + { +#if UNITY_ANDROID + SDKCall("setRewardAdCallback", _rewardCallback); +#endif + } + + + /// + /// Set video Ad Callback(full screen ad, reward ad with no reward callback) + /// + /// + public override void setVideoAdCallback(AndroidInterADTKGAdCallback _videoCallback) + { + +#if UNITY_ANDROID + SDKCall("setVideoAdCallback", _videoCallback); +#endif + } + +#endregion + +#region load ads + + /// + /// load interstitial ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadInterstitialAD() + { +#if UNITY_ANDROID + SDKCall("loadInterstitialAD"); +#endif + } + + /// + /// load reward ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadRewardAD() + { +#if UNITY_ANDROID + SDKCall("loadRewardAD"); +#endif + } + + /// + /// load video ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadVideoAD() + { +#if UNITY_ANDROID + SDKCall("loadVideoAD"); +#endif + } + +#endregion + +#endregion + + +#region Log Event + +#region Normal + + /// + /// onEvent + /// + /// + /// + public override void onEvent(string _eventName) + { +#if UNITY_ANDROID + SDKCall("onEvent", _eventName); +#endif + } + + /// + /// onEvent + /// + /// + /// + /// + /// + public override void onEvent(string _eventName, string _key01, string _value01) + { +#if UNITY_ANDROID + SDKCall("onEvent", _eventName, _key01, _value01); +#endif + } + + /// + /// onEvent + /// + /// + /// + /// + /// + /// + /// + public override void onEvent(string _eventName, string _key01, string _value01, string _key02, string _value02) + { +#if UNITY_ANDROID + SDKCall("onEvent", _eventName, _key01, _value01, _key02, _value02); +#endif + } + + /// + /// onEvent + /// + /// + /// + public override void onEvent(string _eventName, Dictionary _keyValues) + { +#if UNITY_ANDROID + SDKCall("onEvent", _eventName, Analytics.ToJavaHashMap(_keyValues)); +#endif + } + +#endregion + +#region Level Event + + /// + /// Level Start + /// + /// + public override void LevelStart(string _levelId) + { +#if UNITY_ANDROID + SDKCall("levelStart", _levelId); +#endif + } + + /// + /// Level end + /// + /// + /// + public override void LevelEnd(string _levelId, StageResult _stageResult) + { +#if UNITY_ANDROID + SDKCall("levelEnd", _levelId, (int)_stageResult); +#endif + } + +#endregion + +#region Tracking Event + + /// + /// Log Tracking Event + /// + /// + public override void LogTrackingEvent(TrackingEventType _eventType) + { +#if UNITY_ANDROID + SDKCall("LogTrackingEvent", (int)_eventType); +#endif + } + +#endregion + +#endregion + +#region Online Config + + /// + /// get config - int + /// + /// + /// + public override int GetConfigInt(string _key, int _default) + { + TKGDebugger.LogDebug("int _key : " + _key + " , _default : " + _default); + int newValue = SDKCall("getConfigInt", _key, _default); + return newValue; + } + + /// + /// get config - string + /// + /// + /// + public override string GetConfigString(string _key, string _default) + { + TKGDebugger.LogDebug("string _key : " + _key + " , _default : " + _default); + string newValue = SDKCall("getConfigString", _key, _default); + return newValue; + } + + /// + /// get config - bool + /// + /// + /// + public override bool GetConfigBool(string _key, bool _default) + { + TKGDebugger.LogDebug("bool _key : " + _key + " , _default : " + _default); + bool newValue = SDKCall("getConfigBool", _key, _default); + return newValue; + } + + +#endregion + +#region Others (Common) + + /// + /// review + /// + public override void Review() + { + SDKCall("review"); + } + + /// + /// open Privacy + /// + public override void OpenPrivacyURL() + { + SDKCall("openPrivacy"); + } + + /// + /// open agreement + /// + public override void OpenUserTermURL() + { + SDKCall("openAgreement"); + } + + /// + /// open policy pop + /// + public override void OpenPolicyPop() + { + SDKCall("openPrivacyDialog"); + } + + /// + /// More Games + /// + public override void OpenMoreGame() + { + SDKCall("moreGames"); + } + + /// + /// Set Log Enable + /// + /// + public override void SetLogEnable(bool _enable) + { + SDKCall("setEnableLog", _enable); + } +#endregion + +#region Others (Uncommon) + + /// + /// shake(no repeat) + /// + /// shake time + public override void shake(int _shakeType, float _intensity = 1) + { + long tShakeMS = _shakeType * _shakeType * 20 + (int)(_intensity * (_shakeType + 1) * 10); + SDKCall("shake", tShakeMS); + } + + /// + /// shake(can repeat) + /// + /// repeat times : -1 + /// wait time,shake time(100,1000,100,111) + //public override void shake(int _repeatTimes, params int[] _shakeTime) + //{ + // SDKCall("shake", _repeatTimes, _shakeTime); + //} + + /// + /// cancel shake + /// + public override void cancelShake() + { + SDKCall("cancelShake"); + } + + /// + /// Show Tips + /// Pop-up prompt (the one with black transparent background) unified style, Chinese, Japanese, Korean and English, support multi-language, multi-language text + /// + /// game judges different languages ​​by itself and passes different strings + /// + /// title + /// content + public override void dialogTips(string _titleStr, string _contentStr = "") + { + SDKCall("dialogTips", _titleStr); + } + + /// + /// Open ULR by Browser + /// + /// + public override void openUrlBrowser(string _url) + { + SDKCall("openUrlBrowser", _url); + } + + /// + /// Open ULR By WEB POP + /// + /// + public override void openWebUrl(string _url) + { + SDKCall("openWebUrl", _url); + } + + /// + /// show Toast + /// + /// + public override void toast(string _content) + { + SDKCall("toast"); + } + + /// + /// push message + /// + public override void pushMsg() + { + SDKCall("pushMsg"); + } + + // + /// share txt + /// + /// + public override void ShareTxt(string _shareTxt) + { + SDKCall("localShareTxt", _shareTxt); + } + + public override void RegistAPNS() + { + + } + + public override void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle) + { + + } + + public override void RemoveNotification(string notiId) + { + + } + + public override void RemoveAllNotifications() + { + + } + +#endregion + +#region common callback + + public override void SetSDKCommonCallback(AndroidTKGCommonCalllback _commonCallback) + { + SDKCall("setTkgCallback", _commonCallback); + } + + public override void SetUserSourceCallback(AndroidTKGUserSourceCalllback _userSourceCallback) + { + SDKCall("getUserSource", _userSourceCallback); + } + +#endregion + + } +} + +#endif \ No newline at end of file diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceAndroid.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceAndroid.cs.meta new file mode 100644 index 00000000..7c3f3409 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceAndroid.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7dfe4c5b853244cd9bcb80a48b5d9ae2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceDefault.cs b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceDefault.cs new file mode 100644 index 00000000..f2903d7e --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceDefault.cs @@ -0,0 +1,544 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + /// + /// TKG Native SDK Default platform interface call + /// + public class TKGNativeInterfaceDefault : TKGNativeInterface + { + public override void Init(Action _initCallback = null) + { + _initCallback?.Invoke(); + } + + public override void SetUnitySDKVersion(string sdkVersion) + { + + } + + /// + /// Get Channel + /// + /// + public override string GetChannel() + { + return ""; + } + + /// + /// Set Log Enable + /// + /// + public override void SetLogEnable(bool _enable) + { + + } + + #region Ads + + public override void PurchasedRemoveAds() + { + + } + + #region Ads Show + + /// + /// Show banner Ad + /// + /// bannerAlign + public override void showBannerAd(TKGBannerAlign _pos) + { + + } + + /// + /// Hide Banner Ad + /// + public override void hideBannerAd() + { + + } + + /// + /// Show Interstitial Ad + /// + public override void showInterstitialAd() + { + + } + + /// + /// Show Interstitial Ad + /// + public override void showInterstitialAd(string _adPos, IVADType _IvType = IVADType.IV1) + { + + } + + /// + /// Show Reward Ad + /// + public override void showRewardAd(string _adPos, int _itemCount = -1) + { + + } + + /// + /// Show Reward Ad + /// + /// + /// + /// + public override void showRewardAd(string _adPos, int _itemCount, Dictionary _extraEvent) + { + + } + + /// + /// Show FullScreen Ad(is RV without reward callback) + /// + public override void showVideoAd(string _adPos, int _itemCount = -1) + { + + } + + #endregion + + + #region Ads isready + + /// + /// banner isReady + /// + /// + public override bool isBannerAdReady() + { + return false; + } + + /// + /// Interstitial isReady + /// + /// + public override bool isInterstitialAdReady() + { + return false; + } + + /// + /// Reward isReady + /// + /// + public override bool isRewardAdReady() + { + return false; + } + + /// + /// FullScreen isReady + /// + /// + public override bool isVideoAdReady() + { + return false; + } + + #endregion + + #region Set callback + + /// + /// Set Banner Ad Callback + /// + /// + public override void SetBannerAdCallback(AndroidBannerADTKGAdCallback _bannerCallback) + { + + } + + /// + /// Set reward video click Callback + /// + /// + public override void SetRewardClickListener(Action _rewardClickAction) + { + + } + + /// + /// Set game focus Callback + /// + /// + public override void SetGameFocusListener(Action _gameFocusAction) + { + + } + + /// + /// Set Interstital Ad Callback + /// + /// + public override void setInterstitalAdCallback(AndroidInterADTKGAdCallback _interCallback) + { + + } + + /// + /// Set reward Ad Callback + /// + /// + public override void SetRewardAdCallback(AndroidRewardADTKGAdCallback _rewardCallback) + { + + } + + /// + /// Set video Ad Callback(full screen ad, reward ad with no reward callback) + /// + /// + public override void setVideoAdCallback(AndroidInterADTKGAdCallback _videoCallback) + { + + } + + #endregion + + #region load ads + + /// + /// load interstitial ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadInterstitialAD() + { + + } + + /// + /// load reward ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadRewardAD() + { + + } + + /// + /// load video ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadVideoAD() + { + + } + + + #endregion + + #endregion + + + #region Log Event + + /// + /// onEvent + /// + /// + /// + public override void onEvent(string _eventName) + { + + } + + /// + /// onEvent + /// + /// + /// + /// + /// + public override void onEvent(string _eventName, string _key01, string _value01) + { + + } + + /// + /// onEvent + /// + /// + /// + /// + /// + /// + /// + public override void onEvent(string _eventName, string _key01, string _value01, string _key02, string _value02) + { + + } + + /// + /// onEvent + /// + /// + /// + public override void onEvent(string _eventName, Dictionary _keyValues) + { + + } + + #region Level Event + + /// + /// Level Start + /// + /// + public override void LevelStart(string _levelId) + { + + } + + /// + /// Level end + /// + /// + /// + public override void LevelEnd(string _levelId, StageResult _stageResult) + { + + } + + #endregion + + #region Tracking Event + + /// + /// Log Tracking Event + /// + /// + public override void LogTrackingEvent(TrackingEventType _eventType) + { + + } + + #endregion + + + #endregion + + #region Online Config + + /// + /// get config - int + /// + /// + /// + public override int GetConfigInt(string _key, int _default) + { + return _default; + } + + /// + /// get config - string + /// + /// + /// + public override string GetConfigString(string _key, string _default) + { + return _default; + } + + /// + /// get config - bool + /// + /// + /// + public override bool GetConfigBool(string _key, bool _default) + { + return default; + } + + #endregion + + #region Others (Common) + + /// + /// review + /// + public override void Review() + { + + } + + /// + /// open Privacy + /// + public override void OpenPrivacyURL() + { + + } + + /// + /// open agreement + /// + public override void OpenUserTermURL() + { + + } + + /// + /// open policy pop + /// + public override void OpenPolicyPop() + { + + } + + /// + /// More Games + /// + public override void OpenMoreGame() + { + + } + + #endregion + + #region Others (Uncommon) + + /// + /// shake(no repeat) + /// + /// shake time + public override void shake(int _shakeType, float _intensity = 1) + { + + } + + /// + /// shake(can repeat) + /// + /// repeat times : -1 + /// wait time,shake time(100,1000,100,111) + //public override void shake(int _repeatTimes, params int[] _shakeTime) + //{ + + //} + + /// + /// cancel shake + /// + public override void cancelShake() + { + + } + + /// + /// Show Tips + /// Pop-up prompt (the one with black transparent background) unified style, Chinese, Japanese, Korean and English, support multi-language, multi-language text + /// + /// game judges different languages ​​by itself and passes different strings + /// + /// title + /// content + public override void dialogTips(string _titleStr, string _contentStr) + { + + } + + /// + /// Open ULR by Browser + /// + /// + public override void openUrlBrowser(string _url) + { + + } + + /// + /// Open ULR By WEB POP + /// + /// + public override void openWebUrl(string _url) + { + + } + + /// + /// show Toast + /// + /// + public override void toast(string _content) + { + + } + + /// + /// push message + /// + public override void pushMsg() + { + + } + + #endregion + + #region common callback + + public override void SetSDKCommonCallback(AndroidTKGCommonCalllback _commonCallback) + { + + } + + public override void SetUserSourceCallback(AndroidTKGUserSourceCalllback _userSourceCallback) + { + + } + + public override void RemoveNativeAd() + { + } + + public override bool IsReadyNativeAd() + { + return false; + } + + public override void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = "") + { + + } + + public override void ShareTxt(string _shareTxt) + { + + } + + + public override void RegistAPNS() + { + + } + + public override void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle) + { + + } + + public override void RemoveNotification(string notiId) + { + + } + + public override void RemoveAllNotifications() + { + + } + #endregion + + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceDefault.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceDefault.cs.meta new file mode 100644 index 00000000..93b3e3ef --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceDefault.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6a7921bd400e458ca857e2f180fa5ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceIOS.cs b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceIOS.cs new file mode 100644 index 00000000..c947555f --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceIOS.cs @@ -0,0 +1,635 @@ +#if UNITY_IPHONE + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + /// + /// TKG Native SDK iOS platform interface call + /// + public class TKGNativeInterfaceIOS : TKGNativeInterface + { + + public override void Init(Action _initCallback = null) + { + base.Init(_initCallback); +#if !UNITY_EDITOR + TGiOSAdManager.Instance.InitSDK(); +#endif + } + /// + /// Get Channel + /// + /// + public override string GetChannel() + { +#if !AppStore_GB + return "AppStore_CN"; +#else + return "AppStore_GB"; +#endif + } + + /// + /// Set Log Enable + /// + /// + public override void SetLogEnable(bool _enable) + { + TGiOSAdManager.Instance.SetLogEnable(_enable); + } + +#region Ads + public override void PurchasedRemoveAds() + { + +#if !UNITY_EDITOR + TGiOSAdManager.Instance.RemoveAllAds(); +#endif + + } + + public override void SetUnitySDKVersion(string sdkVersion) + { + +#if !UNITY_EDITOR + TGiOSAdManager.Instance.SetUnitySDKVersion(sdkVersion); +#endif + } + + + public override void RemoveNativeAd() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.RemoveNative(); +#endif + } + + public override bool IsReadyNativeAd() + { +#if !UNITY_EDITOR + + return TGiOSAdManager.Instance.IsReadyNative(); +#else + return false; +#endif + + } + + public override void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = "") + { + +#if !UNITY_EDITOR + TGiOSAdManager.Instance.ShowNative(pRect, pCam, pAdPos); +#endif + } + +#region Ads Show + + /// + /// Show banner Ad + /// + /// bannerAlign + public override void showBannerAd(TKGBannerAlign _pos) + { + +#if !UNITY_EDITOR + TGiOSAdManager.Instance.ShowBanner((int)_pos); +#endif + } + + /// + /// Hide Banner Ad + /// + public override void hideBannerAd() + { + + +#if !UNITY_EDITOR + TGiOSAdManager.Instance.HideBanner(); +#endif + } + + /// + /// Show Interstitial Ad + /// + public override void showInterstitialAd() + { + +#if !UNITY_EDITOR + TGiOSAdManager.Instance.ShowIntersititial("",0); +#endif + } + + /// + /// Show Interstitial Ad + /// + /// + public override void showInterstitialAd(string _adPos, IVADType _IvType = IVADType.IV1) + { +#if !UNITY_EDITOR + + TGiOSAdManager.Instance.ShowIntersititial(_adPos, (int)_IvType); +#endif + } + + /// + /// Show Reward Ad + /// + public override void showRewardAd(string _adPos, int _itemCount = -1) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.ShowRewardVideo(_adPos); +#endif + } + + /// + /// Show Reward Ad + /// + /// + /// + /// + public override void showRewardAd(string _adPos, int _itemCount, Dictionary _extraEvent) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.ShowRewardVideo(_adPos); +#endif + } + + /// + /// Show FullScreen Ad(is RV without reward callback) + /// + public override void showVideoAd(string _adPos, int _itemCount = -1) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.ShowRewardVideo(_adPos); +#endif + } + +#endregion + + +#region Ads isready + + /// + /// banner isReady + /// + /// + public override bool isBannerAdReady() + { +#if !UNITY_EDITOR + return TGiOSAdManager.Instance.IsReadyBanner(); +#else + return false; +#endif + } + + /// + /// Interstitial isReady + /// + /// + public override bool isInterstitialAdReady() + { +#if !UNITY_EDITOR + return TGiOSAdManager.Instance.IsReadyIntersititial(); +#else + return false; +#endif + } + + /// + /// Reward isReady + /// + /// + public override bool isRewardAdReady() + { +#if !UNITY_EDITOR + return TGiOSAdManager.Instance.IsReadyRewardVideo(); +#else + return false; +#endif + } + + /// + /// FullScreen isReady + /// + /// + public override bool isVideoAdReady() + { +#if !UNITY_EDITOR + return TGiOSAdManager.Instance.IsReadyRewardVideo(); +#else + return false; +#endif + } + +#endregion + +#region Set ads callback + + /// + /// Set Banner Ad Callback + /// + /// + public override void SetBannerAdCallback(AndroidBannerADTKGAdCallback _bannerCallback) + { + + } + + /// + /// Set Interstital Ad Callback + /// + /// + public override void setInterstitalAdCallback(AndroidInterADTKGAdCallback _interCallback) + { + + } + + /// + /// Set reward Ad Callback + /// + /// + public override void SetRewardAdCallback(AndroidRewardADTKGAdCallback _rewardCallback) + { + + } + + /// + /// Set video Ad Callback(full screen ad, reward ad with no reward callback) + /// + /// + public override void setVideoAdCallback(AndroidInterADTKGAdCallback _videoCallback) + { + + } + +#endregion + +#region load ads + + /// + /// load interstitial ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadInterstitialAD() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.LoadIntersititial(); +#endif + } + + /// + /// load reward ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadRewardAD() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.LoadRewardVideo(); +#endif + } + + /// + /// load video ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadVideoAD() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.LoadRewardVideo(); +#endif + } + +#endregion + +#endregion + + +#region Log Event + + /// + /// onEvent + /// + /// + /// + public override void onEvent(string _eventName) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.onEvent_UMeng(_eventName); +#endif + } + + /// + /// onEvent + /// + /// + /// + /// + /// + public override void onEvent(string _eventName, string _key01, string _value01) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.onEvent_UMeng(_eventName,_key01,_value01); +#endif + } + + /// + /// onEvent + /// + /// + /// + /// + /// + /// + /// + public override void onEvent(string _eventName, string _key01, string _value01, string _key02, string _value02) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.onEvent_UMeng(_eventName,_key01,_value01,_key02,_value02); +#endif + } + + /// + /// onEvent + /// + /// + /// + public override void onEvent(string _eventName, Dictionary _keyValues) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.onEvent_UMeng(_eventName,_keyValues); +#endif + } + +#region Level Event + + /// + /// Level Start + /// + /// + public override void LevelStart(string _levelId) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.onEvent_GameStart(_levelId); +#endif + } + + /// + /// Level end + /// + /// + public override void LevelEnd(string _levelId, StageResult _stageResult) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.onEvent_GameEnd(_levelId,(int)_stageResult); +#endif + + } + +#endregion + +#region Tracking Event + + /// + /// Log Tracking Event + /// + /// + public override void LogTrackingEvent(TrackingEventType _eventType) + { +#if !UNITY_EDITOR + + TGiOSAdManager.Instance.onEvent_Tenjin((int)_eventType); +#endif + } + +#endregion + +#endregion + +#region Online Config + + /// + /// get config - int + /// + /// + /// + public override int GetConfigInt(string _key, int _default) + { + return TGiOSAdManager.Instance.GetConfigInt(_key, _default); + } + + /// + /// get config - string + /// + /// + /// + public override string GetConfigString(string _key, string _default) + { + return TGiOSAdManager.Instance.GetConfigString(_key, _default); + } + + /// + /// get config - bool + /// + /// + /// + public override bool GetConfigBool(string _key, bool _default) + { + return TGiOSAdManager.Instance.GetConfigBool(_key, _default); + } + +#endregion + +#region Others (Common) + + /// + /// review + /// + public override void Review() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.Review(); +#endif + } + + /// + /// open Privacy + /// + public override void OpenPrivacyURL() + { +#if !UNITY_EDITOR + + TGiOSAdManager.Instance.OpenPrivacyURL(); +#endif + } + + /// + /// open agreement + /// + public override void OpenUserTermURL() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.OpenUserTermURL(); +#endif + } + + /// + /// open policy pop + /// + public override void OpenPolicyPop() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.OpenPolicyPop(); +#endif + } + + /// + /// More Games + /// + public override void OpenMoreGame() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.OpenMoreGame(); +#endif + } + // + /// share txt + /// + /// + public override void ShareTxt(string _shareTxt) + { + + } + + public override void RegistAPNS() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.registAPNS(); +#endif + } + + public override void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.registNotification(notiId,body,fireDate,badge,title,subTitle); +#endif + } + + public override void RemoveNotification(string notiId) + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.removeNotification(notiId); +#endif + } + + public override void RemoveAllNotifications() + { +#if !UNITY_EDITOR + TGiOSAdManager.Instance.removeAllNotifications(); +#endif + } +#endregion + +#region Others (Uncommon) + + /// + /// shake(no repeat) + /// + /// shake time + public override void shake(int _shakeType, float _intensity = 1) + { + TGiOSAdManager.Instance.shake(_shakeType,_intensity); + } + + /// + /// shake(can repeat) + /// + /// repeat times : -1 + /// wait time,shake time(100,1000,100,111) + //public override void shake(int _repeatTimes, params int[] _shakeTime) + //{ + + //} + + /// + /// cancel shake + /// + public override void cancelShake() + { + + } + + /// + /// Show Tips + /// Pop-up prompt (the one with black transparent background) unified style, Chinese, Japanese, Korean and English, support multi-language, multi-language text + /// + /// game judges different languages ​​by itself and passes different strings + /// + /// title + /// content + public override void dialogTips(string _titleStr, string _contentStr) + { + + } + + /// + /// Open ULR by Browser + /// + /// + public override void openUrlBrowser(string _url) + { + + } + + /// + /// Open ULR By WEB POP + /// + /// + public override void openWebUrl(string _url) + { + + } + + /// + /// show Toast + /// + /// + public override void toast(string _content) + { + + } + + /// + /// push message + /// + public override void pushMsg() + { + + } + +#endregion + +#region common callback + + public override void SetSDKCommonCallback(AndroidTKGCommonCalllback _commonCallback) + { + + } + + public override void SetUserSourceCallback(AndroidTKGUserSourceCalllback _userSourceCallback) + { + + } + + + +#endregion + + + } +} + +#endif \ No newline at end of file diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceIOS.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceIOS.cs.meta new file mode 100644 index 00000000..3932dd7a --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceIOS.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fdae982dad895469192477b35a39b5e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceWebgl.cs b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceWebgl.cs new file mode 100644 index 00000000..5f04bc74 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceWebgl.cs @@ -0,0 +1,759 @@ +#if UNITY_WEBGL + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using WeChatWASM; + +namespace Touka +{ + /// + /// TKG Native SDK Android platform interface call + /// + public class TKGNativeInterfaceWebgl : TKGNativeInterface + { + + private AndroidJavaObject jo; + + private WXBannerAd bannerAd; + private WXInterstitialAd interstitialAd; + private WXRewardedVideoAd rewardAd; + private WeChatWASM.SystemInfo sysInfo; + + public TKGNativeInterfaceWebgl() + { + + } + +#region init + + /// + /// init + /// + /// + public override void Init(Action _initCallback = null) + { + TKGDebugger.LogDebug("init ----- 00"); + SetBannerAdCallback(new AndroidBannerADTKGAdCallback()); + TKGDebugger.LogDebug("init ----- 01 ------- a"); + setInterstitalAdCallback(new AndroidInterADTKGAdCallback()); + TKGDebugger.LogDebug("init ----- 01 ------- b"); + SetRewardAdCallback(new AndroidRewardADTKGAdCallback()); + TKGDebugger.LogDebug("init ----- 01 ------- c"); + SetSDKCommonCallback(new AndroidTKGCommonCalllback()); + TKGDebugger.LogDebug("init ----- 01 ------- d"); + + WXBase.InitSDK((_code) => { + _initCallback(); + initAds(); + }); + TKGDebugger.LogDebug("init ----- 02"); + } + +#endregion + + /// + /// Get Channel + /// + /// + public override string GetChannel() + { + + return "WEBGL"; + } + +#region Ads + + public override void PurchasedRemoveAds() + { + + } + + public override void SetUnitySDKVersion(string sdkVersion) + { + + } + +#region Ads Show + + private void initAds() + { + Debug.Log("tkg native webgl initAds -----"); + + initBanner(); + initInterstitialAd(); + initRewardAd(); + } + + private void initBanner() + { + Debug.Log("tkg native webgl initBanner -----"); + sysInfo = WX.GetSystemInfoSync(); + bannerAd = WX.CreateBannerAd(new WXCreateBannerAdParam() + { + adUnitId = "adunit-2e20328227ca771b", + adIntervals = 30, + style = new Style() + { + left = 0, + top = (int)sysInfo.windowHeight - 100, + width = (int)sysInfo.windowWidth, + height = 100 + } + }); + bannerAd.OnError((WXADErrorResponse res) => + { + Debug.Log("bannerad error response"); + }); + bannerAd.OnLoad((WXADLoadResponse res) => + { + + }); + bannerAd.OnResize((WXADResizeResponse res) => + { + //拉取的广告可能跟设置的不一样,需要动态调整位置 + bannerAd.style.top = (int)sysInfo.windowHeight - res.height; + }); + } + + /// + /// Show banner Ad + /// + /// todo banner pos + /// + /// bannerAlign + public override void showBannerAd(TKGBannerAlign _pos) + { + Debug.Log("tkg native webgl showBannerAd -----"); + //int _posIndex = 2; + //if(_pos == TKGBannerAlign.BannerCenterTopAlign) + //{ + // _posIndex = 1; + + //} + //else if(_pos == TKGBannerAlign.BannerCenterBottomAlign) + //{ + // _posIndex = 2; + //} + + if(bannerAd != null) + { + Debug.Log("tkg native webgl showBannerAd ----- 01"); + bannerAd.Show(); + } + else + { + Debug.Log("tkg native webgl showBannerAd ----- 02"); + } + } + + /// + /// Hide Banner Ad + /// + public override void hideBannerAd() + { + if (bannerAd != null) + { + bannerAd.Hide(); + } + } + + private void initInterstitialAd() + { + Debug.Log("tkg native webgl initInterstitialAd -----"); + interstitialAd = WX.CreateInterstitialAd(new WXCreateInterstitialAdParam() + { + adUnitId = "" + }); + } + + /// + /// Show Interstitial Ad + /// + public override void showInterstitialAd() + { + + } + + /// + /// Show Interstitial Ad + /// + /// + public override void showInterstitialAd(string _adPos, IVADType _IvType = IVADType.IV1) + { + Debug.Log("tkg native webgl showInterstitialAd -----"); + if(interstitialAd != null) + { + Debug.Log("tkg native webgl showInterstitialAd ----- 01"); + interstitialAd.Show(); + } + else + { + Debug.Log("tkg native webgl showInterstitialAd ----- 02"); + } + } + + private void initRewardAd() + { + Debug.Log("tkg native webgl initRewardAd -----"); + rewardAd = WX.CreateRewardedVideoAd(new WXCreateRewardedVideoAdParam() { + adUnitId = "" + }); + } + + /// + /// Show Reward Ad + /// + /// + /// + public override void showRewardAd(string _adPos, int _itemCount = -1) + { + Debug.Log("tkg native webgl showRewardAd -----"); + if (rewardAd != null) + { + Debug.Log("tkg native webgl showRewardAd ----- 01"); + rewardAd.Show(); + } + else + { + Debug.Log("tkg native webgl showRewardAd ----- 02"); + } + } + + /// + /// Show Reward Ad + /// + /// + /// + /// + public override void showRewardAd(string _adPos, int _itemCount, Dictionary _extraEvent) + { + + } + + /// + /// Show Video Ad + /// + /// + /// + public override void showVideoAd(string _adPos, int _itemCount = -1) + { +#if UNITY_ANDROID + SDKCall("showVideoAd", _adPos, _itemCount); +#endif + } + + public override void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = "") + { +#if UNITY_ANDROID + Vector3[] tWorldCorners = new Vector3[4]; + pRect.GetWorldCorners(tWorldCorners); + + Vector2 tTopLeft = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[1]); + Vector2 tBottomRight = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[3]); + float tWidth = Mathf.Abs(tBottomRight.x - tTopLeft.x); + float tHeight = Mathf.Abs(tBottomRight.y - tTopLeft.y); + // x , y , width , height + // ((tTopLeft.x, Screen.height - tTopLeft.y, tWidth, tHeight) + SDKCall("showNative", pAdPos, tTopLeft.x, Screen.height - tTopLeft.y, tWidth, tHeight, pAdPos); +#endif + + } + + + public override void RemoveNativeAd() + { +#if UNITY_ANDROID + SDKCall("hideNative"); +#endif + } + #endregion + + + #region Ads isready + + /// + /// banner isReady + /// + /// + public override bool isBannerAdReady() + { + +#if UNITY_ANDROID + bool isReady = SDKCall("isBannerAdReady"); + return isReady; +#else + return false; +#endif + } + + /// + /// Interstitial isReady + /// + /// + public override bool isInterstitialAdReady() + { +#if UNITY_ANDROID + bool isReady = SDKCall("isInterstitialAdReady"); + return isReady; +#else + return false; +#endif + } + + /// + /// Reward isReady + /// + /// + public override bool isRewardAdReady() + { + +#if UNITY_ANDROID + bool isReady = SDKCall("isRewardAdReady"); + return isReady; +#else + return false; +#endif + } + + /// + /// FullScreen isReady + /// + /// + public override bool isVideoAdReady() + { +#if UNITY_ANDROID + bool isReady = SDKCall("isVideoAdReady"); + return isReady; +#else + return false; +#endif + } + + public override bool IsReadyNativeAd() + { +#if UNITY_ANDROID + bool isReady = SDKCall("isNativeReady"); + return isReady; +#else + return false; +#endif + } + +#endregion + +#region Set ads callback + + /// + /// Set Banner Ad Callback + /// + /// + public override void SetBannerAdCallback(AndroidBannerADTKGAdCallback _bannerCallback) + { +#if UNITY_ANDROID + SDKCall("setBannerAdCallback", _bannerCallback); +#endif + } + + /// + /// Set Interstital Ad Callback + /// + /// + public override void setInterstitalAdCallback(AndroidInterADTKGAdCallback _interCallback) + { +#if UNITY_ANDROID + SDKCall("setInterstitalAdCallback", _interCallback); +#endif + } + + /// + /// Set reward Ad Callback + /// + /// + public override void SetRewardAdCallback(AndroidRewardADTKGAdCallback _rewardCallback) + { +#if UNITY_ANDROID + SDKCall("setRewardAdCallback", _rewardCallback); +#endif + } + + + /// + /// Set video Ad Callback(full screen ad, reward ad with no reward callback) + /// + /// + public override void setVideoAdCallback(AndroidInterADTKGAdCallback _videoCallback) + { + +#if UNITY_ANDROID + SDKCall("setVideoAdCallback", _videoCallback); +#endif + } + +#endregion + +#region load ads + + /// + /// load interstitial ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadInterstitialAD() + { +#if UNITY_ANDROID + SDKCall("loadInterstitialAD"); +#endif + } + + /// + /// load reward ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadRewardAD() + { +#if UNITY_ANDROID + SDKCall("loadRewardAD"); +#endif + } + + /// + /// load video ad + /// (retry 3 times, per time interval 10s) + /// + public override void loadVideoAD() + { +#if UNITY_ANDROID + SDKCall("loadVideoAD"); +#endif + } + +#endregion + +#endregion + + +#region Log Event + +#region Normal + + /// + /// onEvent + /// + /// + /// + public override void onEvent(string _eventName) + { +#if UNITY_ANDROID + SDKCall("onEvent", _eventName); +#endif + } + + /// + /// onEvent + /// + /// + /// + /// + /// + public override void onEvent(string _eventName, string _key01, string _value01) + { +#if UNITY_ANDROID + SDKCall("onEvent", _eventName, _key01, _value01); +#endif + } + + /// + /// onEvent + /// + /// + /// + /// + /// + /// + /// + public override void onEvent(string _eventName, string _key01, string _value01, string _key02, string _value02) + { +#if UNITY_ANDROID + SDKCall("onEvent", _eventName, _key01, _value01, _key02, _value02); +#endif + } + + /// + /// onEvent + /// + /// + /// + public override void onEvent(string _eventName, Dictionary _keyValues) + { +#if UNITY_ANDROID + SDKCall("onEvent", _eventName, Analytics.ToJavaHashMap(_keyValues)); +#endif + } + +#endregion + +#region Level Event + + /// + /// Level Start + /// + /// + public override void LevelStart(string _levelId) + { +#if UNITY_ANDROID + SDKCall("levelStart", _levelId); +#endif + } + + /// + /// Level end + /// + /// + /// + public override void LevelEnd(string _levelId, StageResult _stageResult) + { +#if UNITY_ANDROID + SDKCall("levelEnd", _levelId, (int)_stageResult); +#endif + } + +#endregion + +#region Tracking Event + + /// + /// Log Tracking Event + /// + /// + public override void LogTrackingEvent(TrackingEventType _eventType) + { +#if UNITY_ANDROID + SDKCall("LogTrackingEvent", (int)_eventType); +#endif + } + +#endregion + +#endregion + +#region Online Config + + /// + /// get config - int + /// + /// + /// + public override int GetConfigInt(string _key, int _default) + { + TKGDebugger.LogDebug("int _key : " + _key + " , _default : " + _default); + //int newValue = SDKCall("getConfigInt", _key, _default); + return _default; + } + + /// + /// get config - string + /// + /// + /// + public override string GetConfigString(string _key, string _default) + { + TKGDebugger.LogDebug("string _key : " + _key + " , _default : " + _default); + //string newValue = SDKCall("getConfigString", _key, _default); + return _default; + } + + /// + /// get config - bool + /// + /// + /// + public override bool GetConfigBool(string _key, bool _default) + { + TKGDebugger.LogDebug("bool _key : " + _key + " , _default : " + _default); + //bool newValue = SDKCall("getConfigBool", _key, _default); + return _default; + } + + +#endregion + +#region Others (Common) + + /// + /// review + /// + public override void Review() + { + //SDKCall("review"); + } + + /// + /// open Privacy + /// + public override void OpenPrivacyURL() + { + //SDKCall("openPrivacy"); + } + + /// + /// open agreement + /// + public override void OpenUserTermURL() + { + //SDKCall("openAgreement"); + } + + /// + /// open policy pop + /// + public override void OpenPolicyPop() + { + //SDKCall("openPrivacyDialog"); + } + + /// + /// More Games + /// + public override void OpenMoreGame() + { + //SDKCall("moreGames"); + } + + /// + /// Set Log Enable + /// + /// + public override void SetLogEnable(bool _enable) + { + //SDKCall("setEnableLog", _enable); + } +#endregion + +#region Others (Uncommon) + + /// + /// shake(no repeat) + /// + /// shake time + public override void shake(int _shakeType, float _intensity = 1) + { + //long tShakeMS = _shakeType * _shakeType * 20 + (int)(_intensity * (_shakeType + 1) * 10); + //SDKCall("shake", tShakeMS); + } + + /// + /// shake(can repeat) + /// + /// repeat times : -1 + /// wait time,shake time(100,1000,100,111) + //public override void shake(int _repeatTimes, params int[] _shakeTime) + //{ + // SDKCall("shake", _repeatTimes, _shakeTime); + //} + + /// + /// cancel shake + /// + public override void cancelShake() + { + //SDKCall("cancelShake"); + } + + /// + /// Show Tips + /// Pop-up prompt (the one with black transparent background) unified style, Chinese, Japanese, Korean and English, support multi-language, multi-language text + /// + /// game judges different languages ​​by itself and passes different strings + /// + /// title + /// content + public override void dialogTips(string _titleStr, string _contentStr = "") + { + //SDKCall("dialogTips", _titleStr); + } + + /// + /// Open ULR by Browser + /// + /// + public override void openUrlBrowser(string _url) + { + //SDKCall("openUrlBrowser", _url); + } + + /// + /// Open ULR By WEB POP + /// + /// + public override void openWebUrl(string _url) + { + //SDKCall("openWebUrl", _url); + } + + /// + /// show Toast + /// + /// + public override void toast(string _content) + { + //SDKCall("toast"); + } + + /// + /// push message + /// + public override void pushMsg() + { + //SDKCall("pushMsg"); + } + + // + /// share txt + /// + /// + public override void ShareTxt(string _shareTxt) + { + //SDKCall("localShareTxt", _shareTxt); + } + + public override void RegistAPNS() + { + + } + + public override void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle) + { + + } + + public override void RemoveNotification(string notiId) + { + + } + + public override void RemoveAllNotifications() + { + + } + +#endregion + +#region common callback + + public override void SetSDKCommonCallback(AndroidTKGCommonCalllback _commonCallback) + { + //SDKCall("setTkgCallback", _commonCallback); + } + + public override void SetUserSourceCallback(AndroidTKGUserSourceCalllback _userSourceCallback) + { + //SDKCall("getUserSource", _userSourceCallback); + } + +#endregion + + } +} + +#endif \ No newline at end of file diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceWebgl.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceWebgl.cs.meta new file mode 100644 index 00000000..9ed419d7 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGNativeInterfaceWebgl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a725d99411d1b4029b1f1a64afa4957b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallback.cs b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallback.cs new file mode 100644 index 00000000..e981a741 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallback.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + /// + /// TKG Native SDK callback, Android & IOS use the same callback interface to ensure the uniformity of the interface + /// + public class TKGSDKCallback + { + // init callback + public static Action mInitCallback = null; + // game pause/resume callback + public static Action mGameFocusCallback = null; + + // tkg user source + public static Action mTKGUserSourceCallback = null; + + // tkg common callback + public static Action mTKGCommonCallback = null; + + // tkg reward click callback + public static Action mRewardClickCallback = null; + + + #region 插屏广告 + + /// + /// interad callback + /// + public static Action mInterAdCallback = null; + + #endregion + + + #region 激励视频广告 + + /// + /// reward callback + /// + public static Action mRewardCallback = null; + + /// + /// reward show failed + /// + public static Action mRewardShowFailedCallback = null; + + #endregion + + + /// + /// set init callback + /// + /// + public static void SetInitCallback(Action _initCallback = null) + { + mInitCallback = _initCallback; + } + + /// + /// set game pause/resume callback + /// + /// + public static void SetGameFocusCallback(Action _gameFocusAction) + { + mGameFocusCallback = _gameFocusAction; + } + + /// + /// set common callback + /// + /// + public static void SetTKGCommonCallback(Action _commonCallbackAction) + { + mTKGCommonCallback = _commonCallbackAction; + } + + /// + /// set user source callback + /// + /// + public static void SetTKGUserSourceCallback(Action _userSourceCallbackAction) + { + mTKGUserSourceCallback = _userSourceCallbackAction; + } + + public static void SetRewardClickCallback(Action _rewardClickAction) + { + mRewardClickCallback = _rewardClickAction; + } + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallback.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallback.cs.meta new file mode 100644 index 00000000..f0718df7 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d3e32a23cce1e4187a505a6f7506666d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackAndroid.cs b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackAndroid.cs new file mode 100644 index 00000000..d1152d9e --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackAndroid.cs @@ -0,0 +1,347 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Touka +{ + public class TKGSDKCallbackAndroid + { + + } + + + + /// + /// TGK framework level callback + /// + public class AndroidProxyCallback : AndroidJavaProxy + { + public AndroidProxyCallback() : base("com.touka.tkg.idal.ITKGProxyCallback") { } + + // init succ callback + public void onInitSuccess() + { + TKGDebugger.LogDebug("onInitSuccess in AndroidProxyCallback"); + + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mInitCallback != null) + { + TKGSDKCallback.mInitCallback.Invoke(); + TKGSDKCallback.mInitCallback = null; + } + }, ""); + } + + // init fail callback + public void onInitFail() + { + TKGDebugger.LogDebug("onInitFail"); + + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mInitCallback != null) + { + TKGSDKCallback.mInitCallback.Invoke(); + TKGSDKCallback.mInitCallback = null; + } + }, ""); + } + + // game Activity disable callback + public void onPause() + { + TKGDebugger.LogDebug("onPause"); + + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mGameFocusCallback != null) + { + TKGSDKCallback.mGameFocusCallback.Invoke(false); + } + }, ""); + } + + // game Activity visible callback + public void onResume() + { + TKGDebugger.LogDebug("onResume"); + + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mGameFocusCallback != null) + { + TKGSDKCallback.mGameFocusCallback.Invoke(true); + } + }, ""); + } + + // pause callback, like stop sound + public void pauseGame() + { + TKGDebugger.LogDebug("pauseGame"); + + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mGameFocusCallback != null) + { + TKGSDKCallback.mGameFocusCallback.Invoke(false); + } + + }, ""); + } + + // result callback, like replay sound + public void resumeGame() + { + TKGDebugger.LogDebug("resumeGame"); + + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mGameFocusCallback != null) + { + TKGSDKCallback.mGameFocusCallback.Invoke(true); + } + }, ""); + } + + } + + /// + /// InterAd callback + /// + public class AndroidInterADTKGAdCallback : AndroidJavaProxy + { + public AndroidInterADTKGAdCallback() : base("com.touka.tkg.idal.ITKGAdCallback") { } + + public void onClosed() + { + TKGDebugger.LogDebug("onClosed"); + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mInterAdCallback != null) + { + TKGSDKCallback.mInterAdCallback.Invoke(); + TKGSDKCallback.mInterAdCallback = null; + } + }, ""); + + } + public void onClicked() + { + TKGDebugger.LogDebug("onClicked"); + } + + // click to skip ad + public void onSkip() + { + TKGDebugger.LogDebug("onSkip"); + } + public void onLoaded() + { + TKGDebugger.LogDebug("onLoaded"); + } + public void onLoadFail(int code, string msg) + { + TKGDebugger.LogDebug("onLoadFail"); + } + public void onShow() + { + TKGDebugger.LogDebug("onShow"); + } + public void onShowFail(int code, string msg) + { + TKGDebugger.LogDebug("onShowFail"); + + if (code == (int)AdShowFailCodeType.AdIsNotReady) + { + TKGDebugger.LogDebug("iv show failed - AdIsNotReady"); + }else if(code == (int)AdShowFailCodeType.AdIsReadyCannotShow) + { + TKGDebugger.LogDebug("iv show failed - AdIsReadyCannotShow"); + } + else + { + TKGDebugger.LogDebug("iv show failed - AdShowFailReal"); + } + + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mInterAdCallback != null) + { + TKGSDKCallback.mInterAdCallback.Invoke(); + TKGSDKCallback.mInterAdCallback = null; + } + }, ""); + } + } + + /// + /// RewardAd callback + /// + public class AndroidRewardADTKGAdCallback : AndroidJavaProxy + { + public AndroidRewardADTKGAdCallback() : base("com.touka.tkg.idal.ITKGRewardADCallback") { } + + public void onClosed() + { + TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onClosed"); + } + public void onClicked() + { + TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onClicked"); + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mRewardClickCallback != null) + { + TKGSDKCallback.mRewardClickCallback.Invoke(); + } + }, ""); + } + + // click to skip ad + public void onSkip() + { + TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onSkip"); + } + public void onLoaded() + { + TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onLoaded"); + } + public void onLoadFail(int code, string msg) + { + TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onLoadFail, code : " + code + " , msg : " + msg); + } + public void onShow() + { + TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onShow"); + } + + public void onShowFail(int code, string msg) + { + TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onShowFail, code : " + code + " , msg : " + msg); + Loom.QueueOnMainThread((pObj) => + { + if (TKGSDKCallback.mRewardShowFailedCallback != null) + { + TKGSDKCallback.mRewardShowFailedCallback.Invoke(); + TKGSDKCallback.mRewardShowFailedCallback = null; + } + }, ""); + } + + /// + /// RewardAd give reward in this method + /// + /// when show rv succ, close rv must call back this, can use as iOS close callback + /// + /// + /// + /// + public void onReward(string msg, int code, bool isReward) + { + TKGDebugger.LogDebug("onReward, msg : " + msg + " , code : " + code + " , isReward : " + isReward); + Loom.QueueOnMainThread((pObj) => + { + if (isReward) + { + if (TKGSDKCallback.mRewardCallback != null) + { + TKGSDKCallback.mRewardCallback.Invoke(true); + TKGSDKCallback.mRewardCallback = null; + } + } + else + { + if (TKGSDKCallback.mRewardCallback != null) + { + TKGSDKCallback.mRewardCallback.Invoke(false); + TKGSDKCallback.mRewardCallback = null; + } + } + }, ""); + } + } + + /// + /// bannerAd callback + /// + public class AndroidBannerADTKGAdCallback : AndroidJavaProxy + { + public AndroidBannerADTKGAdCallback() : base("com.touka.tkg.idal.ITKGAdCallback") { } + + public void onClosed() + { + TKGDebugger.LogDebug("onClosed"); + } + public void onClicked() + { + TKGDebugger.LogDebug("onClicked"); + } + public void onSkip() + { + TKGDebugger.LogDebug("onSkip"); + } + public void onLoaded() + { + TKGDebugger.LogDebug("onLoaded"); + } + public void onLoadFail(int code, string msg) + { + TKGDebugger.LogDebug("onLoadFail, code : " + code + " , msg : " + msg); + } + public void onShow() + { + TKGDebugger.LogDebug("onShow"); + } + public void onShowFail(int code, string msg) + { + TKGDebugger.LogDebug("onShowFail, code : " + code + " , msg : " + msg); + } + } + + /// + /// tkg callback + /// + public class AndroidTKGCommonCalllback : AndroidJavaProxy + { + public AndroidTKGCommonCalllback() : base("com.touka.tkg.idal.TKGCalllback") { } + + public void onCall(int _code, string _msg) + { + TKGDebugger.LogDebug("TKGCallback onCall, code : " + _code + " , msg : " + _msg); + if(TKGSDKCallback.mTKGCommonCallback != null) + { + TKGSDKCallback.mTKGCommonCallback.Invoke((CommonCallbackCode)_code, _msg); + TKGSDKCallback.mTKGCommonCallback = null; + } + } + } + + /// + /// tkg callback + /// + public class AndroidTKGUserSourceCalllback : AndroidJavaProxy + { + public AndroidTKGUserSourceCalllback() : base("com.touka.tkg.idal.UserSourceCallback") { } + + public void onResult(bool _isOrganic, string _userSource) + { + TKGDebugger.LogDebug("TKGCallback onCall, isOrganic : " + _isOrganic + " , userSource : " + _userSource); + if(TKGSDKCallback.mTKGUserSourceCallback != null) + { + TKGSDKCallback.mTKGUserSourceCallback.Invoke(_isOrganic, _userSource); + TKGSDKCallback.mTKGUserSourceCallback = null; + } + } + } + + /* + Loom.QueueOnMainThread((pObj) => + { + + }, ""); + */ + +} + diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackAndroid.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackAndroid.cs.meta new file mode 100644 index 00000000..59e91fca --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackAndroid.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dc167804e776c4f849e823abc9f340bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackIOS.cs b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackIOS.cs new file mode 100644 index 00000000..21dabd81 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackIOS.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace Touka +{ + public class TKGSDKCallbackIOS + { + + + } +} + diff --git a/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackIOS.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackIOS.cs.meta new file mode 100644 index 00000000..4260592e --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/SDK/TKGSDKCallbackIOS.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f7da094c07e543bcb390b93b01aba44 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/Utils.meta b/Assets/TKGSDK/NativeSDK/Scripts/Utils.meta new file mode 100644 index 00000000..77e47af2 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 49988ebe4ee55484ba94dff7acaadc7c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/Utils/DplusAgent.cs b/Assets/TKGSDK/NativeSDK/Scripts/Utils/DplusAgent.cs new file mode 100644 index 00000000..f4abb407 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/Utils/DplusAgent.cs @@ -0,0 +1,250 @@ +//#undef UNITY_EDITOR + +using UnityEngine; +using System; +using System.Runtime.InteropServices; +using System.Collections; +using System.Collections.Generic; +using System.Text; + + + +namespace Touka +{ + + public partial class Analytics + { + + +#if UNITY_ANDROID + + private static AndroidJavaObject AndroidJavaJsonObject(JSONObject jSONObject) + { + return new AndroidJavaObject("org.json.JSONObject", jSONObject.ToString()); + } + + private static JSONObject jsonObjectFromJava(AndroidJavaObject androidJavaJsonObject) + { + return (JSONObject)JSONNode.Parse(androidJavaJsonObject.Call("toString")); + } + + private static AndroidJavaObject ToJavaObject(object obj) + { + if (obj is int) + { + return new AndroidJavaObject("java.lang.Integer", obj); + } + else if (obj is long) + { + return new AndroidJavaObject("java.lang.Long", obj); + } + + else if (obj is float) + { + return new AndroidJavaObject("java.lang.Float", obj); + + } + else if (obj is double) + { + return new AndroidJavaObject("java.lang.Double", obj); + } + else if (obj is string) + { + return new AndroidJavaObject("java.lang.String", obj); + + } + else if(obj is bool) + { + + return new AndroidJavaObject("java.lang.Integer", Convert.ToInt32((bool)obj)); + + } + else + { + Debug.Log("不支持加入" + obj.GetType()+"类型,此kv对被丢弃"); + return null; + } + + + + + } + + + + private static AndroidJavaObject ToJavaHashMap(Dictionary dic) + { + var hashMap = new AndroidJavaObject("java.util.HashMap"); + + + foreach (var kv in dic) + { + var vauleObj = ToJavaObject(kv.Value); + if (vauleObj != null) + { + + hashMap.Call("put", kv.Key, vauleObj); + } + + } + + return hashMap; + } + public static AndroidJavaObject ToJavaHashMap(Dictionary dic) + { + var hashMap = new AndroidJavaObject("java.util.HashMap"); + foreach (var entry in dic) + { + hashMap.Call("put", entry.Key, entry.Value); + } + return hashMap; + + } + + private static AndroidJavaObject ToJavaList(String[] list) + { + var javaList = new AndroidJavaObject("java.util.ArrayList"); + + + foreach (String str in list) + { + javaList.Call("add", str); + } + + return javaList; + } + +#elif UNITY_IPHONE + + private static string ToJsonStr(Dictionary dict) + { + + var builder = new StringBuilder("{"); + foreach (KeyValuePair kv in dict) + { + if(kv.Value is string) + { + builder.AppendFormat("\"{0}\":\"{1}\",", kv.Key, kv.Value); + } + else if(kv.Value is float || kv.Value is double|| kv.Value is int || kv.Value is long) + { + builder.AppendFormat("\"{0}\":{1},", kv.Key, kv.Value.ToString()); + } + else if( kv.Value is bool) + { + builder.AppendFormat("\"{0}\":{1},", kv.Key, Convert.ToInt32(kv.Value)); + } + else + { + Debug.Log("不支持此类型"); + + } + + + + } + builder[builder.Length - 1] = '}'; + return builder.ToString(); + + + } +#endif + + + + + public static void EventObject(String eventID,Dictionary dict) + { + + } + + + + + public static void RegisterPreProperties(JSONObject jsonObject) + { + JSONObject filteredJsonObject = new JSONObject(); + + foreach (KeyValuePair kv in jsonObject) + { + if (kv.Value.IsObject || kv.Value.IsArray) + { + Debug.LogError("不支持加入Object/Array类型,此kv对被丢弃"); + + + } + else if ( kv.Value.IsBoolean) + { + + filteredJsonObject.Add(kv.Key, Convert.ToInt32(kv.Value.AsBool)); + + + } + else + { + filteredJsonObject.Add(kv.Key, kv.Value); + } + + + + } + + + + + } + + + + public static void UnregisterPreProperty(String propertyName) + { + + + } + + + + + + public static JSONObject GetPreProperties() + { + return null; + + + } + public static void ClearPreProperties() + { + + } + + + public static void SetFirstLaunchEvent(string[] trackID) + { + + + } + +#if UNITY_IPHONE + [DllImport("__Internal")] + private static extern void _EventObject(string eventID, string jsonStr); + [DllImport("__Internal")] + private static extern void _RegisterSuperProperty(string jsonStr); + [DllImport("__Internal")] + private static extern void _UnregisterSuperProperty(string propertyName); + [DllImport("__Internal")] + private static extern string _GetSuperProperties(); + [DllImport("__Internal")] + private static extern void _ClearSuperProperties(); + [DllImport("__Internal")] + private static extern void _SetFirstLaunchEvent(string[] propertyName,int len); +#endif + + + } + + + + + + +} diff --git a/Assets/TKGSDK/NativeSDK/Scripts/Utils/DplusAgent.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/Utils/DplusAgent.cs.meta new file mode 100644 index 00000000..efec719d --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/Utils/DplusAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 683ed0c395fa44a26b9d5ba286cb521c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/Utils/Loom.cs b/Assets/TKGSDK/NativeSDK/Scripts/Utils/Loom.cs new file mode 100644 index 00000000..ac51d04a --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/Utils/Loom.cs @@ -0,0 +1,178 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; +using System.Threading; +using System.Linq; + +namespace Touka +{ + public class Loom : MonoBehaviour + { + public static int maxThreads = 8; + static int numThreads; + + private static Loom _current; + //private int _count; + public static Loom Current + { + get + { + Initialize(); + return _current; + } + } + + void Awake() + { + _current = this; + initialized = true; + } + + static bool initialized; + + public static void Initialize() + { + if (!initialized) + { + + if (!Application.isPlaying) + return; + initialized = true; + var g = new GameObject("Loom"); + _current = g.AddComponent(); +#if !ARTIST_BUILD + UnityEngine.Object.DontDestroyOnLoad(g); +#endif + } + + } + public struct NoDelayedQueueItem + { + public Action action; + public object param; + } + + private List _actions = new List(); + public struct DelayedQueueItem + { + public float time; + public Action action; + public object param; + } + private List _delayed = new List(); + + List _currentDelayed = new List(); + + public static void QueueOnMainThread(Action taction, object tparam) + { + QueueOnMainThread(taction, tparam, 0f); + } + public static void QueueOnMainThread(Action taction, object tparam, float time) + { + if (time != 0) + { + lock (Current._delayed) + { + Current._delayed.Add(new DelayedQueueItem { time = Time.time + time, action = taction, param = tparam }); + } + } + else + { + lock (Current._actions) + { + Current._actions.Add(new NoDelayedQueueItem { action = taction, param = tparam }); + } + } + } + + public static Thread RunAsync(Action a) + { + Initialize(); + while (numThreads >= maxThreads) + { + Thread.Sleep(100); + } + Interlocked.Increment(ref numThreads); + ThreadPool.QueueUserWorkItem(RunAction, a); + return null; + } + + private static void RunAction(object action) + { + try + { + ((Action)action)(); + } + catch + { + } + finally + { + Interlocked.Decrement(ref numThreads); + } + + } + + + void OnDisable() + { + if (_current == this) + { + + _current = null; + } + } + + public void ToukaGamesInit() + { + + } + + + + // Use this for initialization + void Start() + { + + } + + List _currentActions = new List(); + + // Update is called once per frame + void Update() + { + if (_actions.Count > 0) + { + lock (_actions) + { + _currentActions.Clear(); + _currentActions.AddRange(_actions); + _actions.Clear(); + } + for (int i = 0; i < _currentActions.Count; i++) + { + _currentActions[i].action(_currentActions[i].param); + } + } + + if (_delayed.Count > 0) + { + lock (_delayed) + { + _currentDelayed.Clear(); + _currentDelayed.AddRange(_delayed.Where(d => d.time <= Time.time)); + for (int i = 0; i < _currentDelayed.Count; i++) + { + _delayed.Remove(_currentDelayed[i]); + } + } + + for (int i = 0; i < _currentDelayed.Count; i++) + { + _currentDelayed[i].action(_currentDelayed[i].param); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/NativeSDK/Scripts/Utils/Loom.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/Utils/Loom.cs.meta new file mode 100644 index 00000000..41035f77 --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/Utils/Loom.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9035aca16cc8640a780f0553de2035aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/Utils/MiniJSON.cs b/Assets/TKGSDK/NativeSDK/Scripts/Utils/MiniJSON.cs new file mode 100644 index 00000000..89a1c8ec --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/Utils/MiniJSON.cs @@ -0,0 +1,637 @@ +/* + * Copyright (c) 2013 Calvin Rien + * + * Based on the JSON parser by Patrick van Bergen + * http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html + * + * Simplified it so that it doesn't throw exceptions + * and can be used in Unity iPhone with maximum code stripping. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace Touka +{ + namespace MiniJSON + { + // Example usage: + // + // using UnityEngine; + // using System.Collections; + // using System.Collections.Generic; + // using MiniJSON; + // + // public class MiniJSONTest : MonoBehaviour { + // void Start () { + // var jsonString = "{ \"array\": [1.44,2,3], " + + // "\"object\": {\"key1\":\"value1\", \"key2\":256}, " + + // "\"string\": \"The quick brown fox \\\"jumps\\\" over the lazy dog \", " + + // "\"unicode\": \"\\u3041 Men\u00fa sesi\u00f3n\", " + + // "\"int\": 65536, " + + // "\"float\": 3.1415926, " + + // "\"bool\": true, " + + // "\"null\": null }"; + // + // var dict = Json.Deserialize(jsonString) as Dictionary; + // + // Debuger.Log("deserialized: " + dict.GetType()); + // Debuger.Log("dict['array'][0]: " + ((List) dict["array"])[0]); + // Debuger.Log("dict['string']: " + (string) dict["string"]); + // Debuger.Log("dict['float']: " + (double) dict["float"]); // floats come out as doubles + // Debuger.Log("dict['int']: " + (long) dict["int"]); // ints come out as longs + // Debuger.Log("dict['unicode']: " + (string) dict["unicode"]); + // + // var str = Json.Serialize(dict); + // + // Debuger.Log("serialized: " + str); + // } + // } + + /// + /// This class encodes and decodes JSON strings. + /// Spec. details, see http://www.json.org/ + /// + /// JSON uses Arrays and Objects. These correspond here to the datatypes IList and IDictionary. + /// All numbers are parsed to doubles. + /// + public static class Json + { + /// + /// Parses the string json into a value + /// + /// A JSON string. + /// An List<object>, a Dictionary<string, object>, a double, an integer,a string, null, true, or false + public static object Deserialize(string json) + { + // save the string for debug information + if (json == null) + { + return null; + } + + return Parser.Parse(json); + } + + sealed class Parser : IDisposable + { + const string WORD_BREAK = "{}[],:\""; + + public static bool IsWordBreak(char c) + { + return Char.IsWhiteSpace(c) || WORD_BREAK.IndexOf(c) != -1; + } + + enum TOKEN + { + NONE, + CURLY_OPEN, + CURLY_CLOSE, + SQUARED_OPEN, + SQUARED_CLOSE, + COLON, + COMMA, + STRING, + NUMBER, + TRUE, + FALSE, + NULL + }; + + StringReader json; + + Parser(string jsonString) + { + json = new StringReader(jsonString); + } + + public static object Parse(string jsonString) + { + using (var instance = new Parser(jsonString)) + { + return instance.ParseValue(); + } + } + + public void Dispose() + { + json.Dispose(); + json = null; + } + + Dictionary ParseObject() + { + Dictionary table = new Dictionary(); + + // ditch opening brace + json.Read(); + + // { + while (true) + { + switch (NextToken) + { + case TOKEN.NONE: + return null; + case TOKEN.COMMA: + continue; + case TOKEN.CURLY_CLOSE: + return table; + default: + // name + string name = ParseString(); + if (name == null) + { + return null; + } + + // : + if (NextToken != TOKEN.COLON) + { + return null; + } + // ditch the colon + json.Read(); + + // value + table[name] = ParseValue(); + break; + } + } + } + + List ParseArray() + { + List array = new List(); + + // ditch opening bracket + json.Read(); + + // [ + var parsing = true; + while (parsing) + { + TOKEN nextToken = NextToken; + + switch (nextToken) + { + case TOKEN.NONE: + return null; + case TOKEN.COMMA: + continue; + case TOKEN.SQUARED_CLOSE: + parsing = false; + break; + default: + object value = ParseByToken(nextToken); + + array.Add(value); + break; + } + } + + return array; + } + + object ParseValue() + { + TOKEN nextToken = NextToken; + return ParseByToken(nextToken); + } + + object ParseByToken(TOKEN token) + { + switch (token) + { + case TOKEN.STRING: + return ParseString(); + case TOKEN.NUMBER: + return ParseNumber(); + case TOKEN.CURLY_OPEN: + return ParseObject(); + case TOKEN.SQUARED_OPEN: + return ParseArray(); + case TOKEN.TRUE: + return true; + case TOKEN.FALSE: + return false; + case TOKEN.NULL: + return null; + default: + return null; + } + } + + string ParseString() + { + StringBuilder s = new StringBuilder(); + char c; + + // ditch opening quote + json.Read(); + + bool parsing = true; + while (parsing) + { + + if (json.Peek() == -1) + { + parsing = false; + break; + } + + c = NextChar; + switch (c) + { + case '"': + parsing = false; + break; + case '\\': + if (json.Peek() == -1) + { + parsing = false; + break; + } + + c = NextChar; + switch (c) + { + case '"': + case '\\': + case '/': + s.Append(c); + break; + case 'b': + s.Append('\b'); + break; + case 'f': + s.Append('\f'); + break; + case 'n': + s.Append('\n'); + break; + case 'r': + s.Append('\r'); + break; + case 't': + s.Append('\t'); + break; + case 'u': + var hex = new char[4]; + + for (int i = 0; i < 4; i++) + { + hex[i] = NextChar; + } + + s.Append((char)Convert.ToInt32(new string(hex), 16)); + break; + } + break; + default: + s.Append(c); + break; + } + } + + return s.ToString(); + } + + object ParseNumber() + { + string number = NextWord; + + if (number.IndexOf('.') == -1) + { + long parsedInt; + Int64.TryParse(number, out parsedInt); + return parsedInt; + } + + double parsedDouble; + Double.TryParse(number, out parsedDouble); + return parsedDouble; + } + + void EatWhitespace() + { + while (json.Peek() != -1) + { + if (Char.IsWhiteSpace(PeekChar)) + json.Read(); + else + break; + } + } + + char PeekChar + { + get + { + return Convert.ToChar(json.Peek()); + } + } + + char NextChar + { + get + { + return Convert.ToChar(json.Read()); + } + } + + string NextWord + { + get + { + StringBuilder word = new StringBuilder(); + + while (json.Peek() != -1) + { + if (!IsWordBreak(PeekChar)) + { + word.Append(NextChar); + } + else + { + break; + } + } + + return word.ToString(); + } + } + + TOKEN NextToken + { + get + { + EatWhitespace(); + + if (json.Peek() == -1) + { + return TOKEN.NONE; + } + + switch (PeekChar) + { + case '{': + return TOKEN.CURLY_OPEN; + case '}': + json.Read(); + return TOKEN.CURLY_CLOSE; + case '[': + return TOKEN.SQUARED_OPEN; + case ']': + json.Read(); + return TOKEN.SQUARED_CLOSE; + case ',': + json.Read(); + return TOKEN.COMMA; + case '"': + return TOKEN.STRING; + case ':': + return TOKEN.COLON; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '-': + return TOKEN.NUMBER; + } + + switch (NextWord) + { + case "false": + return TOKEN.FALSE; + case "true": + return TOKEN.TRUE; + case "null": + return TOKEN.NULL; + } + + return TOKEN.NONE; + } + } + } + + /// + /// Converts a IDictionary / IList object or a simple type (string, int, etc.) into a JSON string + /// + /// A Dictionary<string, object> / List<object> + /// A JSON encoded string, or null if object 'json' is not serializable + public static string Serialize(object obj) + { + return Serializer.Serialize(obj); + } + + sealed class Serializer + { + StringBuilder builder; + + Serializer() + { + builder = new StringBuilder(); + } + + public static string Serialize(object obj) + { + var instance = new Serializer(); + + instance.SerializeValue(obj); + + return instance.builder.ToString(); + } + + void SerializeValue(object value) + { + IList asList; + IDictionary asDict; + string asStr; + + if (value == null) + { + builder.Append("null"); + } + else if ((asStr = value as string) != null) + { + SerializeString(asStr); + } + else if (value is bool) + { + builder.Append((bool)value ? "true" : "false"); + } + else if ((asList = value as IList) != null) + { + SerializeArray(asList); + } + else if ((asDict = value as IDictionary) != null) + { + SerializeObject(asDict); + } + else if (value is char) + { + SerializeString(new string((char)value, 1)); + } + else + { + SerializeOther(value); + } + } + + void SerializeObject(IDictionary obj) + { + bool first = true; + + builder.Append('{'); + + foreach (object e in obj.Keys) + { + if (!first) + { + builder.Append(','); + } + + SerializeString(e.ToString()); + builder.Append(':'); + + SerializeValue(obj[e]); + + first = false; + } + + builder.Append('}'); + } + + void SerializeArray(IList anArray) + { + builder.Append('['); + + bool first = true; + + foreach (object obj in anArray) + { + if (!first) + { + builder.Append(','); + } + + SerializeValue(obj); + + first = false; + } + + builder.Append(']'); + } + + void SerializeString(string str) + { + builder.Append('\"'); + + char[] charArray = str.ToCharArray(); + foreach (var c in charArray) + { + switch (c) + { + case '"': + builder.Append("\\\""); + break; + case '\\': + builder.Append("\\\\"); + break; + case '\b': + builder.Append("\\b"); + break; + case '\f': + builder.Append("\\f"); + break; + case '\n': + builder.Append("\\n"); + break; + case '\r': + builder.Append("\\r"); + break; + case '\t': + builder.Append("\\t"); + break; + default: + int codepoint = Convert.ToInt32(c); + if ((codepoint >= 32) && (codepoint <= 126)) + { + builder.Append(c); + } + else + { + builder.Append("\\u"); + builder.Append(codepoint.ToString("x4")); + } + break; + } + } + + builder.Append('\"'); + } + + void SerializeOther(object value) + { + // NOTE: decimals lose precision during serialization. + // They always have, I'm just letting you know. + // Previously floats and doubles lost precision too. + if (value is float) + { + builder.Append(((float)value).ToString("R")); + } + else if (value is int + || value is uint + || value is long + || value is sbyte + || value is byte + || value is short + || value is ushort + || value is ulong) + { + builder.Append(value); + } + else if (value is double + || value is decimal) + { + builder.Append(Convert.ToDouble(value).ToString("R")); + } + else + { + SerializeString(value.ToString()); + } + } + } + } + } + +} + diff --git a/Assets/TKGSDK/NativeSDK/Scripts/Utils/MiniJSON.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/Utils/MiniJSON.cs.meta new file mode 100644 index 00000000..2b2b7bab --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/Utils/MiniJSON.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c9cd188383844150974623f9279ff48 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/NativeSDK/Scripts/Utils/SimpleJSON.cs b/Assets/TKGSDK/NativeSDK/Scripts/Utils/SimpleJSON.cs new file mode 100644 index 00000000..68b19e4c --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/Utils/SimpleJSON.cs @@ -0,0 +1,1398 @@ +//#define USE_SharpZipLib +#if !UNITY_WEBPLAYER +#define USE_FileIO +#endif +/* * * * * + * A simple JSON Parser / builder + * ------------------------------ + * + * It mainly has been written as a simple JSON parser. It can build a JSON string + * from the node-tree, or generate a node tree from any valid JSON string. + * + * If you want to use compression when saving to file / stream / B64 you have to include + * SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) in your project and + * define "USE_SharpZipLib" at the top of the file + * + * Written by Bunny83 + * 2012-06-09 + * + * + * Features / attributes: + * - provides strongly typed node classes and lists / dictionaries + * - provides easy access to class members / array items / data values + * - the parser now properly identifies types. So generating JSON with this framework should work. + * - only double quotes (") are used for quoting strings. + * - provides "casting" properties to easily convert to / from those types: + * int / float / double / bool + * - provides a common interface for each node so no explicit casting is required. + * - the parser tries to avoid errors, but if malformed JSON is parsed the result is more or less undefined + * - It can serialize/deserialize a node tree into/from an experimental compact binary format. It might + * be handy if you want to store things in a file and don't want it to be easily modifiable + * + * + * 2012-12-17 Update: + * - Added internal JSONLazyCreator class which simplifies the construction of a JSON tree + * Now you can simple reference any item that doesn't exist yet and it will return a JSONLazyCreator + * The class determines the required type by it's further use, creates the type and removes itself. + * - Added binary serialization / deserialization. + * - Added support for BZip2 zipped binary format. Requires the SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) + * The usage of the SharpZipLib library can be disabled by removing or commenting out the USE_SharpZipLib define at the top + * - The serializer uses different types when it comes to store the values. Since my data values + * are all of type string, the serializer will "try" which format fits best. The order is: int, float, double, bool, string. + * It's not the most efficient way but for a moderate amount of data it should work on all platforms. + * + * 2017-03-08 Update: + * - Optimised parsing by using a StringBuilder for token. This prevents performance issues when large + * string data fields are contained in the json data. + * - Finally refactored the badly named JSONClass into JSONObject. + * - Replaced the old JSONData class by distict typed classes ( JSONString, JSONNumber, JSONBool, JSONNull ) this + * allows to propertly convert the node tree back to json without type information loss. The actual value + * parsing now happens at parsing time and not when you actually access one of the casting properties. + * + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 Markus Göbel + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * * * * */ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Touka +{ + public enum JSONNodeType + { + Array = 1, + Object = 2, + String = 3, + Number = 4, + NullValue = 5, + Boolean = 6, + None = 7, + } + + public abstract partial class JSONNode + { + #region common interface + + public virtual JSONNode this[int aIndex] { get { return null; } set { } } + + public virtual JSONNode this[string aKey] { get { return null; } set { } } + + public virtual string Value { get { return ""; } set { } } + + public virtual int Count { get { return 0; } } + + public virtual bool IsNumber { get { return false; } } + public virtual bool IsString { get { return false; } } + public virtual bool IsBoolean { get { return false; } } + public virtual bool IsNull { get { return false; } } + public virtual bool IsArray { get { return false; } } + public virtual bool IsObject { get { return false; } } + + public virtual void Add(string aKey, JSONNode aItem) + { + } + public virtual void Add(JSONNode aItem) + { + Add("", aItem); + } + + public virtual JSONNode Remove(string aKey) + { + return null; + } + + public virtual JSONNode Remove(int aIndex) + { + return null; + } + + public virtual JSONNode Remove(JSONNode aNode) + { + return aNode; + } + + public virtual IEnumerable Children + { + get + { + yield break; + } + } + + public IEnumerable DeepChildren + { + get + { + foreach (var C in Children) + foreach (var D in C.DeepChildren) + yield return D; + } + } + + public override string ToString() + { + return "JSONNode"; + } + + public virtual string ToString(string aIndent) + { + return ToString(aIndent, ""); + } + + internal abstract string ToString(string aIndent, string aPrefix); + + #endregion common interface + + #region typecasting properties + + public abstract JSONNodeType Tag { get; } + + public virtual double AsDouble + { + get + { + double v = 0.0; + if (double.TryParse(Value, out v)) + return v; + return 0.0; + } + set + { + Value = value.ToString(); + } + } + + public virtual int AsInt + { + get { return (int)AsDouble; } + set { AsDouble = value; } + } + + public virtual float AsFloat + { + get { return (float)AsDouble; } + set { AsDouble = value; } + } + + public virtual bool AsBool + { + get + { + bool v = false; + if (bool.TryParse(Value, out v)) + return v; + return !string.IsNullOrEmpty(Value); + } + set + { + Value = (value) ? "true" : "false"; + } + } + + public virtual JSONArray AsArray + { + get + { + return this as JSONArray; + } + } + + public virtual JSONObject AsObject + { + get + { + return this as JSONObject; + } + } + + + #endregion typecasting properties + + #region operators + + public static implicit operator JSONNode(string s) + { + return new JSONString(s); + } + public static implicit operator string(JSONNode d) + { + return (d == null) ? null : d.Value; + } + + public static implicit operator JSONNode(double n) + { + return new JSONNumber(n); + } + public static implicit operator double(JSONNode d) + { + return (d == null) ? 0 : d.AsDouble; + } + + public static implicit operator JSONNode(float n) + { + return new JSONNumber(n); + } + public static implicit operator float(JSONNode d) + { + return (d == null) ? 0 : d.AsFloat; + } + + public static implicit operator JSONNode(int n) + { + return new JSONNumber(n); + } + public static implicit operator int(JSONNode d) + { + return (d == null) ? 0 : d.AsInt; + } + + public static implicit operator JSONNode(bool b) + { + return new JSONBool(b); + } + public static implicit operator bool(JSONNode d) + { + return (d == null) ? false : d.AsBool; + } + + public static bool operator ==(JSONNode a, object b) + { + if (ReferenceEquals(a, b)) + return true; + bool aIsNull = a is JSONNull || ReferenceEquals(a, null) || a is JSONLazyCreator; + bool bIsNull = b is JSONNull || ReferenceEquals(b, null) || b is JSONLazyCreator; + return (aIsNull && bIsNull); + } + + public static bool operator !=(JSONNode a, object b) + { + return !(a == b); + } + + public override bool Equals(object obj) + { + return System.Object.ReferenceEquals(this, obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + #endregion operators + internal static StringBuilder m_EscapeBuilder = new StringBuilder(); + internal static string Escape(string aText) + { + m_EscapeBuilder.Length = 0; + if (m_EscapeBuilder.Capacity < aText.Length + aText.Length / 10) + m_EscapeBuilder.Capacity = aText.Length + aText.Length / 10; + foreach (char c in aText) + { + switch (c) + { + case '\\': + m_EscapeBuilder.Append("\\\\"); + break; + case '\"': + m_EscapeBuilder.Append("\""); + break; + case '\n': + m_EscapeBuilder.Append("\\n"); + break; + case '\r': + m_EscapeBuilder.Append("\\r"); + break; + case '\t': + m_EscapeBuilder.Append("\\t"); + break; + case '\b': + m_EscapeBuilder.Append("\\b"); + break; + case '\f': + m_EscapeBuilder.Append("\\f"); + break; + default: + m_EscapeBuilder.Append(c); + break; + } + } + string result = m_EscapeBuilder.ToString(); + m_EscapeBuilder.Length = 0; + return result; + } + + static void ParseElement(JSONNode ctx, string token, string tokenName, bool quoted) + { + if (quoted) + { + ctx.Add(tokenName, token); + return; + } + string tmp = token.ToLower(); + if (tmp == "false" || tmp == "true") + ctx.Add(tokenName, tmp == "true"); + else if (tmp == "null") + ctx.Add(tokenName, null); + else + { + double val; + if (double.TryParse(token, out val)) + ctx.Add(tokenName, val); + else + ctx.Add(tokenName, token); + } + } + + public static JSONNode Parse(string aJSON) + { + Stack stack = new Stack(); + JSONNode ctx = null; + int i = 0; + StringBuilder Token = new StringBuilder(); + string TokenName = ""; + bool QuoteMode = false; + bool TokenIsQuoted = false; + while (i < aJSON.Length) + { + switch (aJSON[i]) + { + case '{': + if (QuoteMode) + { + Token.Append(aJSON[i]); + break; + } + stack.Push(new JSONObject()); + if (ctx != null) + { + ctx.Add(TokenName, stack.Peek()); + } + TokenName = ""; + Token.Length = 0; + ctx = stack.Peek(); + break; + + case '[': + if (QuoteMode) + { + Token.Append(aJSON[i]); + break; + } + + stack.Push(new JSONArray()); + if (ctx != null) + { + ctx.Add(TokenName, stack.Peek()); + } + TokenName = ""; + Token.Length = 0; + ctx = stack.Peek(); + break; + + case '}': + case ']': + if (QuoteMode) + { + + Token.Append(aJSON[i]); + break; + } + if (stack.Count == 0) + throw new Exception("JSON Parse: Too many closing brackets"); + + stack.Pop(); + if (Token.Length > 0) + { + ParseElement(ctx, Token.ToString(), TokenName, TokenIsQuoted); + TokenIsQuoted = false; + } + TokenName = ""; + Token.Length = 0; + if (stack.Count > 0) + ctx = stack.Peek(); + break; + + case ':': + if (QuoteMode) + { + Token.Append(aJSON[i]); + break; + } + TokenName = Token.ToString().Trim(); + Token.Length = 0; + TokenIsQuoted = false; + break; + + case '"': + QuoteMode ^= true; + TokenIsQuoted |= QuoteMode; + break; + + case ',': + if (QuoteMode) + { + Token.Append(aJSON[i]); + break; + } + if (Token.Length > 0) + { + ParseElement(ctx, Token.ToString(), TokenName, TokenIsQuoted); + TokenIsQuoted = false; + } + TokenName = ""; + Token.Length = 0; + TokenIsQuoted = false; + break; + + case '\r': + case '\n': + break; + + case ' ': + case '\t': + if (QuoteMode) + Token.Append(aJSON[i]); + break; + + case '\\': + ++i; + if (QuoteMode) + { + char C = aJSON[i]; + switch (C) + { + case 't': + Token.Append('\t'); + break; + case 'r': + Token.Append('\r'); + break; + case 'n': + Token.Append('\n'); + break; + case 'b': + Token.Append('\b'); + break; + case 'f': + Token.Append('\f'); + break; + case 'u': + { + string s = aJSON.Substring(i + 1, 4); + Token.Append((char)int.Parse( + s, + System.Globalization.NumberStyles.AllowHexSpecifier)); + i += 4; + break; + } + default: + Token.Append(C); + break; + } + } + break; + + default: + Token.Append(aJSON[i]); + break; + } + ++i; + } + if (QuoteMode) + { + throw new Exception("JSON Parse: Quotation marks seems to be messed up."); + } + return ctx; + } + + public virtual void Serialize(System.IO.BinaryWriter aWriter) + { + } + + public void SaveToStream(System.IO.Stream aData) + { + var W = new System.IO.BinaryWriter(aData); + Serialize(W); + } + + #if USE_SharpZipLib + public void SaveToCompressedStream(System.IO.Stream aData) + { + using (var gzipOut = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(aData)) + { + gzipOut.IsStreamOwner = false; + SaveToStream(gzipOut); + gzipOut.Close(); + } + } + + public void SaveToCompressedFile(string aFileName) + { + + #if USE_FileIO + System.IO.Directory.CreateDirectory((new System.IO.FileInfo(aFileName)).Directory.FullName); + using(var F = System.IO.File.OpenWrite(aFileName)) + { + SaveToCompressedStream(F); + } + + #else + throw new Exception("Can't use File IO stuff in the webplayer"); + #endif + } + public string SaveToCompressedBase64() + { + using (var stream = new System.IO.MemoryStream()) + { + SaveToCompressedStream(stream); + stream.Position = 0; + return System.Convert.ToBase64String(stream.ToArray()); + } + } + + #else + public void SaveToCompressedStream(System.IO.Stream aData) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public void SaveToCompressedFile(string aFileName) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public string SaveToCompressedBase64() + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + #endif + + public void SaveToFile(string aFileName) + { + #if USE_FileIO + System.IO.Directory.CreateDirectory((new System.IO.FileInfo(aFileName)).Directory.FullName); + using (var F = System.IO.File.OpenWrite(aFileName)) + { + SaveToStream(F); + } + #else + throw new Exception ("Can't use File IO stuff in the webplayer"); + #endif + } + + public string SaveToBase64() + { + using (var stream = new System.IO.MemoryStream()) + { + SaveToStream(stream); + stream.Position = 0; + return System.Convert.ToBase64String(stream.ToArray()); + } + } + + public static JSONNode Deserialize(System.IO.BinaryReader aReader) + { + JSONNodeType type = (JSONNodeType)aReader.ReadByte(); + switch (type) + { + case JSONNodeType.Array: + { + int count = aReader.ReadInt32(); + JSONArray tmp = new JSONArray(); + for (int i = 0; i < count; i++) + tmp.Add(Deserialize(aReader)); + return tmp; + } + case JSONNodeType.Object: + { + int count = aReader.ReadInt32(); + JSONObject tmp = new JSONObject(); + for (int i = 0; i < count; i++) + { + string key = aReader.ReadString(); + var val = Deserialize(aReader); + tmp.Add(key, val); + } + return tmp; + } + case JSONNodeType.String: + { + return new JSONString(aReader.ReadString()); + } + case JSONNodeType.Number: + { + return new JSONNumber(aReader.ReadDouble()); + } + case JSONNodeType.Boolean: + { + return new JSONBool(aReader.ReadBoolean()); + } + case JSONNodeType.NullValue: + { + return new JSONNull(); + } + default: + { + throw new Exception("Error deserializing JSON. Unknown tag: " + type); + } + } + } + + #if USE_SharpZipLib + public static JSONNode LoadFromCompressedStream(System.IO.Stream aData) + { + var zin = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(aData); + return LoadFromStream(zin); + } + public static JSONNode LoadFromCompressedFile(string aFileName) + { + #if USE_FileIO + using(var F = System.IO.File.OpenRead(aFileName)) + { + return LoadFromCompressedStream(F); + } + #else + throw new Exception("Can't use File IO stuff in the webplayer"); + #endif + } + public static JSONNode LoadFromCompressedBase64(string aBase64) + { + var tmp = System.Convert.FromBase64String(aBase64); + var stream = new System.IO.MemoryStream(tmp); + stream.Position = 0; + return LoadFromCompressedStream(stream); + } + #else + public static JSONNode LoadFromCompressedFile(string aFileName) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public static JSONNode LoadFromCompressedStream(System.IO.Stream aData) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public static JSONNode LoadFromCompressedBase64(string aBase64) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + #endif + + public static JSONNode LoadFromStream(System.IO.Stream aData) + { + using (var R = new System.IO.BinaryReader(aData)) + { + return Deserialize(R); + } + } + + public static JSONNode LoadFromFile(string aFileName) + { + #if USE_FileIO + using (var F = System.IO.File.OpenRead(aFileName)) + { + return LoadFromStream(F); + } + #else + throw new Exception ("Can't use File IO stuff in the webplayer"); + #endif + } + + public static JSONNode LoadFromBase64(string aBase64) + { + var tmp = System.Convert.FromBase64String(aBase64); + var stream = new System.IO.MemoryStream(tmp); + stream.Position = 0; + return LoadFromStream(stream); + } + } + // End of JSONNode + + public class JSONArray : JSONNode, IEnumerable + { + private List m_List = new List(); + + public override JSONNodeType Tag { get { return JSONNodeType.Array; } } + public override bool IsArray { get { return true; } } + + + + public override JSONNode this[int aIndex] + { + get + { + if (aIndex < 0 || aIndex >= m_List.Count) + return new JSONLazyCreator(this); + return m_List[aIndex]; + } + set + { + if (value == null) + value = new JSONNull(); + if (aIndex < 0 || aIndex >= m_List.Count) + m_List.Add(value); + else + m_List[aIndex] = value; + } + } + + public override JSONNode this[string aKey] + { + get { return new JSONLazyCreator(this); } + set + { + if (value == null) + value = new JSONNull(); + m_List.Add(value); + } + } + + public override int Count + { + get { return m_List.Count; } + } + + public override void Add(string aKey, JSONNode aItem) + { + if (aItem == null) + aItem = new JSONNull(); + m_List.Add(aItem); + } + + public override JSONNode Remove(int aIndex) + { + if (aIndex < 0 || aIndex >= m_List.Count) + return null; + JSONNode tmp = m_List[aIndex]; + m_List.RemoveAt(aIndex); + return tmp; + } + + public override JSONNode Remove(JSONNode aNode) + { + m_List.Remove(aNode); + return aNode; + } + + public override IEnumerable Children + { + get + { + foreach (JSONNode N in m_List) + yield return N; + } + } + + public IEnumerator GetEnumerator() + { + foreach (JSONNode N in m_List) + yield return N; + } + + public override string ToString() + { + string result = "[ "; + foreach (JSONNode N in m_List) + { + if (result.Length > 2) + result += ", "; + result += N.ToString(); + } + result += " ]"; + return result; + } + + internal override string ToString(string aIndent, string aPrefix) + { + string result = "[ "; + foreach (JSONNode N in m_List) + { + if (result.Length > 3) + result += ", "; + result += "\n"+aPrefix + aIndent + N.ToString(aIndent, aPrefix + aIndent); + } + result += "\n" + aPrefix + "]"; + return result; + } + + public override void Serialize(System.IO.BinaryWriter aWriter) + { + aWriter.Write((byte)JSONNodeType.Array); + aWriter.Write(m_List.Count); + for (int i = 0; i < m_List.Count; i++) + { + m_List[i].Serialize(aWriter); + } + } + } + // End of JSONArray + + public class JSONObject : JSONNode, IEnumerable + { + private Dictionary m_Dict = new Dictionary(); + + public override JSONNodeType Tag { get { return JSONNodeType.Object; } } + public override bool IsObject { get { return true; } } + + + public override JSONNode this[string aKey] + { + get + { + if (m_Dict.ContainsKey(aKey)) + return m_Dict[aKey]; + else + return new JSONLazyCreator(this, aKey); + } + set + { + if (value == null) + value = new JSONNull(); + if (m_Dict.ContainsKey(aKey)) + m_Dict[aKey] = value; + else + m_Dict.Add(aKey, value); + } + } + + public override JSONNode this[int aIndex] + { + get + { + if (aIndex < 0 || aIndex >= m_Dict.Count) + return null; + return m_Dict.ElementAt(aIndex).Value; + } + set + { + if (value == null) + value = new JSONNull(); + if (aIndex < 0 || aIndex >= m_Dict.Count) + return; + string key = m_Dict.ElementAt(aIndex).Key; + m_Dict[key] = value; + } + } + + public override int Count + { + get { return m_Dict.Count; } + } + + public override void Add(string aKey, JSONNode aItem) + { + if (aItem == null) + aItem = new JSONNull(); + + if (!string.IsNullOrEmpty(aKey)) + { + if (m_Dict.ContainsKey(aKey)) + m_Dict[aKey] = aItem; + else + m_Dict.Add(aKey, aItem); + } + else + m_Dict.Add(Guid.NewGuid().ToString(), aItem); + } + + public override JSONNode Remove(string aKey) + { + if (!m_Dict.ContainsKey(aKey)) + return null; + JSONNode tmp = m_Dict[aKey]; + m_Dict.Remove(aKey); + return tmp; + } + + public override JSONNode Remove(int aIndex) + { + if (aIndex < 0 || aIndex >= m_Dict.Count) + return null; + var item = m_Dict.ElementAt(aIndex); + m_Dict.Remove(item.Key); + return item.Value; + } + + public override JSONNode Remove(JSONNode aNode) + { + try + { + var item = m_Dict.Where(k => k.Value == aNode).First(); + m_Dict.Remove(item.Key); + return aNode; + } + catch + { + return null; + } + } + + public override IEnumerable Children + { + get + { + foreach (KeyValuePair N in m_Dict) + yield return N.Value; + } + } + + public IEnumerator GetEnumerator() + { + foreach (KeyValuePair N in m_Dict) + yield return N; + } + + public override string ToString() + { + string result = "{"; + foreach (KeyValuePair N in m_Dict) + { + if (result.Length > 2) + result += ", "; + result += "\"" + Escape(N.Key) + "\":" + N.Value.ToString(); + } + result += "}"; + return result; + } + + internal override string ToString(string aIndent, string aPrefix) + { + string result = "{ "; + foreach (KeyValuePair N in m_Dict) + { + if (result.Length > 3) + result += ", "; + result += "\n" + aPrefix + aIndent + "\"" + Escape(N.Key) + "\" : "; + result += N.Value.ToString(aIndent, aPrefix + aIndent); + } + result += "\n" + aPrefix + "}"; + return result; + } + + public override void Serialize(System.IO.BinaryWriter aWriter) + { + aWriter.Write((byte)JSONNodeType.Object); + aWriter.Write(m_Dict.Count); + foreach (string K in m_Dict.Keys) + { + aWriter.Write(K); + m_Dict[K].Serialize(aWriter); + } + } + } + // End of JSONObject + + public class JSONString : JSONNode + { + private string m_Data; + + public override JSONNodeType Tag { get { return JSONNodeType.String; } } + public override bool IsString { get { return true; } } + + public override string Value + { + get { return m_Data; } + set + { + m_Data = value; + } + } + + public JSONString(string aData) + { + m_Data = aData; + } + + public override string ToString() + { + return "\"" + Escape(m_Data) + "\""; + } + + internal override string ToString(string aIndent, string aPrefix) + { + return "\"" + Escape(m_Data) + "\""; + } + + public override void Serialize(System.IO.BinaryWriter aWriter) + { + aWriter.Write((byte)JSONNodeType.String); + aWriter.Write(m_Data); + } + } + // End of JSONString + + + public class JSONNumber : JSONNode + { + private double m_Data; + + public override JSONNodeType Tag { get { return JSONNodeType.Number; } } + public override bool IsNumber { get { return true; } } + + + public override string Value + { + get { return m_Data.ToString(); } + set + { + double v; + if (double.TryParse(value, out v)) + m_Data = v; + } + } + + public override double AsDouble + { + get { return m_Data; } + set { m_Data = value; } + } + + public JSONNumber(double aData) + { + m_Data = aData; + } + + public JSONNumber(string aData) + { + Value = aData; + } + + public override string ToString() + { + return m_Data.ToString(); + } + + internal override string ToString(string aIndent, string aPrefix) + { + return m_Data.ToString(); + } + + public override void Serialize(System.IO.BinaryWriter aWriter) + { + aWriter.Write((byte)JSONNodeType.Number); + aWriter.Write(m_Data); + } + } + // End of JSONNumber + + + public class JSONBool : JSONNode + { + private bool m_Data; + + public override JSONNodeType Tag { get { return JSONNodeType.Boolean; } } + public override bool IsBoolean { get { return true; } } + + + public override string Value + { + get { return m_Data.ToString(); } + set + { + bool v; + if (bool.TryParse(value, out v)) + m_Data = v; + } + } + public override bool AsBool + { + get { return m_Data; } + set { m_Data = value; } + } + + public JSONBool(bool aData) + { + m_Data = aData; + } + + public JSONBool(string aData) + { + Value = aData; + } + + public override string ToString() + { + return (m_Data) ? "true" : "false"; + } + + internal override string ToString(string aIndent, string aPrefix) + { + return (m_Data) ? "true" : "false"; + } + + public override void Serialize(System.IO.BinaryWriter aWriter) + { + aWriter.Write((byte)JSONNodeType.Boolean); + aWriter.Write(m_Data); + } + } + // End of JSONBool + + + public class JSONNull : JSONNode + { + + public override JSONNodeType Tag { get { return JSONNodeType.NullValue; } } + public override bool IsNull { get { return true; } } + + + public override string Value + { + get { return "null"; } + set { } + } + public override bool AsBool + { + get { return false; } + set { } + } + + public override string ToString() + { + return "null"; + } + + internal override string ToString(string aIndent, string aPrefix) + { + return "null"; + } + + public override bool Equals(object obj) + { + if (object.ReferenceEquals(this, obj)) + return true; + return (obj is JSONNull); + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + + public override void Serialize(System.IO.BinaryWriter aWriter) + { + aWriter.Write((byte)JSONNodeType.NullValue); + } + } + // End of JSONNull + + internal class JSONLazyCreator : JSONNode + { + private JSONNode m_Node = null; + private string m_Key = null; + + public override JSONNodeType Tag { get { return JSONNodeType.None; } } + + public JSONLazyCreator(JSONNode aNode) + { + m_Node = aNode; + m_Key = null; + } + + public JSONLazyCreator(JSONNode aNode, string aKey) + { + m_Node = aNode; + m_Key = aKey; + } + + private void Set(JSONNode aVal) + { + if (m_Key == null) + { + m_Node.Add(aVal); + } + else + { + m_Node.Add(m_Key, aVal); + } + m_Node = null; // Be GC friendly. + } + + public override JSONNode this[int aIndex] + { + get + { + return new JSONLazyCreator(this); + } + set + { + var tmp = new JSONArray(); + tmp.Add(value); + Set(tmp); + } + } + + public override JSONNode this[string aKey] + { + get + { + return new JSONLazyCreator(this, aKey); + } + set + { + var tmp = new JSONObject(); + tmp.Add(aKey, value); + Set(tmp); + } + } + + public override void Add(JSONNode aItem) + { + var tmp = new JSONArray(); + tmp.Add(aItem); + Set(tmp); + } + + public override void Add(string aKey, JSONNode aItem) + { + var tmp = new JSONObject(); + tmp.Add(aKey, aItem); + Set(tmp); + } + + public static bool operator ==(JSONLazyCreator a, object b) + { + if (b == null) + return true; + return System.Object.ReferenceEquals(a, b); + } + + public static bool operator !=(JSONLazyCreator a, object b) + { + return !(a == b); + } + + public override bool Equals(object obj) + { + if (obj == null) + return true; + return System.Object.ReferenceEquals(this, obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + public override string ToString() + { + return ""; + } + + internal override string ToString(string aIndent, string aPrefix) + { + return ""; + } + + public override int AsInt + { + get + { + JSONNumber tmp = new JSONNumber(0); + Set(tmp); + return 0; + } + set + { + JSONNumber tmp = new JSONNumber(value); + Set(tmp); + } + } + + public override float AsFloat + { + get + { + JSONNumber tmp = new JSONNumber(0.0f); + Set(tmp); + return 0.0f; + } + set + { + JSONNumber tmp = new JSONNumber(value); + Set(tmp); + } + } + + public override double AsDouble + { + get + { + JSONNumber tmp = new JSONNumber(0.0); + Set(tmp); + return 0.0; + } + set + { + JSONNumber tmp = new JSONNumber(value); + Set(tmp); + } + } + + public override bool AsBool + { + get + { + JSONBool tmp = new JSONBool(false); + Set(tmp); + return false; + } + set + { + JSONBool tmp = new JSONBool(value); + Set(tmp); + } + } + + public override JSONArray AsArray + { + get + { + JSONArray tmp = new JSONArray(); + Set(tmp); + return tmp; + } + } + + public override JSONObject AsObject + { + get + { + JSONObject tmp = new JSONObject(); + Set(tmp); + return tmp; + } + } + } + // End of JSONLazyCreator + + public static class JSON + { + public static JSONNode Parse(string aJSON) + { + return JSONNode.Parse(aJSON); + } + } +} \ No newline at end of file diff --git a/Assets/TKGSDK/NativeSDK/Scripts/Utils/SimpleJSON.cs.meta b/Assets/TKGSDK/NativeSDK/Scripts/Utils/SimpleJSON.cs.meta new file mode 100644 index 00000000..7d15768a --- /dev/null +++ b/Assets/TKGSDK/NativeSDK/Scripts/Utils/SimpleJSON.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3dcf67a23d7ab42919daedb76af0ccf0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Splash.meta b/Assets/TKGSDK/Splash.meta new file mode 100644 index 00000000..e32791b8 --- /dev/null +++ b/Assets/TKGSDK/Splash.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6ab9a089694bb44658f9bfb34f7407fd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Splash/CN.meta b/Assets/TKGSDK/Splash/CN.meta new file mode 100644 index 00000000..b84db6f2 --- /dev/null +++ b/Assets/TKGSDK/Splash/CN.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 556531118fc8a482299d3ea23c693893 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Splash/CN/LaunchScreen-iPad.png b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPad.png new file mode 100644 index 00000000..d0511971 Binary files /dev/null and b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPad.png differ diff --git a/Assets/TKGSDK/Splash/CN/LaunchScreen-iPad.png.meta b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPad.png.meta new file mode 100644 index 00000000..95d48483 --- /dev/null +++ b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPad.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 1693a518b239d4431af8aee50c5fe673 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhoneLandscape.png b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhoneLandscape.png new file mode 100644 index 00000000..0c10240d Binary files /dev/null and b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhoneLandscape.png differ diff --git a/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhoneLandscape.png.meta b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhoneLandscape.png.meta new file mode 100644 index 00000000..9b4bee30 --- /dev/null +++ b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhoneLandscape.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 0727d3a9546764cd983b0b285dd1161b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhonePortrait.png b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhonePortrait.png new file mode 100644 index 00000000..29a2ea93 Binary files /dev/null and b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhonePortrait.png differ diff --git a/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhonePortrait.png.meta b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhonePortrait.png.meta new file mode 100644 index 00000000..752303ec --- /dev/null +++ b/Assets/TKGSDK/Splash/CN/LaunchScreen-iPhonePortrait.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: deaaf061db625489dadea4355147c3e1 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Splash/GB.meta b/Assets/TKGSDK/Splash/GB.meta new file mode 100644 index 00000000..197aad11 --- /dev/null +++ b/Assets/TKGSDK/Splash/GB.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fb76d3df65129484dadd882d84564470 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Splash/GB/LaunchScreen-iPad.png b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPad.png new file mode 100644 index 00000000..f82b1a60 Binary files /dev/null and b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPad.png differ diff --git a/Assets/TKGSDK/Splash/GB/LaunchScreen-iPad.png.meta b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPad.png.meta new file mode 100644 index 00000000..2b1aa3c0 --- /dev/null +++ b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPad.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: bef43eec04a7941dbaaf6a35a82252cd +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhoneLandscape.png b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhoneLandscape.png new file mode 100644 index 00000000..5c7a83cf Binary files /dev/null and b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhoneLandscape.png differ diff --git a/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhoneLandscape.png.meta b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhoneLandscape.png.meta new file mode 100644 index 00000000..bf6b0b7f --- /dev/null +++ b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhoneLandscape.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 604de44a97e654ae182648697298a91e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhonePortrait.png b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhonePortrait.png new file mode 100644 index 00000000..2b3aa6b3 Binary files /dev/null and b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhonePortrait.png differ diff --git a/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhonePortrait.png.meta b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhonePortrait.png.meta new file mode 100644 index 00000000..63ca0ced --- /dev/null +++ b/Assets/TKGSDK/Splash/GB/LaunchScreen-iPhonePortrait.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: e25c6fd89502243e7976e0f0ae8f7402 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset b/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset index 91f1747e..e331e7e5 100644 --- a/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset +++ b/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset @@ -29,13 +29,13 @@ MonoBehaviour: referenceMode: 2 serializationDepthLimit: 64 assemblyNames: - - StompyRobot.SRDebugger - Assembly-CSharp - StompyRobot.SRF - - Mischief.MDV.Editor - - StompyRobot.SRDebugger.Editor + - StompyRobot.SRDebugger - PsdPlugin + - Mischief.MDV.Editor - StompyRobot.SRF.Editor + - StompyRobot.SRDebugger.Editor showAdvancedSettings: 0 addMgrToSceneAutomatically: 0 autoUpdateReferences: 1