using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; namespace GFGGame { public struct MailData { public string title; public string toName; public string fromName; public string content; public int remainingTime;//剩余时间 public List rewards; public int isGet;//0未领取,1已领取 public int isRead;//0未读,1已读 } public class MailDataManager : SingletonBase { string gmContent = "文化大革命如火如荼地进行,天文学家叶文洁在期间历经劫难,被带到军方绝秘计划“红岸工程”。叶文洁以太阳为天线,向宇宙发出地球文明的第一声啼鸣,取得了探寻外星文明的突破性进展。三颗无规则运行的太阳主导下,四光年外的“三体文明”百余次毁灭与重生,正被逼迫不得不逃离母星,而恰在此时,他们接收到了地球发来的信息。对人性绝望的叶文洁向三体人暴露了地球的坐标,彻底改变了人类的命运。地球的基础科学出现了异常的扰动,纳米科学家汪淼进入神秘的网络游戏《三体》,开始逐步逼近这个世界的真相。汪淼参加一次玩家聚会时,接触到了地球上应对三体人到来而形成的一个秘密组织(ETO)。地球防卫组织中国区作战中心通过“古筝计划”,一定程度上挫败了拯救派和降临派扰乱人类科学界和其他领域思想的图谋,获悉处于困境之中的三体人为了得到一个能够稳定生存的世界决定入侵地球.在运用超技术锁死地球人的基础科学之后,庞大的三体舰队开始向地球进发,人类的末日悄然来临。三体人在利用科技锁死了地球人的科学之后,出动庞大的宇宙舰队直扑太阳系,面对地球文明前所未有的危局,人类组建起同样庞大的太空舰队,同时(PDC)利用三体人思维透明的致命缺陷,制订了“面壁计划”。出乎意料地,社会学教授罗辑被选出作为四位“面壁者”之一,展开对三体人的秘密反击。虽然三体人自身无法识破人类的计谋,却依靠由地球人中的背叛者挑选出的“破壁人”与“面壁者”进行智慧博弈。在这场你死我活的文明生存竞争中,罗辑由一开始的逃避和享乐主义逐渐意识到自己的责任心,想到了一个对抗三体文明入侵的办法。科研军官章北海试图借一场陨石雨干涉飞船推进形式的研究方向。近二百年后,获选增援未来的他在人类舰队被“水滴”清除殆尽前,成功抢夺战舰逃离。此时罗辑证实了宇宙文明间的黑暗森林法则,任何暴露自己位置的文明都将很快被消灭。借助于这一发现,他以向全宇宙公布三体世界的位置坐标相威胁,暂时制止了三体对太阳系的入侵,使地球与三体建立起脆弱的战略平衡。身患绝症的云天明买下一颗星星送给暗恋着的大学同学程心,而程心因参与(PIA)向三体舰队发射探测器的工作,却想让航天专业背景的他放弃安乐死,作为被执行人将大脑捐献给阶梯计划。与三体文明的战争使人类首次看到了宇宙黑暗的真相,地球文明因为黑暗森林打击的存在如临大敌,不敢在太空中暴露自己。在零道德的宇宙中发起黑暗战役的战舰被诱导返航,却受到有道德的地球文明审判。不称职的懦弱少女程心被选来充当掌握地球命运的执剑人,她因为罗辑的成功将这看作一项只需花费时间的任务,刚刚任职水滴就向地球发动攻击,程心为了忠于人性做出了错误的决定。在警示下继续逃离的“蓝色空间”号,受到具有发射引力波能力的“万有引力”号与两个同行的“水滴”追击,其上的人员进入四维空间摧毁水滴并占领了“万有引力”号,启动引力波广播向宇宙公布了三体星系的坐标。云天明与地球取得联系,通过讲述三个自己编创的童话故事,向程心透露大量情报;人类自以为悟出了生存竞争的秘密,开始进行掩体计划,维德领导的空间曲率驱动研究因为程心的错误判断被终止,使得人类最终没有能够逃脱被高级文明毁灭的命运。因为宇宙中还存在更强大的文明,战争的方式和武器已经远超出人类的想象,极高文明发出了一张卡片大小的“二向箔”,使整个太阳系压缩为二维平面而毁灭。在地球人类接近灭亡之际,只有程心和艾AA两个幸存者乘坐光速飞船离开。罗辑成为设置于冥王星的地球文明博物馆的“守墓人”,她们在冥王星带走人类文明的精华。在云天明送的恒星的一颗行星上,程心遇到关一帆且探讨了宇宙降维的真相,然而超乎一切之上的力量要求宇宙归零重生,在黑域中穿越长达1800万年的时空……程心没有等到云天明到来,和关一帆在小宇宙中短暂居住后重新进入大宇宙生活。"; public List mailListData; public void Init(List list) { mailListData = list; } public void GMSetList(int count) { List list = new List(); for (int i = 0; i < count; i++) { MailData data = new MailData(); data.toName = "亲爱的玩家:"; data.fromName = "发件人:万世镜工作室"; data.title = "邮件详情"; int start = Random.Range(0, this.gmContent.Length); int length = Random.Range(1, this.gmContent.Length - start); data.content = gmContent.Substring(start, length); data.remainingTime = Random.Range(0, 31); int rewardCount = Random.Range(0, 4); List rewardList = new List(); for (int j = 0; j < rewardCount; j++) { ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(Random.Range(10162, 10189)); ItemData itemData = new ItemData(); itemData.id = itemCfg.id; itemData.num = Random.Range(1, 100); rewardList.Add(itemData); } data.rewards = rewardList; data.isRead = Random.Range(0, 2); data.isGet = data.isRead == 0 ? 0 : Random.Range(0, 2); list.Add(data); } this.Init(list); } //0未读,1无奖已读,2有奖为领,3有奖已领 public int GetMailState(MailData data) { if (data.rewards.Count > 0) { if (data.isGet == 0) { return 2; } else { return 3; } } else { if (data.isRead == 0) { return 0; } else { return 1; } } } public void GetAllRewards() { List allRewardList = new List(); for (int i = 0; i < mailListData.Count; i++) { if (mailListData[i].rewards.Count > 0 && mailListData[i].isGet == 0) { allRewardList.AddRange(mailListData[i].rewards); } MailData mailData = mailListData[i]; mailData.isRead = 1; mailData.isGet = 1; mailListData[i] = mailData; } for (int i = 0; i < allRewardList.Count; i++) { ItemDataManager.Add(allRewardList[i].id, allRewardList[i].num); } if (allRewardList.Count > 0) { BonusController.TryShowBonusList(allRewardList); EventAgent.DispatchEvent(ConstMessage.MAIL_CHANGE); } else { PromptController.Instance.ShowFloatTextPrompt("没有可领取的邮件"); } } public void GetRewards(int index) { LuckyBoxDataManager.Instance.FirstRewardList.Clear(); int dicIndex = 0; foreach (ItemData itemData in mailListData[index].rewards) { ItemCfg cfg = ItemCfgArray.Instance.GetCfg(itemData.id); if (ItemDataManager.GetItemNum(itemData.id) == 0 && cfg.itemType == ConstItemType.DRESS_UP) { LuckyBoxDataManager.Instance.FirstRewardList.Add(dicIndex, itemData); } ItemDataManager.Add(itemData.id, itemData.num); dicIndex++; } List itemList = LuckyBoxDataManager.Instance.GetFirstClothingList(); if (itemList.Count > 0) { ViewManager.Show(ViewName.LUCKY_BOX_CARD_VIEW, new object[] { itemList, FirstGetCardViewType.CANNOT_JUMP_CANNOT_SUIT }); } MailData mailData = mailListData[index]; mailData.isRead = 1; mailData.isGet = 1; mailListData[index] = mailData; EventAgent.DispatchEvent(ConstMessage.MAIL_CHANGE); } public void DeleteAllMail() { for (int i = mailListData.Count - 1; i >= 0; i--) { if (mailListData[i].isRead == 1 && (mailListData[i].rewards.Count == 0 || mailListData[i].rewards.Count > 0 && mailListData[i].isGet == 1)) { mailListData.RemoveAt(i); } } EventAgent.DispatchEvent(ConstMessage.MAIL_CHANGE); } public void DeleteMail(int index) { mailListData.RemoveAt(index); EventAgent.DispatchEvent(ConstMessage.MAIL_CHANGE); } public void ChangeMailReadState(int index) { MailData mailData = mailListData[index]; mailData.isRead = 1; mailListData[index] = mailData; EventAgent.DispatchEvent(ConstMessage.MAIL_CHANGE); } } }