Хорошо, если у вас есть воздушный шар, например, который должен отображаться на каждом экране, тогда, возможно, вам следует иметь статический список, который содержит эти объекты, и отправлять весь этот список или циклически проходить его весь и отправлять каждый отдельно клиенту, а затем на на стороне клиента он может иметь статический список, который он отображает в каждом игровом цикле.
Или вы можете передать текущий игровой объект, который вам нужно обновить. Например, вы можете извлечь прослушиватель во внешний класс вместо того, чтобы вкладывать его в метод serever.addListener. Как это
package BTDOnlineToolKit;
import com.esotericsoftware.kryonet.*;
import packets.GeneralPackets.Ping;
public class NetworkHandler extends Listener {
private Client clientObject;
public NetworkHandler(Client clientObject) {
this.clientObject = clientObject;
}
@Override
public void connected(Connection connection) {
clientObject.updateReturnTripTime();
connection.updateReturnTripTime();
}
@Override
public void disconnected(Connection connection) {
super.disconnected(connection);
}
@Override
public void idle(Connection connection) {
super.idle(connection);
}
@Override
public void received(Connection con, Object packet) {
if (packet instanceof Ping) {
Ping ping = (Ping) packet;
if (ping.returned) {
}
}
}
}
NetworkHandler netHandle = new NetworkHandler(Anyobjects you need it to parse);
Server.addListener(netHandle);
Не забывайте, что вы также можете обновить объекты, которые вам нужно обновить вручную, создав для этого метод в сетевом обработчике.
И создайте его перед запуском сервера со всеми вещами, которые вам нужны для обновления соединения, например, вы можете передать объект метки, который показывает пинг, или объект вражеского игрока, атрибуты которого вам нужно обновить. Но, как я уже сказал, у вас может быть статический список для хранения этих значений, но это более масштабируемо.
person
Boozie
schedule
05.02.2019