public void CheckSurrounding() { Direction missedHole = Direction.None; foreach (Direction hole in _holeLocations) { Point targetPoint = DirectionExtensions.GetDirectionPoint(hole); GameObject side = GridLevelManager.Instance.GetCircleData(targetPoint.X + GetPoint().X, targetPoint.Y + GetPoint().Y); if (side != null) { CircleData sideData = side.GetComponent <CircleData>(); if (sideData != null) { if (sideData.MatchConnectingHole(hole)) { if (sideData.LightOn()) { sideData.SetNextCircleData(this); TurnLightOn(); if (missedHole != Direction.None) { targetPoint = DirectionExtensions.GetDirectionPoint(missedHole); side = GridLevelManager.Instance.GetCircleData(targetPoint.X + GetPoint().X, targetPoint.Y + GetPoint().Y); sideData = side.GetComponent <CircleData>(); sideData.CheckSurrounding(); } } else if (LightOn()) { sideData.CheckSurrounding(); } else { missedHole = hole; } } } } } if (GridLevelManager.Instance.CheckWinTile(GetPoint())) { if (_lightUp) { foreach (Direction hole in _holeLocations) { if (GridLevelManager.Instance.DirectionFacingGoal(hole, GetPoint().X, GetPoint().Y)) { GridLevelManager.Instance.ExecuteWin(); } } } } }
public bool DirectionFacingGoal(Direction d, int x, int y) { Point dirFace = DirectionExtensions.GetDirectionPoint(d); int xFace = dirFace.X + x; int yFace = dirFace.Y + y; if (xFace == _endNode.X && yFace == _endNode.Y) { return(true); } return(false); }
public bool CheckWinTile(Point point) { Point dir = DirectionExtensions.GetDirectionPoint(DirectionExtensions.GetOppositeDirection(_endNode.Direction)); int x = dir.X + _endNode.X; int y = dir.Y + _endNode.Y; if (point.X == x && point.Y == y) { return(true); } return(false); }
//rewrite too lazy to check all given path now public override bool Valid() { foreach (Direction hole in _holeDict.Keys) { Point targetPoint = GetPoint().AddPoint(DirectionExtensions.GetDirectionPoint(hole)); GameObject obj = LevelManager_v2.Instance.GetTubePositioning(targetPoint); if (obj != null) { if (obj.tag.ToLower().Contains("operator")) { return(false); } } } return(true); }