future 1 year ago
parent
commit
f8f2b22751

+ 5 - 0
assets/script/config.ts

@@ -315,6 +315,11 @@ export class config {
     static MSG_CODE = {
         SUCCESS: 10000,
     }
+    static BACK_GAME_STATUS = {
+        NORMAL: 1,
+        WIN: 2,
+        FAIL: 3,
+    }
     static AD_TYPE = {
         UNKNOWN: "UNKNOWN",
         RE_LIFE:"RE_LIFE",

+ 4 - 0
assets/script/http.ts

@@ -101,6 +101,10 @@ export class http {
         return `/smadspush`
     }
 
+    public static sync_user_level() {
+        return `/note/user/sync_level_log`
+    }
+
     public static user_unlock_number_status() {
         return `/note/user/unlock_number_status`
     }

+ 18 - 4
assets/script/run/gameManager.ts

@@ -202,10 +202,14 @@ export class gameManager extends Component {
         return gameManager.sys_data;
     }
 
-    public getCurSceneIndex():number {
+    public getSceneCurIndex():number {
         return this.mCurSceneIndex
     }
 
+    public getSceneCurTotalCount():number {
+        return this.mGameData.length
+    }
+
     public static loadSceneMp3(){
 
     }
@@ -328,20 +332,30 @@ export class gameManager extends Component {
         ClientEvent.dispatchEvent(config.EventRun.ON_WIN)
     }
 
+    public gameFail() {
+        console.log('游戏失败')
+    }
+
     public gotoGameLevel() {
         SdkUtil.ttStartScreenRecording()
+        statisticsManager.startRecordUserLevel()
     }
 
-    public backGameList(){
+    public backGameList(status = config.BACK_GAME_STATUS.NORMAL){
         if(!gameManager.isLoadingStatus){
             this.unscheduleAllCallbacks()
             this.mGameRun.backGameList()
             gameManager.Singleton.mSceneManager.play_music()
+
+            SdkUtil.ttStopScreenRecording(true)
+            if(status == config.BACK_GAME_STATUS.WIN) {
+                statisticsManager.uploadRecordUserLevel(true)
+            } else {
+                statisticsManager.uploadRecordUserLevel(false)
+            }
         }else{
             console.log("没有全部加载完成!")
         }
-
-        SdkUtil.ttStopScreenRecording(true)
     }
 
     public initEvent(){

+ 5 - 0
assets/script/run/top_layer.ts

@@ -106,6 +106,7 @@ export class top_layer extends Component {
             } else {
                 this.fail.getComponent(fail).show(event.event_item_fail_event_data.is_relife, this.onClickReLife.bind(this),this.onClickReStart.bind(this))
             }
+            this.onFail()
         }
     }
 
@@ -122,6 +123,10 @@ export class top_layer extends Component {
         }
     }
 
+    onFail(){
+        gameManager.Singleton.gameFail()
+    }
+
     onClickShare(){
         gameManager.Singleton.sys_click_button_music()
 

+ 2 - 1
assets/script/run/ui/fail.ts

@@ -1,5 +1,6 @@
 import { _decorator, Component, Node } from 'cc';
 import { gameManager } from '../gameManager';
+import { config } from '../../config';
 const { ccclass, property } = _decorator;
 
 @ccclass('fail')
@@ -34,7 +35,7 @@ export class fail extends Component {
         this.btn_close.on(Node.EventType.TOUCH_END,()=>{
             this.node.active = false;
             if(gameManager.Singleton.getLevelData()!=null){
-                gameManager.Singleton.backGameList()
+                gameManager.Singleton.backGameList(config.BACK_GAME_STATUS.FAIL)
             }
         })
         gameManager.Singleton.sys_fail_prompt_music()

+ 2 - 1
assets/script/run/ui/win.ts

@@ -1,6 +1,7 @@
 import { _decorator, Component, Node, Sprite } from 'cc';
 import { tools } from '../../tools';
 import { gameManager } from '../gameManager';
+import { config } from '../../config';
 const { ccclass, property } = _decorator;
 
 @ccclass('win')
@@ -31,7 +32,7 @@ export class win extends Component {
         })
         this.btn_close.on(Node.EventType.TOUCH_END,()=>{
             this.node.active = false;
-            gameManager.Singleton.backGameList()
+            gameManager.Singleton.backGameList(config.BACK_GAME_STATUS.WIN)
             this.icon.getComponent(Sprite).spriteFrame = null
         })
 

+ 12 - 9
assets/script/sdkUtil.ts

@@ -1,6 +1,7 @@
 import { _decorator, SpriteFrame, sys } from "cc";
 import { gameManager } from "./run/gameManager";
 import { config } from "./config";
+import { statisticsManager } from "./statisticsManager";
 //管理广告、分享、SDK相关内容的组件
 export class SdkUtil {
     public static platform: string = 'cocos'; //平台
@@ -19,6 +20,7 @@ export class SdkUtil {
 
 
     public static videoAd:any =null;
+    public static isLookAd:boolean = false; //是否在看广告
 
     public static tt_systemInfo: any = null;                //抖音_系统信息
     private static tt_isSupportSidebar:boolean = false;     //抖音_是否支持侧边栏
@@ -237,17 +239,20 @@ export class SdkUtil {
              }
 
             SdkUtil.videoAd.onLoad(() => {
+                SdkUtil.isLookAd = true
                 SdkUtil.videoAd.show();
                 console.log("广告加载完成");
             });
             SdkUtil.videoAd.onClose((res) => {
                 call_back(res)
+                SdkUtil.isLookAd = false
                 SdkUtil.videoAd.destroy()
                 gameManager.Singleton.hideLoadingLevel()
             });
             SdkUtil.videoAd.onError((res) => {
                 let errorString = res.errCode + '-' + res.errMsg
                 call_back({isEnded:false,errorString:errorString})
+                SdkUtil.isLookAd = false
                 SdkUtil.videoAd.destroy()
                 gameManager.Singleton.hideLoadingLevel()
             });
@@ -289,9 +294,12 @@ export class SdkUtil {
                     SdkUtil.tt_isToEnterFromSidebar = true
                 }
             });
-            // tt.onHide(()=>{
-            //     console.log('tt.onHide tt.onHide tt.onHide')
-            // })
+            tt.onHide(()=>{
+                console.log('tt.onHide')
+                if(SdkUtil.isLookAd==false) {
+                    statisticsManager.uploadRecordUserLevel(false)
+                }
+            })
             
             tt.checkScene({
                 scene: "sidebar",
@@ -350,7 +358,7 @@ export class SdkUtil {
             return
         }
 
-        if(this.ttIsScreenRecording()==true) {
+        if(this.tt_isRecording==true) {
             this.ttStopScreenRecording()
         }
         
@@ -390,11 +398,6 @@ export class SdkUtil {
         this.tt_gameRecorder.stop()        
     }
 
-    // 抖音是否屏幕录制
-    public static ttIsScreenRecording():boolean {
-        return this.tt_isRecording;
-    }
-
     // 抖音获取屏幕录制视频文件
     public static ttGetScreenRecordingVideoPath():string {
         return this.tt_recordVideoPath;

+ 37 - 3
assets/script/statisticsManager.ts

@@ -37,9 +37,9 @@ export class statisticsManager extends Component {
         collect_data.level_id = level_id
         collect_data.ads_status = ad_res.isEnded ? 1 : 0
         if(actionType==config.STATISTICS_ACTION_TYPE.TI_QIAN_JIE_SUO||actionType==config.STATISTICS_ACTION_TYPE.LIN_SHI_24_XIAO_SHI) {
-            collect_data.ads_scene = gameManager.Singleton.getCurSceneIndex()
+            collect_data.ads_scene = gameManager.Singleton.getSceneCurIndex()
         } else {
-            collect_data.ads_scene = gameManager.Singleton.getCurSceneIndex() + 1
+            collect_data.ads_scene = gameManager.Singleton.getSceneCurIndex() + 1
         }
         if(ad_res.isEnded==false) {
             if(ad_res.errorString==undefined||ad_res.errorString==null) {
@@ -76,12 +76,46 @@ export class statisticsManager extends Component {
         // console.log(data_string)
         let request_data = { 'adsdata': data_string }
         http.statistics_post(http.statistics_ads(),request_data,(_err,c_data)=> {
-            console.log('_err=', _err, 'c_dat=', c_data)
+            console.log('广告统计: _err=', _err, 'c_dat=', c_data)
             if (call_back != null) {
                 call_back()
             }
         })
     }
 
+    //当前上次记录用户关卡key
+    private static cur_last_record_user_level_key:string = '' 
+    // 开始记录用户关卡
+    public static startRecordUserLevel() {
+        if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME){
+            return
+        }
+        this.cur_last_record_user_level_key = ''
+    }
+    // 上传记录用户关卡
+    public static uploadRecordUserLevel(isComplete:boolean) {
+        if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME){
+            return
+        }
+        let level_id = gameManager.Singleton.getLevelData().id
+        let ads_scene = gameManager.Singleton.getSceneCurIndex() + 1
+        let key = `${level_id}_${ads_scene}`
+        if(key==this.cur_last_record_user_level_key) {
+            // console.log('重复请求 重复请求 重复请求')
+            return
+        }
+        let total_scene_number = gameManager.Singleton.getSceneCurTotalCount()
+        let is_complete = isComplete ? 1 : 0
+        let data = {'level_id':level_id,'ads_scene':ads_scene,'total_scene_number':total_scene_number,'is_complete':is_complete}
+        // console.log('数据data=',data)
+        let request_data = {'data':JSON.stringify(data)}
+        http.run_post(http.sync_user_level(),request_data,(_err,c_data)=>{
+            console.log('用户关卡: _err=', _err, 'c_dat=', c_data)
+            if(_err==null) {
+                this.cur_last_record_user_level_key = `${level_id}_${ads_scene}`
+            }
+        })
+    }
+
 }