Exemplo n.º 1
0
 public void FromJson(Hashtable json)
 {
     if (json.ContainsKey("symbol"))
     {
         Symbol = (MapRoomSymbol)Enum.Parse(typeof(MapRoomSymbol), json["symbol"].ToString());
     }
 }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
 public void FromJson(Hashtable json)
 {
     if(json.ContainsKey("symbol"))
         Symbol = (MapRoomSymbol)Enum.Parse(typeof(MapRoomSymbol), json["symbol"].ToString());
 }
Exemplo n.º 4
0
 public MapRoom(MapRoomSymbol symbol = MapRoomSymbol.None)
 {
     Symbol = symbol;
 }
Exemplo n.º 5
0
 public MapRoom(MapRoomSymbol symbol = MapRoomSymbol.None)
 {
     Symbol = symbol;
 }