ManiaMap.Unity
Procedural generation of metroidvania style maps for Unity.
TemplateGroup.cs
1using MPewsey.ManiaMap;
2using System.Collections.Generic;
3using UnityEngine;
4
6{
10 [CreateAssetMenu(menuName = "Mania Map/Template Group")]
11 public class TemplateGroup : ScriptableObject
12 {
13 [SerializeField]
14 private string _name = "<None>";
18 public string Name { get => _name; set => _name = value; }
19
20 [SerializeField]
21 private List<TemplateGroupEntry> _entries = new List<TemplateGroupEntry>();
25 public List<TemplateGroupEntry> Entries { get => _entries; set => _entries = value; }
26
27 private void OnValidate()
28 {
29 foreach (var entry in Entries)
30 {
31 entry.OnValidate();
32 }
33 }
34
38 public List<TemplateGroupsEntry> GetMMTemplateGroupEntries()
39 {
40 var result = new List<TemplateGroupsEntry>(Entries.Count);
41 var templateCache = new Dictionary<RoomTemplateResource, RoomTemplate>();
42
43 foreach (var entry in Entries)
44 {
45 result.Add(entry.GetMMTemplateGroupsEntry(templateCache));
46 }
47
48 return result;
49 }
50
55 public void AddTemplate(RoomTemplateResource template)
56 {
57 if (template != null && !ContainsTemplate(template))
58 Entries.Add(new TemplateGroupEntry(template));
59 }
60
66 {
67 foreach (var entry in Entries)
68 {
69 if (entry.Template == template)
70 return true;
71 }
72
73 return false;
74 }
75 }
76}
A container for storing a serialized room template.
A TemplateGroup entry.
A class for grouping room templates.
bool ContainsTemplate(RoomTemplateResource template)
Returns true if the template is contained in the group.
void AddTemplate(RoomTemplateResource template)
Add an entry for the template to the group if it does not already exist.
string Name
The unique group name.
List< TemplateGroupsEntry > GetMMTemplateGroupEntries()
Returns a list of generation template group entries.
List< TemplateGroupEntry > Entries
A list of template entries.