/** ** File ......... PlayerFactory.cpp ** Published .... 2004-05-15 ** Author ....... grymse@alhem.net **/ /* Copyright (C) 2004 Anders Hedstrom This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ //#include <stdio.h> #include "SmallSocket.h" #include "PlayerFactory.h" PlayerFactory::PlayerFactory() :IPersist() { } PlayerFactory::~PlayerFactory() { } void PlayerFactory::Load() { FILE *fil = fopen("players.txt","rt"); if (fil) { char slask[1000]; fgets(slask,1000,fil); while (!feof(fil)) { while (strlen(slask) && (slask[strlen(slask) - 1] == 13 || slask[strlen(slask) - 1] == 10)) { slask[strlen(slask) - 1] = 0; } long nr = atol(slask); fgets(slask,1000,fil); while (strlen(slask) && (slask[strlen(slask) - 1] == 13 || slask[strlen(slask) - 1] == 10)) { slask[strlen(slask) - 1] = 0; } std::string name = slask; fgets(slask,1000,fil); while (strlen(slask) && (slask[strlen(slask) - 1] == 13 || slask[strlen(slask) - 1] == 10)) { slask[strlen(slask) - 1] = 0; } std::string passwd = slask; PLAYER *p = new PLAYER(nr,name,passwd); m_players.push_back(p); // fgets(slask,1000,fil); } } } void PlayerFactory::Save() { FILE *fil = fopen("players.0","wt"); if (fil) { for (player_v::iterator it = m_players.begin(); it != m_players.end(); it++) { PLAYER *p = *it; fprintf(fil,"%ld\n",p -> nr); fprintf(fil,"%s\n",p -> m_name.c_str()); fprintf(fil,"%s\n",p -> m_passwd.c_str()); } fclose(fil); unlink("players.old"); rename("players.txt","players.old"); rename("players.0","players.txt"); } } PlayerFactory::PLAYER *PlayerFactory::FindPlayer(const std::string& n,const std::string& p) { for (player_v::iterator it = m_players.begin(); it != m_players.end(); it++) { PLAYER *p = *it; if (p -> m_name == n) // && p -> passwd == p) { return p; } } return NULL; } PlayerFactory::PLAYER *PlayerFactory::AddPlayer(const std::string& n,const std::string& pw) { PLAYER *p = new PLAYER(0,n,pw); m_players.push_back(p); p -> nr = m_players.size(); // never delete any player return p; } void PlayerFactory::PLAYER::DisplayInventory(SmallSocket *p) { for (item_v::iterator it = m_inventory.begin(); it != m_inventory.end(); it++) { ITEM *i = *it; std::string str; p -> Send(" " + i -> GetDescription() + "\n"); } }