Wolf Planet Forum Index Wolf Planet
We want you here!
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

HELP!!!

 
Post new topic   Reply to topic    Wolf Planet Forum Index -> Coding Alliance
View previous topic :: View next topic  
Author Message
Conner94
Moderator


Joined: 15 Jan 2005
Posts: 249
Location: ???

PostPosted: Sat Feb 12, 2005 12:55 am    Post subject: HELP!!! Reply with quote

When I compile my WL_Agent.C file, it comes up with the error:
Line 587: Decloration not allowed here.
It is "void DrawKeys (void)", so how do I fix it? Here is my file:
Code:

   // WL_AGENT.C

#include "WL_DEF.H"
#pragma hdrstop


/*
=============================================================================

                   LOCAL CONSTANTS

=============================================================================
*/

#define MAXMOUSETURN   10


#define MOVESCALE      150l
#define BACKMOVESCALE   100l
#define ANGLESCALE      20

/*
=============================================================================

                   GLOBAL VARIABLES

=============================================================================
*/



//
// player state info
//
boolean      running;
long      thrustspeed;

unsigned   plux,pluy;         // player coordinates scaled to unsigned

int         anglefrac;
int         gotgatgun;   // JR

objtype      *LastAttacker;

/*
=============================================================================

                   LOCAL VARIABLES

=============================================================================
*/


void   T_Player (objtype *ob);
void   T_Attack (objtype *ob);

statetype s_player = {false,0,0,T_Player,NULL,NULL};
statetype s_attack = {false,0,0,T_Attack,NULL,NULL};


long   playerxmove,playerymove;

struct atkinf
{
   char   tics,attack,frame;      // attack is 1 for gun, 2 for knife
} attackinfo[5][14] =

{
{ {6,0,1},{6,2,2},{6,0,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,0,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,0,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,3,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,4,3},{6,-1,4} },
};


int   strafeangle[9] = {0,90,180,270,45,135,225,315,0};

void DrawWeapon (void);
void GiveWeapon (int weapon);
void   GiveAmmo (int ammo);

//===========================================================================

//----------

void Attack (void);
void Use (void);
void Search (objtype *ob);
void SelectWeapon (void);
void SelectItem (void);

//----------

boolean TryMove (objtype *ob);
void T_Player (objtype *ob);

void ClipMove (objtype *ob, long xmove, long ymove);

/*
=============================================================================

                  CONTROL STUFF

=============================================================================
*/

/*
======================
=
= CheckWeaponChange
=
= Keys 1-4 change weapons
=
======================
*/

void CheckWeaponChange (void)
{
   {
      if (Keyboard[sc_1] && gamestate.bestweapon >= wp_knife)
         gamestate.weapon = gamestate.chosenweapon = wp_knife;
      else if (Keyboard[sc_2] && gamestate.ammo > 0 && gamestate.bestweapon >= wp_pistol)
         gamestate.weapon = gamestate.chosenweapon = wp_pistol;
      else if (Keyboard[sc_3] && gamestate.pistol == 1 && gamestate.ammo > 0)
         gamestate.weapon = gamestate.chosenweapon = wp_pistol2;
      else if (Keyboard[sc_4] && gamestate.machinegun == 1 && gamestate.ammo > 0)
         gamestate.weapon = gamestate.chosenweapon = wp_machinegun;
      else if (Keyboard[sc_5] && gamestate.chaingun == 1 && gamestate.ammo > 0)
         gamestate.weapon = gamestate.chosenweapon = wp_chaingun;
   }
DrawWeapon();
DrawAmmo ();
}


/*
=======================
=
= ControlMovement
=
= Takes controlx,controly, and buttonstate[bt_strafe]
=
= Changes the player's angle and position
=
= There is an angle hack because when going 70 fps, the roundoff becomes
= significant
=
=======================
*/

