i don't know
This commit is contained in:
parent
35bbc5cbfd
commit
077ceb810e
@ -2,21 +2,29 @@ const rl = @import("raylib");
|
||||
const shared = @import("shared");
|
||||
const zm = @import("zmath");
|
||||
|
||||
pub const Elf = struct {
|
||||
elf: shared.entity.Elf,
|
||||
// pub const Elf = struct {
|
||||
// elf: shared.entity.Elf,
|
||||
|
||||
boy: rl.Texture,
|
||||
// boy: rl.Texture,
|
||||
|
||||
pub fn init() Elf {
|
||||
return .{
|
||||
.elf = .{ .hp = 10, .pos = zm.f32x4(0, 0, 0, 0) },
|
||||
.boy = rl.loadTexture("assets/tile_0000.png") catch unreachable,
|
||||
};
|
||||
}
|
||||
// pub fn init() Elf {
|
||||
// return .{
|
||||
// .elf = .{ .hp = 10, .pos = zm.f32x4(0, 0, 0, 0) },
|
||||
// .boy = rl.loadTexture("assets/tile_0000.png") catch unreachable,
|
||||
// };
|
||||
// }
|
||||
|
||||
pub fn draw(self: *Elf) void {
|
||||
const src = rl.Rectangle.init(0, 0, @floatFromInt(self.boy.width), @floatFromInt(self.boy.height));
|
||||
const dst = rl.Rectangle.init(100 + 100 * zm.cos(@as(f32, @floatCast(rl.getTime()))), 100 + 100 * zm.sin(@as(f32, @floatCast(rl.getTime()))), 2.0 * @as(f32, @floatFromInt(self.boy.width)), 2.0 * @as(f32, @floatFromInt(self.boy.height)));
|
||||
self.boy.drawPro(src, dst, .{ .x = 0, .y = 0 }, 0, .white);
|
||||
}
|
||||
};
|
||||
// pub fn draw(self: *Elf) void {
|
||||
// const src = rl.Rectangle.init(0, 0, @floatFromInt(self.boy.width), @floatFromInt(self.boy.height));
|
||||
// const dst = rl.Rectangle.init(100 + 100 * zm.cos(@as(f32, @floatCast(rl.getTime()))), 100 + 100 * zm.sin(@as(f32, @floatCast(rl.getTime()))), 2.0 * @as(f32, @floatFromInt(self.boy.width)), 2.0 * @as(f32, @floatFromInt(self.boy.height)));
|
||||
// self.boy.drawPro(src, dst, .{ .x = 0, .y = 0 }, 0, .white);
|
||||
// }
|
||||
// };
|
||||
|
||||
pub fn draw_soldier(self: *shared.entity.Soldier) void {
|
||||
|
||||
}
|
||||
|
||||
pub fn draw_alien(self: *shared.entity.Alien) void {
|
||||
|
||||
}
|
||||
|
||||
@ -179,6 +179,18 @@ pub fn main() !void {
|
||||
|
||||
// const lorem = @embedFile("embeds/lorem.txt");
|
||||
|
||||
|
||||
for (the_chunk.entities.items) |e| {
|
||||
switch (e) {
|
||||
.Soldier => |soldier| {
|
||||
entity.render_soldier(soldier);
|
||||
},
|
||||
.Alien => |alien| {
|
||||
entity.render_alien(alien);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vollkorn[0].render_text(
|
||||
"The night is long and cold outside.",
|
||||
rl.Vector2{ .x = 0, .y = 0 },
|
||||
@ -188,7 +200,6 @@ pub fn main() !void {
|
||||
false,
|
||||
true
|
||||
);
|
||||
|
||||
// rl.beginShaderMode(test_shader1);
|
||||
// rl.gl.rlBegin(rl.gl.rl_quads);
|
||||
|
||||
@ -352,9 +363,9 @@ fn on_message(allocator: std.mem.Allocator, msg: shared.protocol_v1.Message) !vo
|
||||
}
|
||||
}
|
||||
|
||||
fn on_spawn_entity(allocator: std.mem.Allocator, se: shared.protocol_v1.SpawnEntity) !void {
|
||||
fn on_spawn_entity(allocator: std.mem.Allocator, p: shared.protocol_v1.EntityPayload) !void {
|
||||
// _ = allocator; _ = se;
|
||||
switch (se) {
|
||||
switch (p) {
|
||||
.soldier => |s| {
|
||||
const soldier = shared.entity.Soldier{
|
||||
.id = s.id,
|
||||
@ -375,8 +386,8 @@ fn on_spawn_entity(allocator: std.mem.Allocator, se: shared.protocol_v1.SpawnEnt
|
||||
}
|
||||
}
|
||||
|
||||
fn on_update_entity(ue: shared.protocol_v1.UpdateEntity) void {
|
||||
switch (ue) {
|
||||
fn on_update_entity(p: shared.protocol_v1.EntityPayload) void {
|
||||
switch (p) {
|
||||
.soldier => |s| {
|
||||
if (chunk.findT(&the_chunk, shared.entity.Soldier, s.id)) |soldier| {
|
||||
soldier.hp = s.hp;
|
||||
@ -393,8 +404,8 @@ fn on_update_entity(ue: shared.protocol_v1.UpdateEntity) void {
|
||||
}
|
||||
}
|
||||
|
||||
fn on_despawn_entity(allocator: std.mem.Allocator, de: shared.protocol_v1.DespawnEntity) void {
|
||||
switch (de) {
|
||||
fn on_despawn_entity(allocator: std.mem.Allocator, p: shared.protocol_v1.EntityPayload) void {
|
||||
switch (p) {
|
||||
.soldier => |s| { _ = chunk.despawn(&the_chunk, allocator, s.id); },
|
||||
.alien => |a| { _ = chunk.despawn(&the_chunk, allocator, a.id); },
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ pub fn broadcastChanges(chunk: *shared.chunk.Chunk, allocator: std.mem.Allocator
|
||||
var writer = shared.bits.BitWriter.init(&aw);
|
||||
|
||||
for (chunk.entities.items) |e| {
|
||||
const msg = shared.protocol_v1.makeUpdateMessage(e);
|
||||
const msg = shared.protocol_v1.makeMessage(.update_entity, e);
|
||||
try writer.serialize(allocator, msg);
|
||||
}
|
||||
|
||||
|
||||
@ -158,7 +158,7 @@ fn on_connect(allocator: std.mem.Allocator, host: *enet.ENetHost, peer: *enet.EN
|
||||
var writer = shared.bits.BitWriter.init(&aw);
|
||||
|
||||
for (the_chunk.entities.items) |e| {
|
||||
const msg = shared.protocol_v1.makeSpawnMessage(e);
|
||||
const msg = shared.protocol_v1.makeMessage(.spawn_entity, e);
|
||||
try writer.serialize(allocator, msg);
|
||||
}
|
||||
|
||||
|
||||
@ -14,52 +14,39 @@ const MessageKind = enum(c_char) {
|
||||
};
|
||||
|
||||
pub const Message = union(MessageKind) {
|
||||
spawn_entity: SpawnEntity,
|
||||
update_entity: UpdateEntity,
|
||||
despawn_entity: DespawnEntity,
|
||||
spawn_entity: EntityPayload,
|
||||
update_entity: EntityPayload,
|
||||
despawn_entity: EntityPayload,
|
||||
};
|
||||
|
||||
|
||||
pub fn makeMessage(kind: MessageKind, e: anytype) Message {
|
||||
const payload = payloadFromEntity(e);
|
||||
|
||||
return switch (kind) {
|
||||
.spawn_entity => .{ .spawn_entity = payload },
|
||||
.update_entity => .{ .update_entity = payload },
|
||||
.despawn_entity => .{ .despawn_entity = payload },
|
||||
};
|
||||
}
|
||||
|
||||
pub fn payloadFromEntity(e: entity.Ref) EntityPayload {
|
||||
return switch (e) {
|
||||
.Soldier => |s| .{ .soldier = Soldier.init(s.*) },
|
||||
.Alien => |a| .{ .alien = Alien.init(a.*) },
|
||||
};
|
||||
}
|
||||
|
||||
const EntityKind = enum(c_char) {
|
||||
soldier,
|
||||
alien,
|
||||
};
|
||||
|
||||
pub const SpawnEntity = union(EntityKind) {
|
||||
pub const EntityPayload = union(EntityKind) {
|
||||
soldier: Soldier,
|
||||
alien: Alien,
|
||||
};
|
||||
|
||||
pub const UpdateEntity = union(EntityKind) {
|
||||
soldier: Soldier,
|
||||
alien: Alien,
|
||||
};
|
||||
|
||||
pub const DespawnEntity = union(EntityKind) {
|
||||
soldier: Soldier,
|
||||
alien: Alien,
|
||||
};
|
||||
|
||||
pub fn makeSpawnMessage(e: entity.Ref) Message {
|
||||
switch (e) {
|
||||
.Soldier => |s| { return Soldier.makeSpawn(s.*); },
|
||||
.Alien => |a| { return Alien.makeSpawn(a.*); },
|
||||
}
|
||||
}
|
||||
|
||||
pub fn makeUpdateMessage(e: entity.Ref) Message {
|
||||
switch (e) {
|
||||
.Soldier => |s| { return Soldier.makeUpdate(s.*); },
|
||||
.Alien => |a| { return Alien.makeUpdate(a.*); },
|
||||
}
|
||||
}
|
||||
|
||||
pub fn makeDespawnMessage(e: entity.Ref) Message {
|
||||
switch (e) {
|
||||
.Soldier => |s| { return Soldier.makeDespawn(s.*); },
|
||||
.Alien => |a| { return Alien.makeDespawn(a.*); },
|
||||
}
|
||||
}
|
||||
|
||||
pub const Soldier = struct {
|
||||
id: entity.id = entity.INVALID_ID,
|
||||
hp: i32,
|
||||
@ -74,24 +61,6 @@ pub const Soldier = struct {
|
||||
.vel = soldier.vel,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn makeSpawn(soldier: entity.Soldier) Message {
|
||||
return .{
|
||||
.spawn_entity = .{ .soldier = init(soldier) }
|
||||
};
|
||||
}
|
||||
|
||||
pub fn makeUpdate(soldier: entity.Soldier) Message {
|
||||
return .{
|
||||
.update_entity = .{ .soldier = init(soldier) }
|
||||
};
|
||||
}
|
||||
|
||||
pub fn makeDespawn(soldier: entity.Soldier) Message {
|
||||
return .{
|
||||
.despawn_entity = .{ .soldier = init(soldier) }
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
pub const Alien = struct {
|
||||
@ -106,24 +75,6 @@ pub const Alien = struct {
|
||||
.hp = alien.hp,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn makeSpawn(alien: entity.Alien) Message {
|
||||
return .{
|
||||
.spawn_entity = .{ .alien = init(alien) }
|
||||
};
|
||||
}
|
||||
|
||||
pub fn makeUpdate(alien: entity.Alien) Message {
|
||||
return .{
|
||||
.update_entity = .{ .alien = init(alien) }
|
||||
};
|
||||
}
|
||||
|
||||
pub fn makeDespawn(alien: entity.Alien) Message {
|
||||
return .{
|
||||
.despawn_entity = .{ .alien = init(alien) }
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
test "Protocol" {
|
||||
@ -135,7 +86,7 @@ test "Protocol" {
|
||||
.vel = .{5, 6, 7, 8},
|
||||
};
|
||||
|
||||
const msg = makeSpawnMessage(s);
|
||||
const msg = makeMessage(.spawn_entity, s);
|
||||
|
||||
const allocator = std.testing.allocator;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user