// =============================== Conversion public BorderInit SetBorderInit(TileInit leftTile, TileInit rightTile, List <BorderInit> bordersBase, List <BorderInit> bordersSummit) { this.leftTile = leftTile; this.rightTile = rightTile; this.neighboursBase = bordersBase; this.neighboursSummit = bordersSummit; return((BorderInit)this); }
// ==================================== Get Function public (List <BorderInit>, List <TileInit>) GetBordersAndTiles() { List <BorderInit> borders = new List <BorderInit>(); List <TileInit> tiles = new List <TileInit>(); Dictionary <int, BorderInit> borderDict = new Dictionary <int, BorderInit>(); Dictionary <int, TileInit> tileDict = new Dictionary <int, TileInit>(); // Step 1: Setting the borders & tiles foreach (Boundary C in V) { BorderInit border = C.CreateUnsetBorder(); if (border != null) { if (!borderDict.ContainsKey(border.GetHashCode())) { borders.Add(border); borderDict.Add(border.GetHashCode(), border); } } } foreach (Site s in S) { TileInit tile = s.CreateUnsetTile(); if (tile != null) { if (!tileDict.ContainsKey(tile.GetHashCode())) { tiles.Add(tile); tileDict.Add(tile.GetHashCode(), tile); } } } // Step 2: Correcting the refrences foreach (UnsetBorderInit b in borders) { TileInit leftTile = SearchDict(tileDict, b.LeftSite); TileInit rightTile = SearchDict(tileDict, b.RightSite); List <BorderInit> borderBase = SearchDictList(borderDict, b.BaseNeighbours); List <BorderInit> borderSummit = SearchDictList(borderDict, b.SummitNeighbours); b.SetBorderInit(leftTile, rightTile, borderBase, borderSummit); } foreach (UnsetTileInit t in tiles) { List <BorderInit> tileBorders = SearchDictList(borderDict, t.Boundaries); t.SetTileInit(tileBorders); } return(borders, tiles); }
public TileInit OtherTile(TileInit currentTile) { if (currentTile == leftTile) { return(rightTile); } else if (currentTile == rightTile) { return(leftTile); } else { throw new Exception("tile not recognized"); } }