source: binary-improvements/7dtd-server-fixes/src/CommonMappingFunctions.cs@ 205

Last change on this file since 205 was 203, checked in by alloc, 10 years ago

fixes

File size: 4.6 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Text.RegularExpressions;
4using Steamworks;
5
6namespace AllocsFixes
7{
8 public class CommonMappingFunctions
9 {
10 public static ConnectionManager GetConnectionManager ()
11 {
12 return ConnectionManager.Instance;
13 }
14
15 public static GameManager GetGameManager ()
16 {
17 return GetConnectionManager ().gameManager;
18 }
19
20 public static string GetPlayerName (ClientInfo _ci)
21 {
22 try {
23 int entityId = GetConnectionManager ().mapClientToEntity [_ci.clientId];
24 return GetGameManager ().World.playerEntities.dict [entityId].EntityName;
25 } catch (Exception e) {
26 Log.Out ("Error getting player name for ClientInfo: " + e);
27 }
28 return null;
29 }
30
31 public static EntityPlayer GetEntityPlayer (ClientInfo _ci)
32 {
33 try {
34 int entityId = GetConnectionManager ().mapClientToEntity [_ci.clientId];
35 return GetGameManager ().World.playerEntities.dict [entityId];
36 } catch (Exception e) {
37 Log.Out ("Error getting entity player for ClientInfo: " + e);
38 }
39 return null;
40 }
41
42 public static string GetSteamID (ClientInfo _ci)
43 {
44 return Steam.Authentication.Server.GetPlayerId (GetPlayerName (_ci));
45 }
46
47 public static string GetSteamID (string _playerName)
48 {
49 return Steam.Authentication.Server.GetPlayerId (_playerName);
50 }
51
52 public static int GetClientID (ClientInfo _ci)
53 {
54 if (_ci != null) {
55 if (GetConnectionManager ().connectedClients.ContainsKey (_ci.clientId))
56 return _ci.clientId;
57 }
58 return -1;
59 }
60
61 public static int GetEntityID (ClientInfo _ci)
62 {
63 try {
64 ConnectionManager cm = GetConnectionManager ();
65
66 if (cm.mapClientToEntity.ContainsKey (_ci.clientId))
67 return cm.mapClientToEntity [_ci.clientId];
68 else
69 return -1;
70 } catch (Exception e) {
71 Log.Out ("Error getting entity ID for ClientInfo: " + e);
72 }
73 return -1;
74 }
75
76 public static ClientInfo GetClientInfoFromEntityID (int _entityId)
77 {
78 try {
79 ConnectionManager cm = GetConnectionManager ();
80
81 if (cm.mapClientToEntity.ContainsValue (_entityId)) {
82 foreach (KeyValuePair<int, int> kvp in cm.mapClientToEntity) {
83 if (kvp.Value == _entityId) {
84 return cm.connectedClients [kvp.Key];
85 }
86 }
87 }
88
89 return null;
90 } catch (Exception e) {
91 Log.Out ("Error getting ClientInfo for entity ID: " + e);
92 }
93 return null;
94 }
95
96 public static ClientInfo GetClientInfoFromClientID (int _clientId)
97 {
98 try {
99 ConnectionManager cm = GetConnectionManager ();
100
101 if (cm.connectedClients.ContainsKey (_clientId))
102 return cm.connectedClients [_clientId];
103 else
104 return null;
105 } catch (Exception e) {
106 Log.Out ("Error getting ClientInfo for client ID: " + e);
107 }
108 return null;
109 }
110
111 public static ClientInfo GetClientInfoFromPlayerName (string _playerName, bool ignoreColorcodes)
112 {
113 try {
114 ConnectionManager cm = GetConnectionManager ();
115
116 _playerName = _playerName.ToLower ();
117 if (ignoreColorcodes) {
118 _playerName = Regex.Replace (_playerName, "\\[[0-9a-fA-F]{6}\\]", "");
119 }
120 foreach (ClientInfo ci in cm.connectedClients.Values) {
121 string curName = GetPlayerName (ci).ToLower ();
122 if (ignoreColorcodes) {
123 curName = Regex.Replace (curName, "\\[[0-9a-fA-F]{6}\\]", "");
124 }
125 if (curName.Equals (_playerName)) {
126 return ci;
127 }
128 }
129 } catch (Exception e) {
130 Log.Out ("Error getting ClientInfo for player name: " + e);
131 }
132 return null;
133 }
134
135 public static ClientInfo GetClientInfoFromNameOrID (string _nameOrId, bool ignoreColorcodes)
136 {
137 try {
138 long tempLong;
139 if (_nameOrId.Length == 17 && long.TryParse (_nameOrId, out tempLong)) {
140 return GetClientInfoFromSteamID (_nameOrId);
141 } else {
142 int entityId = -1;
143 if (int.TryParse (_nameOrId, out entityId)) {
144 ClientInfo ci = GetClientInfoFromEntityID (entityId);
145 if (ci != null)
146 return ci;
147 }
148
149 return GetClientInfoFromPlayerName (_nameOrId, ignoreColorcodes);
150 }
151 } catch (Exception e) {
152 Log.Out ("Error getting ClientInfo for steam ID / entity ID / player name \"" + _nameOrId + "\": " + e);
153 }
154 return null;
155 }
156
157 public static ClientInfo GetClientInfoFromSteamID (string _steamId)
158 {
159 try {
160 Dictionary<string, CSteamID> uToID = Steam.Authentication.Server.usersToIDs;
161 foreach (KeyValuePair<string, CSteamID> kvp in uToID) {
162 string curId = string.Empty + kvp.Value.m_SteamID;
163 if (curId.Equals (_steamId)) {
164 return GetClientInfoFromPlayerName (kvp.Key, false);
165 }
166 }
167 } catch (Exception e) {
168 Log.Out ("Error getting ClientInfo for steam ID: " + e);
169 }
170 return null;
171 }
172
173 }
174}
Note: See TracBrowser for help on using the repository browser.