Int, показывающий как длинное нечетное значение - PullRequest
0 голосов
/ 15 января 2011

Я пытаюсь отправить int в мою игру для iPhone для многопользовательского игрового центра.

Целое число появляется и появляется как нечетное длинное целое значение, а не как ожидаемое.

У меня есть это в моем .h:

typedef enum
{
 kPacketTypeScore,
} EPacketTypes;

typedef struct
{
 EPacketTypes type;
 size_t size;
} SPacketInfo;

typedef struct
{
 SPacketInfo packetInfo;

 int score;
} SScorePacket;

Тогда .m:

Отправка данных:

scoreData *score = [scoreData sharedData];

  SScorePacket packet;
  packet.packetInfo.type = kPacketTypeScore;
  packet.packetInfo.size = sizeof(SScorePacket);
  packet.score = score.score;

  NSData* dataToSend = [NSData dataWithBytes:&packet length:packet.packetInfo.size];
  NSError *error;
  [self.myMatch sendDataToAllPlayers: dataToSend withDataMode: GKMatchSendDataUnreliable error:&error];
  if (error != nil)
  {
   // handle the error
  }

Принимающий:

SPacketInfo* packet = (SPacketInfo*)[data bytes];

 switch (packet->type)
 {
  case kPacketTypeScore:
  {
   SScorePacket* scorePacket = (SScorePacket*)packet;

   scoreData *score = [scoreData sharedData];

   [scoreLabel setString:[NSString stringWithFormat:@"You: %d Challenger: %d", score.score, scorePacket]];

   break;
  }

  default:
   CCLOG(@"received unknown packet type %i (size: %u)", packet->type, packet->size);
   break;
 }

Есть идеи? Спасибо.

Ответы [ 2 ]

1 голос
/ 15 января 2011

Попробуйте:

[scoreLabel setString:[NSString stringWithFormat:@"You: %d Challenger: %d", score.score, scorePacket->score]]; // Note: scorePacket.score

Вы пытаетесь напечатать пакет "указатель на счет", а не счет в пакете.

0 голосов
/ 15 января 2011

Требуется ScorePacket-> Score, а не ScorePacket.Печать не ту вещь.

...