source: binary-improvements/MapRendering/Web/API/GetPlayersOnline.cs @ 324

Last change on this file since 324 was 324, checked in by alloc, 3 years ago

A17 compatibility changes

File size: 2.1 KB
Line 
1using AllocsFixes.JSON;
2using AllocsFixes.PersistentData;
3using System;
4using System.Collections.Generic;
5using System.Net;
6
7namespace AllocsFixes.NetConnections.Servers.Web.API
8{
9        public class GetPlayersOnline : WebAPI
10        {
11                public override void HandleRequest (HttpListenerRequest req, HttpListenerResponse resp, WebConnection user, int permissionLevel)
12                {
13                        JSONArray players = new JSONArray();
14
15                        World w = GameManager.Instance.World;
16                        foreach (KeyValuePair<int, EntityPlayer> current in w.Players.dict) {
17                                ClientInfo ci = ConnectionManager.Instance.Clients.ForEntityId (current.Key);
18                                Player player = PersistentContainer.Instance.Players [ci.playerId, false];
19
20                                JSONObject pos = new JSONObject();
21                                pos.Add ("x", new JSONNumber ((int)current.Value.GetPosition ().x));
22                                pos.Add ("y", new JSONNumber ((int)current.Value.GetPosition ().y));
23                                pos.Add ("z", new JSONNumber ((int)current.Value.GetPosition ().z));
24
25                                JSONObject p = new JSONObject();
26                                p.Add ("steamid", new JSONString (ci.playerId));
27                                p.Add ("entityid", new JSONNumber (ci.entityId));
28                                p.Add ("ip", new JSONString (ci.ip));
29                                p.Add ("name", new JSONString (current.Value.EntityName));
30                                p.Add ("online", new JSONBoolean (true));
31                                p.Add ("position", pos);
32
33                                // Deprecated!
34                                p.Add ("experience", new JSONNumber (-1));
35
36                                p.Add ("level", new JSONNumber (player != null ? player.Level : -1));
37                                p.Add ("health", new JSONNumber (current.Value.Health));
38                                p.Add ("stamina", new JSONNumber (current.Value.Stamina));
39                                p.Add ("zombiekills", new JSONNumber (current.Value.KilledZombies));
40                                p.Add ("playerkills", new JSONNumber (current.Value.KilledPlayers));
41                                p.Add ("playerdeaths", new JSONNumber (current.Value.Died));
42                                p.Add ("score", new JSONNumber (current.Value.Score));
43
44                                p.Add ("totalplaytime", new JSONNumber (player != null ? player.TotalPlayTime : -1));
45                                p.Add ("lastonline", new JSONString (player != null ? player.LastOnline.ToString ("s") : string.Empty));
46                                p.Add ("ping", new JSONNumber (ci != null ? ci.ping : -1));
47
48                                players.Add(p);
49                        }
50
51                        WriteJSON(resp, players);
52                }
53        }
54}
55
Note: See TracBrowser for help on using the repository browser.