chat msg testing

This commit is contained in:
jacob 2026-01-17 16:08:49 -06:00
parent f88c33e332
commit 847f36d81a
4 changed files with 57 additions and 32 deletions

View File

@ -16,7 +16,7 @@ Readonly P_Frame P_NilFrame = {
void P_Bootstrap(void) void P_Bootstrap(void)
{ {
P.s2u.arena = AcquireArena(Gibi(64)); P.s2v.arena = AcquireArena(Gibi(64));
} }
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////

View File

@ -306,14 +306,17 @@ Enum(P_MsgKind)
{ {
P_MsgKind_None, P_MsgKind_None,
// User -> sim // Server <-> Client
P_MsgKind_Chat,
// Client -> Server
// P_MsgKind_UserSnapshot, // P_MsgKind_UserSnapshot,
P_MsgKind_SaveWorld, P_MsgKind_SaveWorld,
P_MsgKind_ResetWorld, P_MsgKind_ResetWorld,
P_MsgKind_TileEdit, P_MsgKind_TileEdit,
P_MsgKind_EntEdit, P_MsgKind_EntEdit,
// Sim -> user // Server -> Client
// P_MsgKind_SimSnapshot, // P_MsgKind_SimSnapshot,
P_MsgKind_Tiles, P_MsgKind_Tiles,
}; };
@ -407,8 +410,8 @@ Struct(P_RaycastResult)
Struct(P_Ctx) Struct(P_Ctx)
{ {
// Sim -> User state // Sim -> Vis state
TicketMutex s2u_tm; TicketMutex s2v_tm;
struct struct
{ {
i64 gen; i64 gen;
@ -418,7 +421,7 @@ Struct(P_Ctx)
P_DebugDrawNode *last_debug_draw_node; P_DebugDrawNode *last_debug_draw_node;
NET_PipeStatistics pipe_stats; NET_PipeStatistics pipe_stats;
} s2u; } s2v;
}; };
Struct(P_ThreadLocalCtx) Struct(P_ThreadLocalCtx)

View File

@ -191,6 +191,10 @@ void S_TickForever(WaveLaneCtx *lane)
client->net_key = net_key; client->net_key = net_key;
DllQueuePushNPZ(&S_NilClient, S.first_client, S.last_client, client, next, prev); DllQueuePushNPZ(&S_NilClient, S.first_client, S.last_client, client, next, prev);
DllQueuePushNP(bin->first, bin->last, client, next_in_bin, prev_in_bin); DllQueuePushNP(bin->first, bin->last, client, next_in_bin, prev_in_bin);
{
}
} }
@ -480,6 +484,22 @@ void S_TickForever(WaveLaneCtx *lane)
} }
} }
//////////////////////////////
//- Process chat messages
{
b32 should_save = 0;
for (P_MsgNode *msg_node = in_msgs.first; msg_node; msg_node = msg_node->next)
{
P_Msg *msg = &msg_node->msg;
if (msg->kind == P_MsgKind_Chat)
{
P_Msg *chat_msg = P_PushMsg(P_MsgKind_Chat, Zstr);
chat_msg->data = msg->data;
}
}
}
////////////////////////////// //////////////////////////////
//- Update ent controls //- Update ent controls
@ -833,20 +853,20 @@ void S_TickForever(WaveLaneCtx *lane)
//- Publish Sim -> User data //- Publish Sim -> User data
{ {
LockTicketMutex(&P.s2u_tm); LockTicketMutex(&P.s2v_tm);
{ {
{ {
i64 old_gen = P.s2u.gen; i64 old_gen = P.s2v.gen;
Arena *old_arena = P.s2u.arena; Arena *old_arena = P.s2v.arena;
ZeroStruct(&P.s2u); ZeroStruct(&P.s2v);
P.s2u.arena = old_arena; P.s2v.arena = old_arena;
P.s2u.gen = old_gen; P.s2v.gen = old_gen;
} }
ZeroStruct(P.s2u.arena); ZeroStruct(P.s2v.arena);
P.s2u.gen += 1; P.s2v.gen += 1;
P.s2u.pipe_stats = NET_StatsFromPipe(net_pipe); P.s2v.pipe_stats = NET_StatsFromPipe(net_pipe);
} }
UnlockTicketMutex(&P.s2u_tm); UnlockTicketMutex(&P.s2v_tm);
} }
////////////////////////////// //////////////////////////////

