Чат и список игроков
- Протокол: Chat (что сказал сервер), ChatSend (что сказал клиент) и PlayerList (весь список игроков с их режимами). - Сервер: сообщения уходят всем, а имя отправителя ставит сервер, поэтому подделать его нельзя. Список игроков уходит всем целиком, когда он меняется. Команды сервера: /help и /players. - Клиент: перевод наших пакетов в игровые (SPacketChat и SPacketPlayerListItem), уходящий чат перехватывается патчем, список игроков обновляется по разнице (ушедших убираем, пришедших добавляем). - Тесты: два игрока, один пишет - второй слышит с правильным именем; список игроков приходит обоим и меняется, когда кто-то выходит. Попутно: run-server.ps1 теперь знает про rsx-plugin-api, иначе сервер не запускался (нет класса Hitboxes в classpath). Тесты: протокол 34, сервер 87. Форк собирается чисто.
This commit is contained in:
@@ -326,6 +326,23 @@ public final class ItemTest {
|
||||
near("the place of the hit survives", 2.5, attackBack.y);
|
||||
eq("the hand survives", Integer.valueOf(Packets.Attack.HAND_MAIN),
|
||||
Integer.valueOf(attackBack.hand));
|
||||
|
||||
Packets.Chat chat = new Packets.Chat("Player", "hello there");
|
||||
Packets.Chat chatBack = Packets.Chat.read(new Buf(chat.write().toByteArray()));
|
||||
eq("the sender survives", "Player", chatBack.from);
|
||||
eq("the line survives", "hello there", chatBack.text);
|
||||
|
||||
Packets.ChatSend send = new Packets.ChatSend("hi");
|
||||
Packets.ChatSend sendBack = Packets.ChatSend.read(new Buf(send.write().toByteArray()));
|
||||
eq("the sent line survives", "hi", sendBack.text);
|
||||
|
||||
Packets.PlayerList list = new Packets.PlayerList(
|
||||
new String[]{"One", "Two"}, new int[]{0, 1});
|
||||
Packets.PlayerList listBack =
|
||||
Packets.PlayerList.read(new Buf(list.write().toByteArray()));
|
||||
eq("two names", Integer.valueOf(2), Integer.valueOf(listBack.names.length));
|
||||
eq("the first name", "One", listBack.names[0]);
|
||||
eq("the second mode", Integer.valueOf(1), Integer.valueOf(listBack.gameModes[1]));
|
||||
}
|
||||
|
||||
private static void near(Object what, double expected, double actual) {
|
||||
|
||||
@@ -552,7 +552,7 @@ public final class ProtocolTest {
|
||||
Packets.CONTAINER_OPEN, Packets.CONTAINER_TAKE,
|
||||
Packets.LEARN_BLUEPRINT,
|
||||
Packets.HITBOXES, Packets.HITBOX_INSTANCES, Packets.HITBOXES_RELOAD,
|
||||
Packets.ATTACK,
|
||||
Packets.ATTACK, Packets.CHAT, Packets.CHAT_SEND, Packets.PLAYER_LIST,
|
||||
Packets.DISCONNECT,
|
||||
};
|
||||
for (int i = 0; i < ids.length; i++) {
|
||||
|
||||
Reference in New Issue
Block a user