source: binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs@ 249

Last change on this file since 249 was 233, checked in by alloc, 10 years ago

Fixes for 11.4

File size: 1.9 KB
RevLine 
[144]1using System;
2using System.Collections.Generic;
3using System.Runtime.Serialization;
4using System.Text.RegularExpressions;
5
6namespace AllocsFixes.PersistentData
7{
8 [Serializable]
9 public class Players
10 {
11 private Dictionary<string, Player> players = new Dictionary<string, Player> ();
12
[233]13 public Player this [string steamId, bool create] {
[144]14 get {
15 if (players.ContainsKey (steamId))
16 return players [steamId];
17 else {
[233]18 if (create && steamId != null && steamId.Length == 17) {
[144]19 Log.Out ("Created new player entry for ID: " + steamId);
20 Player p = new Player (steamId);
21 players.Add (steamId, p);
22 return p;
23 }
24 return null;
25 }
26 }
27 }
28
29 public List<string> SteamIDs {
30 get { return new List<string> (players.Keys); }
31 }
32
[146]33 public int Count {
34 get { return players.Count; }
35 }
36
[233]37// public Player GetPlayerByNameOrId (string _nameOrId, bool _ignoreColorCodes)
38// {
39// string sid = GetSteamID (_nameOrId, _ignoreColorCodes);
40// if (sid != null)
41// return this [sid];
42// else
43// return null;
44// }
[156]45
[144]46 public string GetSteamID (string _nameOrId, bool _ignoreColorCodes)
47 {
48 if (_nameOrId == null || _nameOrId.Length == 0)
49 return null;
50
51 long tempLong;
52 if (_nameOrId.Length == 17 && long.TryParse (_nameOrId, out tempLong)) {
53 return _nameOrId;
54 } else {
55 int entityId = -1;
56 if (int.TryParse (_nameOrId, out entityId)) {
57 foreach (KeyValuePair<string, Player> kvp in players) {
58 if (kvp.Value.IsOnline && kvp.Value.EntityID == entityId) {
59 return kvp.Key;
60 }
61 }
[145]62 }
[144]63
[145]64 _nameOrId = _nameOrId.ToLower ();
65 foreach (KeyValuePair<string, Player> kvp in players) {
66 string name = kvp.Value.Name.ToLower ();
67 if (_ignoreColorCodes) {
68 name = Regex.Replace (name, "\\[[0-9a-fA-F]{6}\\]", "");
[144]69 }
[145]70 if (kvp.Value.IsOnline && name.Equals (_nameOrId)) {
71 return kvp.Key;
72 }
[144]73 }
74 }
75 return null;
76 }
77 }
78}
79
Note: See TracBrowser for help on using the repository browser.