[prev in list] [next in list] [prev in thread] [next in thread] 

List:       bzflag-commits
Subject:    SF.net SVN: bzflag: [16642] trunk/bzflag
From:       JeffM2501 () users ! sourceforge ! net
Date:       2008-02-25 3:37:09
Message-ID: E1JTU9N-0006tO-7L () sc8-pr-svn2 ! sourceforge ! net
[Download RAW message or body]

Revision: 16642
          http://bzflag.svn.sourceforge.net/bzflag/?rev=16642&view=rev
Author:   JeffM2501
Date:     2008-02-24 19:37:08 -0800 (Sun, 24 Feb 2008)

Log Message:
-----------
Add API calls to get players by callsign and bzid search ( inspired by patch 1901120 \
). refactor API to use a utils to init API player records from internal records. 

Modified Paths:
--------------
    trunk/bzflag/include/bzfsAPI.h
    trunk/bzflag/src/bzfs/bzfsAPI.cxx

Modified: trunk/bzflag/include/bzfsAPI.h
===================================================================
--- trunk/bzflag/include/bzfsAPI.h	2008-02-24 21:39:25 UTC (rev 16641)
+++ trunk/bzflag/include/bzfsAPI.h	2008-02-25 03:37:08 UTC (rev 16642)
@@ -1353,6 +1353,8 @@
 BZF_API bool bz_getPlayerIndexList ( bz_APIIntList *playerList );
 BZF_API bz_APIIntList *bz_getPlayerIndexList ( void );
 BZF_API bz_BasePlayerRecord *bz_getPlayerByIndex ( int index );
+BZF_API bz_BasePlayerRecord *bz_getPlayerByCallsign( const char* name );
+BZF_API bz_BasePlayerRecord *bz_getPlayerByBZID ( int BZID );
 BZF_API bool bz_updatePlayerData ( bz_BasePlayerRecord *playerRecord );
 BZF_API bool bz_hasPerm ( int playerID, const char* perm );
 BZF_API bool bz_grantPerm ( int playerID, const char* perm );

Modified: trunk/bzflag/src/bzfs/bzfsAPI.cxx
===================================================================
--- trunk/bzflag/src/bzfs/bzfsAPI.cxx	2008-02-24 21:39:25 UTC (rev 16641)
+++ trunk/bzflag/src/bzfs/bzfsAPI.cxx	2008-02-25 03:37:08 UTC (rev 16642)
@@ -1464,20 +1464,19 @@
   return playerList;
 }
 
-//-------------------------------------------------------------------------
-
-BZF_API bz_BasePlayerRecord *bz_getPlayerByIndex(int index)
+bz_BasePlayerRecord *APIPlayerFromRecord ( GameKeeper::Player *player )
 {
-  GameKeeper::Player *player=GameKeeper::Player::getPlayerByIndex(index);
+  if (!player)
+    return NULL;
 
   bz_BasePlayerRecord *playerRecord=new bz_BasePlayerRecord;
 
-  if(!player || !playerRecord)
+  if (!playerRecord)
     return NULL;
 
   playerRecord->callsign=player->player.getCallSign();
   playerRecord->email=player->player.getEMail();
-  playerRecord->playerID=index;
+  playerRecord->playerID=player->getIndex();
   playerRecord->bzID=player->getBzIdentifier();
   playerRecord->team=convertTeam(player->player.getTeam());
 
@@ -1492,6 +1491,52 @@
 
 //-------------------------------------------------------------------------
 
+BZF_API bz_BasePlayerRecord *bz_getPlayerByIndex(int index)
+{
+  return APIPlayerFromRecord(GameKeeper::Player::getPlayerByIndex(index));
+}
+
+//-------------------------------------------------------------------------
+
+BZF_API bz_BasePlayerRecord *bz_getPlayerByCallsign(const char* callsign)
+{
+  if (!callsign)
+    return NULL;
+
+  std::string upperName = TextUtils::toupper(std::string(callsign));
+
+  for (int i = 0; i < curMaxPlayers; i++)
+  {
+    GameKeeper::Player *p = GameKeeper::Player::getPlayerByIndex(i);
+    if ((p == NULL))
+      continue;
+
+    if (upperName == TextUtils::toupper(std::string(p->player.getCallSign())) )
+      return APIPlayerFromRecord(p);
+  }
+
+  return NULL;
+}
+
+//-------------------------------------------------------------------------
+
+BZF_API bz_BasePlayerRecord * bz_getPlayerByBZID ( int BZID )
+{
+  for (int i = 0; i < curMaxPlayers; i++)
+  {
+    GameKeeper::Player *p = GameKeeper::Player::getPlayerByIndex(i);
+    if ((p == NULL))
+      continue;
+
+    if (BZID == atoi(p->getBzIdentifier().c_str()))
+      return APIPlayerFromRecord(p);
+  }
+
+  return NULL;
+}
+
+//-------------------------------------------------------------------------
+
 BZF_API bool bz_freePlayerRecord(bz_BasePlayerRecord *playerRecord)
 {
   if(playerRecord)


This was sent by the SourceForge.net collaborative development platform, the world's \
largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
BZFlag-commits mailing list
BZFlag-commits@lists.SourceForge.net
https://lists.SourceForge.net/lists/listinfo/bzflag-commits
irc: #BZFlag @ irc.freenode.net


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic