public BoardMeta() { board = new TileMeta[Sizes.BOARD, Sizes.BOARD]; // init empty tiles for (int row = Rows.WHITE_PAWN + 1; row < Rows.BLACK_PAWN; row++) { for(int column = 0; column < Sizes.BOARD; column++){ board[row, column] = new TileMeta(); } } // init all tiles with pieces for(int column = 0; column < Sizes.BOARD; column++){ // init black pieces board[Rows.BLACK_HOME, column] = new TileMeta(new PieceMeta(PlayerId.Black, ORDER[column])); board[Rows.BLACK_PAWN, column] = new TileMeta(new PieceMeta(PlayerId.Black, PieceId.Pawn)); // init white pieces board[Rows.WHITE_PAWN, column] = new TileMeta(new PieceMeta(PlayerId.White, PieceId.Pawn)); board[Rows.WHITE_HOME, column] = new TileMeta(new PieceMeta(PlayerId.White, ORDER[ORDER.Length - (column + 1)])); } for (int row = 0; row <= Rows.BLACK_HOME; row = (row == Rows.WHITE_PAWN)? Rows.BLACK_PAWN: ++row) { for(int column = 0; column < Sizes.BOARD; column++){ foreach(Direction direction in Enum.GetValues(typeof(Direction))){ fillBoard(row, column, direction); } } } }
public IEnumerator AnimateGemFall2(GameObject lower, GameObject upper, float delay) { if (GameObject.Find("BoardManager") != null) { GameObject temp = Instantiate(upper, upper.transform.position, upper.transform.rotation, GameObject.Find("BoardManager").transform); temp.GetComponent <BoxCollider2D>().enabled = false; Color sprA = upper.GetComponent <SpriteRenderer>().color; sprA.a = 0; upper.GetComponent <SpriteRenderer>().color = sprA; lower.GetComponent <SpriteRenderer>().color = sprA; iTween.MoveTo(temp, lower.transform.position, delay); lower.GetComponent <SpriteRenderer>().sprite = upper.GetComponent <SpriteRenderer>().sprite; TileMeta metaA = new TileMeta(); metaA.type = upper.GetComponent <Tile>().type.type; lower.GetComponent <Tile>().type = metaA; upper.GetComponent <SpriteRenderer>().sprite = null; upper.GetComponent <Tile>().type.type = TileMeta.GemType.None; yield return(new WaitForSeconds(delay)); sprA.a = 1; upper.GetComponent <SpriteRenderer>().color = sprA; lower.GetComponent <SpriteRenderer>().color = sprA; Destroy(temp); } yield return(null); }
//public IEnumerator AnimateGemFall(Vector3 dest, GameObject prev, GameObject curr, int x) //{ // if (GameObject.Find("BoardManager") != null) // { // GameObject temp = Instantiate(prev, prev.transform.position, prev.transform.rotation, GameObject.Find("BoardManager").transform); // temp.GetComponent<BoxCollider2D>().enabled = false; // iTween.MoveTo(temp, dest, .1f); // Color sprA = curr.GetComponent<SpriteRenderer>().color; // Color sprB = prev.GetComponent<SpriteRenderer>().color; // sprA.a = 0; // sprB.a = 0; // curr.GetComponent<SpriteRenderer>().color = sprA; // prev.GetComponent<SpriteRenderer>().color = sprB; // curr.GetComponent<SpriteRenderer>().sprite = prev.GetComponent<SpriteRenderer>().sprite; // prev.GetComponent<SpriteRenderer>().sprite = GetNewSprite(x, ySize - 1); // //end // TileMeta metaA = new TileMeta(); // int idxA = characters.IndexOf(curr.GetComponent<SpriteRenderer>().sprite); // metaA.type = gemTypes[idxA > -1 ? idxA : 0]; // TileMeta metaB = new TileMeta(); // int idxB = characters.IndexOf(prev.GetComponent<SpriteRenderer>().sprite); // metaB.type = gemTypes[idxB > -1 ? idxB : 0]; // curr.GetComponent<Tile>().type = metaB; // prev.GetComponent<Tile>().type = metaB; // yield return new WaitForSeconds(.1f); // sprA.a = 1; // sprB.a = 1; // curr.GetComponent<SpriteRenderer>().color = sprA; // prev.GetComponent<SpriteRenderer>().color = sprB; // Destroy(temp); // } // yield return null; //} public IEnumerator AnimateGemFall2(GameObject lower, Sprite newGem, float delay) { if (GameObject.Find("BoardManager") != null) { Vector3 fallStart = lower.transform.position; fallStart.y += newGem.rect.height + 10; GameObject temp = Instantiate(lower, fallStart, lower.transform.rotation, GameObject.Find("BoardManager").transform); temp.GetComponent <SpriteRenderer>().sprite = newGem; temp.GetComponent <BoxCollider2D>().enabled = false; Color sprA = lower.GetComponent <SpriteRenderer>().color; sprA.a = 0; lower.GetComponent <SpriteRenderer>().color = sprA; lower.GetComponent <SpriteRenderer>().sprite = newGem; TileMeta metaA = new TileMeta(); int idxA = characters.IndexOf(newGem); metaA.type = gemTypes[idxA > -1 ? idxA : 0]; lower.GetComponent <Tile>().type = metaA; iTween.MoveTo(temp, lower.transform.position, delay); yield return(new WaitForSeconds(delay)); sprA.a = 1; lower.GetComponent <SpriteRenderer>().color = sprA; Destroy(temp); } yield return(null); }
public BoardTest() { board = new TileMeta[Sizes.BOARD, Sizes.BOARD]; for (int row = 0; row < Sizes.BOARD; row++) { for(int column = 0; column < Sizes.BOARD; column++){ board[row, column] = new TileMeta(); } } }
//public bool isShifting(){ // return IsShifting; //} public IEnumerator AnimateGemSwap(GameObject prev, GameObject curr) { GameObject tempA = Instantiate(prev, prev.transform.position, prev.transform.rotation, GameObject.Find("BoardManager").transform); tempA.GetComponent <BoxCollider2D>().enabled = false; iTween.MoveTo(tempA, curr.transform.position, .1f); GameObject tempB = Instantiate(curr, curr.transform.position, curr.transform.rotation, GameObject.Find("BoardManager").transform); tempB.GetComponent <BoxCollider2D>().enabled = false; iTween.MoveTo(tempB, prev.transform.position, .1f); Color sprA = Color.white; sprA.a = 0; curr.GetComponent <SpriteRenderer>().color = sprA; prev.GetComponent <SpriteRenderer>().color = sprA; Sprite tempSprite = curr.GetComponent <SpriteRenderer>().sprite; curr.GetComponent <SpriteRenderer>().sprite = prev.GetComponent <SpriteRenderer>().sprite; prev.GetComponent <SpriteRenderer>().sprite = tempSprite; //end TileMeta metaA = new TileMeta(); int idxA = characters.IndexOf(curr.GetComponent <SpriteRenderer>().sprite); metaA.type = gemTypes[idxA > -1 ? idxA : 0]; TileMeta metaB = new TileMeta(); int idxB = characters.IndexOf(prev.GetComponent <SpriteRenderer>().sprite); metaB.type = gemTypes[idxB > -1 ? idxB : 0]; curr.GetComponent <Tile>().type = metaA; prev.GetComponent <Tile>().type = metaB; yield return(new WaitForSeconds(.1f)); sprA.a = 1; curr.GetComponent <SpriteRenderer>().color = sprA; prev.GetComponent <SpriteRenderer>().color = sprA; Destroy(tempA); Destroy(tempB); yield return(null); }
private void CreateBoard(float xOffset, float yOffset) { tiles = new GameObject[xSize, ySize]; float startX = transform.position.x; float startY = transform.position.y; Sprite[] previousLeft = new Sprite[ySize]; Sprite previousBelow = null; for (int x = 0; x < xSize; x++) { for (int y = 0; y < ySize; y++) { GameObject newTile = Instantiate(tile, new Vector3(startX + (xOffset * x), startY + (yOffset * y), 0), tile.transform.rotation); tiles[x, y] = newTile; newTile.transform.SetParent(transform); List <TileMeta.GemType> possibleGems = new List <TileMeta.GemType>(gemTypes); List <Sprite> possibleCharacters = new List <Sprite>(characters); possibleCharacters.Remove(previousLeft[y]); possibleCharacters.Remove(previousBelow); TileMeta meta = new TileMeta(); Sprite newSprite = possibleCharacters[UnityEngine.Random.Range(0, possibleCharacters.Count)]; meta.type = gemTypes[characters.IndexOf(newSprite)]; newTile.GetComponent <Tile>().type = meta; newTile.GetComponent <SpriteRenderer>().sprite = newSprite; previousLeft[y] = newSprite; previousBelow = newSprite; } } float ratio = (float)Screen.width / (float)Screen.height; float adjust = (ratio - 1.75f) / 2; Debug.Log("Screen.width / Screen.height: " + Screen.width.ToString() + "-" + Screen.height.ToString()); Debug.Log("Ratio: " + ratio.ToString()); Debug.Log("Adjust: " + adjust.ToString()); //16:9 = perfect = 1.7 //2340:1080 = too small = 2.15 //16:10 = too big = 1.6 transform.localScale = new Vector3(1f + adjust, 1f + adjust, 0f); }
public List <Tile> FindReachableTiles(Unit unit, Tile center, int ap) { List <Tile> tiles = new List <Tile>(); Dictionary <Tile, FibonacciHeapNode <TileMeta> > tileMap = new Dictionary <Tile, FibonacciHeapNode <TileMeta> >(); FibonacciHeap <TileMeta> heap = new FibonacciHeap <TileMeta>(); tileMap.Add(center, heap.Push(new TileMeta(center, 0))); while (!heap.IsEmpty()) { TileMeta tileMeta = heap.Pop().Value; Tile tile = tileMeta.tile; tiles.Add(tile); int previousCost = tileMeta.value; foreach (Vector2Int gridPosition in GetAdjacentGridPositions(tile.x, tile.y)) { tile = GetTile(gridPosition); if (IsAccessible(unit, tile)) { int cost = previousCost + unit.Statistics.CalculateEffectiveFatigue(tile.Cost, FatigueType.Movement); if (tileMap.ContainsKey(tile)) { FibonacciHeapNode <TileMeta> node = tileMap[tile]; if (cost < node.Value.value) { heap.Decrement(node, new TileMeta(tile, cost)); } } else if (cost <= ap) { tileMap.Add(tile, heap.Push(new TileMeta(tile, cost))); } } } } return(tiles); }
public void SwapSprite(SpriteRenderer render1, SpriteRenderer render2, bool sound, bool testing = false) { if (render1.sprite == render2.sprite) { return; } if (!testing) { SFXManager.instance.PlaySFX(Clip.Swap); StartCoroutine(BoardManager.instance.AnimateGemSwap(render1.gameObject, render2.gameObject)); } else { TileMeta type1 = render1.gameObject.GetComponent <Tile>().type; TileMeta type2 = render2.gameObject.GetComponent <Tile>().type; //Sprite tempSprite = render2.sprite; //render2.sprite = render.sprite; render2.gameObject.GetComponent <Tile>().type = type1; //render1.sprite = tempSprite; render1.gameObject.GetComponent <Tile>().type = type2; } }
public BoardMeta(TileMeta[,] board) { this.board = board; }
public static void GetCityData(int addressID) { try { using (SqlConnection cn = new SqlConnection("context connection=true")) { cn.Open(); string selectQuery = @"SELECT a.City, s.Name As State, c.Name As Country FROM Person.Address a INNER JOIN Person.StateProvince s ON a.StateProvinceID = s.StateProvinceID INNER JOIN Person.CountryRegion c ON s.CountryRegionCode = c.CountryRegionCode WHERE a.AddressID = @addressID"; SqlCommand selectCmd = new SqlCommand(selectQuery, cn); selectCmd.Parameters.AddWithValue("@addressID", addressID); SqlDataReader reader = selectCmd.ExecuteReader(); if (reader.HasRows) { reader.Read(); string city = (string)reader[0]; string state = (string)reader[1]; string country = (string)reader[2]; reader.Close(); string placeName = city + ", " + state + ", " + country; string insertQuery = "INSERT INTO Person.CityDetails VALUES (@addressID, @name, @longitude, @latitude, @population, @image)"; SqlCommand insertCmd = new SqlCommand(insertQuery, cn); SqlParameter addressIDParam = new SqlParameter("@addressID", SqlDbType.Int); SqlParameter nameParam = new SqlParameter("@name", SqlDbType.NVarChar, 256); SqlParameter longParam = new SqlParameter("@longitude", SqlDbType.Float); SqlParameter latParam = new SqlParameter("@latitude", SqlDbType.Float); SqlParameter popParam = new SqlParameter("@population", SqlDbType.Int); SqlParameter imgParam = new SqlParameter("@image", SqlDbType.Image); insertCmd.Parameters.AddRange(new SqlParameter[] { addressIDParam, nameParam, longParam, latParam, popParam, imgParam }); addressIDParam.Value = addressID; TerraService terraService = new TerraService(); PlaceFacts[] places = terraService.GetPlaceList(placeName, 100, false); foreach (PlaceFacts facts in places) { LonLatPt coords = facts.Center; TileMeta metadata = terraService.GetTileMetaFromLonLatPt(coords, 1, Scale.Scale8m); byte[] image = terraService.GetTile(metadata.Id); nameParam.Value = facts.Place.City; longParam.Value = coords.Lon; latParam.Value = coords.Lat; popParam.Value = facts.Population; imgParam.Value = image; try { insertCmd.ExecuteNonQuery(); } catch (Exception e) { SqlContext.Pipe.Send("Cannot insert row for place " + facts.Place.City); SqlContext.Pipe.Send(e.Message); } } cn.Close(); SqlContext.Pipe.Send("Command executed successfully."); terraService.Dispose(); } else { reader.Close(); cn.Close(); SqlContext.Pipe.Send("No addresses in the database match the specified ID."); } } } catch (Exception e) { SqlContext.Pipe.Send("An error occurred executing the GetCityData stored procedure:"); SqlContext.Pipe.Send(e.Message); } }
public int CompareTo(TileMeta other) { return(value.CompareTo(other.value)); }