void ControlMovement (objtype *ob)
{
   long   oldx,oldy;
   int      angle,maxxmove;
   int      angleunits;
   long   speed;

   thrustspeed = 0;

   oldx = player->x;
   oldy = player->y;

//
// side to side move
//
   if (buttonstate[bt_strafe])
   {
   //
   // strafing
   //
   //
      if (controlx > 0)
      {
         angle = ob->angle - ANGLES/4;
         if (angle < 0)
            angle += ANGLES;
         Thrust (angle,controlx*MOVESCALE);   // move to left
      }
      else if (controlx < 0)
      {
         angle = ob->angle + ANGLES/4;
         if (angle >= ANGLES)
            angle -= ANGLES;
         Thrust (angle,-controlx*MOVESCALE);   // move to right
      }
   }
   else
   {
   //
   // not strafing
   //
      anglefrac += controlx;
      angleunits = anglefrac/ANGLESCALE;
      anglefrac -= angleunits*ANGLESCALE;
      ob->angle -= angleunits;

      if (ob->angle >= ANGLES)
         ob->angle -= ANGLES;
      if (ob->angle < 0)
         ob->angle += ANGLES;

   }

//
// forward/backwards move
//
   if (controly < 0)
   {
      Thrust (ob->angle,-controly*MOVESCALE);   // move forwards
   }
   else if (controly > 0)
   {
      angle = ob->angle + ANGLES/2;
      if (angle >= ANGLES)
         angle -= ANGLES;
      Thrust (angle,controly*BACKMOVESCALE);      // move backwards
   }

   if (gamestate.victoryflag)      // watching the BJ actor
      return;

//
// calculate total move
//
   playerxmove = player->x - oldx;
   playerymove = player->y - oldy;
}

/*
=============================================================================

               STATUS WINDOW STUFF

=============================================================================
*/


/*
==================
=
= StatusDrawPic
=
==================
*/

void StatusDrawPic (unsigned x, unsigned y, unsigned picnum)
{
   unsigned   temp;

   temp = bufferofs;
   bufferofs = 0;

   bufferofs = PAGE1START+(200-STATUSLINES)*SCREENWIDTH;
   LatchDrawPic (x,y,picnum);
   bufferofs = PAGE2START+(200-STATUSLINES)*SCREENWIDTH;
   LatchDrawPic (x,y,picnum);
   bufferofs = PAGE3START+(200-STATUSLINES)*SCREENWIDTH;
   LatchDrawPic (x,y,picnum);

   bufferofs = temp;
}


/*
==================
=
= DrawFace
=
==================
*/

void DrawFace (void)
{
   if (gamestate.health)
   {
      #ifdef SPEAR
      if (godmode)
         StatusDrawPic (17,4,GODMODEFACE1PIC+gamestate.faceframe);
      else
      #endif
      StatusDrawPic (17,4,FACE1APIC+3*((100-gamestate.health)/16)+gamestate.faceframe);
   }
   else
   {
#ifndef SPEAR
    if (LastAttacker->obclass == needleobj)
      StatusDrawPic (17,4,MUTANTBJPIC);
    else
#endif
      StatusDrawPic (17,4,FACE8APIC);
   }
}


/*
===============
=
= UpdateFace
=
= Calls draw face if time to change
=
===============
*/

#define FACETICS   70

int   facecount;

void   UpdateFace (void)
{

   if (SD_SoundPlaying() == GETGATLINGSND)
     return;

   facecount += tics;
   if (facecount > US_RndT())
   {
      gamestate.faceframe = (US_RndT()>>6);
      if (gamestate.faceframe==3)
         gamestate.faceframe = 1;

      facecount = 0;
      DrawFace ();
   }
}



/*
===============
=
= LatchNumber
=
= right justifies and pads with blanks
=
===============
*/

void   LatchNumber (int x, int y, int width, long number)
{
   unsigned   length,c;
   char   str[20];

   ltoa (number,str,10);

   length = strlen (str);

   while (length<width)
   {
      StatusDrawPic (x,y,N_BLANKPIC);
      x++;
      width--;
   }

   c= length <= width ? 0 : length-width;

   while (c<length)
   {
      StatusDrawPic (x,y,str[c]-'0'+ N_0PIC);
      x++;
      c++;
   }
}


/*
===============
=
= DrawHealth
=
===============
*/

void   DrawHealth (void)
{
   LatchNumber (21,16,3,gamestate.health);
}


/*
===============
=
= TakeDamage
=
===============
*/

