Elin Decompiled Documentation EA 23.102 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 string name;
12 }
13
14 public class FilterCategory
15 {
16 public bool exclude;
17
19 }
20
21 public enum FilterMode
22 {
23 None,
24 Exclude,
25 Match,
27 }
28
29 public string id;
30
31 public string[] strTag;
32
33 public string[] strFilter;
34
35 public string[] filterCategory;
36
37 public string[] idCard;
38
39 public List<FilterItem> tags = new List<FilterItem>();
40
41 public List<FilterItem> filters = new List<FilterItem>();
42
43 public List<FilterCategory> categories = new List<FilterCategory>();
44
46
47 private bool isInitialied;
48
49 public bool isChara;
50
51 public override string ToString()
52 {
53 return id;
54 }
55
56 protected virtual bool _ShouldPass(CardRow source)
57 {
58 return true;
59 }
60
61 public virtual bool ContainsTag(CardRow source, string str)
62 {
63 return source.tag.Contains(str);
64 }
65
66 public void Init()
67 {
70 if (!filterCategory.IsEmpty())
71 {
72 string[] array = filterCategory;
73 foreach (string text in array)
74 {
75 bool flag = text.StartsWith('-');
76 SourceCategory.Row row = EClass.sources.categories.map[flag ? text.Remove(0, 1) : text];
78 {
79 exclude = flag,
80 row = row
81 });
82 if (!flag)
83 {
84 categoriesInclude.Add(row);
85 }
86 }
87 }
88 isInitialied = true;
89 }
90
91 public bool Pass(CardRow source)
92 {
93 if (!isInitialied)
94 {
95 Init();
96 }
97 if (source.chance == 0 || source.isOrigin)
98 {
99 return false;
100 }
101 bool flag = false;
102 bool flag2 = false;
103 for (int i = 0; i < tags.Count; i++)
104 {
105 FilterItem filterItem = tags[i];
106 if (filterItem.exclude)
107 {
108 if (ContainsTag(source, filterItem.name))
109 {
110 return false;
111 }
112 continue;
113 }
114 flag2 = true;
115 if (!flag && ContainsTag(source, filterItem.name))
116 {
117 flag = true;
118 }
119 }
120 if (flag2 && !flag)
121 {
122 return false;
123 }
124 for (int j = 0; j < filters.Count; j++)
125 {
126 FilterItem filterItem2 = filters[j];
127 if (filterItem2.exclude)
128 {
129 if (source.filter.Contains(filterItem2.name))
130 {
131 return false;
132 }
133 }
134 else if (!source.filter.Contains(filterItem2.name))
135 {
136 return false;
137 }
138 }
139 if ((isChara && !source.isChara) || (!isChara && source.isChara))
140 {
141 return false;
142 }
143 if (categories.Count > 0)
144 {
145 bool flag3 = false;
146 foreach (FilterCategory category in categories)
147 {
148 if ((!flag3 || category.exclude) && EClass.sources.categories.map[source.category].IsChildOf(category.row))
149 {
150 if (category.exclude)
151 {
152 return false;
153 }
154 flag3 = true;
155 }
156 }
157 if (!flag3)
158 {
159 return false;
160 }
161 }
162 if (!_ShouldPass(source))
163 {
164 return false;
165 }
166 return true;
167 }
168
169 public void BuildList(List<FilterItem> list, string[] strs)
170 {
171 if (strs != null)
172 {
173 foreach (string text in strs)
174 {
175 list.Add(GetFilterItem(text));
176 }
177 }
178 }
179
180 public static FilterItem GetFilterItem(string text)
181 {
182 bool flag = text.StartsWith("-");
183 return new FilterItem
184 {
185 exclude = flag,
186 name = (flag ? text.Substring(1) : text)
187 };
188 }
189}
SourceCategory.Row row
Definition: CardFilter.cs:18
string[] strFilter
Definition: CardFilter.cs:33
string[] idCard
Definition: CardFilter.cs:37
string[] filterCategory
Definition: CardFilter.cs:35
static FilterItem GetFilterItem(string text)
Definition: CardFilter.cs:180
List< FilterCategory > categories
Definition: CardFilter.cs:43
string[] strTag
Definition: CardFilter.cs:31
virtual bool _ShouldPass(CardRow source)
Definition: CardFilter.cs:56
void Init()
Definition: CardFilter.cs:66
List< FilterItem > filters
Definition: CardFilter.cs:41
void BuildList(List< FilterItem > list, string[] strs)
Definition: CardFilter.cs:169
List< FilterItem > tags
Definition: CardFilter.cs:39
string id
Definition: CardFilter.cs:29
virtual bool ContainsTag(CardRow source, string str)
Definition: CardFilter.cs:61
bool isChara
Definition: CardFilter.cs:49
List< SourceCategory.Row > categoriesInclude
Definition: CardFilter.cs:45
override string ToString()
Definition: CardFilter.cs:51
bool isInitialied
Definition: CardFilter.cs:47
bool Pass(CardRow source)
Definition: CardFilter.cs:91
bool isChara
Definition: CardRow.cs:55
bool isOrigin
Definition: CardRow.cs:52
string[] filter
Definition: CardRow.cs:31
Definition: EClass.cs:5
static SourceManager sources
Definition: EClass.cs:42
string[] tag
Definition: RenderRow.cs:58
string category
Definition: RenderRow.cs:46
int chance
Definition: RenderRow.cs:24
SourceCategory categories