using FairyGUI; using UnityEngine; using ET; using static GFGGame.LauncherConfig; using System.Collections; using System.Collections.Generic; namespace GFGGame { public class GameController { public static void Start() { //界面 ViewManager.Init(); //日志 LogController.Instance.Init(); //全局 GameGlobal.Init(); //缓存 LocalCache.InitLocalData(); //sqlite SqliteController.Instance.Init(false, ResPathUtil.SQLITE_FILE_PATH); //全局点击效果 ViewGlobal.CreatClickEffect(); ViewGlobal.AddShowGMViewEventListener(); //获取游戏配置 GetGameCfg(); } /// /// 获取游戏配置 /// public static void GetGameCfg() { var url = LauncherConfig.cfgUrl.Replace("{cfgName}", GameGlobal.cfgName); url = url + "?t=" + TimeHelper.ClientNow(); HttpTool.Instance.Get(url, (string data) => { //初始化游戏配置 GameConfig.InitData(data); //显示登录 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(ViewName.CREATE_ROLE_VIEW); } public static async ETTask PreEnterGameAsync() { QDManager.OnEnterGame(); RoleDataHandler.StartUpdate(); GFGUIPackage.AddPackage(ResPathUtil.GetUIPackagePath("CommonGame")); GFGUIPackage.AddPackage(ResPathUtil.GetUIPackagePath("Main")); LeagueSproxy.ReqGetLeagueInfo().Coroutine(); await ItemProxy.GetItemInfos(); await RoleLimitSProxy.ReqUnitLimitInfos(); await InstanceZonesSProxy.GetInstanceZonesInfos(); await StorageSProxy.ReqGetClientValues(); await SuitFosterProxy.SendGetSuitInfos(); await ActivitySProxy.ReqSevenDayLoginInfos(); // await RechargeSProxy.ReqRequestGiftBagInfo(); await ShopSProxy.ReqShopInfo(); await StudioSProxy.ReqStudioInfos(); await RoleInfoSProxy.ReqPersonalInfo(); await ActivityGlobalSProxy.GetActivityInfo(); await LuckyBoxSProxy.ReqGetLuckyBoxRotatingInfo(); 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.GetUI(); LoadingView.Instance.SetProgress(100, () => { ViewManager.Hide(); // LoadingView.Instance.Close(); GameGlobal.isEnterGame = true; if (MainStoryDataManager.CheckOpenMainUI() || GameGlobal.skipGuide) { ViewManager.Show(ViewName.MAINUI_VIEW); } else { MainStoryDataManager.currentChapterCfgId = 10001; // GameGlobal.isFirstEntry == true if (!InstanceZonesDataManager.CheckLevelPass(100001001)) { GameGlobal.isFirstEntry = false; // StoryController.ShowPriorStoryDialog(); StoryController.ShowLevelView(100001001); } else { ViewManager.Show(ViewName.STORY_CHAPTER_VIEW, MainStoryDataManager.currentChapterCfgId, new object[] { ViewName.STORY_CHAPTER_LIST_VIEW }); } } Timers.inst.Add(1f, 1, AfterEnterGame); }); } private static async void AfterEnterGame(object param) { ItemHelper.GetItemAttributeInfos().Coroutine(); MainStorySProxy.GetStoryInfos().Coroutine(); CardSProxy.GetCardInfos().Coroutine(); TaskSProxy.GetTaskInfos(); BattlePassTaskSProxy.GetBattlePassInfo().Coroutine(); DailyTaskSProxy.ReqDailyTaskInfos().Coroutine(); NoticeSProxy.ReqSystemNoticeList().Coroutine(); MailSProxy.ReqMailCount().Coroutine(); FriendSProxy.ReqAllFriendInfos().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(); 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.filingChapterId = filingChapterId <= 0 ? StudioDataManager.Instance.FilingDatas[0].id : filingChapterId; GameGlobal.skipCheckOpen = StorageDataManager.Instance.GetStorageValue(ConstStorageId.SKIP_CHECK_OPEN) <= 0 ? false : true; bool result = await FieldSProxy.ReqFieldInstanceInfos(); if (result && FieldDataManager.Instance.fieldInfos.hasBonus) { bool result1 = await FieldSProxy.ReqFieldInstanceResult(); if (result1) { ViewManager.Show(); } } EventAgent.DispatchEvent(ConstMessage.RED_CHANGE); } public static void QuitToLoginView(bool logout) { GameGlobal.DataInited = 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(); 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(); GameGlobal.zoneScene.GetComponent()?.Disconnect(); GameGlobal.zoneScene.GetComponent()?.ServerInfoList?.Clear(); GameGlobal.zoneScene.GetComponent()?.Clear(); if (logout) { QDManager.Logout(); PlayerPrefs.DeleteKey(GameConst.PASSWORD_LAST_LOGIN_KEY); } ViewManager.Hide(); ViewManager.Show(null, null, true); } //断线重连后需要处理的事情 public static void OnReconnected() { //重连成功请求邮件和公告等离线后会变更的数据 NoticeSProxy.ReqSystemNoticeList().Coroutine(); MailSProxy.ReqMailCount().Coroutine(); FriendSProxy.ReqAllFriendInfos().Coroutine(); PoemGallerySProxy.ReqGalleryTheme().Coroutine(); } public static void GoBackToMainView() { MainDataManager.Instance.ViewType = 0; ViewManager.Show(ViewName.MAINUI_VIEW, null, null, true); } } }