void   TakeDamage (int points,objtype *attacker)
{
   LastAttacker = attacker;

   if (gamestate.victoryflag)
      return;
   if (gamestate.difficulty==gd_baby)
     points>>=2;

   if (!godmode)
      gamestate.health -= points;

   if (gamestate.health<=0)
   {
      gamestate.health = 0;
      playstate = ex_died;
      killerobj = attacker;
   }

   StartDamageFlash (points);

   gotgatgun=0;

   DrawHealth ();
   DrawFace ();

   //
   // MAKE BJ'S EYES BUG IF MAJOR DAMAGE!
   //
   #ifdef SPEAR
   if (points > 30 && gamestate.health!=0 && !godmode)
   {
      StatusDrawPic (17,4,BJOUCHPIC);
      facecount = 0;
   }
   #endif

}


/*
===============
=
= HealSelf
=
===============
*/

void   HealSelf (int points)
{
   gamestate.health += points;
   if (gamestate.health>100)
      gamestate.health = 100;

   DrawHealth ();
   gotgatgun = 0;   // JR
   DrawFace ();
}


//===========================================================================


/*
===============
=
= DrawLevel
=
===============
*/

void   DrawLevel (void)
{
#ifdef SPEAR
   if (gamestate.mapon == 20)
      LatchNumber (2,16,2,18);
   else
#endif
   LatchNumber (2,16,2,gamestate.mapon+1);
}

//===========================================================================


/*
===============
=
= DrawLives
=
===============
*/

void   DrawLives (void)
{
   LatchNumber (14,16,1,gamestate.lives);
}


/*
===============
=
= GiveExtraMan
=
===============
*/

void   GiveExtraMan (void)
{
   if (gamestate.lives<9)
      gamestate.lives++;
   DrawLives ();
   SD_PlaySound (BONUS1UPSND);
}

//===========================================================================

/*
===============
=
= DrawScore
=
===============
*/

void   DrawScore (void)
{
   LatchNumber (6,16,6,gamestate.score);
}

/*
===============
=
= GivePoints
=
===============
*/

void   GivePoints (long points)
{
   gamestate.score += points;
   while (gamestate.score >= gamestate.nextextra)
   {
      gamestate.nextextra += EXTRAPOINTS;
      GiveExtraMan ();
   }
   DrawScore ();
}

//===========================================================================

/*
==================
=
= DrawWeapon
=
==================
*/

