using System;
using System.Collections.Generic;
using MotionFramework;
using MotionFramework.Scripts.Runtime.Engine.Engine.Network.WebRequest;
using Newtonsoft.Json;
using UnityEngine;
namespace DefaultNamespace
{
///
/// 货架箱子管理器
///
public class ShelfBoxManager : MonoBehaviour
{
public GameObject box;
public int maxRows = 11;
public int maxColumns = 34;
public int maxLayers = 2;
private List instantiatedBoxes = new List();
private void Start()
{
string json = @"{
""code"": 200,
""type"": ""success"",
""message"": """",
""result"": [
{
""id"": ""XSCS_01_010100101600100"",
""type"": ""Buff"",
""locationId"": ""010100101600100"",
""description"": ""01%区1层1行16列"",
""locationState"": ""Normal"",
""storageState"": ""Load"",
""layer"": 1,
""row"": 11,
""column"": 21,
""specialFlag"": null,
""palletNum"": null,
""itemType"": ""EmptyBox1"",
""isSpecial"": 0
},
{
""id"": ""XSCS_01_010100101600200"",
""type"": ""Buff"",
""locationId"": ""010100101600200"",
""description"": ""01%区2层1行16列"",
""locationState"": ""Normal"",
""storageState"": ""Load"",
""layer"": 1,
""row"": 12,
""column"": 22,
""specialFlag"": null,
""palletNum"": null,
""itemType"": ""EmptyBox1"",
""isSpecial"": 1
}
],
""extras"": null,
""time"": ""2024-06-26 19:20:09""
}";
ShelfBoxModel parsedData = JsonConvert.DeserializeObject(json);
Debug.Log($"Code: {parsedData.code}");
Debug.Log($"Type: {parsedData.type}");
Debug.Log($"Time: {parsedData.time}");
foreach (var item in parsedData.result)
{
string str = $"{item.row}-{item.column}-{item.layer}";
Debug.Log(str);
Instantiate(box).transform.SetParent(GameObject.Find(str).transform, false);
Debug.Log($"ID: {item.id}, Description: {item.description}, ItemType: {item.itemType}");
}
GenerateRandomLocations();
}
private void GenerateRandomLocations()
{
// 删除之前生成的所有箱子
foreach (GameObject box in instantiatedBoxes)
{
Destroy(box);
}
instantiatedBoxes.Clear();
// 生成新的位置
HashSet<(int row, int column, int layer)> positions = new HashSet<(int, int, int)>();
System.Random rand = new System.Random();
// 确保生成唯一位置
while (positions.Count < 100)
{
int row = rand.Next(1, maxRows + 1);
int column = rand.Next(1, maxColumns + 1);
int layer = rand.Next(1, maxLayers + 1);
positions.Add((row, column, layer));
}
foreach (var position in positions)
{
GameObject instance = Instantiate(box);
BoxInfo boxInfo = instance.AddComponent(); // Ensure your Box prefab does not already have this component.
string parentName = $"{position.row}-{position.column}-{position.layer}";
GameObject parentObject = GameObject.Find(parentName);
if (parentObject != null)
{
instance.transform.SetParent(parentObject.transform, false);
}
else
{
Destroy(instance);
Debug.LogWarning($"未找到名为 {parentName} 的父对象。物体将被放置在原点。");
}
// Example data setup for each box
ShelfBoxeItem data = new ShelfBoxeItem
{
id = $"XSCS_01_{position.layer:D2}{position.row:D2}{position.column:D4}00",
type = "Buff",
locationId = $"01{position.layer:D2}{position.row:D2}{position.column:D4}00",
description = $"01%区{position.layer}层{position.row}行{position.column}列",
locationState = "Normal",
storageState = "Load",
layer = position.layer,
row = position.row,
column = position.column,
itemType = "EmptyBox1",
isSpecial = UnityEngine.Random.Range(0, 2) // Randomly 0 or 1
};
boxInfo.SetData(data);
instantiatedBoxes.Add(instance);
}
}
private async void GetBoxData()
{
string json = await MotionEngine.GetModule().GetTextAsync(APIs.ShelfBox, null);
ShelfBoxModel parsedData = JsonConvert.DeserializeObject(json);
Debug.Log($"代码:{parsedData.code}");
Debug.Log($"类型:{parsedData.type}");
Debug.Log($"时间:{parsedData.time}");
foreach (var item in parsedData.result)
{
Debug.Log($"ID:{item.id},描述:{item.description},物品类型:{item.itemType}");
}
}void Update()
{
//if (Input.GetMouseButtonDown(0))
//{
// Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
// RaycastHit hit;
// if (Physics.Raycast(ray, out hit))
// {
// BoxInfo hitBox = hit.collider.GetComponent();
// if (hitBox != null)
// {
// Debug.Log($"点击的箱子: BoxID--->{hitBox.data.id}, 信息--->{hitBox.data.description}");
// }
// }
//}
}
}
}