-
Notifications
You must be signed in to change notification settings - Fork 5
/
AITable.cs
74 lines (63 loc) · 1.2 KB
/
AITable.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
namespace AIEdit
{
public class AITable<T> where T : IAIObject
{
private List<T> items;
private string name;
public string Name { get { return name; } }
public int Count { get { return items.Count; } }
public List<T> Items { get { return items; } }
public T this[int index]
{
get
{
return items[index];
}
}
public T this[string id]
{
get
{
foreach (T entry in items)
{
if (entry.ID == id) return entry;
}
return default(T);
}
}
public AITable(string name, List<T> items=null)
{
this.name = name;
this.items = (items != null) ? items : new List<T>();
}
public void Add(T entry)
{
items.Add(entry);
}
public void Remove(T entry)
{
entry.Reset();
items.Remove(entry);
}
public void Write(StreamWriter stream, bool writeIDs=true)
{
stream.WriteLine("[" + name + "]");
if (writeIDs)
{
int n = 0;
foreach (T entry in items)
{
stream.WriteLine(n + "=" + entry.ID);
n++;
}
stream.WriteLine();
}
foreach(T entry in items) entry.Write(stream);
}
}
}