using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using UnityEngine; using Random = System.Random; namespace Script.RuntimeScript.model.Data { public class DinggingSceneData { public string BoxPositionJson; public string AllBroadJson; public string AllPropJson; public string AllCubeJson; public string AllTempJson; private BroadData[] _allBroadData; private GridData[] _allGridData; private PropData[] _allPropData; private List> _allPropTempData; //任务目标宝箱位置 private Vector3 _taskBoxPositon = Vector3.zero; public void AnalysisData(List serverGrid) { _taskBoxPositon = JsonConvert.DeserializeObject(BoxPositionJson); _allBroadData = JsonConvert.DeserializeObject(AllBroadJson); _allGridData = JsonConvert.DeserializeObject(AllCubeJson); _allPropData = JsonConvert.DeserializeObject(AllPropJson); _allPropTempData = JsonConvert.DeserializeObject>>(AllTempJson); 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 Vector3 GetTaskPosPositon() { return _taskBoxPositon; } 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 >= _allPropTempData.Count) { index = GetOnePropTempDataIndex(); } return _allPropTempData[index]; } public int GetOnePropTempDataIndex() { return UnityEngine.Random.Range(0, _allPropTempData.Count); } } }