Files
ft/Client/Assets/Scripts/SandDig/model/Data/DinggingSceneData.cs
2026-06-29 21:18:33 +08:00

106 lines
3.4 KiB
C#

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<List<PropTempData>> _allPropTempData;
private List<PropTempData> _firstTempData;
public void AnalysisData(List<ServerGridData> serverGrid)
{
_allBroadData = JsonConvert.DeserializeObject<BroadData[]>(AllBroadJson);
_allGridData = JsonConvert.DeserializeObject<GridData[]>(AllCubeJson);
_allPropData = JsonConvert.DeserializeObject<PropData[]>(AllPropJson);
_allPropTempData = JsonConvert.DeserializeObject<List<List<PropTempData>>>(AllTempJson);
if (!string.IsNullOrEmpty(FirstTempJson))
{
_firstTempData = JsonConvert.DeserializeObject<List<PropTempData>>(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<PropTempData> GetAllPropTempData(int index)
{
if (_allPropTempData == null || _allPropTempData.Count == 0)
{
return null;
}
if (index > 0)
{
IUserService userService = GContext.container.Resolve<IUserService>();
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];
}
}
}