Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
TraitManager.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3
4public class TraitManager : EClass
5{
6 public Dictionary<Type, TraitSet> typeMap = new Dictionary<Type, TraitSet>();
7
8 public TraitMap altars = new TraitMap();
9
10 public TraitMap restSpots = new TraitMap();
11
12 public TraitMap chairs = new TraitMap();
13
14 public TraitMap suns = new TraitMap();
15
16 public void OnAddCard(Card c)
17 {
18 Trait trait = c.trait;
19 typeMap.GetOrCreate(trait.GetType()).Add(c);
20 if (trait.IsAltar)
21 {
22 altars.Add(c);
23 }
24 if (trait.IsRestSpot)
25 {
26 restSpots.Add(c);
27 }
28 if (trait is TraitChair)
29 {
30 chairs.Add(c);
31 }
32 if (trait is TraitLightSun)
33 {
34 suns.Add(c);
35 }
36 }
37
38 public void OnRemoveCard(Card c)
39 {
40 Trait trait = c.trait;
41 typeMap[trait.GetType()].Remove(c);
42 if (trait.IsAltar)
43 {
44 altars.Remove(c);
45 }
46 if (trait.IsRestSpot)
47 {
48 restSpots.Remove(c);
49 }
50 if (trait is TraitChair)
51 {
52 chairs.Remove(c);
53 }
54 if (trait is TraitLightSun)
55 {
56 suns.Remove(c);
57 }
58 }
59
60 public Thing GetRandomThing<T>() where T : Trait
61 {
62 return GetTraitSet<T>().RandomItem()?.Thing;
63 }
64
65 public List<T> List<T>(Func<T, bool> func = null) where T : Trait
66 {
67 TraitSet traitSet = GetTraitSet<T>();
68 List<T> list = new List<T>();
69 if (func == null)
70 {
71 foreach (Card item in traitSet)
72 {
73 list.Add(item.trait as T);
74 }
75 }
76 else
77 {
78 foreach (Card item2 in traitSet)
79 {
80 if (func(item2.trait as T))
81 {
82 list.Add(item2.trait as T);
83 }
84 }
85 }
86 return list;
87 }
88
89 public TraitSet GetTraitSet<T>() where T : Trait
90 {
91 return typeMap.GetOrCreate(typeof(T));
92 }
93
94 public TraitSet GetTraitSet(Type t)
95 {
96 return typeMap.GetOrCreate(t);
97 }
98}
Definition: Card.cs:11
Trait trait
Definition: Card.cs:49
Definition: EClass.cs:5
Definition: Thing.cs:8
TraitSet GetTraitSet< T >()
Definition: TraitManager.cs:89
void OnRemoveCard(Card c)
Definition: TraitManager.cs:38
TraitMap chairs
Definition: TraitManager.cs:12
Thing GetRandomThing< T >()
Definition: TraitManager.cs:60
TraitMap altars
Definition: TraitManager.cs:8
TraitMap restSpots
Definition: TraitManager.cs:10
List< T > List< T >(Func< T, bool > func=null)
Definition: TraitManager.cs:65
void OnAddCard(Card c)
Definition: TraitManager.cs:16
TraitSet GetTraitSet(Type t)
Definition: TraitManager.cs:94
TraitMap suns
Definition: TraitManager.cs:14
Dictionary< Type, TraitSet > typeMap
Definition: TraitManager.cs:6
Definition: Trait.cs:7
virtual bool IsRestSpot
Definition: Trait.cs:249
virtual bool IsAltar
Definition: Trait.cs:247