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

Last change on this file since 137 was 130, checked in by alloc, 10 years ago

Fixes

File size: 4.4 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Text.RegularExpressions;
4using ManagedSteam.SteamTypes;
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 SingletonMonoBehaviour<Authenticator>.Instance.GetPlayerId (GetPlayerName (_ci));
45 }
46
47 public static string GetSteamID (string _playerName)
48 {
49 return SingletonMonoBehaviour<Authenticator>.Instance.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 int entityId = -1;
139 if (int.TryParse (_nameOrId, out entityId)) {
140 ClientInfo ci = GetClientInfoFromEntityID (entityId);
141 if (ci != null)
142 return ci;
143 }
144
145 return GetClientInfoFromPlayerName (_nameOrId, ignoreColorcodes);
146 } catch (Exception e) {
147 Log.Out ("Error getting ClientInfo for entity ID or player name: " + e);
148 }
149 return null;
150 }
151
152 public static ClientInfo GetClientInfoFromSteamID (string _steamId)
153 {
154 try {
155 Dictionary<string, object> uToID = Authenticator.Instance.usersToIDs;
156 foreach (KeyValuePair<string, object> kvp in uToID) {
157 string curId = string.Empty + ((SteamID)kvp.Value).AsUInt64;
158 if (curId.Equals (_steamId)) {
159 return GetClientInfoFromPlayerName (kvp.Key, false);
160 }
161 }
162 } catch (Exception e) {
163 Log.Out ("Error getting ClientInfo for steam ID: " + e);
164 }
165 return null;
166 }
167
168 }
169}
Note: See TracBrowser for help on using the repository browser.