ChestMge.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Xml;
  6. using Sfs2X.Entities.Data;
  7. using UnityEngine;
  8. public class ChestData
  9. {
  10. #region Config
  11. public int Value;
  12. public int Round;
  13. public int RemainValue;
  14. public int RemainRound;
  15. public int DatabaseRoomID;
  16. public long ID;
  17. public long Owner;
  18. public DateTime ActivatedTime;
  19. public ChestType ChestType;
  20. #endregion
  21. public ChestData(ISFSObject arg)
  22. {
  23. ID = arg.GetLong(gd_chest.ID);
  24. Value = arg.GetInt(gd_chest.Value);
  25. Round = arg.GetInt(gd_chest.Round);
  26. RemainValue = arg.GetInt(gd_chest.RemainValue);
  27. RemainRound = arg.GetInt(gd_chest.RemainRound);
  28. DatabaseRoomID = arg.GetInt(gd_chest.DatabaseRoomID);
  29. Owner = arg.GetLong(gd_chest.Owner);
  30. ActivatedTime = DateUtil.GetJavaTime(arg.GetLong(gd_chest.ActivatedTime).ToString());
  31. ChestType = (ChestType) arg.GetInt(gd_chest.Type);
  32. }
  33. }
  34. public class ChestMge : Regist
  35. {
  36. #region Config
  37. private static string RefundNodeName = "Refund";
  38. private static string ReceivedNodeName = "Received";
  39. private static List<int> RefundRoomIDs = new List<int>();
  40. private static List<long> ReceivedChestIDs = new List<long>();
  41. #endregion
  42. public override void RegistValueA()
  43. {
  44. XmlNodeList RefundNodes = ManaData.PlayerNode.SelectNodes(RefundNodeName);
  45. XmlNodeList ReceivedNodes = ManaData.PlayerNode.SelectNodes(ReceivedNodeName);
  46. for (int i = 0; i < RefundNodes.Count; i++)
  47. {
  48. RefundRoomIDs.Add(int.Parse(RefundNodes[i].InnerText));
  49. }
  50. for (int i = 0; i < ReceivedNodes.Count; i++)
  51. {
  52. ReceivedChestIDs.Add(long.Parse(ReceivedNodes[i].InnerText));
  53. }
  54. CheckRefund();
  55. //RefundRoomIDs.Add(1);
  56. //RefundRoomIDs.Add(98);
  57. //RefundRoomIDs.Add(99);
  58. //foreach (var VARIABLE in RefundRoomIDs)
  59. //{
  60. // Debug.Log(VARIABLE);
  61. //}
  62. //foreach (var VARIABLE in ReceivedChestIDs)
  63. //{
  64. // Debug.Log(VARIABLE);
  65. //}
  66. //RefundRoomIDs.Add(1);
  67. //RefundRoomIDs.Add(2);
  68. //ReceivedChestIDs.Add(100);
  69. //ReceivedChestIDs.Add(200);
  70. //RefundRoomIDs.Remove(1);
  71. //RefundRoomIDs.Remove(2);
  72. //ReceivedChestIDs.Remove(100);
  73. //ReceivedChestIDs.Remove(200);
  74. }
  75. private void CheckRefund()
  76. {
  77. if (RefundRoomIDs.Count == 0)
  78. {
  79. return;
  80. }
  81. else
  82. {
  83. SFSManager.GardenSmartFox.EventManager.PlazaRoomEvent.CheckChestRefund(RefundRoomIDs);
  84. }
  85. }
  86. public static void ReceiveAllChestData(List<ChestData> chestDatas)
  87. {
  88. }
  89. public static bool HasReceived(long chestID)
  90. {
  91. if (ReceivedChestIDs.Contains(chestID))
  92. {
  93. return true;
  94. }
  95. else
  96. {
  97. return false;
  98. }
  99. }
  100. public static void ActivateSystemChest(long chestID)
  101. {
  102. ReceivedChestIDs.Remove(chestID);
  103. }
  104. public static void ReceiveChestAward(int award)
  105. {
  106. //ReceivedChestIDs.Add(chestID);
  107. if (award == 0)
  108. {
  109. Bubble.Show(null, Language.GetStr("UI", "Y_SoldOut"));
  110. }
  111. else
  112. {
  113. }
  114. }
  115. public static void ReceiveChestRefund(int refund, List<int> databaseRoomIDs)
  116. {
  117. foreach (var databaseRoomID in databaseRoomIDs)
  118. {
  119. RefundRoomIDs.Remove(databaseRoomID);
  120. }
  121. if (refund > 0)
  122. {
  123. ManaCenter.AddDiamond(refund, StaticsManager.ItemID.获得钻石, StaticsManager.ConsumeModule.RoomChestRefund);
  124. ManaInfoBox.Show(InfoCategory.Garden, Language.GetStr("UI", "BB_Refund")+refund, 30);
  125. }
  126. }
  127. public static void Save()
  128. {
  129. XmlNode node = ManaData.PlayerNode.SelectSingleNode(RefundNodeName);
  130. while (node != null)
  131. {
  132. ManaData.PlayerNode.RemoveChild(node);
  133. node = ManaData.PlayerNode.SelectSingleNode(RefundNodeName);
  134. }
  135. node = ManaData.PlayerNode.SelectSingleNode(ReceivedNodeName);
  136. while (node != null)
  137. {
  138. ManaData.PlayerNode.RemoveChild(node);
  139. node = ManaData.PlayerNode.SelectSingleNode(ReceivedNodeName);
  140. }
  141. foreach (var id in RefundRoomIDs)
  142. {
  143. node = ManaData.PlayerDoc.CreateNode(XmlNodeType.Element, RefundNodeName, null);
  144. node.InnerText = id.ToString();
  145. ManaData.PlayerNode.AppendChild(node);
  146. }
  147. foreach (var id in ReceivedChestIDs)
  148. {
  149. node = ManaData.PlayerDoc.CreateNode(XmlNodeType.Element, ReceivedNodeName, null);
  150. node.InnerText = id.ToString();
  151. ManaData.PlayerNode.AppendChild(node);
  152. }
  153. }
  154. }