future 1 ano atrás
pai
commit
1fab3b1f42

+ 6 - 0
assets/data/data.ts

@@ -631,6 +631,12 @@ export class LongStoryListData {
     public cover:string = "";
 }
 
+export class SelectLongStoryData {
+    public id:number = 0
+    public page:number = 0
+    public level_id:number = 0
+}
+
 export class LevelInfoMessage extends Message{
     public content :LevelInfo = null;
 }

Diferenças do arquivo suprimidas por serem muito extensas
+ 392 - 111
assets/resources/prefab/run/long_story_list_item.prefab


+ 24 - 13
assets/script/run/gameManager.ts

@@ -1,6 +1,6 @@
 import { _decorator, AudioClip, AudioSource, Component, Node, Size, Sprite, SpriteFrame, sys, UITransform, Vec3 } from 'cc';
 import { game_run } from './game_run';
-import { attributes_data, event_item, LevelItemData, other_widget_finish_listen_item, scene_item_data, sysMessage, task_data, ui_att_item, UserData, UserUnlockLevesData, widget_item_data } from '../../data/data';
+import { attributes_data, event_item, LevelItemData, other_widget_finish_listen_item, scene_item_data, SelectLongStoryData, sysMessage, task_data, ui_att_item, UserData, UserUnlockLevesData, widget_item_data } from '../../data/data';
 import { config } from '../config';
 import { sceneManager } from './sceneManager';
 
@@ -253,29 +253,40 @@ export class gameManager extends Component {
         sys.localStorage.setItem(config.ZB_OPENID, id)
     }
 
