Я пытаюсь разработать игру multiplayer
android
.Для отправки сообщения между пирами я использую sendReliableMessage
из mRealTimeMultiplayerClient
.Сообщение, которым я хочу поделиться, является случайным письмом, которое я получаю.Проблема в том, что сгенерированное мной письмо перед отправкой сообщения отличается от письма, которое я получаю после получения сообщения, и я не могу понять, где моя ошибка.
Это метод, в котором я вызываю методчтобы случайно выбрать письмо и отправить его с помощью mRealTimeMultiplayerClient
byte[] mLetterBuf = new byte[1];
void broadcastLetter(){
if (!mMultiplayer) {
// playing single-player mode
return;
}
mLetterBuf = randomLetter();
//mLetterBuf[0] = mLetter.getBytes()[0];
// Send to every other participant.
for (Participant p : mParticipants) {
if (p.getParticipantId().equals(mMyId)) {
continue;
}
if (p.getStatus() != Participant.STATUS_JOINED) {
continue;
}
// final score notification must be sent via reliable message
mRealTimeMultiplayerClient.sendReliableMessage(mLetterBuf,
mRoomId, p.getParticipantId(), new RealTimeMultiplayerClient.ReliableMessageSentCallback() {
@Override
public void onRealTimeMessageSent(int statusCode, int tokenId, String recipientParticipantId) {
//Log.d(TAG, "RealTime message sent--------->"+mLetterBuf[0]);
}
})
.addOnSuccessListener(new OnSuccessListener<Integer>() {
@Override
public void onSuccess(Integer tokenId) {
Log.d(TAG, "Created a reliable message with tokenId: " + tokenId);
}
});
}
}
метода, чтобы выбрать случайное письмо:
public byte[] randomLetter(){
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Random rnd = new Random();
char c = chars.charAt(rnd.nextInt(chars.length()));
String letra = String.valueOf(c);
byte[] by_new = letra.getBytes();
return by_new;
}
Вот где я собираюсь прочитать полученное сообщение (вот здесьЯ получаю письмо, отличное от сгенерированного в методе randomLetter()
- это перед тем, как я вызываю метод для обмена письмом со сверстниками:
OnRealTimeMessageReceivedListener mOnRealTimeMessageReceivedListener = new OnRealTimeMessageReceivedListener() {
@Override
public void onRealTimeMessageReceived(@NonNull RealTimeMessage realTimeMessage) {
byte[] buf = realTimeMessage.getMessageData();
String sender = realTimeMessage.getSenderParticipantId();
Log.d(TAG, "Letter received: " + (char) buf[0]); <-------Problem is here
updatePeersLetter(str);
(...)
Кто-нибудь может понять, почему я получаю разные письма перед отправкой ипосле получения сообщения?