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

Last change on this file since 129 was 128, checked in by alloc, 10 years ago

Fixes

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