void DrawWeapon (void)
{
   switch (gamestate.chosenweapon)
     {
        default:
           LatchNumber (26,16,3,gamestate.ammo);
      }


/*
==================
=
= DrawKeys
=
==================
*/

void DrawKeys (void)
{
   if (gamestate.keys & 1)
      StatusDrawPic (30,4,GOLDKEYPIC);
   else
      StatusDrawPic (30,4,NOKEYPIC);

   if (gamestate.keys & 2)
      StatusDrawPic (30,20,SILVERKEYPIC);
   else
      StatusDrawPic (30,20,NOKEYPIC);
}



/*
==================
=
= GiveWeapon
=
==================
*/

void GiveWeapon (int weapon)
{
   switch(weapon)
   {
      case wp_machinegun:
         GiveAmmo (16);
         if (gamestate.machinegun == 0)
         gamestate.weapon = gamestate.chosenweapon = wp_machinegun;
            gamestate.machinegun = 1;
         break;
      case wp_pistol2:
         GiveAmmo (8);
         if (gamestate.pistol == 0)
         gamestate.weapon = gamestate.chosenweapon = wp_pistol2;
            gamestate.pistol = 1;
         break;
      case wp_chaingun:
         GiveAmmo (20);
         if (gamestate.chaingun == 0)
            gamestate.weapon = gamestate.chosenweapon = wp_chaingun;
         gamestate.chaingun = 1;
         break;
   }
   DrawWeapon ();
}


//===========================================================================

/*
===============
=
= DrawAmmo
=
===============
*/

void   DrawAmmo (void)
{
   LatchNumber (27,16,2,gamestate.ammo);
}


/*
===============
=
= GiveAmmo
=
===============
*/

void   GiveAmmo (int ammo)
{
   if (!gamestate.ammo)            // knife was out
   {
      if (!gamestate.attackframe)
      {
         gamestate.weapon = gamestate.chosenweapon;
         DrawWeapon ();
      }
   }
   gamestate.ammo += ammo;
if (gamestate.backp == 1)
{
   if (gamestate.ammo > 99)
      gamestate.ammo = 99;
   DrawAmmo ();
}
else
if (gamestate.ammo > 50)
gamestate.ammo = 50;
DrawAmmo ();
}

//===========================================================================

/*
==================
=
= GiveKey
=
==================
*/

void GiveKey (int key)
{
   gamestate.keys |= (1<<key);
   DrawKeys ();
}



/*
=============================================================================

                     MOVEMENT

=============================================================================
*/


/*
===================
=
= GetBonus
=
===================
*/
void GetBonus (statobj_t *check)
{
   switch (check->itemnumber)
   {
   case   bo_firstaid:
      if (gamestate.health == 100)
         return;

      SD_PlaySound (HEALTH2SND);
      HealSelf (25);
      break;

   case   bo_key1:
   case   bo_key2:
   case   bo_key3:
   case   bo_key4:
      GiveKey (check->itemnumber - bo_key1);
      SD_PlaySound (GETKEYSND);
      GetMessage("You got a key!");
      break;

   case   bo_cross:
      SD_PlaySound (BONUS1SND);
      GivePoints (100);
      gamestate.treasurecount++;
      break;

        case    bo_chalice:
      gamestate.backp = 1;
      SD_PlaySound (BONUS2SND);
      break;

   case   bo_bible:
      SD_PlaySound (BONUS3SND);
      GivePoints (1000);
      gamestate.treasurecount++;
      break;
   case   bo_crown:
      SD_PlaySound (BONUS4SND);
      GivePoints (5000);
      gamestate.treasurecount++;
      break;

   case   bo_clip:
      if (gamestate.backp == 1)
      {
          if (gamestate.ammo == 99)
           return;
      }
      else
      if (gamestate.ammo == 50)
          return;

      SD_PlaySound (GETAMMOSND);
      GiveAmmo (8);
      GetMessage("You got 9mm Ammo!");
                break;
   case   bo_clip2:
      if (gamestate.backp == 1)
      {
          if (gamestate.ammo == 99)
           return;
      }
      else
      if (gamestate.ammo == 50)
          return;

      SD_PlaySound (GETAMMOSND);
      GiveAmmo (4);
      GetMessage("You got 9mm Ammo!");
      break;

#ifdef SPEAR
   case   bo_25clip:
      if (gamestate.ammo == 99)
        return;

      SD_PlaySound (GETAMMOBOXSND);
      GiveAmmo (25);
      GetMessage("You got 9mm Ammo!");
      break;
#endif

   case   bo_machinegun:
      SD_PlaySound (KEINSND);
      GiveWeapon (wp_machinegun);
      GetMessage("You got a machinegun!");
      break;
   case   bo_pistol:
      SD_PlaySound (KEINSND);
      GiveWeapon (wp_pistol2);
      GetMessage("You got a P38!");
      break;
   case   bo_chaingun:
      SD_PlaySound (KEINSND);
      GiveWeapon (wp_chaingun);

      StatusDrawPic (17,4,GOTGATLINGPIC);
      facecount = 0;
      gotgatgun = 1;
      GetMessage("You got a Venom MK3!");
      break;

   case   bo_fullheal:
      SD_PlaySound (BONUS1UPSND);
      HealSelf (99);
      GiveAmmo (25);
      GiveExtraMan ();
      gamestate.treasurecount++;
      break;

   case   bo_food:
      if (gamestate.health == 100)
         return;

      SD_PlaySound (HEALTH1SND);
      HealSelf (10);
      GetMessage("You ate some food!");
      break;

   case   bo_alpo:
      if (gamestate.health == 100)
         return;

      SD_PlaySound (HEALTH1SND);
      HealSelf (4);
      GetMessage("You ate dog food - WOOF!!!");
      break;

   case   bo_gibs:
      if (gamestate.health >10)
         return;

      SD_PlaySound (SLURPIESND);
      HealSelf (1);
      GetMessage("You drank some blood, yuk!");
      break;

   case   bo_mess1:
      GetMessage("What the hell?");
                SD_PlaySound (GUTENTAGSND);
      break;

        case   bo_landmine:
      GetMessage("Landmine!");
                SD_PlaySound (SLURPIESND);
      break;

   case   bo_spear:
      spearflag = true;
      spearx = player->x;
      speary = player->y;
      spearangle = player->angle;
      playstate = ex_completed;
   }

   StartBonusFlash ();
   check->shapenum = -1;         // remove from list
}


/*
===================
=
= TryMove
=
= returns true if move ok
= debug: use pointers to optimize
===================
*/

boolean TryMove (objtype *ob)
{
   int         xl,yl,xh,yh,x,y;
   objtype      *check;
   long      deltax,deltay;

   xl = (ob->x-PLAYERSIZE) >>TILESHIFT;
   yl = (ob->y-PLAYERSIZE) >>TILESHIFT;

   xh = (ob->x+PLAYERSIZE) >>TILESHIFT;
   yh = (ob->y+PLAYERSIZE) >>TILESHIFT;

//
// check for solid walls
//
   for (y=yl;y<=yh;y++)
      for (x=xl;x<=xh;x++)
      {
         check = actorat[x][y];
         if (check && check<objlist)
            return false;
      }

//
// check for actors
//
   if (yl>0)
      yl--;
   if (yh<MAPSIZE-1)
      yh++;
   if (xl>0)
      xl--;
   if (xh<MAPSIZE-1)
      xh++;

   for (y=yl;y<=yh;y++)
      for (x=xl;x<=xh;x++)
      {
         check = actorat[x][y];
         if (check > objlist
         && (check->flags & FL_SHOOTABLE) )
         {
            deltax = ob->x - check->x;
            if (deltax < -MINACTORDIST || deltax > MINACTORDIST)
               continue;
            deltay = ob->y - check->y;
            if (deltay < -MINACTORDIST || deltay > MINACTORDIST)
               continue;

            return false;
         }
      }

   return true;
}


/*
===================
=
= ClipMove
=
===================
*/

void ClipMove (objtype *ob, long xmove, long ymove)
{
   long   basex,basey;

   basex = ob->x;
   basey = ob->y;

   ob->x = basex+xmove;
   ob->y = basey+ymove;
   if (TryMove (ob))
      return;

   if (noclip && ob->x > 2*TILEGLOBAL && ob->y > 2*TILEGLOBAL &&
   ob->x < (((long)(mapwidth-1))<<TILESHIFT)
   && ob->y < (((long)(mapheight-1))<<TILESHIFT) )
      return;      // walk through walls

   if (!SD_SoundPlaying())
      SD_PlaySound (HITWALLSND);

   ob->x = basex+xmove;
   ob->y = basey;
   if (TryMove (ob))
      return;

   ob->x = basex;
   ob->y = basey+ymove;
   if (TryMove (ob))
      return;

   ob->x = basex;
   ob->y = basey;
}

//==========================================================================

/*
===================
=
= VictoryTile
=
===================
*/

void VictoryTile (void)
{
#ifndef SPEAR
   SpawnBJVictory ();
#endif

   gamestate.victoryflag = true;
}


/*
===================
=
= Thrust
=
===================
*/

void Thrust (int angle, long speed)
{
   long xmove,ymove;
   long   slowmax;
   unsigned   offset;


   //
   // ZERO FUNNY COUNTER IF MOVED!
   //
   #ifdef SPEAR
   if (speed)
      funnyticount = 0;
   #endif

   thrustspeed += speed;
//
// moving bounds speed
//
   if (speed >= MINDIST*2)
      speed = MINDIST*2-1;

   xmove = FixedByFrac(speed,costable[angle]);
   ymove = -FixedByFrac(speed,sintable[angle]);

   ClipMove(player,xmove,ymove);

   player->tilex = player->x >> TILESHIFT;      // scale to tile values
   player->tiley = player->y >> TILESHIFT;

   offset = farmapylookup[player->tiley]+player->tilex;
   player->areanumber = *(mapsegs[0] + offset) -AREATILE;

   if (*(mapsegs[1] + offset) == EXITTILE)
      VictoryTile ();
if (*(mapsegs[1] + offset) == EXITLEVEL)
      playstate = ex_completed;
}


/*
=============================================================================

                        ACTIONS

=============================================================================
*/


/*
===============
=
= Cmd_Fire
=
===============
*/

void Cmd_Fire (void)
{
   buttonheld[bt_attack] = true;

   gamestate.weaponframe = 0;

   player->state = &s_attack;

   gamestate.attackframe = 0;
   gamestate.attackcount =
      attackinfo[gamestate.weapon][gamestate.attackframe].tics;
   gamestate.weaponframe =
      attackinfo[gamestate.weapon][gamestate.attackframe].frame;
}

//===========================================================================

/*
===============
=
= Cmd_Use
=
===============
*/

void Cmd_Use (void)
{
   objtype    *check;
   int         checkx,checky,doornum,dir;
   boolean      elevatorok;


//
// find which cardinal direction the player is facing
//
   if (player->angle < ANGLES/8 || player->angle > 7*ANGLES/8)
   {
      checkx = player->tilex + 1;
      checky = player->tiley;
      dir = di_east;
      elevatorok = true;
   }
   else if (player->angle < 3*ANGLES/8)
   {
      checkx = player->tilex;
      checky = player->tiley-1;
      dir = di_north;
      elevatorok = false;
   }
   else if (player->angle < 5*ANGLES/8)
   {
      checkx = player->tilex - 1;
      checky = player->tiley;
      dir = di_west;
      elevatorok = true;
   }
   else
   {
      checkx = player->tilex;
      checky = player->tiley + 1;
      dir = di_south;
      elevatorok = false;
   }

   doornum = tilemap[checkx][checky];
   if (*(mapsegs[1]+farmapylookup[checky]+checkx) == PUSHABLETILE)
   {
   //
   // pushable wall
   //

      PushWall (checkx,checky,dir);
      return;
   }
   if (!buttonheld[bt_use] && doornum == ELEVATORTILE && elevatorok)
   {
   //
   // use elevator
   //
      buttonheld[bt_use] = true;

      tilemap[checkx][checky]++;      // flip switch
      if (*(mapsegs[0]+farmapylookup[player->tiley]+player->tilex) == ALTELEVATORTILE)
         playstate = ex_secretlevel;
      else
         playstate = ex_completed;
      SD_PlaySound (LEVELDONESND);
      SD_WaitSoundDone();
   }
   else if (!buttonheld[bt_use] && doornum & 0x80)
   {
      buttonheld[bt_use] = true;
      OperateDoor (doornum & ~0x80);
   }
   else
      SD_PlaySound (DONOTHINGSND);

}

/*
=============================================================================

                     PLAYER CONTROL

=============================================================================
*/



/*
===============
=
= SpawnPlayer
=
===============
*/

void SpawnPlayer (int tilex, int tiley, int dir)
{
   player->obclass = playerobj;
   player->active = true;
   player->tilex = tilex;
   player->tiley = tiley;
   player->areanumber =
      *(mapsegs[0] + farmapylookup[player->tiley]+player->tilex);
   player->x = ((long)tilex<<TILESHIFT)+TILEGLOBAL/2;
   player->y = ((long)tiley<<TILESHIFT)+TILEGLOBAL/2;
   player->state = &s_player;
   player->angle = (1-dir)*90;
   if (player->angle<0)
      player->angle += ANGLES;
   player->flags = FL_NEVERMARK;
   Thrust (0,0);            // set some variables

   InitAreas ();
}


//===========================================================================

/*
===============
=
= T_KnifeAttack
=
= Update player hands, and try to do damage when the proper frame is reached
=
===============
*/

void   KnifeAttack (objtype *ob)
{
   objtype *check,*closest;
   long   dist;

   SD_PlaySound (ATKKNIFESND);
// actually fire
   dist = 0x7fffffff;
   closest = NULL;
   for (check=ob->next ; check ; check=check->next)
      if ( (check->flags & FL_SHOOTABLE)
      && (check->flags & FL_VISABLE)
      && abs (check->viewx-centerx) < shootdelta
      )
      {
         if (check->transx < dist)
         {
            dist = check->transx;
            closest = check;
         }
      }

   if (!closest || dist> 0x18000l)
   {
   // missed

      return;
   }

// hit something
   DamageActor (closest,US_RndT() >> 4);
}



void   GunAttack (objtype *ob)
{
   objtype *check,*closest,*oldclosest;
   int      damage;
   int      dx,dy,dist;
   long   viewdist;

   switch (gamestate.weapon)
   {
   case wp_pistol:
      SD_PlaySound (ATKPISTOLSND);
      break;
   case wp_pistol2:
      SD_PlaySound (MEINSND);
      break;
   case wp_machinegun:
      SD_PlaySound (ATKMACHINEGUNSND);
      break;
   case wp_chaingun:
      SD_PlaySound (ATKGATLINGSND);
      break;
   }

   madenoise = true;

//
// find potential targets
//
   viewdist = 0x7fffffffl;
   closest = NULL;

   while (1)
   {
      oldclosest = closest;

      for (check=ob->next ; check ; check=check->next)
         if ( (check->flags & FL_SHOOTABLE)
         && (check->flags & FL_VISABLE)
         && abs (check->viewx-centerx) < shootdelta
         )
         {
            if (check->transx < viewdist)
            {
               viewdist = check->transx;
               closest = check;
            }
         }

      if (closest == oldclosest)
         return;                  // no more targets, all missed

   //
   // trace a line from player to enemey
   //
      if (CheckLine(closest))
         break;

   }

//
// hit something
//
   dx = abs(closest->tilex - player->tilex);
   dy = abs(closest->tiley - player->tiley);
   dist = dx>dy ? dx:dy;

   if (dist<2)
      damage = US_RndT() / 4;
   else if (dist<4)
      damage = US_RndT() / 6;
   else
   {
      if ( (US_RndT() / 12) < dist)      // missed
         return;
      damage = US_RndT() / 6;
   }
switch (gamestate.weapon)
    {
     case wp_pistol:
          damage = damage * 0.50;
          break;
     case wp_pistol2:
          break;
     case wp_machinegun:
          damage = damage * 1.00;
          break;
     case wp_chaingun:
          damage = damage * 3.50;
     }

   DamageActor (closest,damage);
}

//===========================================================================

/*
===============
=
= VictorySpin
=
===============
*/

void VictorySpin (void)
{
   long   desty;

   if (player->angle > 270)
   {
      player->angle -= tics * 3;
      if (player->angle < 270)
         player->angle = 270;
   }
   else if (player->angle < 270)
   {
      player->angle += tics * 3;
      if (player->angle > 270)
         player->angle = 270;
   }

   desty = (((long)player->tiley-5)<<TILESHIFT)-0x3000;

   if (player->y > desty)
   {
      player->y -= tics*4096;
      if (player->y < desty)
         player->y = desty;
   }
}


//===========================================================================

/*
===============
=
= T_Attack
=
===============
*/

void   T_Attack (objtype *ob)
{
   struct   atkinf   *cur;

   UpdateFace ();

   if (gamestate.victoryflag)      // watching the BJ actor
   {
      VictorySpin ();
      return;
   }

   if ( buttonstate[bt_use] && !buttonheld[bt_use] )
      buttonstate[bt_use] = false;

   if ( buttonstate[bt_attack] && !buttonheld[bt_attack])
      buttonstate[bt_attack] = false;

   ControlMovement (ob);
   if (gamestate.victoryflag)      // watching the BJ actor
      return;

   plux = player->x >> UNSIGNEDSHIFT;         // scale to fit in unsigned
   pluy = player->y >> UNSIGNEDSHIFT;
   player->tilex = player->x >> TILESHIFT;      // scale to tile values
   player->tiley = player->y >> TILESHIFT;

//
// change frame and fire
//
   gamestate.attackcount -= tics;
   while (gamestate.attackcount <= 0)
   {
      cur = &attackinfo[gamestate.weapon][gamestate.attackframe];
      switch (cur->attack)
      {
      case -1:
         ob->state = &s_player;
         if (!gamestate.ammo)
         {
            gamestate.weapon = wp_knife;
            DrawWeapon ();
         }
         else
         {
            if (gamestate.weapon != gamestate.chosenweapon)
            {
               gamestate.weapon = gamestate.chosenweapon;
               DrawWeapon ();
            }
         };
         gamestate.attackframe = gamestate.weaponframe = 0;
         return;



      case 4:
         if (!gamestate.ammo)
            break;
         if (buttonstate[bt_attack])
            gamestate.attackframe -= 2;
      case 1:
         if (!gamestate.ammo)
         {   // can only happen with chain gun
            gamestate.attackframe++;
            break;
         }
         GunAttack (ob);
         if (gamestate.weapon == wp_pistol)
         gamestate.ammo--;
         DrawAmmo ();
         break;

      case 2:
         KnifeAttack (ob);
         break;

      case 3:
         if (gamestate.ammo && buttonstate[bt_attack])
            gamestate.attackframe -= 2;
         break;

         
      }

      gamestate.attackcount += cur->tics;
      gamestate.attackframe++;
      gamestate.weaponframe =
         attackinfo[gamestate.weapon][gamestate.attackframe].frame;

   }

}



//===========================================================================

/*
===============
=
= T_Player
=
===============
*/

void   T_Player (objtype *ob)
{
   if (gamestate.victoryflag)      // watching the BJ actor
   {
      VictorySpin ();
      return;
   }

   UpdateFace ();
   CheckWeaponChange ();

   if ( buttonstate[bt_use] )
      Cmd_Use ();

   if ( buttonstate[bt_attack] && !buttonheld[bt_attack])
      Cmd_Fire ();

   ControlMovement (ob);
   if (gamestate.victoryflag)      // watching the BJ actor
      return;


   plux = player->x >> UNSIGNEDSHIFT;         // scale to fit in unsigned
   pluy = player->y >> UNSIGNEDSHIFT;
   player->tilex = player->x >> TILESHIFT;      // scale to tile values
   player->tiley = player->y >> TILESHIFT;
}


Help?
_________________
My Wolfenstein Website:
http://www.wolf94.cjb.net

Status: Falling apart over a product I ordered that is taking forever to arrive.
Back to top
View user's profile Send private message Visit poster's website
Mega Luigi
Site Admin


Joined: 12 Jan 2005
Posts: 127
Location: Brazil

PostPosted: Sat Feb 12, 2005 3:02 am    Post subject: Reply with quote

You get this error just now, or in the pass you had it? And, if you have a backup, maybe you should try to compile it, if works, do you (r) latest (s) code (s). There are a lot of problems in Wolfenstein 3d Engine that the people don't know how to solve it (I am not saying your problem can't be solved). A friend tip:

-Do your do you (r) latest (s) code (s) because will be faster than you wait to someone answer you. Wink

BTW: I know that this is not a good tip, but in my opinions is the best thing to do. Smile
_________________
Mega Luigi
Site Admin
Forums Admin
Back to top
View user's profile Send private message Send e-mail MSN Messenger
Conner94
Moderator


Joined: 15 Jan 2005
Posts: 249
Location: ???

PostPosted: Sat Feb 12, 2005 3:24 am    Post subject: Reply with quote

I'll look through my backup, but they are the same I think so I will use the old one. I'll tell you guys later if I figure it out.
_________________
My Wolfenstein Website:
http://www.wolf94.cjb.net

Status: Falling apart over a product I ordered that is taking forever to arrive.
Back to top
View user's profile Send private message Visit poster's website
Mega Luigi
Site Admin


Joined: 12 Jan 2005
Posts: 127
Location: Brazil

PostPosted: Sat Feb 12, 2005 3:34 am    Post subject: Reply with quote

Ok. Hope your backup is a few older than the file you've posted! Razz
_________________
Mega Luigi
Site Admin
Forums Admin
Back to top
View user's profile Send private message Send e-mail MSN Messenger
Mario Maniac
Site Admin


Joined: 13 Jan 2005
Posts: 47
Location: Brazil,RS,POA

PostPosted: Sat Feb 12, 2005 3:51 pm    Post subject: Reply with quote

Everytime I get this error, normally, it's because of some statement missing, like a {. Borland will not say the it is missing because BC may thing that the place where you find the "declaration not allowed" is part of other code, like if you missing a { in the SpawnPlayer function BC may things that the T_KnifeAttack routine is part of SpawnPlayer.

So I suggest you to check changes you have made in your code in this file, looking for any missing statements.
_________________
-Mario Maniac
Back to top
View user's profile Send private message Send e-mail MSN Messenger
Conner94
Moderator


Joined: 15 Jan 2005
Posts: 249
Location: ???

PostPosted: Sat Feb 12, 2005 5:04 pm    Post subject: Reply with quote

I figured that was the reason...I'll go through carefully and slowly.


EDIT: Ok I figured it out, when I added to the DrawWeapon function I forgot a "}".
_________________
My Wolfenstein Website:
http://www.wolf94.cjb.net

Status: Falling apart over a product I ordered that is taking forever to arrive.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Wolf Planet Forum Index -> Coding Alliance All times are GMT
Page 1 of 1

Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001 phpBB Group

Chronicles phpBB2 theme by Jakob Persson (http://www.eddingschronicles.com). Stone textures by Patty Herford.