Skip to content
This repository was archived by the owner on May 9, 2023. It is now read-only.

Commit 3b71b40

Browse files
committed
More accurate check if enum value has flag
1 parent 1292aff commit 3b71b40

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

src/CacheObject/IValues/InteractiveEnum.cs

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@ public class InteractiveEnum : InteractiveValue
2929
private EnumCompleter enumCompleter;
3030

3131
private GameObject toggleHolder;
32-
private readonly List<Toggle> flagToggles = new List<Toggle>();
33-
private readonly List<Text> flagTexts = new List<Text>();
32+
private readonly List<Toggle> flagToggles = new();
33+
private readonly List<Text> flagTexts = new();
34+
35+
public CachedEnumValue ValueAtIndex(int idx) => (CachedEnumValue)CurrentValues[idx];
36+
public CachedEnumValue ValueAtKey(object key) => (CachedEnumValue)CurrentValues[key];
3437

3538
// Setting value from owner
3639
public override void SetValue(object value)
@@ -70,13 +73,8 @@ private void SetTogglesForValue(object value)
7073
{
7174
try
7275
{
73-
var split = value.ToString().Split(',');
74-
var set = new HashSet<string>();
75-
foreach (var s in split)
76-
set.Add(s.Trim());
77-
7876
for (int i = 0; i < CurrentValues.Count; i++)
79-
flagToggles[i].isOn = set.Contains(ValueAtIdx(i).Name);
77+
flagToggles[i].isOn = (value as Enum).HasFlag(ValueAtIndex(i).ActualValue as Enum);
8078
}
8179
catch (Exception ex)
8280
{
@@ -116,7 +114,7 @@ private void SetValueFromFlags()
116114
for (int i = 0; i < CurrentValues.Count; i++)
117115
{
118116
if (flagToggles[i].isOn)
119-
values.Add(ValueAtIdx(i).Name);
117+
values.Add(ValueAtIndex(i).Name);
120118
}
121119

122120
CurrentOwner.SetUserValue(Enum.Parse(EnumType, string.Join(", ", values.ToArray())));
@@ -166,9 +164,6 @@ public override GameObject CreateContent(GameObject parent)
166164
return UIRoot;
167165
}
168166

169-
public CachedEnumValue ValueAtIdx(int idx) => (CachedEnumValue)CurrentValues[idx];
170-
public CachedEnumValue ValueAtKey(object key) => (CachedEnumValue)CurrentValues[key];
171-
172167
private void SetupTogglesForEnumType()
173168
{
174169
toggleHolder.SetActive(true);
@@ -191,7 +186,7 @@ private void SetupTogglesForEnumType()
191186
AddToggleRow();
192187

193188
flagToggles[i].isOn = false;
194-
flagTexts[i].text = ValueAtIdx(i).Name;
189+
flagTexts[i].text = ValueAtIndex(i).Name;
195190
}
196191
}
197192

0 commit comments

Comments
 (0)