-    public static getUserSelectLongStoryData() {
+    private static getUserSelectLongStoryCacheData():SelectLongStoryData {
         let str = sys.localStorage.getItem(config.USER_SELECT_LONG_STORY_DATA)
         if(str==undefined||str==""||str==null){
-            return {}
+            return new SelectLongStoryData()
         }
         return JSON.parse(str)
     }
 
-    public static setUserSelectLongStoryPage(long_story_id:number, page:number) {
-        let data = gameManager.getUserSelectLongStoryData()
-        data[long_story_id] = page
-        sys.localStorage.setItem(config.USER_SELECT_LONG_STORY_DATA, JSON.stringify(data))
-    }
-    
     public static getUserSelectLongStoryPage(long_story_id:number):number {
-        let data = gameManager.getUserSelectLongStoryData()
-        let page = data[long_story_id]
-        if(page) {
-            return page
+        let data = gameManager.getUserSelectLongStoryCacheData()
+        if(data.id==long_story_id && data.page>0) {
+            return data.page
         }
         return 1
     }
 
+    public static setUserSelectLongStoryPage(long_story_id:number, page:number) {
+        let data = gameManager.getUserSelectLongStoryCacheData()
+        data.id = long_story_id
+        data.page = page
+        sys.localStorage.setItem(config.USER_SELECT_LONG_STORY_DATA, JSON.stringify(data))
+    }
+
+    public static getUserSelectLongStoryLevelId():number {
+        let data = gameManager.getUserSelectLongStoryCacheData()
+        return data.level_id
+    }
+
+    public static setUserSelectLongStoryLevelId(long_story_id:number, level_id:number) {
+        let data = gameManager.getUserSelectLongStoryCacheData()
+        data.id = long_story_id
+        data.level_id = level_id
+        sys.localStorage.setItem(config.USER_SELECT_LONG_STORY_DATA, JSON.stringify(data))
+    }
 
     public reLife(){
         let ad_id = SdkUtil.getAdId(config.AD_TYPE.RE_LIFE)

+ 17 - 2
assets/script/run/game_list_view/long_story_list.ts

@@ -63,7 +63,6 @@ export class long_story_list extends Component {
         if(this.is_loading_data) { 
             return 
         }
-        this.cur_page+=1
         this.requestData(true)
     }
 
@@ -83,7 +82,7 @@ export class long_story_list extends Component {
         // console.log('cache_page=',cache_page)
         this.cur_min_page = cache_page
         this.cur_page = this.cur_min_page
-        this.requestData(true)
+        this.requestData(false)
     }
 
     initView(data:LongStoryListData, click_back_level_cb, click_item_goto_game_success_cb) {
@@ -95,6 +94,9 @@ export class long_story_list extends Component {
     }
 
     private requestData(is_scroll_bottom:boolean, cb=null) {
+        if(is_scroll_bottom) {
+            this.cur_page+=1
+        }
         this.is_loading_data = true
         this.is_can_request = true
         let url = http.getPlatformLevelsList(config.LevelType.LONG_STORY,this.m_long_story_list_data.id,SdkUtil.getPlatformIdentify(), this.cur_page, this.page_limit_count)
@@ -136,6 +138,7 @@ export class long_story_list extends Component {
     }
 
     private onItemClick(item:long_story_list_item, level_item_data:LevelItemData,level_index:number){
+        let user_select_before_page = gameManager.getUserSelectLongStoryPage(this.m_long_story_list_data.id)
         gameManager.setUserSelectLongStoryPage(this.m_long_story_list_data.id,item.getPage())
         gameManager.Singleton.sys_click_button_music()
 
@@ -145,6 +148,18 @@ export class long_story_list extends Component {
             this.cur_long_story_list_item_level_index = level_index
 
             let call = (()=>{
+                // 改变用户选择长篇关卡id状态
+                if(item.getPage()!=user_select_before_page) {
+                    let c_index = user_select_before_page-1
+                    if(this.content.children.length>c_index) {
+                        let before_item = this.content.children[c_index]
+                        before_item.getComponent(long_story_list_item).setupDingHidden()
+                    }
+                }
+                item.updateCurrentLevelStatus(level_index)
+                gameManager.setUserSelectLongStoryLevelId(this.m_long_story_list_data.id,level_item_data.id)
+
+                // 进入关卡游戏
                 let url = http.get_level_info(level_item_data.id)
                 gameManager.Singleton.showLoadingLevel()
                 http.run_get_static(url,(err,data)=>{

+ 45 - 0
assets/script/run/game_list_view/long_story_list_item.ts

@@ -12,27 +12,33 @@ export class long_story_list_item extends Component {
     @property(Node) img_level_1:Node = null
     @property(Node) lab_level_1:Node = null
     @property(Node) mask_lock_1:Node = null
+    @property(Node) img_ding_1:Node = null
 
     @property(Node) level_bg_2:Node = null
     @property(Node) img_level_2:Node = null
     @property(Node) lab_level_2:Node = null
     @property(Node) mask_lock_2:Node = null
+    @property(Node) img_ding_2:Node = null
 
     @property(Node) level_bg_3:Node = null
     @property(Node) img_level_3:Node = null
     @property(Node) lab_level_3:Node = null
     @property(Node) mask_lock_3:Node = null
+    @property(Node) img_ding_3:Node = null
 
     @property(Node) level_bg_4:Node = null
     @property(Node) img_level_4:Node = null
     @property(Node) lab_level_4:Node = null
     @property(Node) mask_lock_4:Node = null
+    @property(Node) img_ding_4:Node = null
 
     @property(Node) level_bg_5:Node = null
     @property(Node) img_level_5:Node = null
     @property(Node) lab_level_5:Node = null
     @property(Node) mask_lock_5:Node = null
+    @property(Node) img_ding_5:Node = null
 
+    private img_ding_list:Node[] = []
     private m_data_list = []
     private m_page:number = 0
     private m_click_level_cb = null
@@ -68,6 +74,24 @@ export class long_story_list_item extends Component {
         this.level_bg_4.active = false
         this.level_bg_5.active = false
 
+        this.setupDingHidden()
+
+        this.img_ding_list.push(this.img_ding_1)
+        this.img_ding_list.push(this.img_ding_2)
+        this.img_ding_list.push(this.img_ding_3)
+        this.img_ding_list.push(this.img_ding_4)
+        this.img_ding_list.push(this.img_ding_5)
+
+        let cur_level_id = gameManager.getUserSelectLongStoryLevelId()
+        for (let index = 0; index < data_list.length; index++) {
+            const element = data_list[index];
+            if(element.id==cur_level_id) {
+                this.updateCurrentLevelStatus(index)
+                break
+            }
+            
+        }
+
         if(data_list.length>0) {
             this.level_bg_1.active = true
             let level_index = 0
@@ -156,6 +180,27 @@ export class long_story_list_item extends Component {
         }
     }
 
+    public setupDingHidden() {
+        this.img_ding_1.active = false
+        this.img_ding_2.active = false
+        this.img_ding_3.active = false
+        this.img_ding_4.active = false
+        this.img_ding_5.active = false
+    }
+
+    public updateCurrentLevelStatus(level_index:number) {
+        if(this.img_ding_list.length>level_index) {
+            for (let index = 0; index < this.img_ding_list.length; index++) {
+                const element = this.img_ding_list[index];
+                if(index==level_index) {
+                    element.active = true
+                } else {
+                    element.active = false
+                }
+            }
+        }
+    }
+
     public getPage():number {
         return this.m_page
     }

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff