棋盘编辑器扩展

This commit is contained in:
xiekaidong 2023-06-15 10:25:02 +08:00
parent 358a41e2ed
commit c0a5a33d45

View File

@ -218,6 +218,7 @@ namespace BFEditor
GUILayout.BeginVertical();
GUILayout.Label("随机类型和数量[类型,数量] 空格 [类型,数量]");
randomTypeStr = GUILayout.TextField(randomTypeStr, GUILayout.Width(500));
GUILayout.BeginHorizontal();
if(GUILayout.Button("生成随机棋盘", GUILayout.Width(80)))
{
string[] units = randomTypeStr.Split('[');
@ -236,7 +237,6 @@ namespace BFEditor
{
list.Add(i);
}
Debug.Log(JsonConvert.SerializeObject(dict));
JArray ja = new JArray();
for (int i = 0; i < gridCount; i++)
{
@ -254,6 +254,51 @@ namespace BFEditor
}
boardDict[curIndex] = ja;
}
if(GUILayout.Button("生成随机棋盘+元素", GUILayout.Width(110)))
{
string[] units = randomTypeStr.Split('[');
Dictionary<int, int> dict = new Dictionary<int, int>();
for (int i = 0; i < units.Length; i++)
{
string formatStr = units[i].Replace("[", "").Replace("]", "").Replace(" ", "");
string[] unitList = formatStr.Split(',');
if (unitList.Length >= 2)
{
dict[int.Parse(unitList[0])] = int.Parse(unitList[1]);
}
}
List<int> list = new List<int>();
for (int i = 0; i < gridCount; i++)
{
list.Add(i);
}
JArray ja = new JArray();
for (int i = 0; i < gridCount; i++)
{
JArray unit = (JArray)JsonConvert.DeserializeObject("[0, 0]");
ja.Add(unit);
}
foreach (int gridType in dict.Keys)
{
for(int i = 0; i < dict[gridType]; i++)
{
int index = UnityEngine.Random.Range(0, list.Count);
ja[list[index]][0] = gridType;
list.RemoveAt(index);
}
}
for (int i = 0; i < ja.Count; i++)
{
int gridType = (int)(ja[i][0]);
Dictionary<string, string> gridTypeDict = boardGridTypeDict[gridType];
if (gridTypeDict.ContainsKey("break_stay_element") || !gridTypeDict.ContainsKey("element_invalid"))
{
ja[i][1] = UnityEngine.Random.Range(1, 6);
}
}
boardDict[curIndex] = ja;
}
GUILayout.EndHorizontal();
GUILayout.EndArea();
if(GUI.Button(new Rect(1050, 10, 100, 30), "导出到Excel"))
{
@ -302,6 +347,7 @@ namespace BFEditor
foreach (var item2 in (JObject)item.Value)
{
dict[item2.Key] = item2.Value.ToString();
Debug.Log(item2.Key);
}
boardGridTypeDict[key] = dict;
}