private HallNode generateHallNode(LevelData data, int i, int j) { HallNode node = new HallNode (); if (i - 1 < 0 || (data.wallAt (i - 1, j) && !data.wallAt (i, j))) node.setWall (HallNode.Wall.LEFT); if (i + 1 >= hallWidth || (data.wallAt (i + 1, j) && !data.wallAt (i, j))) node.setWall (HallNode.Wall.RIGHT); if (j - 1 < 0 || (data.wallAt (i, j - 1) && !data.wallAt (i, j))) node.setWall (HallNode.Wall.TOP); if (j + 1 >= hallHeight || (data.wallAt (i, j + 1) && !data.wallAt (i, j))) node.setWall (HallNode.Wall.BOTTOM); return node; }
public bool hasWall(HallNode.Wall wall) { switch (wall) { case Wall.LEFT: return _left; case Wall.RIGHT: return _right; case Wall.TOP: return _top; case Wall.BOTTOM: return _bottom; default: return false; } }
public void setWall(HallNode.Wall wall) { switch (wall) { case Wall.LEFT: _left = true; break; case Wall.RIGHT: _right = true; break; case Wall.TOP: _top = true; break; case Wall.BOTTOM: _bottom = true; break; } }
public void setWallAt(int i, int j, HallNode.Wall wall) { _nodes [i, j].setWall (wall); }
public void setHallNode(int i, int j, HallNode node) { _nodes [i, j] = node; }
public bool hasWallAt(int i, int j, HallNode.Wall wall) { return _nodes [i, j].hasWall (wall); }
public WallData(int i, int j, HallNode.Wall wall) { this.position = new Vector2(i , j); this.wall = wall; }
private void generateWallData(int i, int j, Vector2 offset, HallNode.Wall wall) { if(hall.hasWallAt(i, j, wall)){ string key = i+","+j; string keyPos1 = (i+offset.x)+","+(j+offset.y); string keyPos2 = (i-offset.x)+","+(j-offset.y); if(hallWalls.ContainsKey(keyPos1) && hallWalls[keyPos1].ContainsKey(wall)){ hallWalls[keyPos1][wall].beforeLenght++; if(hallWalls.ContainsKey(key)){ hallWalls[key].Add(wall, hallWalls[keyPos1][wall]); } else{ hallWalls.Add(key, new Dictionary<HallNode.Wall, WallData>()); hallWalls[key].Add(wall, hallWalls[keyPos1][wall]); //walls.Add(hallWalls[key][wall]); } } else if(hallWalls.ContainsKey(keyPos2) && hallWalls[keyPos2].ContainsKey(wall)){ hallWalls[keyPos2][wall].afterLenght++; if(hallWalls.ContainsKey(key)){ hallWalls[key].Add(wall, hallWalls[keyPos2][wall]); } else{ hallWalls.Add(key, new Dictionary<HallNode.Wall, WallData>()); hallWalls[key].Add(wall, hallWalls[keyPos2][wall]); //walls.Add(hallWalls[key][wall]); } } else{ WallData wallData = new WallData(i, j, wall); if(hallWalls.ContainsKey(key)){ hallWalls[key].Add(wall, wallData); } else{ Dictionary<HallNode.Wall, WallData> dic = new Dictionary<HallNode.Wall, WallData>(); dic.Add(wall, wallData); hallWalls.Add(key, dic); } walls.Add(wallData); } } }