mirror of
https://github.com/simtactics/mysimulation.git
synced 2025-03-15 14:51:21 +00:00
- NioTSO client isn't needed because we're using RayLib - Added FreeSO's API server to handle most backend operations
97 lines
2.5 KiB
C#
Executable file
97 lines
2.5 KiB
C#
Executable file
using System;
|
|
using System.Collections.Generic;
|
|
using Newtonsoft.Json;
|
|
using System.IO;
|
|
using Newtonsoft.Json.Converters;
|
|
using FSO.Server.Common;
|
|
using FSO.Common.Utils;
|
|
using tso.debug.network;
|
|
|
|
namespace FSO.Server.Debug
|
|
{
|
|
public class NetworkStash
|
|
{
|
|
|
|
private static JsonSerializerSettings SETTINGS;
|
|
|
|
static NetworkStash()
|
|
{
|
|
SETTINGS = new JsonSerializerSettings();
|
|
SETTINGS.Formatting = Formatting.Indented;
|
|
SETTINGS.Converters.Add(new StringEnumConverter());
|
|
}
|
|
|
|
|
|
|
|
private string Dir;
|
|
public List<NetworkStashItem> Items;
|
|
|
|
|
|
public NetworkStash(string dir)
|
|
{
|
|
this.Dir = dir;
|
|
this.Items = new List<NetworkStashItem>();
|
|
if (!Directory.Exists(dir))
|
|
{
|
|
Directory.CreateDirectory(dir);
|
|
}
|
|
|
|
|
|
string[] files = Directory.GetFiles(dir);
|
|
foreach (var file in files)
|
|
{
|
|
if (file.EndsWith(".json"))
|
|
{
|
|
var parsedItem = JsonConvert.DeserializeObject<NetworkStashItem>(File.ReadAllText(file), SETTINGS);
|
|
this.Items.Add(parsedItem);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Add(string name, RawPacketReference[] packets)
|
|
{
|
|
var item = new NetworkStashItem();
|
|
item.Name = name;
|
|
item.Packets = new List<NetworkStashItemPacket>();
|
|
|
|
foreach (var packet in packets)
|
|
{
|
|
item.Packets.Add(new NetworkStashItemPacket {
|
|
Type = packet.Packet.Type,
|
|
SubType = (ushort)packet.Packet.SubType,
|
|
Data = packet.Packet.Data,
|
|
Direction = packet.Packet.Direction
|
|
});
|
|
}
|
|
|
|
this.Items.Add(item);
|
|
|
|
var jsonData = JsonConvert.SerializeObject(item, SETTINGS);
|
|
File.WriteAllText(Path.Combine(Dir, "stash-" + DateTime.Now.Ticks + ".json"), jsonData);
|
|
}
|
|
}
|
|
|
|
public class NetworkStashItem
|
|
{
|
|
[JsonProperty]
|
|
public string Name;
|
|
|
|
[JsonProperty]
|
|
public List<NetworkStashItemPacket> Packets;
|
|
}
|
|
|
|
public class NetworkStashItemPacket
|
|
{
|
|
[JsonProperty]
|
|
public PacketType Type;
|
|
|
|
[JsonProperty]
|
|
public uint SubType;
|
|
|
|
[JsonProperty]
|
|
public PacketDirection Direction;
|
|
|
|
[JsonConverter(typeof(Base64JsonConverter))]
|
|
public byte[] Data;
|
|
}
|
|
}
|