Files
valheim/Assets/_Valheim/Scripts/Data/GameLevelInfo.cs
2025-07-04 14:16:14 +08:00

111 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using UnityEngine;
using static XPlugin.Data.JsonLiteDB.JsonLiteDB;
public class GameLevelInfo
{
/// <summary>
/// 区域id
/// </summary>
public int AreaId;
/// <summary>
/// 宠物id随机范围
/// </summary>
public int[] PetId = null;
/// <summary>
/// 宠物初始(x, y, z, 旋转, 大小,等级, 状态)
/// </summary>
public float[] PetInit;
/// <summary>
/// 怪物id随机范围
/// </summary>
public int[] EnemyId = null;
/// <summary>
/// 怪物初始(xyz大小旋转等级状态)
/// </summary>
public float[] EnemyInit;
/// <summary>
/// 复活点
/// </summary>
public Vector3 RevivePoint = Vector3.zero;
/// <summary>
/// 笼子初始(xyz旋转)
/// </summary>
public float[] CageInit = null;
/// <summary>
/// 战斗区域初始(xyz宽)
/// </summary>
public float[] BattleAreaInit = null;
public GameLevelInfo(TableReader table)
{
AreaId = table["AreaId"].OptInt();
PetId = ParseStringToIntArray(table["PetId"].OptString(""));
PetInit = ParseStringToFloatArray(table["PetInit"].OptString(""));
EnemyId = ParseStringToIntArray(table["EnemyId"].OptString(""));
EnemyInit = ParseStringToFloatArray(table["EnemyInit"].OptString(""));
RevivePoint = StringToVector(table["RevivePoint"].OptString(""));
CageInit = ParseStringToFloatArray(table["CageInit"].OptString(""));
BattleAreaInit = ParseStringToFloatArray(table["BattleAreaInit"].OptString(""));
}
public Vector3 StringToVector(string input)
{
if (input == "")
{
return Vector3.zero;
}
// 去掉字符串中的括号和空格
input = input.Replace("(", "").Replace(")", "").Replace(" ", "");
// 将字符串按逗号分割成三个部分
string[] parts = input.Split(',');
// 将每个部分解析为浮点数
float x = float.Parse(parts[0]);
float y = float.Parse(parts[1]);
float z = float.Parse(parts[2]);
// 创建并返回 Vector3
return new Vector3(x, y, z);
}
int[] ParseStringToIntArray(string input)
{
if (input == "")
{
return null;
}
string[] elements = input.Replace("[", "").Replace("]", "").Split(',');
int[] intArray = new int[elements.Length];
for (int i = 0; i < elements.Length; i++)
{
intArray[i] = int.Parse(elements[i]);
}
return intArray;
}
float[] ParseStringToFloatArray(string input)
{
if (input == "")
{
return null;
}
string[] elements = input.Replace("(", "").Replace(")", "").Split(',');
float[] floatArray = new float[elements.Length];
for (int i = 0; i < elements.Length; i++)
{
floatArray[i] = float.Parse(elements[i]);
}
return floatArray;
}
}