// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2021-05-18 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** using System.Collections; using System.Collections.Generic; using UnityEngine; namespace G { /// /// 主场景逻辑 /// public class MainSceneLogic : SceneLogic { #region Field static bool _IsFirst = true; #endregion #region Method private void UnloadUnusedAssets() { Resources.UnloadUnusedAssets(); System.GC.Collect(); } private void ProcessCharge() { } Dictionary _userDict; private void ReportUserData() { if (_userDict == null) _userDict = new Dictionary(8); else _userDict.Clear(); var dict = _userDict; dict.Add("combat_value", PlayerProxy.Instance.combatValue); dict.Add("coin", MoneyProxy.Instance.coin); dict.Add("gem", MoneyProxy.Instance.gem); dict.Add("js", MoneyProxy.Instance.chip); dict.Add("yt", MoneyProxy.Instance.stone); dict.Add("vip", VipProxy.Instance.curVip); dict.Add("no_ad", RmbShopProxy.Instance.IsRemoveAd()); dict.Add("level", LevelProxy.Instance.currentCompletedLevel); KStatistics.Instance.SetUserData(dict); } #endregion #region Unity private void Awake() { Time.timeScale = 1f; #if !UNITY_EDITOR && !UNITY_WEBGL UnityEngine.Scripting.GarbageCollector.GCMode = UnityEngine.Scripting.GarbageCollector.Mode.Enabled; #endif } private IEnumerator Start() { KUIWindow.CloseWindow(); int isOnline = int.MaxValue; do { if (isOnline > 0) { isOnline = -1; AntiCheatProxy.Instance.CheckCheat((error, message) => { isOnline = error; if (error != 0) GlobalNotifier.PostNotification(GlobalDefine.EVENT_SHOW_TOAST, message); }); } yield return null; } while (isOnline != 0); yield return null; LevelProxy.Instance.EndlessSettle(); yield return null; RmbShopProxy.Instance.CheckSpecialReward(); yield return null; MailProxy.Instance.GetMails(null); yield return null; RankingProxy.Instance.UploadAllRanking(); yield return null; var dict = new Dictionary(); //dict.Add("battle", $"{{\"wxgame\":{{\"score\":{PlayerProxy.Instance.combatValue},\"update_time\":{Launch.Timestamp}}}}}"); //dict.Add("level", $"{{\"wxgame\":{{\"score\":{LevelProxy.Instance.currentCompletedLevel},\"update_time\":{Launch.Timestamp}}}}}"); dict.Add("battle", PlayerProxy.Instance.combatValue.ToString()); dict.Add("level", LevelProxy.Instance.currentCompletedLevel.ToString()); KPlatform.Instance.SetUserCloundStorage(dict, (error, message) => { Debug.Log("SetUserCloundStorage " + message); }); // if (_IsFirst) { //UI.VersionGuideBox.Show(); //版本奖励 if (System.Version.TryParse(Application.version, out var currVersion)) { System.Version.TryParse(ArchiveProxy.Instance.GetString("app_ver"), out var saveVersion); if (saveVersion == null || currVersion > saveVersion) { ArchiveProxy.Instance.SetString("app_ver", Application.version); if (!GlobalVar.IsNewPlayer) MailProxy.Instance.PostLocalMail(1000); } } //离线奖励 bool offlineState = false; int offlineTimestamp = ArchiveProxy.Instance.GetInt(GlobalDefine.KEY_OFFLINE_TIMESTAMP); if (offlineTimestamp <= 0) { ArchiveProxy.Instance.SetInt(GlobalDefine.KEY_OFFLINE_TIMESTAMP, Launch.Timestamp); } else/* if (TimeProxy.Instance.GetTimeKey(TimeProxy.每日离线奖励))*/ { int offlineSeconds = Mathf.Clamp(Launch.Timestamp - offlineTimestamp, 0, 86400); var energyOverflow = Mathf.RoundToInt(offlineSeconds / 7200f); if (energyOverflow > 0) { offlineState = true; LevelProxy.Instance.OfflineLevel(energyOverflow, (error, message) => { offlineState = false; }); ArchiveProxy.Instance.SetInt(GlobalDefine.KEY_OFFLINE_TIMESTAMP, Launch.Timestamp); //TimeProxy.Instance.TryTimeKey(TimeProxy.每日离线奖励); } } while (offlineState) yield return null; LevelProxy.Instance.LoadPlayingLevelState(); } _IsFirst = false; yield return null; UnloadUnusedAssets(); ReportUserData(); } private void OnDisable() { UnloadUnusedAssets(); } private float _lastUpdateTime; private void Update() { if (Time.time - _lastUpdateTime > 100f) { _lastUpdateTime = Time.time; var levelProxy = LevelProxy.Instance; if (levelProxy != null) { //KStatistics.Instance.ReportEvent_Fps("main_window", levelProxy.maxUnlockChapter, levelProxy.maxUnlockLevel, 0, KGMTools.Instance.fps, "", SystemInfo.processorType, SystemInfo.graphicsDeviceName, Screen.currentResolution.ToString(), SystemInfo.systemMemorySize, 0, 0); } } } #endregion } }