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();
GMController.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();
}
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();
}
else
{
MainStoryDataManager.currentChapterCfgId = 10001;
// GameGlobal.isFirstEntry == true
if (!InstanceZonesDataManager.CheckLevelPass(100001001))
{
GameGlobal.isFirstEntry = false;
// StoryController.ShowPriorStoryDialog();
StoryController.ShowLevelView(100001001);
}
else
{
ViewManager.Show(MainStoryDataManager.currentChapterCfgId, new object[] { ViewName.STORY_CHAPTER_LIST_VIEW });
//ViewManager.Show(StudioDataManager.Instance.luckyBoxFilingChapterId, new object[] { typeof(ActivityThemeLuckyBoxView).FullName, this.viewData });
ViewManager.Show(MainStoryDataManager.currentChapterCfgId, ViewManager.GetGoBackDatas(typeof(StoryChapterListView).FullName), true);
}
}
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();
LuckyBoxSProxy.ReqGetLuckyBoxInfo().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;
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(null, null, true);
}
}
}