// *********************************************************************** // Assembly : Unity // Author : Kimch // Created : 2017-11-14 // // Last Modified By : Kimch // Last Modified On : // *********************************************************************** // // // *********************************************************************** namespace G { using System.Collections; using System.Collections.Generic; /// /// /// public class ActivityProxy : F.GameProxy { #region FIELD private readonly Dictionary _activities = new Dictionary(); #endregion #region PROPERTY /// /// 七日签到活动 /// public readonly SevenSignActivity sevenSignActivity = new SevenSignActivity(); /// /// /// public readonly FreeEnergyActivity freeEnergyActivity = new FreeEnergyActivity(); /// /// /// public readonly WomenActivity womenActivity = new WomenActivity(); /// /// /// public readonly QingMingActivity qingMingActivity = new QingMingActivity(); #endregion #region METHOD /// /// /// /// public IReadOnlyCollection GetActivities() { return _activities.Values; } /// /// /// /// /// public ActivityInfo GetActivity(int id) { if (TimeProxy.Instance.TryTimeKey(TimeProxy.每日活动)) { foreach (var item in _activities.Values) { if (item.type == 4) { item.Reset(); } } SaveLocal(); } if (!_activities.TryGetValue(id, out var activity)) { UnityEngine.Debug.Log($"活动Id{id}错误"); } return activity; } /// /// /// /// public void SaveActivity(ActivityInfo activityInfo) { SaveLocal(); } /// /// /// /// public void ResetActivity(int id) { if (_activities.TryGetValue(id, out var activity)) { activity.Reset(); SaveLocal(); } } public void GetRewards(int id, int subIndex, Callback2 callback) { var activity = GetActivity(id); if (activity != null) { if (subIndex > 0 && activity.subInfos != null && subIndex <= activity.subInfos.Length) { activity.subInfos[subIndex - 1].status = 2; callback?.Invoke(0, ""); } else { activity.status = 2; callback?.Invoke(0, ""); } SaveLocal(); } } /// /// FreeEnergy /// /// public int GetRedPoint1() { return freeEnergyActivity.GetRedPoint(); } /// /// SevenSign /// /// public int GetRedPoint2() { return sevenSignActivity.GetRedPoint(); } public const string ARCHIVE_KEY_V1 = "activities"; private void LoadActivity() { var dataList = ArchiveProxy.Instance.GetIntList(ARCHIVE_KEY_V1); if (dataList != null && dataList.Count > 0) { int index = 0; Label: var id = dataList.SafeGet(index++); int save = dataList.SafeGet(index++); if (_activities.TryGetValue(id, out var activity)) { GlobalUtils.SplitNumber824(save, out int status, out int value); activity.status = status; activity.curValue = value; if (activity.subInfos != null) for (int i = 0; i < activity.subInfos.Length; i++) { var subInfo = activity.subInfos[i]; GlobalUtils.SplitNumber824(dataList.SafeGet(index++), out int subStatus, out int subValue); subInfo.status = subStatus; subInfo.curValue = subValue; } } if (index < dataList.Count) goto Label; } // sevenSignActivity.Load(); womenActivity.Load(); qingMingActivity.Load(); } private void SaveLocal() { var dataList = ArchiveProxy.Instance.GetIntList(ARCHIVE_KEY_V1); if (dataList != null) { dataList.Clear(); foreach (var activity in _activities.Values) { dataList.Add(activity.id); dataList.Add(GlobalUtils.CombineNumber824(activity.status, activity.curValue)); if (activity.subInfos != null) for (int i = 0; i < activity.subInfos.Length; i++) { var subInfo = activity.subInfos[i]; dataList.Add(GlobalUtils.CombineNumber824(subInfo.status, subInfo.curValue)); } } ArchiveProxy.Instance.SetIntList(ARCHIVE_KEY_V1, dataList); } } private void InitActivity() { _activities.Clear(); var activityItems = ItemProxy.Instance.GetStaticItems(); foreach (var item in activityItems) { var activity = new ActivityInfo(item); _activities.Add(activity.id, activity); } // sevenSignActivity.Init(); //womenActivity.Init(); qingMingActivity.Init(); } #endregion #region Proxy public static ActivityProxy Instance => GetInstance(); public override void ReadArchive() { InitActivity(); LoadActivity(); } #endregion } }