// check the map tile for landing or stop field private void CheckMapTile(bool checkLanding = false) { RaycastHit hit; if (Physics.Raycast(planeMesh.transform.position, -planeTransform.up, out hit, 1, ignoreMask)) { MapTile mapTile = hit.collider.gameObject.GetComponent <MapTile>(); if (mapTile != null) { MapTile.BuildStatus status = mapTile.TileStatus; switch (status) { //case MapTile.BuildStatus.Start: case MapTile.BuildStatus.Park: mapTile.PlanePathField(); break; case MapTile.BuildStatus.Stop: if (!mapTile.Dirty) { StopCoroutine(movementCoroutine); planeOnField = mapTile; mapTile.PlaneOnField = true; movementCoroutine = StartCoroutine(StopAtField(mapTile.gameObject.transform.position)); mapTile.PlanePathField(); } break; } if (checkLanding) { if (status == MapTile.BuildStatus.Road && !isStartingPlane) { StopCoroutine(movementCoroutine); landing = true; movementCoroutine = StartCoroutine(StopAtField(mapTile.gameObject.transform.position)); } else { planeOnField = mapTile; mapTile.PlaneOnField = true; } } } } }
private void SetUpMap() { buildableTiles = new int[map.Length][]; int rowID = 0; foreach (Map row in map) { buildableTiles[rowID] = new int[row.tiles.Length]; int tileID = 0; foreach (MapTile tile in row.tiles) { MapTile.BuildStatus status = tile.TileStatus; if (status == MapTile.BuildStatus.Building || status == MapTile.BuildStatus.Start) { buildableTiles[rowID][tileID] = 12; } else if (status == MapTile.BuildStatus.Road) { buildableTiles[rowID][tileID] = 11; } else { buildableTiles[rowID][tileID] = 0; } tileID++; } rowID++; } for (int i = 0; i < buildableTiles.Length; i++) { for (int j = 0; j < buildableTiles[i].Length; j++) { int type = buildableTiles[i][j]; if (type > 10) { CheckAndSetAroundTiles(i, j, type % 10); } } } }