备份CatanBuilding瘦身独立工程

This commit is contained in:
JSD\13999
2026-05-26 16:15:54 +08:00
commit 2d0e6a61b7
12001 changed files with 2431925 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
using System.Collections.Generic;
using UnityEngine;
namespace HexGrid.MapHelper
{
public static class HexUtils
{
public static readonly Vector2Int[] neighbors =
{
new Vector2Int(1, 0),
new Vector2Int(+1, 0),
new Vector2Int(+1, -1),
new Vector2Int(0, -1),
new Vector2Int(-1, 0),
new Vector2Int(-1, +1),
new Vector2Int(0, +1)
};
public static Vector3 DetermineTileSize(GameObject tileObject,out Bounds bounds)
{
var meshFilter = tileObject.GetComponentInChildren<MeshFilter>(true);
bounds = meshFilter.sharedMesh.bounds;
return new Vector3(bounds.size.x, 0,bounds.size.y);
}
// 构建地块Id
public static string MakeTileId(Vector2Int tileCoords)
{
var x = tileCoords.x;
var y = tileCoords.y;
return $"tile:({x},{y})";
}
// 通过id解析地块
public static Vector2Int ParseTileId(string tileString)
{
const string prefix = "tile:";
if (string.IsNullOrEmpty(tileString))
return Vector2Int.zero;
// 检查是否以 "tile:" 开头
if (!tileString.StartsWith(prefix))
return Vector2Int.zero;
int startIndex = prefix.Length;
int endIndex = tileString.Length - 1;
if (endIndex <= startIndex)
return Vector2Int.zero;
var coordsPart = tileString.Substring(startIndex,endIndex);
var coords = coordsPart.Split(',');
if (coords.Length != 2)
return Vector2Int.zero;
// 尝试解析 x 和 y 坐标
if (int.TryParse(coords[0].Trim(), out var x) &&
int.TryParse(coords[1].Trim(), out var y))
{
return new Vector2Int(x, y);
}
return Vector2Int.zero;
}
// 获得当前模块的邻接Tile
public static List<Vector2Int> GetNeighborList(HexTile tile)
{
var list = new List<Vector2Int>();
foreach (var neighbor in neighbors)
{
var x = tile.tileCoords.x + neighbor.x;
var y = tile.tileCoords.y + neighbor.y;
list.Add(new Vector2Int(x,y));
}
return list;
}
}
}