Exemplo n.º 1
0
 public MapRoom PullRandomRoom(DoorConfiguration DoorConfig)
 {
     foreach (RoomList roomList in RoomLists)
     {
         if (DoorConfiguration.CompareConfigs(DoorConfig, roomList.config))
         {
             return(roomList.GetRandomRoom());
         }
     }
     return(null);
 }
    //Generate a list of door configuration for a path, each configuration being based on the previous and next room's position relative to the current room
    private List <DoorConfiguration> GenerateDoorConfig(List <Vector2Int> path)
    {
        List <DoorConfiguration> doorconfig = new List <DoorConfiguration>();

        for (int i = 0; i < path.Count; i++)
        {
            DoorConfiguration CurrentConfig = new DoorConfiguration();
            if (i != 0)
            {
                if (path[i - 1].x > path[i].x)
                {
                    CurrentConfig.RightOpen = true;
                }
                if (path[i - 1].x < path[i].x)
                {
                    CurrentConfig.LeftOpen = true;
                }
                if (path[i - 1].y > path[i].y)
                {
                    CurrentConfig.TopOpen = true;
                }
                if (path[i - 1].y < path[i].y)
                {
                    CurrentConfig.BottomOpen = true;
                }
            }

            if (i != path.Count - 1)
            {
                if (path[i + 1].x > path[i].x)
                {
                    CurrentConfig.RightOpen = true;
                }
                if (path[i + 1].x < path[i].x)
                {
                    CurrentConfig.LeftOpen = true;
                }
                if (path[i + 1].y > path[i].y)
                {
                    CurrentConfig.TopOpen = true;
                }
                if (path[i + 1].y < path[i].y)
                {
                    CurrentConfig.BottomOpen = true;
                }
            }

            doorconfig.Add(CurrentConfig);
        }

        return(doorconfig);
    }
Exemplo n.º 3
0
 public MapRoom PullEndRoom(DoorConfiguration DoorConfig)
 {
     if (DoorConfig.TopOpen == true)
     {
         return(EndRoomTop);
     }
     if (DoorConfig.BottomOpen == true)
     {
         return(EndRoomBottom);
     }
     if (DoorConfig.LeftOpen == true)
     {
         return(EndRoomLeft);
     }
     if (DoorConfig.RightOpen == true)
     {
         return(EndRoomRight);
     }
     return(null);
 }
    public static bool CompareConfigs(DoorConfiguration FirstConfig, DoorConfiguration SecondConfig)
    {
        if (FirstConfig.TopOpen != SecondConfig.TopOpen)
        {
            return(false);
        }

        if (FirstConfig.BottomOpen != SecondConfig.BottomOpen)
        {
            return(false);
        }

        if (FirstConfig.LeftOpen != SecondConfig.LeftOpen)
        {
            return(false);
        }

        if (FirstConfig.RightOpen != SecondConfig.RightOpen)
        {
            return(false);
        }

        return(true);
    }