Starbound/attic/old_tests/net_test.cpp
2025-03-21 22:23:30 +11:00

85 lines
2.6 KiB
C++

#include "StarNetStates.hpp"
using namespace Star;
void testStepSendReceive() {
NetSchema schema;
schema.addFixedPointField("position_x", NetType::VarInt, 0.1);
schema.addFixedPointField("position_y", NetType::VarInt, 0.1);
schema.finalize();
NetStepSender sender(schema);
sender.setStep(0);
sender.setFloat("position_x", 100.783);
sender.setFloat("position_y", 50.134);
ByteArray s1 = sender.writeFull();
coutf("sent packet of %s bytes\n", s1.size());
sender.setStep(1);
sender.setFloat("position_x", 100.5);
sender.setFloat("position_y", 49.938);
ByteArray s2 = sender.writeDelta(0);
coutf("sent packet of %s bytes\n", s2.size());
sender.setStep(2);
sender.setFloat("position_x", 100.289);
ByteArray s3 = sender.writeDelta(1);
coutf("sent packet of %s bytes\n", s3.size());
NetReceiver receiver(schema);
receiver.readFull(s1);
coutf("First value received (%s, %s)\n", receiver.getFloat("position_x"), receiver.getFloat("position_y"));
receiver.readDelta(s2);
coutf("Second value received (%s, %s)\n", receiver.getFloat("position_x"), receiver.getFloat("position_y"));
receiver.readDelta(s3);
coutf("Third value received (%s, %s)\n", receiver.getFloat("position_x"), receiver.getFloat("position_y"));
}
void testSyncSendReceive() {
DataStreamBuffer bufferStream;
NetSchema schema;
schema.addFixedPointField("position_x", NetType::VarInt, 0.1);
schema.addFixedPointField("position_y", NetType::VarInt, 0.1);
schema.finalize();
NetSyncSender sender(schema);
sender.setFloat("position_x", 100.783);
sender.setFloat("position_y", 50.134);
size_t s1 = sender.writeFull(bufferStream);
coutf("sent packet of %s bytes\n", s1);
sender.setFloat("position_x", 100.5);
sender.setFloat("position_y", 49.938);
size_t s2 = sender.writeDelta(bufferStream);
coutf("sent packet of %s bytes\n", s2);
sender.setFloat("position_x", 100.289);
size_t s3 = sender.writeDelta(bufferStream);
coutf("sent packet of %s bytes\n", s3);
bufferStream.seek(0);
NetReceiver receiver(schema);
receiver.readFull(bufferStream, s1);
coutf("First value received (%s, %s)\n", receiver.getFloat("position_x"), receiver.getFloat("position_y"));
receiver.readDelta(bufferStream, s2);
coutf("Second value received (%s, %s)\n", receiver.getFloat("position_x"), receiver.getFloat("position_y"));
receiver.readDelta(bufferStream, s3);
coutf("Third value received (%s, %s)\n", receiver.getFloat("position_x"), receiver.getFloat("position_y"));
}
int main(int argc, char** argv) {
testStepSendReceive();
testSyncSendReceive();
return 0;
}