Files
sfall/MPClient/EditorConnection.cs
T
NovaRain 9ec8a12288 Added setting array values for the debug editor.
Updates to sfall debug editor (part 1)
2019-04-05 13:03:08 +08:00

114 lines
3.9 KiB
C#

using System;
using System.Net.Sockets;
using System.IO;
namespace FalloutClient {
class EditorConnection
{
private TcpClient client;
private NetworkStream stream;
private BinaryReader br;
private BinaryWriter bw;
public readonly int[] Globals;
public readonly int[] MapVars;
public readonly uint[,] Critters;
public readonly ulong[] SGlobalKeys;
public readonly int[] sGlobals;
public readonly uint[] Arrays;
public readonly int[] ArrayLengths;
public readonly int[] ArrayFlag;
public readonly bool[] ArrayIsMap;
public EditorConnection() {
System.Threading.Thread.Sleep(1000);
client = new TcpClient("127.0.0.1", 4245);
stream = client.GetStream();
br = new BinaryReader(stream);
bw = new BinaryWriter(stream);
Globals = new int[br.ReadInt32()];
MapVars = new int[br.ReadInt32()];
SGlobalKeys = new ulong[br.ReadInt32()];
sGlobals = new int[SGlobalKeys.Length];
Arrays = new uint[br.ReadInt32()];
ArrayLengths = new int[Arrays.Length];
ArrayFlag = new int[Arrays.Length];
ArrayIsMap = new bool[Arrays.Length];
Critters = new uint[br.ReadInt32(), 2];
for (int i = 0; i < Globals.Length; i++) Globals[i] = br.ReadInt32();
for (int i = 0; i < MapVars.Length; i++) MapVars[i] = br.ReadInt32();
for (int i = 0; i < sGlobals.Length; i++) {
SGlobalKeys[i] = br.ReadUInt64();
sGlobals[i] = br.ReadInt32();
br.ReadInt32();
}
for (int i = 0; i < Arrays.Length; i++) {
Arrays[i] = br.ReadUInt32();
ArrayIsMap[i] = (br.ReadInt32() != 0);
ArrayLengths[i] = br.ReadInt32();
ArrayFlag[i] = br.ReadInt32();
}
for (int i = 0; i < Critters.Length / 2; i++) {
Critters[i, 0] = br.ReadUInt32();
Critters[i, 1] = br.ReadUInt32();
}
}
public void Close() {
stream.Close();
client.Close();
stream = null;
client = null;
}
public void WriteDataType(DataTypeSend type) {
stream.WriteByte((byte)type);
//bw.Write((byte)type);
}
public void WriteByte(byte b) { bw.Write(b); }
public void WriteInt16(short value) { bw.Write(value); }
public void WriteInt(int value) { bw.Write(value); }
public void WriteBytes(byte[] buf) { bw.Write(buf); }
public void WriteBytes(byte[] buf, int start, int len) {
bw.Write(buf, start, len);
}
public void Read(byte[] buffer) {
int upto = 0;
while (upto < buffer.Length) {
upto += stream.Read(buffer, upto, buffer.Length - upto);
}
}
public void Read(byte[] buffer, int offset, int length) {
int upto = 0;
//System.Diagnostics.Debug.WriteLine("Read - offset: "+offset+" length: "+length);
while (upto < length) {
upto += stream.Read(buffer, offset + upto, length - upto);
}
}
public int ReadByte() {
//System.Diagnostics.Debug.WriteLine("Read byte");
return stream.ReadByte();
}
public int ReadShort() {
//System.Diagnostics.Debug.WriteLine("Read short");
return br.ReadInt16();
}
public int ReadInt() {
//System.Diagnostics.Debug.WriteLine("Read int");
return br.ReadInt32();
}
public uint ReadUInt() {
//System.Diagnostics.Debug.WriteLine("Read uint");
return br.ReadUInt32();
}
public byte[] ReadBytes(int count) {
return br.ReadBytes(count);
}
}
}