Exemplo n.º 1
0
 void process_message_playerrequest(Net::Connection * connection, double buffer)
 {
     if(Sys::PlayerList::FromConnection(connection) == NULL)
     {
         auto namelen = read_ubyte(buffer);
         auto name = read_string(buffer, namelen);
         auto player = new Sys::Player(Ent::New(), name);
         unsigned playerslot = Sys::PlayerList::AddPlayer(connection, player);
         auto serverplayer = Sys::PlayerList::Slots[playerslot];
         
         player->spawn(Maps::width/2, Maps::height/2);
         
         auto response = buffer_create();
         write_ubyte(response, namelen);
         write_string(response, name);
         write_ushort(response, Maps::width/2);
         write_ushort(response, Maps::height/2);
         
         // tell other players about the new player
         for ( unsigned i = 0; i+1/*last slot is joining player*/ < Sys::PlayerList::Slots.size(); ++i )
         {
             auto current = Sys::PlayerList::Slots[i]->connection;
             std::cout << "Sending player " << playerslot << " to " << i << " (" << current->as_string() << ")\n";
             Net::send(current, 0, SERVERMESSAGE::ADDPLAYER, response);
         }
         
         buffer_clear(response);
         
         // tell the new player about everyone, including theirself
         build_message_serveplayer(serverplayer, response);
         Net::send(connection, 0, SERVERMESSAGE::SERVEPLAYER, response);
         buffer_destroy(response);
     }
 }
Exemplo n.º 2
0
/* Test writing single values of various types to board's global memory.
 * The test passes if we read back what we wrote. */
void test_small_writes  (ssize_t f) {

  unsigned char     uc;
  unsigned short    us;
  unsigned int      ui;
  unsigned long int uli;

  write_uchar     (f, 0, 0, 19);
  uc = read_uchar (f, 0, 0);
  assert (uc == 19);
  
  write_ushort    (f, 0, 0, 13);
  us = read_ushort(f, 0, 0);
  assert (us == 13);

  write_ulong      (f, 0, 0, 0x3037383633352030);
  uli = read_ulong (f, 0, 0);
  assert (uli == 0x3037383633352030);
  
  write_uint     (f, 0, 0, 18987983);
  ui = read_uint (f, 0, 0);
  assert (ui == 18987983);
  
  printf ("test_small_writes PASSED\n");
}
Exemplo n.º 3
0
 double build_message_serveplayer(Sys::ServerPlayer * targetplayer, double buffer)
 {
     for(auto serverplayer : Sys::PlayerList::Slots)
     {
         write_ubyte(buffer, serverplayer->player->name.size());
         std::string asdf = serverplayer->player->name;
         asdf.resize(255, '\0');
         write_string(buffer, asdf.data());
         if(serverplayer->player->character)
         {
             write_ubyte(buffer, 1);
             write_ushort(buffer, serverplayer->player->character->position->x*10);
             write_ushort(buffer, serverplayer->player->character->position->y*10);
         }
         else
             write_ubyte(buffer, 0);
     }
     return buffer;
 }