You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mapbox-sdk/Unity/DataContainers/LocationPrefabCategoryOptio...

73 lines
3.1 KiB

6 months ago
namespace Mapbox.Unity.Map
{
using UnityEngine;
using System.Collections.Generic;
public static class LocationPrefabCategoryOptions
{
static LocationPrefabCategoryOptions()
{
PopulateCategoriesToMakiDictionary();
}
private static Dictionary<LocationPrefabCategories, List<string>> CategoriesToMakiDictionary = new Dictionary<LocationPrefabCategories, List<string>>
{
{LocationPrefabCategories.ArtsAndEntertainment,new List<string>{"art-gallery", "cinema", "stadium", "museum", "library", "zoo", "music", "theatre", "amusement-park"}},
{LocationPrefabCategories.Food,new List<string>{"cafe", "bakery", "fast-food", "grocery", "ice-cream", "restaurant"}},
{LocationPrefabCategories.Nightlife,new List<string>{"bar", "beer"}},
{LocationPrefabCategories.OutdoorsAndRecreation,new List<string>{"aquarium", "campsite", "attraction", "castle", "cemetery", "dog-park", "drinking-water", "garden", "golf", "monument", "park", "picnic-site", "playground", "swimming"}},
{LocationPrefabCategories.Services,new List<string>{"bank", "dentist", "toilet", "veterinary", "pharmacy", "college", "school", "hospital", "place-of-worship", "religious-christian", "religious-jewish", "religious-muslim", "police", "post", "doctor", "fire-station", "information", "town-hall", "prison", "embassy", "fuel", "laundry", "lodging"}},
{LocationPrefabCategories.Shops,new List<string>{"alcohol-shop", "clothing-store", "shop"}},
{LocationPrefabCategories.Transportation,new List<string>{"bus", "car", "bicycle-share", "bicycle", "airfield", "ferry", "harbor", "heliport"}},
};
private static Dictionary<string, LocationPrefabCategories> MakiToCategoriesDictionary = new Dictionary<string, LocationPrefabCategories>();
//Creates a reverse reference from the CategoriesToMakiDictionary
private static void PopulateCategoriesToMakiDictionary ()
{
foreach(var item in CategoriesToMakiDictionary)
{
foreach(string makiTag in item.Value)
{
if (!MakiToCategoriesDictionary.ContainsKey(makiTag))
{
MakiToCategoriesDictionary.Add(makiTag, item.Key);
}
}
}
}
/// <summary>
/// Gets the maki tags list from a <see cref="LocationPrefabCategories"/> category
/// </summary>
/// <returns>The list of maki tags from supplied category.</returns>
/// <param name="category"><see cref="LocationPrefabCategories"/></param>
public static List<string> GetMakiListFromCategory(LocationPrefabCategories category)
{
List<string> returnList = new List<string>();
CategoriesToMakiDictionary.TryGetValue(category, out returnList);
return returnList;
}
/// <summary>
/// Gets the <see cref="LocationPrefabCategories"/> category that the maki tag belongs to.
/// </summary>
/// <returns>The <see cref="LocationPrefabCategories"/>category from maki tag.</returns>
/// <param name="makiTag">Maki tag</param>
public static LocationPrefabCategories GetCategoryFromMakiTag(string makiTag)
{
LocationPrefabCategories returnCategory;
if (MakiToCategoriesDictionary.TryGetValue(makiTag, out returnCategory))
return returnCategory;
return LocationPrefabCategories.AnyCategory;
}
}
}