Survivalcraft API 1.8.2.3
v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
ManageUserScreen.cs
浏览该文件的文档.
1
//abandoned
2
/*using Engine;
3
using Engine.Graphics;
4
using Game;
5
using System.Text.Json;
6
using System.Xml.Linq;
7
8
public class ManageUserScreen : Screen
9
{
10
public class ComUserInfo
11
{
12
public int Id;
13
public string UserNo;
14
public string Name;
15
public string Token;
16
public string LastLoginTime;
17
public int ErrCount;
18
public int IsLock;
19
public string LockTime;
20
public string UnlockTime;
21
public int LockDuration;
22
public int Money;
23
public string Authority;
24
public string HeadImg;
25
public int IsAdmin;
26
public string RegTime;
27
public string LoginIP;
28
public string MGroup;
29
public string PawToken;
30
public string Email;
31
public int Status = 1;
32
public string LockReason;
33
public int EmailCount;
34
public string EmailTime;
35
public int Die;
36
public string Moblie;
37
public string AreaCode;
38
public Texture2D ImgTexture;
39
}
40
41
public enum Filter
42
{
43
All = 0,
44
Blacklisted = 1,
45
Admin = 2,
46
Inactive = 3,
47
Die = 4
48
}
49
50
public enum SearchType
51
{
52
ByUserId = 0,
53
ByUserNo = 1,
54
ByName = 2,
55
ByEmail = 3,
56
ByToken = 4,
57
ByLoginIP = 5,
58
ByLockReason = 6
59
}
60
61
public static string fName = "ManageUserScreen";
62
63
public ListPanelWidget m_contentList;
64
65
public ButtonWidget m_lockButton;
66
67
public ButtonWidget m_resetButton;
68
69
public ButtonWidget m_orderButton;
70
71
public ButtonWidget m_filterButton;
72
73
public ButtonWidget m_searchButton;
74
75
public ButtonWidget m_searchTypeButton;
76
77
public LabelWidget m_filterLabel;
78
79
public Filter m_filter;
80
81
public SearchType m_searchType;
82
83
public TextBoxWidget m_searchKeyTextBox;
84
85
public LinkWidget m_moreLink;
86
87
public bool m_order;
88
89
public ManageUserScreen()
90
{
91
XElement node = ContentManager.Get<XElement>("Screens/ManageUserScreen");
92
LoadContents(this, node);
93
m_contentList = Children.Find<ListPanelWidget>("ContentList");
94
m_lockButton = Children.Find<ButtonWidget>("Lock");
95
m_resetButton = Children.Find<ButtonWidget>("Reset");
96
m_orderButton = Children.Find<ButtonWidget>("Order");
97
m_filterLabel = Children.Find<LabelWidget>("Filter");
98
m_filterButton = Children.Find<ButtonWidget>("ChangeFilter");
99
m_searchButton = Children.Find<ButtonWidget>("Search");
100
m_searchTypeButton = Children.Find<ButtonWidget>("SearchType");
101
m_searchKeyTextBox = Children.Find<TextBoxWidget>("SearchKey");
102
m_contentList.ItemWidgetFactory = delegate (object obj)
103
{
104
ComUserInfo listItem = obj as ComUserInfo;
105
if (listItem != null)
106
{
107
XElement node2 = ContentManager.Get<XElement>("Widgets/BlocksTextureItem");
108
ContainerWidget containerWidget = (ContainerWidget)LoadWidget(this, node2, null);
109
RectangleWidget rectangleWidget = containerWidget.Children.Find<RectangleWidget>("BlocksTextureItem.Icon");
110
LabelWidget labelWidget = containerWidget.Children.Find<LabelWidget>("BlocksTextureItem.Text");
111
LabelWidget labelWidget2 = containerWidget.Children.Find<LabelWidget>("BlocksTextureItem.Details");
112
rectangleWidget.Subtexture = listItem.ImgTexture == null ? ContentManager.Get<Subtexture>("Textures/headimg") : new Subtexture(listItem.ImgTexture, Vector2.Zero, Vector2.One);
113
rectangleWidget.TextureLinearFilter = true;
114
labelWidget.Text = $"{listItem.Name} ID:{listItem.Id} 账号:{listItem.UserNo}";
115
if (listItem.IsLock == 1)
116
{
117
labelWidget2.Text = "锁定时长: " + ((int)(listItem.LockDuration / 8.64f) / 10000f) + "天";
118
labelWidget2.Text += " 解锁时间: " + GetMsg(listItem.UnlockTime);
119
labelWidget2.Text += " 锁定原因:" + GetMsg(listItem.LockReason);
120
}
121
else
122
{
123
labelWidget2.Text = $"经验:{GetMsg(listItem.Money)} 邮箱:{GetMsg(listItem.Email)} IP地址:{GetMsg(listItem.LoginIP)}";
124
}
125
labelWidget.Color = Color.White;
126
if (listItem.IsLock == 1)
127
{
128
labelWidget.Color = Color.LightBlue;
129
}
130
else if (listItem.IsAdmin == 1)
131
{
132
labelWidget.Color = Color.Green;
133
}
134
else if (listItem.Die == 1)
135
{
136
labelWidget.Color = Color.Red;
137
}
138
else if (listItem.Status == 0)
139
{
140
labelWidget.Color = Color.Gray;
141
}
142
return containerWidget;
143
}
144
else
145
{
146
XElement node2 = ContentManager.Get<XElement>("Widgets/CommunityContentItemMore");
147
ContainerWidget containerWidget = (ContainerWidget)LoadWidget(this, node2, null);
148
m_moreLink = containerWidget.Children.Find<LinkWidget>("CommunityContentItemMore.Link");
149
m_moreLink.Tag = obj as string;
150
return containerWidget;
151
}
152
};
153
m_contentList.ItemClicked += obj =>
154
{
155
ComUserInfo listItem = obj as ComUserInfo;
156
if (listItem != null && m_contentList.SelectedItem == listItem)
157
{
158
string msg = $"用户ID: {listItem.Id}\n用户名: {GetMsg(listItem.UserNo)}\n昵称: {GetMsg(listItem.Name)}\n邮箱{GetMsg(listItem.Email)}\nIP:{GetMsg(listItem.LoginIP)}";
159
msg += $"\n用户Token: {GetMsg(listItem.Token)}\n状态: " + (listItem.IsLock == 1 ? "锁定" : (listItem.Status == 0 ? "未激活" : (listItem.Die == 1 ? "死鱼" : "正常")));
160
msg += "\n是否为管理: " + (listItem.IsAdmin == 1 ? "是" : "否") + " " + "权限等级: " + listItem.Authority;
161
msg += $"\n找回密码Token: {GetMsg(listItem.PawToken)}\n称号组: {GetMsg(listItem.MGroup)}\n注册时间: {GetMsg(listItem.RegTime)}\n最后登录时间: {GetMsg(listItem.LastLoginTime)}";
162
msg += $"\n当天发送邮件次数: {GetMsg(listItem.EmailCount)}\n邮箱锁定时间: {GetMsg(listItem.EmailTime)}";
163
msg += $"\n手机号: {GetMsg(listItem.Moblie)}\n区号: {GetMsg(listItem.AreaCode)}";
164
msg += "\n上次锁定时间: " + GetMsg(listItem.LockTime) + "\n锁定原因: " + GetMsg(listItem.LockReason);
165
msg += "\n锁定时长: " + ((int)(listItem.LockDuration / 8.64f) / 10000f) + "天\n解锁时间: " + GetMsg(listItem.UnlockTime);
166
MessageDialog messageDialog = new("详细信息:" + listItem.Name, msg, LanguageControl.Ok, null, null);
167
DialogsManager.ShowDialog(null, messageDialog);
168
}
169
};
170
}
171
172
public override void Enter(object[] parameters)
173
{
174
m_filter = Filter.All;
175
m_searchType = SearchType.ByName;
176
m_order = false;
177
UpdateList(null);
178
}
179
180
public override void Update()
181
{
182
if (m_contentList.SelectedItem != null && m_contentList.SelectedItem is ComUserInfo)
183
{
184
ComUserInfo item = (ComUserInfo)m_contentList.SelectedItem;
185
if (item.IsAdmin == 1)
186
{
187
m_lockButton.IsEnabled = false;
188
m_resetButton.IsEnabled = false;
189
}
190
else
191
{
192
m_lockButton.IsEnabled = true;
193
m_resetButton.IsEnabled = true;
194
}
195
m_lockButton.Text = (item.IsLock == 1) ? "解锁" : "锁定";
196
}
197
else
198
{
199
m_lockButton.IsEnabled = false;
200
m_resetButton.IsEnabled = false;
201
}
202
m_filterLabel.Text = GetFilterDisplayName(m_filter);
203
if (m_filterButton.IsClicked)
204
{
205
List<int> filters = [.. EnumUtils.GetEnumValues<Filter>()];
206
DialogsManager.ShowDialog(null, new ListSelectionDialog("请选择", filters, 60f, item => GetFilterDisplayName((Filter)item), delegate (object result)
207
{
208
m_filter = (Filter)result;
209
UpdateList(null);
210
}));
211
}
212
m_searchTypeButton.Text = GetSearchTypeName(m_searchType);
213
if (m_searchTypeButton.IsClicked)
214
{
215
List<int> searchTypes = [.. EnumUtils.GetEnumValues<SearchType>()];
216
DialogsManager.ShowDialog(null, new ListSelectionDialog("请选择", searchTypes, 60f, item => GetSearchTypeName((SearchType)item), delegate (object result)
217
{
218
m_searchType = (SearchType)result;
219
}));
220
}
221
if (m_searchButton.IsClicked)
222
{
223
UpdateList(null);
224
}
225
if (m_lockButton.IsClicked && m_contentList.SelectedItem != null && m_contentList.SelectedItem is ComUserInfo)
226
{
227
ComUserInfo item = (ComUserInfo)m_contentList.SelectedItem;
228
if (item.IsLock == 0)
229
{
230
DialogsManager.ShowDialog(null, new TextBoxDialog("请输入锁定原因", item.LockReason, 1024, delegate (string reason)
231
{
232
DialogsManager.ShowDialog(null, new TextBoxDialog("请输入锁定时长,单位为天", "1", 1024, delegate (string duration)
233
{
234
if (!string.IsNullOrEmpty(reason) && !string.IsNullOrEmpty(duration))
235
{
236
CancellableBusyDialog busyDialog = new("操作等待中", autoHideOnCancel: false);
237
DialogsManager.ShowDialog(null, busyDialog);
238
int s_duration = (int)(double.Parse(duration) * 86400);
239
CommunityContentManager.UpdateLockState(item.Id, 1, reason, s_duration, busyDialog.Progress, delegate (byte[] data)
240
{
241
DialogsManager.HideDialog(busyDialog);
242
UpdateList(null);
243
JsonElement result = JsonDocument.Parse(data).RootElement;
244
string msg = result[0].GetInt32() == 200 ? "成功锁定:" + item.Name : result[1].GetString();
245
DialogsManager.ShowDialog(null, new MessageDialog("操作成功", msg, LanguageControl.Ok, null, null));
246
}, delegate (Exception e)
247
{
248
DialogsManager.HideDialog(busyDialog);
249
DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Error, e.Message, LanguageControl.Ok, null, null));
250
});
251
}
252
}));
253
}));
254
}
255
else
256
{
257
DialogsManager.ShowDialog(null, new MessageDialog("确认解锁?", item.Name, LanguageControl.Ok, LanguageControl.Cancel, delegate (MessageDialogButton button)
258
{
259
if (button == MessageDialogButton.Button1)
260
{
261
CancellableBusyDialog busyDialog = new("操作等待中", autoHideOnCancel: false);
262
DialogsManager.ShowDialog(null, busyDialog);
263
CommunityContentManager.UpdateLockState(item.Id, 0, "", 0, busyDialog.Progress, delegate (byte[] data)
264
{
265
DialogsManager.HideDialog(busyDialog);
266
UpdateList(null);
267
JsonElement result = JsonDocument.Parse(data).RootElement;
268
string msg = result[0].GetInt32() == 200 ? "成功解锁:" + item.Name : result[1].GetString();
269
DialogsManager.ShowDialog(null, new MessageDialog("操作成功", msg, LanguageControl.Ok, null, null));
270
}, delegate (Exception e)
271
{
272
DialogsManager.HideDialog(busyDialog);
273
DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Error, e.Message, LanguageControl.Ok, null, null));
274
});
275
}
276
}));
277
}
278
}
279
if (m_resetButton.IsClicked && m_contentList.SelectedItem != null && m_contentList.SelectedItem is ComUserInfo)
280
{
281
ComUserInfo item = (ComUserInfo)m_contentList.SelectedItem;
282
DialogsManager.ShowDialog(null, new MessageDialog("确认重置密码?", item.Name, LanguageControl.Ok, LanguageControl.Cancel, delegate (MessageDialogButton button)
283
{
284
if (button == MessageDialogButton.Button1)
285
{
286
CancellableBusyDialog busyDialog = new("操作等待中", autoHideOnCancel: false);
287
DialogsManager.ShowDialog(null, busyDialog);
288
CommunityContentManager.ResetPassword(item.Id, busyDialog.Progress, delegate (byte[] data)
289
{
290
DialogsManager.HideDialog(busyDialog);
291
JsonElement result = JsonDocument.Parse(data).RootElement;
292
string msg = result[0].GetInt32() == 200 ? "成功重置密码,密码为123456" : result[1].GetString();
293
DialogsManager.ShowDialog(null, new MessageDialog("操作成功", msg, LanguageControl.Ok, null, null));
294
}, delegate (Exception e)
295
{
296
DialogsManager.HideDialog(busyDialog);
297
DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Error, e.Message, LanguageControl.Ok, null, null));
298
});
299
}
300
}));
301
}
302
if (m_orderButton.IsClicked)
303
{
304
m_order = !m_order;
305
UpdateList(null);
306
}
307
if (m_moreLink != null && m_moreLink.IsClicked)
308
{
309
UpdateList((string)m_moreLink.Tag);
310
}
311
if (Input.Back || Input.Cancel || Children.Find<ButtonWidget>("TopBar.Back").IsClicked)
312
{
313
ScreensManager.SwitchScreen(ScreensManager.PreviousScreen);
314
}
315
}
316
317
public string GetMsg(object msg)
318
{
319
if (string.IsNullOrEmpty(msg.ToString()))
320
{
321
return "Null";
322
}
323
return msg.ToString();
324
}
325
326
public virtual void UpdateList(string cursor)
327
{
328
if (string.IsNullOrEmpty(cursor))
329
{
330
m_contentList.ClearItems();
331
m_contentList.ScrollPosition = 0f;
332
}
333
CancellableBusyDialog busyDialog = new(LanguageControl.Get("CommunityContentScreen", 2), autoHideOnCancel: false);
334
DialogsManager.ShowDialog(null, busyDialog);
335
int order = m_order ? 1 : 0;
336
//CommunityContentManager.UserList(cursor, m_searchKeyTextBox.Text, m_searchType.ToString(), m_filter.ToString(), order, busyDialog.Progress, delegate (List<ComUserInfo> list, string nextCursor)
337
//{
338
//DialogsManager.HideDialog(busyDialog);
339
//while (m_contentList.Items.Count > 0 && !(m_contentList.Items[^1] is ComUserInfo))
340
//{
341
//m_contentList.RemoveItemAt(m_contentList.Items.Count - 1);
342
//}
343
//foreach (ComUserInfo item in list)
344
//{
345
//m_contentList.AddItem(item);
346
//}
347
//if (list.Count > 0 && !string.IsNullOrEmpty(nextCursor))
348
//{
349
//m_contentList.AddItem(nextCursor);
350
//}
351
//}, delegate (Exception error)
352
//{
353
//DialogsManager.HideDialog(busyDialog);
354
//DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Error, error.Message, LanguageControl.Ok, null, null));
355
//});
356
}
357
358
public string GetFilterDisplayName(Filter filter)
359
{
360
switch (filter)
361
{
362
case Filter.All: return "全部名单";
363
case Filter.Admin: return "管理员名单";
364
case Filter.Blacklisted: return "封禁名单";
365
case Filter.Inactive: return "未激活名单";
366
case Filter.Die: return "死鱼名单";
367
}
368
return "";
369
}
370
371
public string GetSearchTypeName(SearchType searchType)
372
{
373
switch (searchType)
374
{
375
case SearchType.ByName: return "昵称";
376
case SearchType.ByEmail: return "邮箱";
377
case SearchType.ByUserId: return "用户ID";
378
case SearchType.ByUserNo: return "用户名";
379
case SearchType.ByToken: return "Token";
380
case SearchType.ByLoginIP: return "登录IP";
381
case SearchType.ByLockReason: return "锁定原因";
382
}
383
return "";
384
}
385
}
386
*/
387
SurvivalcraftApi 1.8.2.3
Survivalcraft.Windows
Screen
ManageUserScreen.cs
制作者
1.16.1