mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
104 lines
3.6 KiB
C#
104 lines
3.6 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[] ArrayDataSizes;
|
|
|
|
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];
|
|
ArrayDataSizes=new int[Arrays.Length];
|
|
Critters=new uint[br.ReadInt32()];
|
|
|
|
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();
|
|
ArrayLengths[i]=br.ReadInt32();
|
|
ArrayDataSizes[i]=br.ReadInt32();
|
|
}
|
|
for(int i=0;i<Critters.Length;i++) Critters[i]=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);
|
|
}
|
|
}
|
|
}
|