Ignore:
Timestamp:
Jun 17, 2024, 5:25:43 PM (5 months ago)
Author:
alloc
Message:

1.1.0.1 Release for V 1.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TFP-WebServer/MarkersMod/src/Markers.cs

    r459 r487  
    1515                        "https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Blue_question_mark_icon.svg/1200px-Blue_question_mark_icon.svg.png";
    1616               
    17                 private readonly Dictionary<string, (int, int, string)> markers = new Dictionary<string, (int, int, string)> ();
     17                private readonly Dictionary<string, MarkerData> markers = new Dictionary<string, MarkerData> ();
    1818
    1919                public Markers () {
     
    2424                                int y = random.RandomRange (-1000, 1001);
    2525
    26                                 markers.Add (WebUtils.GenerateGuid (), (x, y, null));
     26                                string guid = WebUtils.GenerateGuid ();
     27                                markers.Add (guid, new MarkerData(guid, new Vector2i (x, y), "RandomMarker " + i, null));
    2728                        }
    2829                       
     
    3334                private static readonly byte[] jsonKeyX = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("x");
    3435                private static readonly byte[] jsonKeyY = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("y");
     36                private static readonly byte[] jsonKeyName = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("name");
    3537                private static readonly byte[] jsonKeyIcon = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("icon");
    3638
     
    4446
    4547                                bool first = true;
    46                                 foreach ((string markerId, (int, int, string) properties) in markers) {
     48                                foreach ((_, MarkerData iMarker) in markers) {
    4749                                        if (!first) {
    4850                                                writer.WriteValueSeparator ();
     
    5153                                        first = false;
    5254                                       
    53                                         writeMarkerJson (ref writer, markerId, properties);
     55                                        writeMarkerJson (ref writer, iMarker);
    5456                                }
    5557
     
    5961                        }
    6062
    61                         if (!markers.TryGetValue (id, out (int, int, string) properties2)) {
     63                        if (!markers.TryGetValue (id, out MarkerData singleMarker)) {
    6264                                writer.WriteRaw (WebUtils.JsonEmptyData);
    6365                                SendEnvelopedResult (_context, ref writer, HttpStatusCode.NotFound);
     
    6870                                writer.WriteBeginArray ();
    6971                               
    70                                 writeMarkerJson (ref writer, id, properties2);
     72                                writeMarkerJson (ref writer, singleMarker);
    7173                               
    7274                                writer.WriteEndArray ();
     
    7577                }
    7678
    77                 private void writeMarkerJson (ref JsonWriter _writer, string _markerId, (int, int, string) _properties) {
     79                private void writeMarkerJson (ref JsonWriter _writer, MarkerData _marker) {
    7880                        _writer.WriteRaw (jsonKeyId);
    79                         _writer.WriteString (_markerId);
     81                        _writer.WriteString (_marker.Id);
    8082                        _writer.WriteRaw (jsonKeyX);
    81                         (int x, int y, string icon) = _properties;
    82                         _writer.WriteInt32 (x);
     83                        _writer.WriteInt32 (_marker.Position.x);
    8384                        _writer.WriteRaw (jsonKeyY);
    84                         _writer.WriteInt32 (y);
     85                        _writer.WriteInt32 (_marker.Position.y);
     86                        _writer.WriteRaw (jsonKeyName);
     87                        _writer.WriteString (_marker.Name);
    8588                        _writer.WriteRaw (jsonKeyIcon);
    86                         _writer.WriteString (icon ?? defaultIcon);
     89                        _writer.WriteString (_marker.Icon ?? defaultIcon);
    8790                        _writer.WriteEndObject ();
    8891                }
     
    99102                        }
    100103
     104                        JsonCommons.TryGetJsonField (_jsonInput, "name", out string name);
     105                        if (string.IsNullOrEmpty (name)) {
     106                                name = null;
     107                        }
     108
    101109                        JsonCommons.TryGetJsonField (_jsonInput, "icon", out string icon);
    102110                        if (string.IsNullOrEmpty (icon)) {
     
    105113
    106114                        string newId = WebUtils.GenerateGuid ();
    107                         markers.Add (newId, (x, y, icon));
     115                        markers.Add (newId, new MarkerData(newId, new Vector2i (x, y), name, icon));
    108116
    109117                        PrepareEnvelopedResult (out JsonWriter writer);
     
    123131                        }
    124132
    125                         bool keepIcon = !_jsonInput.TryGetValue ("icon", out _);
    126                         JsonCommons.TryGetJsonField (_jsonInput, "icon", out string icon);
    127                         if (string.IsNullOrEmpty (icon)) {
    128                                 icon = null;
    129                         }
     133                        bool keepName = !JsonCommons.TryGetJsonField (_jsonInput, "name", out string name);
     134
     135                        bool keepIcon = !JsonCommons.TryGetJsonField (_jsonInput, "icon", out string icon);
    130136
    131137                        string id = _context.RequestPath;
    132138
    133                         if (!markers.TryGetValue (id, out (int, int, string) properties)) {
     139                        if (!markers.TryGetValue (id, out MarkerData oldMarker)) {
    134140                                SendEmptyResponse (_context, HttpStatusCode.NotFound, _jsonInputData, "ID_NOT_FOUND");
    135141                                return;
    136142                        }
    137143
     144                        if (keepName) {
     145                                name = oldMarker.Name;
     146                        }
     147                       
    138148                        if (keepIcon) {
    139                                 icon = properties.Item3;
     149                                icon = oldMarker.Icon;
    140150                        }
    141                         markers [id] = (x, y, icon);
     151
     152                        MarkerData updatedMarker = new MarkerData(id, new Vector2i (x, y), name, icon);
     153                        markers [id] = updatedMarker;
    142154
    143155                        PrepareEnvelopedResult (out JsonWriter writer);
    144                         writer.WriteRaw (jsonKeyId);
    145                         writer.WriteString (id);
    146                         writer.WriteRaw (jsonKeyX);
    147                         writer.WriteInt32 (x);
    148                         writer.WriteRaw (jsonKeyY);
    149                         writer.WriteInt32 (y);
    150                         writer.WriteRaw (jsonKeyIcon);
    151                         writer.WriteString (icon);
    152                         writer.WriteEndObject ();
     156                        writeMarkerJson (ref writer, updatedMarker);
    153157                        SendEnvelopedResult (_context, ref writer);
    154158                }
Note: See TracChangeset for help on using the changeset viewer.