t"IsAt" changed from a char to an int to a) improve performance marginally and b) eliminate the oh-so-dodgy int->char casts that cause mega problems when "char" is unsigned (e.g. on PPC systems). - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b6dd218301c177073743070514e2869a58e39b53
 (DIR) parent 29d5b1410ef359cf013d0f12a8ee96663b291173
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Fri,  1 Mar 2002 11:19:22 +0000
       
       "IsAt" changed from a char to an int to a) improve performance marginally
       and b) eliminate the oh-so-dodgy int->char casts that cause mega problems
       when "char" is unsigned (e.g. on PPC systems).
       
       
       Diffstat:
         M ChangeLog                           |       1 +
         M src/AIPlayer.c                      |      10 +++++-----
         M src/dopewars.h                      |       2 +-
         M src/message.c                       |       2 +-
         M src/serverside.c                    |      20 +++++++++-----------
       
       5 files changed, 17 insertions(+), 18 deletions(-)
       ---
 (DIR) diff --git a/ChangeLog b/ChangeLog
       t@@ -4,6 +4,7 @@ cvs
            - Icon added for GTK+ client
            - Bug with withdrawing cash from the bank fixed
            - URL in GTK+ client "About" box is now clickable
       +    - Crash bugs when running on PPC systems fixed
        
        1.5.3   04-02-2002
            - Text-mode server is now non-interactive by default (server admin can
 (DIR) diff --git a/src/AIPlayer.c b/src/AIPlayer.c
       t@@ -351,7 +351,7 @@ int HandleAIMessage(char *Message, Player *AIPlay)
            break;
          case C_SUBWAYFLASH:
            dpg_print(_("Jetting to %tde with %P cash and %P debt\n"),
       -              Location[(int)AIPlay->IsAt].Name, AIPlay->Cash,
       +              Location[AIPlay->IsAt].Name, AIPlay->Cash,
                      AIPlay->Debt);
            /* Use bselect rather than sleep, as this is portable to Win32 */
            tv.tv_sec = AITurnPause;
       t@@ -602,7 +602,7 @@ void AIHandleQuestion(char *Data, AICode AI, Player *AIPlay, Player *From)
          case C_ASKLOAN:
            if (RealLoanShark == -1) {
              g_print(_("Loan shark located at %s\n"),
       -              Location[(int)AIPlay->IsAt].Name);
       +              Location[AIPlay->IsAt].Name);
            }
            RealLoanShark = AIPlay->IsAt;
            AISendAnswer(AIPlay, From, "Y");
       t@@ -610,14 +610,14 @@ void AIHandleQuestion(char *Data, AICode AI, Player *AIPlay, Player *From)
          case C_ASKGUNSHOP:
            if (RealGunShop == -1) {
              g_print(_("Gun shop located at %s\n"),
       -              Location[(int)AIPlay->IsAt].Name);
       +              Location[AIPlay->IsAt].Name);
            }
            RealGunShop = AIPlay->IsAt;
            AISendAnswer(AIPlay, From, "Y");
            break;
          case C_ASKPUB:
            if (RealPub == -1) {
       -      g_print(_("Pub located at %s\n"), Location[(int)AIPlay->IsAt].Name);
       +      g_print(_("Pub located at %s\n"), Location[AIPlay->IsAt].Name);
            }
            RealPub = AIPlay->IsAt;
            AISendAnswer(AIPlay, From, "Y");
       t@@ -632,7 +632,7 @@ void AIHandleQuestion(char *Data, AICode AI, Player *AIPlay, Player *From)
            break;
          case C_ASKBANK:
            if (RealBank == -1) {
       -      g_print(_("Bank located at %s\n"), Location[(int)AIPlay->IsAt].Name);
       +      g_print(_("Bank located at %s\n"), Location[AIPlay->IsAt].Name);
            }
            RealBank = AIPlay->IsAt;
            AISendAnswer(AIPlay, From, "N");
 (DIR) diff --git a/src/dopewars.h b/src/dopewars.h
       t@@ -277,7 +277,7 @@ struct PLAYER_T {
          price_t Cash, Debt, Bank;
          int Health;
          int CoatSize;
       -  char IsAt;
       +  int IsAt;
          PlayerFlags Flags;
          gchar *Name;
          Inventory *Guns, *Drugs, Bitches;
 (DIR) diff --git a/src/message.c b/src/message.c
       t@@ -1317,7 +1317,7 @@ void FormatFightMessage(Player *To, GString *text, Player *Attacker,
                if (!IsCop(Attacker) && brandom(0, 100) < 70
                    && Attacker->IsAt >= 0) {
                  g_string_sprintfa(text, _("%s has got away to %s!"), AttackName,
       -                            Location[(int)Attacker->IsAt].Name);
       +                            Location[Attacker->IsAt].Name);
                } else {
                  g_string_sprintfa(text, _("%s has got away!"), AttackName);
                }
 (DIR) diff --git a/src/serverside.c b/src/serverside.c
       t@@ -472,7 +472,7 @@ void HandleServerMessage(gchar *buf, Player *Play)
            } else if (i != Play->IsAt && (NumTurns == 0 || Play->Turn < NumTurns)
                       && Play->EventNum == E_NONE && Play->Health > 0) {
              dopelog(4, "%s jets to %s", GetPlayerName(Play), Location[i].Name);
       -      Play->IsAt = (char)i;
       +      Play->IsAt = i;
              Play->Turn++;
              Play->Debt = (price_t)((float)Play->Debt * 1.1);
              Play->Bank = (price_t)((float)Play->Bank * 1.05);
       t@@ -2285,7 +2285,7 @@ int SendCopOffer(Player *To, OfferForce Force)
        
          /* The cops are more likely to attack in locations with higher police
           * presence ratings */
       -  i = brandom(0, 80 + Location[(int)To->IsAt].PolicePresence);
       +  i = brandom(0, 80 + Location[To->IsAt].PolicePresence);
        
          if (Force == FORCECOPS)
            i = 100;
       t@@ -2545,7 +2545,7 @@ void RunFromCombat(Player *Play, int ToLocation)
                Play->CopIndex--;
            }
            BackupAt = Play->IsAt;
       -    Play->IsAt = (char)ToLocation;
       +    Play->IsAt = ToLocation;
            WithdrawFromCombat(Play);
            Play->IsAt = BackupAt;
            Play->EventNum = Play->ResyncNum;
       t@@ -2605,7 +2605,7 @@ static void CheckCopsIntervene(Player *Play)
          if (!Play->Attacking)
            return;                     /* Cops don't attack "innocent victims" ;) */
        
       -  if (brandom(0, 100) > Location[(int)Play->IsAt].PolicePresence) {
       +  if (brandom(0, 100) > Location[Play->IsAt].PolicePresence) {
            return;                     /* The cops shouldn't _always_ attack
                                         * (unless P.P. == 100) */
          }
       t@@ -2844,10 +2844,8 @@ void WithdrawFromCombat(Player *Play)
                FirstServer = RemovePlayer(Defend, FirstServer);
              } else if (Defend->Health == 0) {
                FinishGame(Defend, _("You're dead! Game over."));
       -      } else if (CanRunHere(Defend) &&
       -                 brandom(0,
       -                         100) >
       -                 Location[(int)Defend->IsAt].PolicePresence) {
       +      } else if (CanRunHere(Defend)
       +                 && brandom(0, 100) > Location[Defend->IsAt].PolicePresence) {
                Defend->EventNum = E_DOCTOR;
                Defend->DocPrice = prandom(Bitch.MinPrice, Bitch.MaxPrice) *
                    Defend->Health / 500;
       t@@ -3063,8 +3061,8 @@ static void GenerateDrugsHere(Player *To, enum DealType *Deal)
              NumEvents--;
            }
          }
       -  NumRandom = brandom(Location[(int)To->IsAt].MinDrug,
       -                      Location[(int)To->IsAt].MaxDrug);
       +  NumRandom = brandom(Location[To->IsAt].MinDrug,
       +                      Location[To->IsAt].MaxDrug);
          if (NumRandom > NumDrug)
            NumRandom = NumDrug;
        
       t@@ -3321,7 +3319,7 @@ void BuyObject(Player *From, char *data)
              if (!Sanitized && (From->Drugs[index].Price == 0 &&
                                 brandom(0,
                                         100) <
       -                         Location[(int)From->IsAt].PolicePresence)) {
       +                         Location[From->IsAt].PolicePresence)) {
                SendPrintMessage(NULL, C_NONE, From,
                                 _("The cops spot you dropping drugs!"));
                CopsAttackPlayer(From);