source: binary-improvements/MapRendering/Web/API/GetLandClaims.cs @ 244

Last change on this file since 244 was 244, checked in by alloc, 5 years ago

Fixes intermediate state

File size: 2.3 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 GetLandClaims : WebAPI
10        {
11                public override void HandleRequest (HttpListenerRequest req, HttpListenerResponse resp, WebConnection user, int permissionLevel)
12                {
13                        string steamid = string.Empty;
14
15                        if (req.QueryString ["steamid"] != null) {
16                                long tempLong;
17                                steamid = req.QueryString ["steamid"];
18                                if (steamid.Length != 17 || !long.TryParse (steamid, out tempLong)) {
19                                        resp.StatusCode = (int)HttpStatusCode.BadRequest;
20                                        Web.SetResponseTextContent (resp, "Invalid SteamID given");
21                                        return;
22                                }
23                        }
24
25                        JSONObject result = new JSONObject ();
26                        result.Add ("claimsize", new JSONNumber (GamePrefs.GetInt (EnumGamePrefs.LandClaimSize)));
27
28                        JSONArray claimOwners = new JSONArray ();
29                        result.Add ("claimowners", claimOwners);
30
31                        Dictionary<Vector3i, PersistentPlayerData> d = GameManager.Instance.GetPersistentPlayerList ().m_lpBlockMap;
32                        if (d != null) {
33                                World w = GameManager.Instance.World;
34                                Dictionary<PersistentPlayerData, List<Vector3i>> owners = new Dictionary<PersistentPlayerData, List<Vector3i>> ();
35                                foreach (KeyValuePair<Vector3i, PersistentPlayerData> kvp in d) {
36                                        if (steamid.Length == 0 || kvp.Value.PlayerId.Equals (steamid)) {
37                                                if (!owners.ContainsKey (kvp.Value)) {
38                                                        owners.Add (kvp.Value, new List<Vector3i> ());
39                                                }
40                                                owners [kvp.Value].Add (kvp.Key);
41                                        }
42                                }
43
44                                foreach (KeyValuePair<PersistentPlayerData, List<Vector3i>> kvp in owners) {
45                                        if (steamid.Length == 0 || kvp.Key.PlayerId.Equals (steamid)) {
46                                                string curID = kvp.Key.PlayerId;
47                                                bool isActive = w.IsLandProtectionValidForPlayer (kvp.Key);
48
49                                                JSONObject owner = new JSONObject ();
50                                                claimOwners.Add (owner);
51
52                                                owner.Add ("steamid", new JSONString (curID));
53                                                owner.Add ("claimactive", new JSONBoolean (isActive));
54
55                                                JSONArray claims = new JSONArray ();
56                                                owner.Add ("claims", claims);
57
58                                                foreach (Vector3i v in kvp.Value) {
59                                                        JSONObject claim = new JSONObject ();
60                                                        claim.Add ("x", new JSONNumber (v.x));
61                                                        claim.Add ("y", new JSONNumber (v.y));
62                                                        claim.Add ("z", new JSONNumber (v.z));
63
64                                                        claims.Add (claim);
65                                                }
66                                        }
67                                }
68                        }
69
70                        WriteJSON (resp, result);
71                }
72        }
73}
74
Note: See TracBrowser for help on using the repository browser.