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

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 };
}
}
}