123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558 |
- import { _decorator, assetManager, AudioClip, Component, instantiate, Node, Prefab, resources, SpriteFrame, sys } from 'cc';
- import { server_han_zi_zhao_bu_tong_data, server_mei_nv_zhao_xi_jie_data, server_play_info, server_play_list_data, server_shuang_tu_zhao_bu_tong_data, server_sys_info, server_user_info, unlock_levels, unlock_levels_item } from './data/server_play_list_data';
- import { config } from './config';
- import { ClientEvent } from './framework/clientEvent';
- import { http } from './http/http';
- import { StorageManager } from './framework/storageManager';
- import { tools } from './tools';
- import { AudioManager } from './framework/audioManager';
- const { ccclass, property } = _decorator;
- @ccclass('gameManager')
- export class gameManager extends Component {
- public static g_server_sys_info:server_sys_info = new server_sys_info();
- public static g_server_play_list_data:server_play_list_data = new server_play_list_data();
- // public static g_server_shuang_tu_zhao_bu_tong_data:server_shuang_tu_zhao_bu_tong_data = new server_shuang_tu_zhao_bu_tong_data();
- // public static g_server_han_zi_zhao_bu_tong_data:server_han_zi_zhao_bu_tong_data = new server_han_zi_zhao_bu_tong_data();
- // public static g_server_mei_nv_zhao_xi_jie_data:server_mei_nv_zhao_xi_jie_data = new server_mei_nv_zhao_xi_jie_data();
- private static uiLayer:Node = null;
- private static topLayer:Node = null;
- private static waitLayer:Node = null;
- public static userInfo:server_user_info = new server_user_info();
- public static uiViewList:Map<string,Node> = new Map();
- public static topViewList:Map<string,Node> = new Map();
- public static user_level_data:unlock_levels = new unlock_levels();
- public static PreloadingLevelImgNumber:number = 0;//执行预加载的数量
- public static cache:Map<string,Map<string,SpriteFrame>> = new Map();
- public static mp3_cache:Map<string,AudioClip> = new Map();
- public static test_user_list:string[] = [];
- start() {
- }
- public static isTestUser(){
- for (let index = 0; index < gameManager.test_user_list.length; index++) {
- const element = gameManager.test_user_list[index];
- if(parseInt(element)==gameManager.userInfo.id){
- return true;
- }
- }
- return false;
- }
- public static init_test_user_list(list:string[]){
- gameManager.test_user_list = list;
- }
- public static init_unlock_levels(){
-
- for (let index = 0; index < gameManager.g_server_play_list_data.list.length; index++) {
- const element = gameManager.g_server_play_list_data.list[index];
- let item:unlock_levels_item = new unlock_levels_item;
- item.id = element.id;
- item.level = 1;
- if(item.id===config.PLAY_TYPE.YI_QI_ZHAO_CHA){
- item.is_lock_game_play = 1;
- }else{
- item.is_lock_game_play = 0;
- }
- gameManager.user_level_data.list[element.id] = item;
- }
-
- }
- public static isFinishAllLevel(categoryid:number):boolean{
- let item = gameManager.get_cur_level_by_categoryid(categoryid)
- if(item.level===gameManager.get_play_level_number(categoryid)){
- return true;
- }
- return false;
- }
- public static get_play_level_number(categoryid:number):number{
- let list = gameManager.g_server_play_list_data.list;
- let number = 0;
- for (let index = 0; index < list.length; index++) {
- if(categoryid===list[index].id){
- number = list[index].barrier_number;
- break;
- }
- }
- return number;
-
- }
- public static get_unlock_levels():string{
- if(gameManager.user_level_data.list.length>0){
- return JSON.stringify(gameManager.user_level_data.list);
- }
- return "";
-
- }
- public static set_unlock_levels(unlock_levels:string){
- gameManager.user_level_data.list = JSON.parse(unlock_levels);
- }
- public static set_unlock_levels_data(item:unlock_levels_item){
- gameManager.user_level_data.list[item.id] = item;
- }
- public static setWaitLayer(node:Node){
- gameManager.waitLayer = node;
- }
- public static sync_data(call_back){
- let form_Data = null;
- if(sys.platform==sys.Platform.BYTEDANCE_MINI_GAME){
- form_Data = {"coin": gameManager.userInfo.coin+"","unlock_levels": gameManager.get_unlock_levels()}
- }else{
- form_Data = new FormData();
- form_Data.append("coin", gameManager.userInfo.coin+"");
- form_Data.append("unlock_levels", gameManager.get_unlock_levels());
- }
- http.post(config.api_url.sync_data,form_Data,(_err,c_data)=>{
- if(!_err){
- let c__data = JSON.parse(c_data);
- console.log("c__data",c__data)
- if(c__data.code==config.MSG_CODE.SUCCESS){
- ClientEvent.dispatchEvent(config.EVENT_MSG.ON_CHANGE_COIN_NUMBER);
- call_back(true)
- }
- }else{
- if(_err==-1){
- call_back(false)
- }
-
- }
-
- })
- }
- public static get_user_coin():number{
- return gameManager.userInfo.coin;
- }
- public static add_coin(coin:number){
- gameManager.userInfo.coin+=coin;
- gameManager.sync_data((is_sync)=>{})
- }
- public static sub_coin(coin:number){
- gameManager.userInfo.coin-=coin;
- if( gameManager.userInfo.coin<0){
- gameManager.userInfo.coin = 0;
- }
- gameManager.sync_data((is_sync)=>{})
- }
- public static showLoading(){
- gameManager.hideLoading();
- gameManager.addTopView(config.PREFAB_PATH.view_loading,null);
- }
- public static hideLoading(){
- if(gameManager.topViewList.get(config.PREFAB_PATH.view_loading)){
- gameManager.topViewList.get(config.PREFAB_PATH.view_loading).removeFromParent();
- gameManager.topViewList.set(config.PREFAB_PATH.view_loading,null);
- }
- }
- public static get_cur_level_by_categoryid(categoryid:number):unlock_levels_item{
- if(gameManager.user_level_data.list.length<=0){
- return null;
- }
- switch (categoryid) {
- case config.PLAY_TYPE.YI_QI_ZHAO_CHA:
- return gameManager.user_level_data.list[config.PLAY_TYPE.YI_QI_ZHAO_CHA];
- case config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG:
- return gameManager.user_level_data.list[config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG];
- case config.PLAY_TYPE.MEI_NV_ZHAO_XI_JIE:
- return gameManager.user_level_data.list[config.PLAY_TYPE.MEI_NV_ZHAO_XI_JIE];
- }
- }
- public static next_level(categoryid:number,call_back):boolean{
- let item = gameManager.get_cur_level_by_categoryid(categoryid);
- let play_item = gameManager.get_play_list_item_by_categoryid(categoryid);
- if(item.level<=play_item.barrier_number){
- item.level+=1;
- gameManager.sync_data((is_sync)=>{
- if(is_sync){
- gameManager.set_unlock_levels_data(item);
- }else{
- item.level-=1;
- }
- call_back(is_sync)
-
- })
- return true;
- }
- return false;
- }
- public static setUiLayer(node:Node){
- gameManager.uiLayer = node;
- }
- public static getTopLayer():Node{
- return gameManager.topLayer;
- }
- public static setTopLayer(node:Node){
- gameManager.topLayer = node;
- }
- public static addUiView(parent_path:string,call_back){
- if(gameManager.uiLayer==null){
- console.log("gameManager.uiLayer -- null!");
- return;
- }
- gameManager.showWaitView();
- resources.load(parent_path, Prefab, (err, prefab) => {
- if(err){
- console.log("addUiView -- err::",err);
- return;
- }
- let newNode:Node = instantiate(prefab);
- newNode.parent = gameManager.uiLayer;
- gameManager.uiViewList.set(parent_path,newNode);
- gameManager.hideWaitView();
- if(call_back!=null){
- call_back(newNode);
- }
- });
- }
- public static addTopView(parent_path:string,call_back){
- if(gameManager.topLayer==null){
- console.log("gameManager.topLayer -- null!");
- return;
- }
- gameManager.showWaitView();
- resources.load(parent_path, Prefab, (err, prefab) => {
- if(err){
- console.log("addTopView -- err::",err);
- return;
- }
- let newNode:Node = instantiate(prefab);
- gameManager.topViewList.set(parent_path,newNode);
- newNode.parent = gameManager.topLayer;
- gameManager.hideWaitView();
- if(call_back!=null){
- call_back(newNode);
- }
- });
- }
- public static showWaitView(){
- gameManager.waitLayer.active = true;
- }
- public static hideWaitView(){
- gameManager.waitLayer.active = false;
- }
-
- public static set_server_user_data(data){
- gameManager.userInfo = data;
- if(gameManager.userInfo.unlock_levels!=""){
- gameManager.set_unlock_levels(gameManager.userInfo.unlock_levels);
- }
- console.log("set_server_user_data::",data);
- }
- public static set_server_play_list_data(data:server_play_info){
- gameManager.g_server_play_list_data.list = data.wf_list;
- gameManager.g_server_sys_info = data.sys_info;
- ClientEvent.dispatchEvent(config.EVENT_MSG.ON_INIT_GAME_LIST);
- console.log("set_server_play_list_data::",data);
- }
- public static get_play_list_item_by_categoryid(categoryid:number){
- for (let index = 0; index < gameManager.g_server_play_list_data.list.length; index++) {
- const element = gameManager.g_server_play_list_data.list[index];
- if(element.id===categoryid){
- return element;
- }
-
- }
- return null;
- }
- public static PreloadingLevelImg(finish_call_back){
- if(gameManager.g_server_play_list_data.list.length<=0){
- return
- }
- if(gameManager.PreloadingLevelImgNumber<=0){
- let count = 0;
- let call_back = ()=>{
- count++;
- if(count>=gameManager.PreloadingLevelImgNumber){
- gameManager.PreloadingLevelImgNumber = 0;
- finish_call_back()
- }
- }
- for (let index = 0; index < gameManager.g_server_play_list_data.list.length; index++) {
- const element = gameManager.g_server_play_list_data.list[index];
- let item = gameManager.get_cur_level_by_categoryid(element.id);
- let key = `${element.id}_${item.level+1}`;
- let str = StorageManager.instance.getGlobalData(key);
- if(str===""||str===undefined||str===null){
- gameManager.PreloadingLevelImgNumber++;
- gameManager.loadLevelImg(element.id,item.level+1,call_back)
- }
- }
- }
-
- }
- public static loadLevelImg(category_id,level,call_back){
- let key = `${category_id}_${level}`;
- let list:Map<string,SpriteFrame> = new Map()
- http.get(config.static_url.levels_info(category_id,level),(err,data)=>{
- if(!err){
- let _data = JSON.parse(data)
- if(_data.code===config.MSG_CODE.SUCCESS){
- let data = _data.content
- switch(category_id){
- case config.PLAY_TYPE.YI_QI_ZHAO_CHA:
- let img_count = 0;
- let img_call_back = ()=>{
- if(img_count>=2){
- console.log("key",key)
- StorageManager.instance.setGlobalData(key,"1")
- gameManager.cache.set(`${level}_${category_id}`,list)
- call_back();
- }
- }
- tools.loadRemoteImg(data.img1,(sf:SpriteFrame)=>{
- sf.addRef();
- list.set(data.img1,sf);
- img_count++;
- img_call_back();
- })
- tools.loadRemoteImg(data.img2,(sf)=>{
- sf.addRef();
- list.set(data.img2,sf);
- img_count++;
- img_call_back();
- })
- break;
- case config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG:
- let img_count_font = 0;
- let img_call_back_font = ()=>{
- if(img_count_font>=3){
- console.log("key",key)
- gameManager.cache.set(`${level}_${category_id}`,list)
- StorageManager.instance.setGlobalData(key,"1")
- call_back();
- }
- }
- tools.loadRemoteImg(data.default_img,(sf)=>{
- sf.addRef();
- list.set(data.default_img,sf);
- img_count_font++;
- img_call_back_font();
- })
- tools.loadRemoteImg(data.find_img,(sf)=>{
- sf.addRef();
- list.set(data.find_img,sf);
- img_count_font++;
- img_call_back_font();
- })
- tools.loadRemoteImg(data.d_img,(sf)=>{
- sf.addRef();
- list.set(data.d_img,sf);
- img_count_font++;
- img_call_back_font();
- })
- break;
- case config.PLAY_TYPE.MEI_NV_ZHAO_XI_JIE:
- let img_count_component = 0;
- let img_call_back_component = ()=>{
- if(img_count_component>=data.component.length+1){
- console.log("key",key)
- gameManager.cache.set(`${level}_${category_id}`,list)
- StorageManager.instance.setGlobalData(key,"1")
- call_back();
- }
- }
- tools.loadRemoteImg(data.img,(sf)=>{
- sf.addRef();
- list.set(data.img,sf);
- img_count_component++;
- img_call_back_component();
- })
-
- for (let index = 0; index < data.component.length; index++) {
- const element = data.component[index];
- tools.loadRemoteImg(element.img,(sf,id)=>{
- sf.addRef();
- list.set(element.img,sf);
- img_count_component++;
- img_call_back_component();
- },element.id);
- }
- break;
- }
- }
- }
- })
- }
- //通用的关闭按钮点击音效
- public static playCloseBtnSound( loop:boolean = false){
- let path = gameManager.g_server_sys_info.sys_click_button_music;
- AudioManager.instance.playSound(path,loop)
- }
- //通用的按钮点击音效
- public static playBtnSound( loop:boolean = false){
- let path = gameManager.g_server_sys_info.sys_close_button_music;
- AudioManager.instance.playSound(path,loop)
- }
- //每个玩法的胜利音效
- public static playWinSoundByCategoryId(id:number, loop:boolean = false){
- let paht = gameManager.get_play_list_item_by_categoryid(id).wf_victory_music;
- AudioManager.instance.playSound(paht,loop)
- }
- //每个玩法的失败音效
- public static playFailSoundByCategoryId(id:number, loop:boolean = false){
- let paht = gameManager.get_play_list_item_by_categoryid(id).wf_fail_music;
- AudioManager.instance.playSound(paht,loop)
- }
- //每个玩法的正确音效
- public static playRightSoundByCategoryId(id:number, loop:boolean = false){
- let paht = gameManager.get_play_list_item_by_categoryid(id).wf_right_click_music;
- AudioManager.instance.playSound(paht,loop)
- }
- //每个玩法的错误音效
- public static playErrSoundByCategoryId(id:number, loop:boolean = false){
- let paht = gameManager.get_play_list_item_by_categoryid(id).wf_wrong_click_music;
- AudioManager.instance.playSound(paht,loop)
- }
- //每个玩法的背景音乐
- public static playGamePlayMusicByCategoryId(id:number, loop:boolean = false){
- let path = gameManager.get_play_list_item_by_categoryid(id).wf_piped_music;
- AudioManager.instance.playMusic(path,loop)
- }
- //主页的背景音乐
- public static playMainMusic(loop:boolean = false){
- let path = gameManager.g_server_sys_info.sys_piped_music;
- AudioManager.instance.playMusic(path,loop)
- }
- public static loadSysMusic(call_back){
- let count = 0;
- let call = ()=>{
- count++;
- if(count>=3){
- call_back()
- }
- }
- assetManager.loadRemote(gameManager.g_server_sys_info.sys_click_button_music, (err: any, clip: AudioClip)=> {
- clip.addRef()
- call()
- });
- assetManager.loadRemote(gameManager.g_server_sys_info.sys_close_button_music, (err: any, clip: AudioClip)=> {
- clip.addRef()
- call()
- });
- assetManager.loadRemote(gameManager.g_server_sys_info.sys_piped_music, (err: any, clip: AudioClip)=> {
- clip.addRef()
- call()
- });
- }
- public static loadPlayMusicByCategoryId(id,call_back){
- let count = 0;
- let call = ()=>{
- count++;
- if(count>=5){
- call_back()
- }
- }
- let paly_item = gameManager.get_play_list_item_by_categoryid(id);
- if(!gameManager.mp3_cache.get(paly_item.wf_fail_music)){
- assetManager.loadRemote(paly_item.wf_fail_music, (err: any, clip: any)=> {
- clip.addRef()
- gameManager.mp3_cache.set(paly_item.wf_fail_music,clip)
- call()
- });
- }else{
- call()
- }
- if(!gameManager.mp3_cache.get(paly_item.wf_victory_music)){
- assetManager.loadRemote(paly_item.wf_victory_music, (err: any, clip: any)=> {
- clip.addRef()
- call()
- });
- }else{
- call()
- }
- if(!gameManager.mp3_cache.get(paly_item.wf_right_click_music)){
- assetManager.loadRemote(paly_item.wf_right_click_music, (err: any, clip: any)=> {
- clip.addRef()
- gameManager.mp3_cache.set(paly_item.wf_right_click_music,clip)
- call()
- });
- }else{
- call()
- }
- if(!gameManager.mp3_cache.get(paly_item.wf_wrong_click_music)){
- assetManager.loadRemote(paly_item.wf_wrong_click_music, (err: any, clip: any)=> {
- clip.addRef()
- gameManager.mp3_cache.set(paly_item.wf_wrong_click_music,clip)
- call()
- });
- }else{
- call()
- }
- if(!gameManager.mp3_cache.get(paly_item.wf_piped_music)){
- assetManager.loadRemote(paly_item.wf_piped_music, (err: any, clip: any)=> {
- clip.addRef()
- gameManager.mp3_cache.set(paly_item.wf_piped_music,clip)
- call()
- });
- }else{
- call()
- }
-
- }
- public static decRefSf(categoryid:number){
- let levels_item = gameManager.get_cur_level_by_categoryid(categoryid);
- gameManager.cache.forEach((v,k)=>{
- if(v!=null){
- let l = k.split("_");
- let level = parseInt(l[0]);
- let _categoryid = parseInt(l[1]);
- if(_categoryid==categoryid){
- if(level<levels_item.level){
- v.forEach((v1,k1)=>{
- v1.decRef()
- })
- gameManager.cache.set(`${level}_${_categoryid}`,null);
- }
- }
- }
- })
- }
- // public static set_server_han_zi_zhao_bu_tong_data(data){
- // gameManager.g_server_han_zi_zhao_bu_tong_data.list = data;
- // console.log("set_server_han_zi_zhao_bu_tong_data::",data);
- // }
- // public static set_server_mei_nv_zhao_xi_jie_data(data){
- // gameManager.g_server_mei_nv_zhao_xi_jie_data.list = data;
- // console.log("set_server_mei_nv_zhao_xi_jie_data::",data);
- // }
- }
|