source: TFP-WebServer/WebServer/src/WebAPI/APIs/WorldState/Hostile.cs@ 477

Last change on this file since 477 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
RevLine 
[391]1using System.Collections.Generic;
2using JetBrains.Annotations;
[402]3using Utf8Json;
4using Webserver.LiveData;
[391]5
[434]6namespace Webserver.WebAPI.APIs.WorldState {
[391]7 [UsedImplicitly]
[402]8 internal class Hostile : AbsRestApi {
9 private readonly List<EntityEnemy> entities = new List<EntityEnemy> ();
[391]10
[402]11 private static readonly byte[] jsonKeyId = JsonWriter.GetEncodedPropertyNameWithBeginObject ("id");
[414]12 private static readonly byte[] jsonKeyName = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("name");
13 private static readonly byte[] jsonKeyPosition = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("position");
[391]14
[402]15 protected override void HandleRestGet (RequestContext _context) {
16 PrepareEnvelopedResult (out JsonWriter writer);
17 writer.WriteBeginArray ();
18
19 lock (entities) {
20 Hostiles.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 : $"enemy class #{entity.entityClass}");
35
36 writer.WriteRaw (jsonKeyPosition);
[444]37 JsonCommons.WriteVector3I (ref writer, position);
[391]38
[402]39 writer.WriteEndObject ();
[391]40 }
41 }
[402]42
43 writer.WriteEndArray ();
44 SendEnvelopedResult (_context, ref writer);
[391]45 }
46 }
[402]47}
Note: See TracBrowser for help on using the repository browser.