View File

@ -352,7 +352,7 @@ void V_TickForever(WaveLaneCtx *lane)
////////////////////////////// //////////////////////////////
//- Init vis state //- Init vis state
i64 s2u_gen = 0; i64 s2v_gen = 0;
Arena *sim_debug_arena = AcquireArena(Gibi(64)); Arena *sim_debug_arena = AcquireArena(Gibi(64));
P_DebugDrawNode *first_sim_debug_draw_node = 0; P_DebugDrawNode *first_sim_debug_draw_node = 0;
P_DebugDrawNode *last_sim_debug_draw_node = 0; P_DebugDrawNode *last_sim_debug_draw_node = 0;
@ -653,15 +653,15 @@ void V_TickForever(WaveLaneCtx *lane)
//- Pop sim -> user data //- Pop sim -> user data
{ {
LockTicketMutex(&P.s2u_tm); LockTicketMutex(&P.s2v_tm);
{ {
if (P.s2u.gen > s2u_gen) if (P.s2v.gen > s2v_gen)
{ {
s2u_gen = P.s2u.gen; s2v_gen = P.s2v.gen;
sim_pipe_stats = P.s2u.pipe_stats; sim_pipe_stats = P.s2v.pipe_stats;
} }
} }
UnlockTicketMutex(&P.s2u_tm); UnlockTicketMutex(&P.s2v_tm);
} }
////////////////////////////// //////////////////////////////
@ -2649,7 +2649,8 @@ void V_TickForever(WaveLaneCtx *lane)
case V_CmdKind_test: case V_CmdKind_test:
{ {
V_PushNotif(Lit("Hello!!!")); // V_PushNotif(Lit("Hello!!!"));
P_Msg *chat_msg = P_PushMsg(P_MsgKind_Chat, Lit("Hello!!!"));
} break; } break;
} }
} }
@ -2736,8 +2737,8 @@ void V_TickForever(WaveLaneCtx *lane)
// { // {
// LockTicketMutex(&P.s2u_snapshot_mutex); // LockTicketMutex(&P.s2v_snapshot_mutex);
// P_SimSnapshot *src_snapshot = &P.s2u_snapshot; // P_SimSnapshot *src_snapshot = &P.s2v_snapshot;
// if (src_snapshot->tick > sim_snapshot.tick) // if (src_snapshot->tick > sim_snapshot.tick)
// { // {
// ResetArena(sim_snapshot_arena); // ResetArena(sim_snapshot_arena);
@ -2770,10 +2771,10 @@ void V_TickForever(WaveLaneCtx *lane)
// } // }
// } // }
// } // }
// ResetArena(P.s2u_snapshot_arena); // ResetArena(P.s2v_snapshot_arena);
// ZeroStruct(&P.s2u_snapshot); // ZeroStruct(&P.s2v_snapshot);
// } // }
// UnlockTicketMutex(&P.s2u_snapshot_mutex); // UnlockTicketMutex(&P.s2v_snapshot_mutex);
// } // }
////////////////////////////// //////////////////////////////
@ -2794,10 +2795,11 @@ void V_TickForever(WaveLaneCtx *lane)
// } // }
//- Chat //- Chat
// if (msg->kind == P_MsgKind_Chat) if (msg->kind == P_MsgKind_Chat)
// { {
String txt = msg->data;
// } V_PushNotif(txt);
}
//- Tiles //- Tiles
if (msg->kind == P_MsgKind_Tiles && sim_world->tiles_hash != msg->tiles_hash) if (msg->kind == P_MsgKind_Tiles && sim_world->tiles_hash != msg->tiles_hash)