Elin Decompiled Documentation EA 23.268 Nightly
Loading...
Searching...
No Matches
CardFilter.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3
4[Serializable]
5public class CardFilter : EClass
6{
7 public class FilterItem
8 {
9 public bool exclude;
10
11 public bool supersede;
12
13 public string name;
14 }
15
16 public class FilterCategory
17 {
18 public bool exclude;
19
21 }
22
23 public enum FilterMode
24 {
25 None,
26 Exclude,
27 Match,
29 }
30
31 public string id;
32
33 public string[] strTag;
34
35 public string[] strFilter;
36
37 public string[] filterCategory;
38
39 public string[] idCard;
40
41 public List<FilterItem> tags = new List<FilterItem>();
42
43 public List<FilterItem> filters = new List<FilterItem>();
44
45 public List<FilterCategory> categories = new List<FilterCategory>();
46
48
49 private bool isInitialied;
50
51 public bool isChara;
52
53 public override string ToString()
54 {
55 return id;
56 }
57
58 protected virtual bool _ShouldPass(CardRow source)
59 {
60 return true;
61 }
62
63 public virtual bool ContainsTag(CardRow source, string str)
64 {
65 return source.tag.Contains(str);
66 }
67
68 public void Init()
69 {
72 if (!filterCategory.IsEmpty())
73 {
74 string[] array = filterCategory;
75 foreach (string text in array)
76 {
77 bool flag = text.StartsWith('-');
78 SourceCategory.Row row = EClass.sources.categories.map[flag ? text.Remove(0, 1) : text];
80 {
81 exclude = flag,
82 row = row
83 });
84 if (!flag)
85 {
86 categoriesInclude.Add(row);
87 }
88 }
89 }
90 isInitialied = true;
91 }
92
93 public bool Pass(CardRow source)
94 {
95 if (!isInitialied)
96 {
97 Init();
98 }
99 if (source.chance == 0 || source.isOrigin)
100 {
101 return false;
102 }
103 bool flag = false;
104 bool flag2 = false;
105 for (int i = 0; i < tags.Count; i++)
106 {
107 FilterItem filterItem = tags[i];
108 if (filterItem.supersede)
109 {
110 if (ContainsTag(source, filterItem.name))
111 {
112 flag = true;
113 break;
114 }
115 }
116 else if (filterItem.exclude)
117 {
118 if (ContainsTag(source, filterItem.name))
119 {
120 return false;
121 }
122 }
123 else
124 {
125 flag2 = true;
126 if (!flag && ContainsTag(source, filterItem.name))
127 {
128 flag = true;
129 }
130 }
131 }
132 if (flag2 && !flag)
133 {
134 return false;
135 }
136 for (int j = 0; j < filters.Count; j++)
137 {
138 FilterItem filterItem2 = filters[j];
139 if (filterItem2.supersede)
140 {
141 break;
142 }
143 if (filterItem2.exclude)
144 {
145 if (source.filter.Contains(filterItem2.name))
146 {
147 return false;
148 }
149 }
150 else if (!source.filter.Contains(filterItem2.name))
151 {
152 return false;
153 }
154 }
155 if ((isChara && !source.isChara) || (!isChara && source.isChara))
156 {
157 return false;
158 }
159 if (categories.Count > 0)
160 {
161 bool flag3 = false;
162 foreach (FilterCategory category in categories)
163 {
164 if ((!flag3 || category.exclude) && EClass.sources.categories.map[source.category].IsChildOf(category.row))
165 {
166 if (category.exclude)
167 {
168 return false;
169 }
170 flag3 = true;
171 }
172 }
173 if (!flag3)
174 {
175 return false;
176 }
177 }
178 if (!_ShouldPass(source))
179 {
180 return false;
181 }
182 return true;
183 }
184
185 public void BuildList(List<FilterItem> list, string[] strs)
186 {
187 if (strs == null)
188 {
189 return;
190 }
191 foreach (string text in strs)
192 {
193 if (text.Length != 0)
194 {
195 FilterItem filterItem = new FilterItem();
196 _ = text[0];
197 switch (text[0])
198 {
199 case '*':
200 filterItem.supersede = true;
201 filterItem.name = text.Substring(1);
202 break;
203 case '-':
204 filterItem.exclude = true;
205 filterItem.name = text.Substring(1);
206 break;
207 default:
208 filterItem.name = text;
209 break;
210 }
211 list.Add(filterItem);
212 }
213 }
214 }
215}
SourceCategory.Row row
Definition: CardFilter.cs:20
string[] strFilter
Definition: CardFilter.cs:35
string[] idCard
Definition: CardFilter.cs:39
string[] filterCategory
Definition: CardFilter.cs:37
List< FilterCategory > categories
Definition: CardFilter.cs:45
string[] strTag
Definition: CardFilter.cs:33
virtual bool _ShouldPass(CardRow source)
Definition: CardFilter.cs:58
void Init()
Definition: CardFilter.cs:68
List< FilterItem > filters
Definition: CardFilter.cs:43
void BuildList(List< FilterItem > list, string[] strs)
Definition: CardFilter.cs:185
List< FilterItem > tags
Definition: CardFilter.cs:41
string id
Definition: CardFilter.cs:31
virtual bool ContainsTag(CardRow source, string str)
Definition: CardFilter.cs:63
bool isChara
Definition: CardFilter.cs:51
List< SourceCategory.Row > categoriesInclude
Definition: CardFilter.cs:47
override string ToString()
Definition: CardFilter.cs:53
bool isInitialied
Definition: CardFilter.cs:49
bool Pass(CardRow source)
Definition: CardFilter.cs:93
bool isChara
Definition: CardRow.cs:55
bool isOrigin
Definition: CardRow.cs:52
string[] filter
Definition: CardRow.cs:31
Definition: EClass.cs:6
static SourceManager sources
Definition: EClass.cs:43
string[] tag
Definition: RenderRow.cs:58
string category
Definition: RenderRow.cs:46
int chance
Definition: RenderRow.cs:24
SourceCategory categories