public bool Is_Same_Type(s_Tiles otherShape) { if (otherShape == null || !(otherShape is s_Tiles)) { throw new ArgumentException("otherShape"); } return(string.Compare(this.Type, (otherShape as s_Tiles).Type) == 0); }
public static void Change_Column_Row(s_Tiles a, s_Tiles b) { int tempRow = a.row; a.row = b.row; b.row = tempRow; int tempColumn = a.column; a.column = b.column; b.column = tempColumn; }
private IEnumerator Find_Matches_And_Collapse(RaycastHit2D hit2) { var hitTileTwo = hit2.collider.gameObject; tiles.Swap(hitTile, hitTileTwo); hitTile.transform.positionTo(s_Constants.animationTime, hitTileTwo.transform.position); hitTileTwo.transform.positionTo(s_Constants.animationTime, hitTile.transform.position); yield return(new WaitForSeconds(s_Constants.animationTime)); var hitGomatchesInfo = tiles.Get_Matches(hitTile); var hitGo2matchesInfo = tiles.Get_Matches(hitTileTwo); var totalMatches = hitGomatchesInfo.Matched_Tiles.Union(hitGo2matchesInfo.Matched_Tiles).Distinct(); if (totalMatches.Count() < s_Constants.minTilesToMatch) { hitTile.transform.positionTo(s_Constants.animationTime, hitTileTwo.transform.position); hitTileTwo.transform.positionTo(s_Constants.animationTime, hitTile.transform.position); yield return(new WaitForSeconds(s_Constants.animationTime)); tiles.Undo_Swap(); } // bool addBonus = totalMatches.Count() >= s_Constants.minTilesToBonusMatch && //!s_Card_Utilities.Includes_Remove_Whole_Row_Column(hitGomatchesInfo.Card_Contained) && //!s_Card_Utilities.Includes_Remove_Whole_Row_Column(hitGo2matchesInfo.Card_Contained); s_Tiles hitGoCache = null; /*if (addBonus) * { * var sameTypeGo = hitGomatchesInfo.Matched_Tiles.Count() > 0 ? hitTile : hitTileTwo; * hitGoCache = sameTypeGo.GetComponent<s_Tiles>(); * }*/ int timesRun = 1; while (totalMatches.Count() >= s_Constants.minTilesToMatch) { Increase_Score((totalMatches.Count() - 2) * s_Constants.scoreBasicMatch); if (timesRun >= 2) { Increase_Score(s_Constants.scoreSubsequentMatch); } foreach (var item in totalMatches) { tiles.Remove(item); Remove_From_Scene(item); } /* if (addBonus) * { * Create_Bonus(hitGoCache); * }*/ // addBonus = false; var columns = totalMatches.Select(go => go.GetComponent <s_Tiles>().column).Distinct(); var collapsedTileInfo = tiles.Collapse(columns); var newTileInfo = Create_New_Tile_In_Specific_Columns(columns); int maxDistance = Mathf.Max(collapsedTileInfo.maxMoveDistance, newTileInfo.maxMoveDistance); Move_And_Animate(newTileInfo.Moved_Tile, maxDistance); Move_And_Animate(collapsedTileInfo.Moved_Tile, maxDistance); yield return(new WaitForSeconds(s_Constants.minMovingAnimTime * maxDistance)); totalMatches = tiles.Get_Matches(collapsedTileInfo.Moved_Tile).Union(tiles.Get_Matches(newTileInfo.Moved_Tile)).Distinct(); timesRun++; } state = GameState.None; Start_Check_For_Potential_Matches(); }
public static bool Neighbour_Alignment(s_Tiles tileOne, s_Tiles tileTwo) { return((tileOne.column == tileTwo.column || tileOne.row == tileTwo.row) && Mathf.Abs(tileOne.column - tileTwo.column) <= 1 && Mathf.Abs(tileOne.row - tileTwo.row) <= 1); }