You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
3.2 KiB
109 lines
3.2 KiB
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
namespace BuildSystem
|
|
{
|
|
public class Grid
|
|
{
|
|
public int x { get; }
|
|
public int y { get; }
|
|
public int z { get; }
|
|
public Vector3Int logicPos;
|
|
|
|
[Header("相连的Grid")]
|
|
public Grid up;
|
|
public Grid down;
|
|
public Grid left;
|
|
public Grid right;
|
|
|
|
public IsHave[] isHaves = new IsHave[4] { IsHave.None, IsHave.None , IsHave.None , IsHave.None };
|
|
|
|
public Vector3 pos { get; }
|
|
|
|
public bool isPlace = false;
|
|
public bool isTS = false;
|
|
public PlaceObject placeObject;
|
|
|
|
public RoadType roadType;
|
|
|
|
public PlaceObjectType[] type = new PlaceObjectType[4] { PlaceObjectType.None, PlaceObjectType.None, PlaceObjectType.None, PlaceObjectType.None};
|
|
public Grid(Vector3Int logicPos) {
|
|
this.logicPos = logicPos;
|
|
x = this.logicPos.x;
|
|
y = this.logicPos.y;
|
|
z = this.logicPos.z;
|
|
float gridSize = BuildSystemManager.Instance.gridSize;
|
|
pos = BuildSystemManager.Instance.startPos + new Vector3(
|
|
gridSize / 2 + x * gridSize,
|
|
0,
|
|
gridSize / 2 + z * gridSize);
|
|
up = null;
|
|
down = null;
|
|
left = null;
|
|
right = null;
|
|
}
|
|
public Grid(int x,int y ,int z)
|
|
{
|
|
this.x = x;
|
|
this.y = y;
|
|
this.z = z;
|
|
logicPos = new Vector3Int(x,y,z); ;
|
|
float gridSize = BuildSystemManager.Instance.gridSize;
|
|
pos = BuildSystemManager.Instance.startPos + new Vector3(
|
|
gridSize / 2 + x * gridSize,
|
|
0,
|
|
gridSize / 2 + z * gridSize);
|
|
up = null;
|
|
down = null;
|
|
left = null;
|
|
right = null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断是否闭环
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool isClosedLoop() {
|
|
if (isHaves[0]==IsHave.Yes) {
|
|
if (up != null && up.isHaves[2] != IsHave.Yes && !up.isTS) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (isHaves[1] == IsHave.Yes)
|
|
{
|
|
if (right != null && right.isHaves[3] != IsHave.Yes && !right.isTS)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (isHaves[2] == IsHave.Yes)
|
|
{
|
|
if (down != null && down.isHaves[0] != IsHave.Yes && !down.isTS)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (isHaves[3] == IsHave.Yes)
|
|
{
|
|
if (left != null && left.isHaves[1] != IsHave.Yes && !left.isTS)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public void Init() {
|
|
isHaves = new IsHave[4] { IsHave.None, IsHave.None, IsHave.None, IsHave.None };
|
|
isPlace = false;
|
|
roadType = RoadType.Straight;
|
|
type = new PlaceObjectType[4] { PlaceObjectType.None, PlaceObjectType.None, PlaceObjectType.None, PlaceObjectType.None };
|
|
}
|
|
|
|
|
|
}
|
|
}
|