| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381 | using UnityEngine;using ET;using static GFGGame.LauncherConfig;using System;namespace GFGGame{    public class GameController    {        public static async void Start()        {            //初始化声音,不可以去掉            MusicManager.Instance.Stop();            SoundManager.Instance.Stop();            VoiceManager.Instance.Stop();            //GameObject对象池            PrefabManager.Instance.Init();            //字体            await FontLoader.Instance.Init();            //界面            UGUIManager.Instance.Init();            ViewManager.Init();            //日志            LogController.Instance.Init();            //全局            GameGlobal.Init();            //sqlite            SqliteController.Instance.Init(false, ResPathUtil.SQLITE_FILE_PATH);            //渠道            QDManager.Init();            //全局点击效果            ViewGlobal.CreatClickEffect();            //获取游戏配置            GetGameCfg();        }        /// <summary>        /// 获取游戏配置        /// </summary>        public static void GetGameCfg()        {            var url = LauncherConfig.cfgUrl.Replace("{cfgName}", GameGlobal.cfgName);            url = url + "?t=" + TimeHelper.ClientNow();            LauncherView.Instance.SetDesc("正在解压数据...");            HttpTool.Instance.Get(url, (string data) =>            {                //初始化游戏配置                GameConfig.InitData(data);                //缓存一部分配置文件                FightScoreCfgArray.Instance.Init();                StudioCfgArray.Instance.Init();                DailySignCfgArray.Instance.Init();                DailyLoginCfgArray.Instance.Init();                DressUpMenuItemCfg2Array.Instance.Init();                AdCfgArray.Instance.Init();                ItemTypeCfgArray.Instance.Init();                GuideCfgArray.Instance.Init();                SuitCfgArray.Instance.Init();                ShopCfgArray.Instance.Init();                SuitFosterCfgArray.Instance.Init();                VipCfgArray.Instance.Init();                ActivityRechargeCfgArray.Instance.Init();                ActivityLuckybonusCfgArray.Instance.Init();                Activity7DaysTaskCfgArray.Instance.Init();                Activity7DaysCfgArray.Instance.Init();                SuitGuideMenuCfgArray.Instance.Init();                ActivityRecharge2CfgArray.Instance.Init();                SuitFosterListCfgArray.Instance.Init();                TaskCfgArray.Instance.Init();                LauncherView.Instance.Close();                //显示登录                LoginController.ShowLogin();            });        }        public static bool CheckLoginCache(bool doLogin)        {            string account = PlayerPrefs.GetString(GameConst.ACCOUNT_LAST_LOGIN_KEY, null);            string password = PlayerPrefs.GetString(GameConst.PASSWORD_LAST_LOGIN_KEY, null);            bool lastLoginIsVisitor = LocalCache.GetBool(GameConst.LAST_LOGIN_IS_VISITOR_KEY, false);            if (lastLoginIsVisitor)            {                long id = (long)PlayerPrefs.GetFloat(GameConst.VISITOR_ID_KEY, -1);                if (id >= 0)                {                    if (doLogin)                    {                        //LoginProxy.LoginAsVisitor();                    }                    return true;                }            }            else if (!string.IsNullOrEmpty(account))            {                if (!string.IsNullOrEmpty(password))                {                    if (doLogin)                    {                        LoginController.Login(account, password, true).Coroutine();                    }                    return true;                }                else if (LauncherConfig.netType == LauncherConfig.EnumNetType.LOCAL && PlayerPrefs.HasKey(GameConst.PASSWORD_LAST_LOGIN_KEY))                {                    if (doLogin)                    {                        LoginController.LoginTest(account).Coroutine();                    }                    return true;                }            }            return false;        }        public static void CheckSpecialAccount(string account)        {            GameGlobal.antiAddiction = !(account.IndexOf("sygfg") == 0);        }        public static void ShowCreateRole()        {            ViewManager.Show<CreateRoleView>();        }        public static async ETTask PreEnterGameAsync()        {            QDManager.OnEnterGame();            RoleDataHandler.StartUpdate();            //GFGUIPackage.AddPackage(ResPathUtil.GetUIPackagePath("CommonGame"));            //GFGUIPackage.AddPackage(ResPathUtil.GetUIPackagePath("Main"));            await ItemProxy.GetItemInfos();            await RoleLimitSProxy.ReqUnitLimitInfos();            await InstanceZonesSProxy.GetInstanceZonesInfos();            await StorageSProxy.ReqGetClientValues();            await RoleInfoSProxy.ReqPersonalInfo();            //功能协议数据不要放这里获取,放在AfterEnterGame函数中            GameGlobal.lastLoginTime = StorageDataManager.Instance.GetStorageValue(ConstStorageId.LAST_LOGIN_TIME);            long lastTime = GameGlobal.myNumericComponent.GetAsInt(NumericType.OnlineTimeSecs);            StorageSProxy.ReqSetClientValue(ConstStorageId.LAST_LOGIN_TIME, (int)lastTime).Coroutine();            int skipGuide = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_SKIP_GUIDE);            if (skipGuide <= 0 && LauncherConfig.netType == EnumNetType.LOCAL)            {                AlertUI.Show("是否跳过引导?如果您是第一次体验,建议不要跳过引导!")                           .SetLeftButton(true, "不用", (obj) =>                           {                               EnterGame();                               StorageSProxy.ReqSetClientValue(ConstStorageId.STORAGE_SKIP_GUIDE, 1).Coroutine();                           })                           .SetRightButton(true, "跳过", (obj) =>                           {                               GameGlobal.skipGuide = true;                               EnterGame();                               StorageSProxy.ReqSetClientValue(ConstStorageId.STORAGE_SKIP_GUIDE, 2).Coroutine();                           });            }            else            {                if (skipGuide == 2) GameGlobal.skipGuide = true;                EnterGame();            }        }        private static void EnterGame()        {            LoadingView.Instance.SetProgress(100, () =>            {                ViewManager.Hide<LoadingView>();                GameGlobal.isEnterGame = true;                if (MainStoryDataManager.CheckOpenMainUI() || GameGlobal.skipGuide)                {                    ViewManager.Show<MainUIView>();                }                else                {                    MainStoryDataManager.currentChapterCfgId = 10001;                    // GameGlobal.isFirstEntry == true                     if (!InstanceZonesDataManager.CheckLevelPass(100001001))                    {                        UICGView.Instance.Show();                        //StoryController.ShowLevelView(100001001);                    }                    else                    {                        ViewManager.Show<StoryChapterView>(MainStoryDataManager.currentChapterCfgId);                        //ViewManager.Show<StoryChapterView>(StudioDataManager.Instance.luckyBoxFilingChapterId, new object[] { typeof(ActivityThemeLuckyBoxView).FullName, this.viewData });                        ViewManager.Show<StoryChapterView>(MainStoryDataManager.currentChapterCfgId);                    }                }                GMController.AddShowGMViewEventListener();            });        }        public static async void AfterShowMainUI(object param = null)        {            if (GameGlobal.AfterDataInited) return;            await ActivitySProxy.ReqSevenDayLoginInfos();            await ActivityGlobalSProxy.GetActivityInfo();            await ShopSProxy.ReqShopInfo();            FieldDataManager.Instance.waitToShowFieldFightEndView = false;            bool result = await FieldSProxy.ReqFieldInstanceInfos();            if (result && FieldDataManager.Instance.fieldInfos.hasBonus)            {                bool result1 = await FieldSProxy.ReqFieldInstanceResult();                if (result1)                {                    FieldDataManager.Instance.waitToShowFieldFightEndView = true;                }            }            GameGlobal.AfterDataInited = true;            EventAgent.DispatchEvent(ConstMessage.AFTER_DATA_INITED);            ItemProxy.GetItemAttributeInfos().Coroutine();            ItemProxy.ReqGetItemCollect().Coroutine();            MainStorySProxy.GetStoryBonusInfos().Coroutine();            CardSProxy.GetCardInfos().Coroutine();            TaskSProxy.GetTaskInfos();            BattlePassTaskSProxy.GetBattlePassInfo().Coroutine();                 DailyTaskSProxy.ReqDailyTaskInfos().Coroutine();            NoticeSProxy.ReqSystemNoticeList().Coroutine();            MailSProxy.ReqMailCount().Coroutine();            FriendSProxy.ReqAllFriendInfos().Coroutine();            ActivityAfuGiftSProxy.GetAfuGiftInfo().Coroutine();            ActivityTeaSProxy.ReqGetNPCVisitInfo().Coroutine();            ActivitySProxy.ReqActivityZCJBInfo().Coroutine();            MiniGameProxy.ReqGetChallengeReward().Coroutine();            PoemPhotoSProxy.ReqAllPhotoInfos().Coroutine();            TravelSProxy.ReqTravelInfo().Coroutine();            TravelSProxy.ReqTravelGuideInfo().Coroutine();            PoemGallerySProxy.ReqGalleryTheme().Coroutine();            ArenaDataManager.Instance.ReqArenaInfo();            SkillSProxy.ReqGetSkillList(SkillType.LeagueSkill).Coroutine();            EnduringGiftBoxSProxy.ReqGetAllGiftBagRebateStatus().Coroutine();            ChatSProxy.ReqQueryChatMsg(ChatType.League).Coroutine();            ChatSProxy.ReqQueryChatMsg(ChatType.LeagueQuestion).Coroutine();            LuckyBoxSProxy.ReqGetLuckyBoxInfo().Coroutine();            LeagueSproxy.ReqGetLeagueInfo().Coroutine();            SuitFosterProxy.SendGetSuitInfos().Coroutine();            StudioSProxy.ReqStudioInfos().Coroutine();            LuckyBoxSProxy.ReqGetLuckyBoxRotatingInfo().Coroutine();            LeagueSproxy.GetTeapartyInfos().Coroutine();            LeagueSproxy.GetTeapartyMatchingInfos(RoleDataManager.roleId).Coroutine();            int storageAutoPlay = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY);            FightDataManager.Instance.autoPlay = storageAutoPlay <= 0 ? false : true;            int fightSpeed = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_FIGHT_AUTO_PLAY_SPEED);            FightDataManager.Instance.fightSpeed = fightSpeed <= 0 ? 1 : fightSpeed;            int dialogSpeed = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_DIALOG_AUTO_PLAY_SPEED);            FightDataManager.Instance.dialogSpeed = dialogSpeed <= 0 ? 1 : dialogSpeed;            int filingChapterId = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STUDIO_FILING_CHAPTERID);            StudioDataManager.Instance.npcFilingChapterId = filingChapterId <= 0 ? StudioDataManager.Instance.FilingDatas[0].id : filingChapterId;            StudioDataManager.Instance.filingChapterId = StudioDataManager.Instance.npcFilingChapterId;            GameGlobal.skipCheckOpen = StorageDataManager.Instance.GetStorageValue(ConstStorageId.SKIP_CHECK_OPEN) <= 0 ? false : true;        }        public static void QuitToLoginView(bool logout, bool fromSdkLogoutCallback = false)        {            FieldDataManager.Instance.waitToShowFieldFightEndView = false;            GameGlobal.AutoSevenDayLoginView = true;            GameGlobal.AutoDailySignView = true;            GameGlobal.AutoSpecialOfferGiftBoxView = true;            GameGlobal.AutoAcitivtyTipsLoginView = true;            GameGlobal.AutoMonthlyCardView = true;            GameGlobal.AutoShowCompleted = false;            GameGlobal.PreDataInited = false;            GameGlobal.AfterDataInited = false;            QDManager.OnQuitToLoginView();            GameGlobal.isVisitor = false;            GameGlobal.antiAddiction = true;            GameGlobal.userId = 0;            GameGlobal.userAge = 0;            GameGlobal.skipGuide = false;            GuideDataManager.currentGuideId = 0;            MainDataManager.Instance.ViewType = 0;            RoleDataHandler.StopUpdate();            CardDataManager.Clear();            ItemDataManager.Clear();            ViewManager.Clear();            DecomposeDataManager.Instance.Clear();            PhotographDataManager.Instance.Clear();            SkillDataManager.Instance.Clear();            SuitFosterDataManager.Instance.Clear();            StudioDataManager.Instance.Clear();            StorageDataManager.Instance.Clear();            ShopDataManager.Instance.Clear();            DressUpMenuItemDataManager.Clear();            GuideDataManager.Clear();            GetSuitItemController.Clear();            FriendDataManager.Instance.Clear();            RedDotController.Instance.Clear();            BagDataManager.Instance.Clear();            PoemPhotoDataManager.Instance.Clear();            PoemGalleryDataManager.Instance.Clear();            RoleInfoManager.Instance.Clear();            DailyTaskDataManager.Instance.Clear();            TravelDataManager.Instance.Clear();            ArenaDataManager.Instance.Clear();            ChatDataManager.Instance.Clear();            ActivityDataManager.Instance.Clear();            ActivityGlobalDataManager.Instance.Clear();            EnduringGiftBoxDataManager.Instance.Clear();            LimitedTimeGiftBoxDataManager.Instance.Clear();            BattlePassTaskDataManager.Instance.Clear();            TaskDataManager.Instance.Clear();            LeagueDataManager.Instance.Clear();            ActivityAfuGiftDataManager.Instance.Clear();            FightDataManager.Instance.Clear();            GameGlobal.zoneScene.GetComponent<SessionComponent>()?.Disconnect();            GameGlobal.zoneScene.GetComponent<ServerInfosComponent>()?.ServerInfoList?.Clear();            GameGlobal.zoneScene.GetComponent<AccountInfoComponent>()?.Clear();            if (logout)            {                if (PlayerPrefs.HasKey(GameConst.PASSWORD_LAST_LOGIN_KEY))                {                    PlayerPrefs.DeleteKey(GameConst.PASSWORD_LAST_LOGIN_KEY);                }                if (!fromSdkLogoutCallback)                {                    QDManager.Logout();                }            }            ViewManager.Hide<GuideView>();            ViewManager.Show<LoginView>(null, true);        }        //断线重连后需要处理的事情        public static void OnReconnected()        {            //重连成功请求邮件和公告等离线后会变更的数据            NoticeSProxy.ReqSystemNoticeList().Coroutine();            MailSProxy.ReqMailCount().Coroutine();            FriendSProxy.ReqAllFriendInfos().Coroutine();            PoemGallerySProxy.ReqGalleryTheme().Coroutine();            TaskSProxy.GetTaskInfos();        }        public static void GoBackToMainView()        {            MainDataManager.Instance.ViewType = 0;            ViewManager.Show<MainUIView>(null, true);        }        public static void ShowExitAlert(Action sureCallback = null)        {            AlertSystem.Show("我会想你的")                    .SetLeftButton(true, "继续游戏")                    .SetRightButton(true, "退出游戏", (object data) =>                     {                         if(sureCallback != null)                        {                            sureCallback.Invoke();                        }                        else                        {                            Application.Quit();                        }                    });        }    }}
 |