Я пытаюсь отправить данные с использованием Hashtable на фотонное облако, я получаю данные с правильным кодом события, но пара ключ-значение возвращает некоторые случайные числа. Мой код такой при отправке данных: —
void NetworkLogic::sendEvent(void)
{
ExitGames::Common::Hashtable* table =new ExitGames::Common::Hashtable;
table->put<int,int>(4,21);
const ExitGames::Common::Hashtable temp = (const ExitGames::Common::Hashtable)*table;//= new ExitGames::Common::Hashtable;
mLoadBalancingClient.opRaiseEvent(false, temp, 100);
}
При получении данных код выглядит так:
void NetworkLogic::customEventAction(int playerNr, nByte eventCode, const ExitGames::Common::Hashtable& eventContent)
{
// you do not receive your own events, unless you specify yourself as one of the receivers explicitly, so you must start 2 clients, to receive the events, which you have sent, as sendEvent() uses the default receivers of opRaiseEvent() (all players in same room like the sender, except the sender itself)
PhotonPeer_sendDebugOutput(&mLoadBalancingClient, DEBUG_LEVEL_ALL, L"");
cout<<((int)(eventContent.getValue(4)));
}
На консоли выводятся случайные значения или целые числа, а их должно быть 21. Что я здесь не так делаю?
Редактировать:
В customEventAction()
когда я использовал следующее утверждение:
cout<<eventContent.getValue(4)->getType()<<endl;
cout<<"Event code = "<<eventCode<<endl;
Я получил следующий вывод:
i
Event code = d
Я искал и обнаружил, что 'i'
это значение EG_INTEGER
Это означает, что значение, которое я отправляю, получено правильно. Я просто не смог преобразовать его обратно в int
, И почему код события приходит как 'd'
?
eventContent.getValue(4)
возвращает объект.
Вы не можете просто привести этот Object к int, но должны получить доступ к значению int внутри него:
if(eventContent.getValue(4))
myInt = ExitGames::Common::ValueObject<int>(eventContent.getValue(4)).getDataCopy();
cout << myInt;
Других решений пока нет …