void GameStateManager::deserializePlayer(int32_t eid)
{
  PlayerState & player = *m_states[eid];

  const std::string name = m_connection_manager.getNickname(eid);
  const std::string nickhash = sha1::calcToString(name.data(), name.length());
  std::copy(nickhash.begin(), nickhash.end(), player.nickhash.begin());

  if (PROGRAM_OPTIONS.count("verbose")) 
  {
    std::cout << "Player nickname is \"" << name << "\", hash: 0x" << hexify(nickhash)
              << ". Attempting to load player data from disk...";
  }

  std::ifstream playerfile("/tmp/mymap.player." + nickhash, std::ios::binary);

  if (!playerfile)
  {
    if (PROGRAM_OPTIONS.count("verbose"))
    {
      std::cout << " failed. Setting default start data." << std::endl;
    }

    const WorldCoords start_pos(8, 80, 8);

    player.position = RealCoords(wX(start_pos) + 0.5, wY(start_pos) + 0.5, wZ(start_pos) + 0.5);
    player.stance   = wY(start_pos) + 0.5;

    player.setInv(37, ITEM_DiamondPickaxe, 1, 0);
    player.setInv(36, BLOCK_Torch, 50, 0);
    player.setInv(29, ITEM_Coal, 50, 0);
    player.setInv(21, BLOCK_Cobblestone, 60, 0);
    player.setInv(22, BLOCK_IronOre, 60, 0);
    player.setInv(30, BLOCK_Wood, 50, 0);
    player.setInv(38, ITEM_DiamondShovel, 1, 0);
    player.setInv(39, BLOCK_BrickBlock, 64, 0);
    player.setInv(40, BLOCK_Stone, 64, 0);
    player.setInv(41, BLOCK_Glass, 64, 0);
    player.setInv(42, BLOCK_WoodenPlank, 64, 0);
    player.setInv(44, BLOCK_Obsidian, 64, 0);
    player.setInv(43, ITEM_Bucket, 1, 0);

    player.holding = 4;
  }
  else
  {
    if (PROGRAM_OPTIONS.count("verbose"))
    {
      std::cout << " done!" << std::endl;
    }

    const WorldCoords start_pos(8, 80, 8);

    player.position = RealCoords(wX(start_pos) + 0.5, wY(start_pos) + 0.5, wZ(start_pos) + 0.5);
    player.stance   = wY(start_pos) + 0.5;
  }
    
}
예제 #2
0
void SettingsDialogImpl::addToWidget(QString player, QString argument)
{
    QFile playerfile(player);
    if(!playerfile.exists())
    {
        QMessageBox::critical ( this, QString("Error in Player Choose"), QString("Your Playerpath doesn't point to any file.") );
        return;
    }
    
    if( Settings::Instance()->playerListContains(player) )
    {
        QMessageBox::information ( this, QString("Error in Player Choose"), QString("You have this player already in the list.") );
			return;
    }
    QTableWidgetItem* playeritem = new QTableWidgetItem(player);
    QTableWidgetItem* argitem = new QTableWidgetItem(argument);
		
    int row = ui.tableWidget->rowCount();
    ui.tableWidget->insertRow(row);
    ui.tableWidget->setItem(row, 0, playeritem);
    ui.tableWidget->setItem(row, 1, argitem);
}