source: TFP-WebServer/WebServer/src/WebAPI/APIs/WorldState/Animal.cs@ 474

Last change on this file since 474 was 444, checked in by alloc, 18 months ago

Added more details to API map/config
Updated web files to 0.7.0

File size: 1.6 KB
Line 
1using System.Collections.Generic;
2using JetBrains.Annotations;
3using Utf8Json;
4using Webserver.LiveData;
5
6namespace Webserver.WebAPI.APIs.WorldState {
7 [UsedImplicitly]
8 internal class Animal : AbsRestApi {
9 private readonly List<EntityAnimal> entities = new List<EntityAnimal> ();
10
11 private static readonly byte[] jsonKeyId = JsonWriter.GetEncodedPropertyNameWithBeginObject ("id");
12 private static readonly byte[] jsonKeyName = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("name");
13 private static readonly byte[] jsonKeyPosition = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("position");
14
15 protected override void HandleRestGet (RequestContext _context) {
16 PrepareEnvelopedResult (out JsonWriter writer);
17 writer.WriteBeginArray ();
18
19 lock (entities) {
20 Animals.Instance.Get (entities);
21
22 for (int i = 0; i < entities.Count; i++) {
23 if (i > 0) {
24 writer.WriteValueSeparator ();
25 }
26
27 EntityAlive entity = entities [i];
28 Vector3i position = new Vector3i (entity.GetPosition ());
29
30 writer.WriteRaw (jsonKeyId);
31 writer.WriteInt32 (entity.entityId);
32
33 writer.WriteRaw (jsonKeyName);
34 writer.WriteString (!string.IsNullOrEmpty (entity.EntityName) ? entity.EntityName : $"animal class #{entity.entityClass}");
35
36 writer.WriteRaw (jsonKeyPosition);
37 JsonCommons.WriteVector3I (ref writer, position);
38
39 writer.WriteEndObject ();
40 }
41 }
42
43 writer.WriteEndArray ();
44 SendEnvelopedResult (_context, ref writer);
45 }
46 }
47}
Note: See TracBrowser for help on using the repository browser.