using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Xml; using Sfs2X.Entities.Data; using UnityEngine; using UnityEngine.UI; using Random = UnityEngine.Random; public class ChestData { #region Config public int Value; public int Round; public int RemainValue; public int RemainRound; public int DatabaseRoomID; public long ID; public long Owner; public DateTime ActivatedTime; public ChestType ChestType; public Vector3 Position; public static int SystemRoomDatabaseID = 1; private static bool Initialized; private static Vector3 DefaultPosition; private static Vector3 ChestOffset = new Vector3(0, 0, 1.040916f); #endregion public ChestData(ISFSObject arg) { if (!Initialized) { Initialize(); } ID = arg.GetLong(gd_chest.ID); Value = arg.GetInt(gd_chest.Value); Round = arg.GetInt(gd_chest.Round); RemainValue = arg.GetInt(gd_chest.RemainValue); RemainRound = arg.GetInt(gd_chest.RemainRound); DatabaseRoomID = arg.GetInt(gd_chest.DatabaseRoomID); Owner = arg.GetLong(gd_chest.Owner); ActivatedTime = DateUtil.GetTimeFromSeconds(arg.GetLong(gd_chest.ActivatedTime).ToString()); ChestType = (ChestType) arg.GetInt(gd_chest.Type); Vector3 defaultPosition = DefaultPosition + ChestOffset; if (arg.ContainsKey(gd_chest.Position)) { string vectorStr = arg.GetUtfString(gd_chest.Position); if (vectorStr == "null") { Position = defaultPosition; } else { Position = arg.GetUtfString(gd_chest.Position).ToVector() + ChestOffset; } } else { Position = defaultPosition; } } private static void Initialize() { Initialized = true; DefaultPosition = ResourceManager.Get(PlazaRoomLabel.PlazaRoomChestPos).position; } } public class ChestOperateData { public long ChestID; public bool Received; public int DatabaseRoomID; public int? RemainGuessAmt; public DateTime? LastActivatedTime; //只有系统宝箱才用 public ChestOperateData(string str) { string[] strings = str.Split('|'); ChestID = long.Parse(strings[0]); DatabaseRoomID = int.Parse(strings[1]); Received = int.Parse(strings[2]).ToBool(); if (strings.Length > 3) { RemainGuessAmt = int.Parse(strings[3]); } if (strings.Length > 4) { LastActivatedTime = DateTime.Parse(strings[4]); } } public ChestOperateData(bool received, long chestID, int databaseRoomID) { Received = received; ChestID = chestID; DatabaseRoomID = databaseRoomID; } public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(ChestID); stringBuilder.Append("|" + DatabaseRoomID); stringBuilder.Append("|" + Received.ToInt()); if (RemainGuessAmt != null) { stringBuilder.Append("|" + RemainGuessAmt); } if (LastActivatedTime != null) { stringBuilder.Append("|" + LastActivatedTime); } return stringBuilder.ToString(); } } public class ChestManager : Regist { #region Config public static int PlayerMaxGuessAmt = 3; private static Text Create_DescriptionText; private static Text Create_ButtonText; private static Text Create_SliderValueText; private static Slider Create_RoundSlider; private static Button Create_Button; private static InputField Create_InputField; private static Button GuessButton; private static InputField GuessInputField; public static List PlazaRoomChests = new List(); public static List RefundRoomIDs = new List(); public static Dictionary OperateDataDictionary = new Dictionary(); #endregion public override void FirstInit() { XmlNodeList RefundNodes = ConfigManager.ConfigRootNode.SelectNodes(PlayerConfigLabel.RefundNode); XmlNodeList ReceivedNodes = ConfigManager.ConfigRootNode.SelectNodes(PlayerConfigLabel.ReceivedNode); for (int i = 0; i < RefundNodes.Count; i++) { RefundRoomIDs.Add(int.Parse(RefundNodes[i].InnerText)); } for (int i = 0; i < ReceivedNodes.Count; i++) { ChestOperateData chestOperateData = new ChestOperateData(ReceivedNodes[i].InnerText); OperateDataDictionary.Add(chestOperateData.ChestID, chestOperateData); } CheckRefund(); GetChestExpireStatus(); } public override void RegistReference() { Create_Button = ResourceManager.Get