public void FromJson(Hashtable json) { if (json.ContainsKey("symbol")) { Symbol = (MapRoomSymbol)Enum.Parse(typeof(MapRoomSymbol), json["symbol"].ToString()); } }
public Map Generate(int width, int height) { Map = new Map(); // initial setup XY entrance = new XY(0, 0); // create critical path int dimensionMax = Mathf.Max(width, height); int pathLength = dimensionMax + (dimensionMax / 2); List <XY> critPath = GetPathWithLength(entrance, pathLength); // build graph structure for (int i = 0; i < critPath.Count; i++) { MapRoomSymbol symbol = MapRoomSymbol.None; if (i == 0) { symbol = MapRoomSymbol.Entrance; } else if (i == critPath.Count - 2) { symbol = MapRoomSymbol.Boss; } else if (i == critPath.Count - 1) { symbol = MapRoomSymbol.Goal; } XY current = critPath[i]; MapNode currentNode = Map.Graph.AddNode(current, new MapRoom(symbol)); if (i > 0) { XY prev = critPath[i - 1]; MapNode prevNode = Map.Graph.GetNodeByCoord(prev); Map.Graph.AddEdge(currentNode, prevNode, new MapPath()); Map.Graph.AddEdge(prevNode, currentNode, new MapPath()); } else { Map.Entrance = currentNode; } } // TODO // mark remaining goal and boss room edges as invalid // add key levels, keys // create deviations from critical path // create shortcuts, secret rooms, etc return(Map); }
public void FromJson(Hashtable json) { if(json.ContainsKey("symbol")) Symbol = (MapRoomSymbol)Enum.Parse(typeof(MapRoomSymbol), json["symbol"].ToString()); }
public MapRoom(MapRoomSymbol symbol = MapRoomSymbol.None) { Symbol = symbol; }