...
This commit is contained in:
parent
5dad7572b7
commit
01144b2bd4
26
src/client/client.zig
Normal file
26
src/client/client.zig
Normal file
@ -0,0 +1,26 @@
|
||||
const std = @import("std");
|
||||
|
||||
const ConnectState = union(enum) {
|
||||
disconnected,
|
||||
connecting,
|
||||
connected: std.net.Stream,
|
||||
err: anyerror,
|
||||
};
|
||||
|
||||
const Client = struct {
|
||||
state: ConnectState = .disconnected,
|
||||
|
||||
pub fn startConnect(self: *Client, addr: std.net.Address) void {
|
||||
if (self.state == .connecting or self.state == .connected)
|
||||
return;
|
||||
|
||||
self.state = .connecting;
|
||||
|
||||
const stream = std.net.tcpConnectToAddress(addr) catch |err| {
|
||||
self.state = .{ .err = err };
|
||||
return;
|
||||
};
|
||||
|
||||
self.state = .{ .connected = stream };
|
||||
}
|
||||
};
|
||||
30
src/server/chunk.zig
Normal file
30
src/server/chunk.zig
Normal file
@ -0,0 +1,30 @@
|
||||
const std = @import("std");
|
||||
const shared = @import("shared");
|
||||
const server = @import("server.zig");
|
||||
|
||||
pub fn spawn(chunk: *shared.chunk.Chunk(), comptime T: type, allocator: std.mem.Allocator, value: T, w: *std.Io.Writer) !void {
|
||||
const id = server.next_entity_id;
|
||||
server.next_entity_id += 1;
|
||||
|
||||
var entity = value;
|
||||
entity.id = id;
|
||||
|
||||
inline for (@typeInfo(shared.chunk.Chunk()).@"struct".fields) |field| {
|
||||
if (field.type == shared.chunk.Storage(T)) {
|
||||
try @field(chunk, field.name).items.append(allocator, entity);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// serialize entity
|
||||
var buffer: [64]u8 = undefined;
|
||||
var fbs = std.io.fixedBufferStream(&buffer);
|
||||
try T.encode(entity, fbs.writer());
|
||||
|
||||
try shared.protocol.write_message(
|
||||
w,
|
||||
.spawn_entity,
|
||||
fbs.getWritten(),
|
||||
);
|
||||
try w.flush();
|
||||
}
|
||||
3
src/server/server.zig
Normal file
3
src/server/server.zig
Normal file
@ -0,0 +1,3 @@
|
||||
const shared = @import("shared");
|
||||
|
||||
pub var next_entity_id: shared.entity.entity_id = 1;
|
||||
Loading…
x
Reference in New Issue
Block a user