-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathModListing.cs
139 lines (116 loc) · 3.15 KB
/
ModListing.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
using System.Text.RegularExpressions;
namespace MO2ExportImport;
public class ModListing : IEquatable<ModListing>, IListing
{
private string _originalEntryString;
public string Name { get; set; }
public bool? Enabled { get; set; }
public bool IsNoDelete { get; set; }
public string NoDeletePrefix { get; set; }
public string Prefix { get; set; } = string.Empty;
public ModListing(string entryString)
{
_originalEntryString = entryString;
Enabled = FormatHandler.GetModActivationStatus(_originalEntryString);
Name = FormatHandler.TrimModActivationStatus(entryString);
IsNoDelete = CommonFuncs.IsNoDelete(Name, out var noDeletePrefix);
NoDeletePrefix = noDeletePrefix;
Name = CommonFuncs.RemoveNoDeletePrefix(Name);
}
public ModListing() // for Json deserialization
{
}
public string GetCurrentEntryString()
{
string fullPrefix = string.Empty;
if (!Enabled.HasValue)
{
fullPrefix = "*";
}
else if (Enabled.Value == true)
{
fullPrefix = "+";
}
else
{
fullPrefix = "-";
}
if (IsNoDelete)
{
if (NoDeletePrefix == string.Empty)
{
NoDeletePrefix = "[NoDelete]";
}
fullPrefix += NoDeletePrefix + " ";
}
fullPrefix += Prefix;
return fullPrefix + Name;
}
public string GetCurrentFolderName()
{
return FormatHandler.TrimModActivationStatus(GetCurrentEntryString());
}
public void Enable()
{
Enabled = true;
}
public void Disable()
{
Enabled = false;
}
public void MakeNoDelete()
{
Name = CommonFuncs.RemoveNoDeletePrefix(Name);
IsNoDelete = true;
}
public void RemoveNoDelete()
{
Name = CommonFuncs.RemoveNoDeletePrefix(Name);
IsNoDelete = false;
}
public void SetPrefix(string prefix)
{
Prefix = prefix;
}
public bool Equals(ModListing? other)
{
return other is not null && Name.Equals(other.Name);
}
public bool Equals(IListing? other)
{
return other is not null && other is ModListing && Name.Equals(other.Name);
}
public int GetIndexOf(IList<IListing> list)
{
for (int i = 0; i < list.Count; i++)
{
if (list[i].Equals(this))
{
return i;
}
}
return -1;
}
public override string ToString()
{
return Name;
}
// Override GetHashCode
public override int GetHashCode()
{
// Combine hash codes of properties
return Name.GetHashCode();
}
// Overload == operator
public static bool operator ==(ModListing left, ModListing right)
{
if (ReferenceEquals(left, right)) return true;
if (left is null || right is null) return false;
return left.Equals(right);
}
// Overload != operator
public static bool operator !=(ModListing left, ModListing right)
{
return !(left == right);
}
}