예제 #1
0
    GameTile[,] tiles; // = new GameTile[,];

    #endregion Fields

    #region Methods

    IEnumerator CoDestroyTiles()
    {
        NotificationCenter.DefaultCenter.PostNotification (this, "Destroy");
                yield return new WaitForSeconds (0.01f);
                for (int ix =0; ix<tiles.GetLength(0); ix++) {
                        for (int iy =0; iy <tiles.GetLength(1); iy++) {
                                //GameTile tile = ;
                                if (!tiles [ix, iy]) {
                                        GPoint gP = new GPoint (new Vector2 (ix + 1, iy + 1), GPoint.PType.TILE_DESTROYED);
                                        GameObject newTile = (GameObject)Instantiate (destroyedTile, gP.GetWorldPosition (), Quaternion.identity);
                                        newTile.name = "/x:" + gP.GetPosition ().x + "$/y:" + gP.GetPosition ().y + "$/t:" + gP.GetPType () + "$";
                                        newTile.transform.parent = transform;
                                        tiles [ix, iy] = newTile.GetComponent<GameTile> ();
                                        tiles [ix, iy].SetData ();
                                }
                        }
                }
                AStarGrid.Scan ();
                StopCoroutine ("CoDestroyTiles");
    }
예제 #2
0
				public static GPoint.Direction CalculateDirection (Grid g, GPoint gp)
				{
						ScanPoint scp = new ScanPoint (gp.GetPosition ());
						List<string> dirs = new List<string> ();
						string direction = "";
						switch (g.GetPoint (scp.VirtualMove (Direction.n)).GetPType ()) {
						case GPoint.PType.TILE_ROADH:
								dirs.Add ("N");
								break;
						case GPoint.PType.TILE_ROADV:
								dirs.Add ("N");
								break;
						default:
				//nothing
								break;
						}
						
						switch (g.GetPoint (scp.VirtualMove (Direction.s)).GetPType ()) {
						case GPoint.PType.TILE_ROADH:
								dirs.Add ("S");
								break;
						case GPoint.PType.TILE_ROADV:
								dirs.Add ("S");
								break;
						default:
				//nothing
								break;
						}
						
						switch (g.GetPoint (scp.VirtualMove (Direction.e)).GetPType ()) {
						case GPoint.PType.TILE_ROADH:
								dirs.Add ("E");
								break;
						case GPoint.PType.TILE_ROADV:
								dirs.Add ("E");
								break;
						default:
				//nothing
								break;
								
						}
						
						switch (g.GetPoint (scp.VirtualMove (Direction.w)).GetPType ()) {
						case GPoint.PType.TILE_ROADH:
								dirs.Add ("W");
								break;
						case GPoint.PType.TILE_ROADV:
								dirs.Add ("W");
								break;
						default:
				//nothing
								break;
						}
/*						foreach (string s in dirs) {
								Debug.Log (s);
						}*/
						int val = (int)Random.Range (0, dirs.Count ());
						//Debug.Log ("integer " + val);
						//Debug.Log ("directions " + dirs.Count ());
						direction = dirs.ElementAt (val);
						//Debug.Log ("direction chosen" + direction);
						switch (direction) {
						case "N":
								//Debug.Log ("turn north");
								return GPoint.Direction.NORTH;
						//break;
						case "S":
								//Debug.Log ("turn south");
								return GPoint.Direction.SOUTH;
						//break;
						case "E":
								//Debug.Log ("turn east");
								return GPoint.Direction.EAST;
						//break;
						case "W":
								//Debug.Log ("turn west");
								return GPoint.Direction.WEST;
						//break;
						default:
								return GPoint.Direction.NORTH;
						//break;
						}
						;
						//return GPoint.Direction.NORTH;
				}
예제 #3
0
				public void InstantiateTile (GPoint gp)
				{
						int index = 0;
						switch (gp.GetPType ()) {
						case GPoint.PType.DEBUG:
								index = 0;
								break;
						case GPoint.PType.TILE_TEST:
								index = 1;
								break;
						case GPoint.PType.TILE_GRASS:
								index = 2;
								break;
						case GPoint.PType.TILE_SAND:
								index = 3;
								break;
						case GPoint.PType.TILE_ROADI:
								index = 4;
								break;
						case GPoint.PType.TILE_ROADH:
								index = 5;
								break;
						case GPoint.PType.TILE_ROADV:
								index = 6;
								break;
						case GPoint.PType.TILE_TREE:
								index = 7;
								break;
						case GPoint.PType.TILE_BUILDING:
								index = 8;
								break;
						case GPoint.PType.TILE_HOUSE:
								index = 9;
								break;
						default:
								index = -1;
								break;
						}
						if (index >= 0) {
								float scale = 1;
								GameObject newTile = null;
								//Destroy (newTile);
								if (index < 8) {
										newTile = (GameObject)Instantiate (tilePrefabs [index], gp.GetWorldPosition (), Quaternion.identity);
										if (index == 7) {
												scale = Random.Range (0.75f, 1.25f);
										}
								} else if (index == 8) {
										int addup = Random.Range (0, buildingPrefabs.Count ());
										scale = Random.Range (0.75f, 1.25f);
										newTile = (GameObject)Instantiate (buildingPrefabs [addup], gp.GetWorldPosition (), Quaternion.identity);
								} else if (index == 9) {
										int addup = Random.Range (0, housePrefabs.Count ());
										newTile = (GameObject)Instantiate (housePrefabs [addup], gp.GetWorldPosition (), Quaternion.identity);
								}
								newTile.name = "/x:" + gp.GetPosition ().x + "$/y:" + gp.GetPosition ().y + "$/t:" + gp.GetPType () + "$";
								newTile.transform.parent = tilePool.transform;
								newTile.transform.localScale = new Vector3 (1, scale, 1);
								if (gp.GetPType () == GPoint.PType.TILE_BUILDING || gp.GetPType () == GPoint.PType.TILE_HOUSE) {
										switch (gp.GetDirection ()) {
										case GPoint.Direction.NORTH:
												//Debug.Log ("tile turned north");
												newTile.transform.LookAt (newTile.transform.position + Vector3.back);
												//newTile.transform.Translate (Vector3.up * 1);
												break;
										case GPoint.Direction.SOUTH:
												//Debug.Log ("tile turned south");
												newTile.transform.LookAt (newTile.transform.position + Vector3.forward);
												//newTile.transform.Translate (Vector3.up * 2);
					
												break;
										case GPoint.Direction.EAST:
												//Debug.Log ("tile turned east");
												newTile.transform.LookAt (newTile.transform.position + Vector3.left);
												//newTile.transform.Translate (Vector3.up * 3);
												break;
										case GPoint.Direction.WEST:
												//Debug.Log ("tile turned west");
												newTile.transform.LookAt (newTile.transform.position + Vector3.right);
												//newTile.transform.Translate (Vector3.up * 4);
												break;
										default:
												break;
										}
										;
								}
						}
				}