using System; using System.Collections.Generic; using asap.core; using game; using Newtonsoft.Json; namespace Script.RuntimeScript.model.Data { public class DinggingSceneData { public string AllBroadJson; public string AllPropJson; public string AllCubeJson; public string AllTempJson; public string FirstTempJson; private BroadData[] _allBroadData; private GridData[] _allGridData; private PropData[] _allPropData; private List> _allPropTempData; private List _firstTempData; public void AnalysisData(List serverGrid) { _allBroadData = JsonConvert.DeserializeObject(AllBroadJson); _allGridData = JsonConvert.DeserializeObject(AllCubeJson); _allPropData = JsonConvert.DeserializeObject(AllPropJson); _allPropTempData = JsonConvert.DeserializeObject>>(AllTempJson); if (!string.IsNullOrEmpty(FirstTempJson)) { _firstTempData = JsonConvert.DeserializeObject>(FirstTempJson); if (_firstTempData.Count > 0) { _allPropTempData.Insert(0, _firstTempData); } } GridData gData; for (int i = 0; i < _allGridData.Length; i++) { gData = _allGridData[i]; gData.Init(); for (int j = 0; j < serverGrid.Count; j++) { if (serverGrid[j].Row == gData.Row && serverGrid[j].Col == gData.Col) { gData.IsOpen = serverGrid[j].IsOpen == 1; gData.hasClickCount = serverGrid[j].hasClickCount; } } } } public void Reset() { _allGridData = new GridData[0]; _allPropData = new PropData[0]; } public GridData GetGridData(int row, int col) { GridData gData; for (int i = 0; i < _allGridData.Length; i++) { gData = _allGridData[i]; if (gData.Row == row && gData.Col == col) { return gData; } } return null; } public BroadData[] GetAllBroadData() { return _allBroadData; } public GridData[] GetAllGridData() { return _allGridData; } public PropData[] GetAllPropData() { return _allPropData; } public List GetAllPropTempData(int index) { if (_allPropTempData == null || _allPropTempData.Count == 0) { return null; } if (index > 0) { IUserService userService = GContext.container.Resolve(); System.Random random = new System.Random((int)Convert.ToUInt64(userService.UserId, 16)); int count = _allPropTempData.Count; index += random.Next(0, count - 1); if (index >= count) { index %= count; } } return _allPropTempData[index]; } } }