1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-04-29 18:07:45 +00:00
Commit graph

11 commits

Author SHA1 Message Date
d0bb7f4ba9 Start defining IPC opcodes in JSON
This is to make it easier to interpolate with other tools and projects,
and to reduce the mental barrier (of me and other contributors) of
changing these. This only ports the Lobby connection to use JSON so far,
the World connection is next.
2025-03-26 19:23:14 -04:00
3a66e4466c More various 7.2 packet fixes, attempt to check recieved packet size 2025-03-26 19:23:14 -04:00
0069196e3c Move some constants to common module 2025-03-22 19:17:01 -04:00
55d0b81ae4 Use LobbyCharacterActionKind in CharacterCreated Lobby IPC
Instead of the magic unknown number, replace at least one byte of it with
something that's known!
2025-03-22 17:39:28 -04:00
107a00aa92 Move lobby character actions to LobbyConnection, support deleting characters 2025-03-22 17:32:00 -04:00
0900d0b94e Implement basic character persistence, World <-> Lobby server communication
This is unfortunately lumped into one big commit, and is very hacky and WIP but
does indeed work! Since the Lobby and World server are two separate servers, it
uses it's own custom IPC packets (reusing the same packet structures as regular
game ones.)

The characters you create in the Lobby server are now saved in the World server,
but this is not yet reflected in the Lobby screen.
2025-03-21 19:56:16 -04:00
dae20a1e0c Rename IpcSegmentTrait to ReadWriteIpcSegment, add docs
This also adds a default calc_size() implementation so client packets don't have
to implement it.
2025-03-17 17:12:40 -04:00
dc8d8638f6 Move LobbyCharacterAction into it's own struct 2025-03-16 18:22:15 -04:00
ff9bcb255d Extract sequence number from the lobby character action packet 2025-03-16 18:18:49 -04:00
7315ece194 Move some larger Lobby IPC structs to their own files, add more tests for these
Also fix a bunch of mistakes when calculating size, and so on.
2025-03-16 18:15:19 -04:00
f5d75301b2 Re-organize the IPC structures so they live in their own server-specific module
My old setup of throwing *all* of the IPC types and opcodes into *one* enum was
becoming unbearable. Now that we have multiple things using the same opcodes
(because they can overlap) I think it's time to repay this technical debt.

This overhauls the structure of the project to move IPC structs into their own
modules, and separate the opcode data/lists into separate ones depending on if
it's clientbound and serverbound.

Nothing has changed functionall, but this is going to make it way easier to add
more IPC in the future.
2025-03-16 17:43:29 -04:00