]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/hb/wl_act1.c
going to start wolf3d core core (loop with input only) work soon. I was mostly brains...
[16.git] / src / lib / hb / wl_act1.c
diff --git a/src/lib/hb/wl_act1.c b/src/lib/hb/wl_act1.c
deleted file mode 100755 (executable)
index 10d84e4..0000000
+++ /dev/null
@@ -1,900 +0,0 @@
-// WL_ACT1.C\r
-\r
-#include "WL_DEF.H"\r
-#pragma hdrstop\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                       STATICS\r
-\r
-=============================================================================\r
-*/\r
-\r
-\r
-statobj_t      statobjlist[MAXSTATS],*laststatobj;\r
-\r
-\r
-struct\r
-{\r
-       int             picnum;\r
-       stat_t  type;\r
-} statinfo[] =\r
-{\r
-{SPR_STAT_0},                                  // puddle          spr1v\r
-{SPR_STAT_1,block},                            // Green Barrel    "\r
-{SPR_STAT_2,block},                            // Table/chairs    "\r
-{SPR_STAT_3,block},                            // Floor lamp      "\r
-{SPR_STAT_4},                                  // Chandelier      "\r
-{SPR_STAT_5,block},                            // Hanged man      "\r
-{SPR_STAT_6,bo_alpo},                  // Bad food        "\r
-{SPR_STAT_7,block},                            // Red pillar      "\r
-//\r
-// NEW PAGE\r
-//\r
-{SPR_STAT_8,block},                            // Tree            spr2v\r
-{SPR_STAT_9},                                  // Skeleton flat   "\r
-{SPR_STAT_10,block},                   // Sink            " (SOD:gibs)\r
-{SPR_STAT_11,block},                   // Potted plant    "\r
-{SPR_STAT_12,block},                   // Urn             "\r
-{SPR_STAT_13,block},                   // Bare table      "\r
-{SPR_STAT_14},                                 // Ceiling light   "\r
-#ifndef SPEAR\r
-{SPR_STAT_15},                                 // Kitchen stuff   "\r
-#else\r
-{SPR_STAT_15,block},                   // Gibs!\r
-#endif\r
-//\r
-// NEW PAGE\r
-//\r
-{SPR_STAT_16,block},                   // suit of armor   spr3v\r
-{SPR_STAT_17,block},                   // Hanging cage    "\r
-{SPR_STAT_18,block},                   // SkeletoninCage  "\r
-{SPR_STAT_19},                                 // Skeleton relax  "\r
-{SPR_STAT_20,bo_key1},                 // Key 1           "\r
-{SPR_STAT_21,bo_key2},                 // Key 2           "\r
-{SPR_STAT_22,block},                   // stuff                                (SOD:gibs)\r
-{SPR_STAT_23},                                 // stuff\r
-//\r
-// NEW PAGE\r
-//\r
-{SPR_STAT_24,bo_food},                         // Good food       spr4v\r
-{SPR_STAT_25,bo_firstaid},             // First aid       "\r
-{SPR_STAT_26,bo_clip},                 // Clip            "\r
-{SPR_STAT_27,bo_machinegun},   // Machine gun     "\r
-{SPR_STAT_28,bo_chaingun},             // Gatling gun     "\r
-{SPR_STAT_29,bo_cross},                        // Cross           "\r
-{SPR_STAT_30,bo_chalice},              // Chalice         "\r
-{SPR_STAT_31,bo_bible},                        // Bible           "\r
-//\r
-// NEW PAGE\r
-//\r
-{SPR_STAT_32,bo_crown},                        // crown           spr5v\r
-{SPR_STAT_33,bo_fullheal},             // one up          "\r
-{SPR_STAT_34,bo_gibs},                 // gibs            "\r
-{SPR_STAT_35,block},                   // barrel          "\r
-{SPR_STAT_36,block},                   // well            "\r
-{SPR_STAT_37,block},                   // Empty well      "\r
-{SPR_STAT_38,bo_gibs},                 // Gibs 2          "\r
-{SPR_STAT_39,block},                   // flag                         "\r
-//\r
-// NEW PAGE\r
-//\r
-#ifndef SPEAR\r
-{SPR_STAT_40,block},                   // Call Apogee          spr7v\r
-#else\r
-{SPR_STAT_40},                                 // Red light\r
-#endif\r
-//\r
-// NEW PAGE\r
-//\r
-{SPR_STAT_41},                                 // junk            "\r
-{SPR_STAT_42},                                 // junk                    "\r
-{SPR_STAT_43},                                 // junk            "\r
-#ifndef SPEAR\r
-{SPR_STAT_44},                                 // pots            "\r
-#else\r
-{SPR_STAT_44,block},                   // Gibs!\r
-#endif\r
-{SPR_STAT_45,block},                   // stove           " (SOD:gibs)\r
-{SPR_STAT_46,block},                   // spears          " (SOD:gibs)\r
-{SPR_STAT_47},                                 // vines                        "\r
-//\r
-// NEW PAGE\r
-//\r
-#ifdef SPEAR\r
-{SPR_STAT_48,block},                   // marble pillar\r
-{SPR_STAT_49,bo_25clip},               // bonus 25 clip\r
-{SPR_STAT_50,block},                   // truck\r
-{SPR_STAT_51,bo_spear},                        // SPEAR OF DESTINY!\r
-#endif\r
-\r
-{SPR_STAT_26,bo_clip2},                        // Clip            "\r
-{-1}                                                   // terminator\r
-};\r
-\r
-/*\r
-===============\r
-=\r
-= InitStaticList\r
-=\r
-===============\r
-*/\r
-\r
-void InitStaticList (void)\r
-{\r
-       laststatobj = &statobjlist[0];\r
-}\r
-\r
-\r
-\r
-/*\r
-===============\r
-=\r
-= SpawnStatic\r
-=\r
-===============\r
-*/\r
-\r
-void SpawnStatic (int tilex, int tiley, int type)\r
-{\r
-       laststatobj->shapenum = statinfo[type].picnum;\r
-       laststatobj->tilex = tilex;\r
-       laststatobj->tiley = tiley;\r
-       laststatobj->visspot = &spotvis[tilex][tiley];\r
-\r
-       switch (statinfo[type].type)\r
-       {\r
-       case block:\r
-               (unsigned)actorat[tilex][tiley] = 1;            // consider it a blocking tile\r
-       case dressing:\r
-               laststatobj->flags = 0;\r
-               break;\r
-\r
-       case    bo_cross:\r
-       case    bo_chalice:\r
-       case    bo_bible:\r
-       case    bo_crown:\r
-       case    bo_fullheal:\r
-               if (!loadedgame)\r
-                 gamestate.treasuretotal++;\r
-\r
-       case    bo_firstaid:\r
-       case    bo_key1:\r
-       case    bo_key2:\r
-       case    bo_key3:\r
-       case    bo_key4:\r
-       case    bo_clip:\r
-       case    bo_25clip:\r
-       case    bo_machinegun:\r
-       case    bo_chaingun:\r
-       case    bo_food:\r
-       case    bo_alpo:\r
-       case    bo_gibs:\r
-       case    bo_spear:\r
-               laststatobj->flags = FL_BONUS;\r
-               laststatobj->itemnumber = statinfo[type].type;\r
-               break;\r
-       }\r
-\r
-       laststatobj++;\r
-\r
-       if (laststatobj == &statobjlist[MAXSTATS])\r
-               Quit ("Too many static objects!\n");\r
-}\r
-\r
-\r
-/*\r
-===============\r
-=\r
-= PlaceItemType\r
-=\r
-= Called during game play to drop actors' items.  It finds the proper\r
-= item number based on the item type (bo_???).  If there are no free item\r
-= spots, nothing is done.\r
-=\r
-===============\r
-*/\r
-\r
-void PlaceItemType (int itemtype, int tilex, int tiley)\r
-{\r
-       int                     type;\r
-       statobj_t       *spot;\r
-\r
-//\r
-// find the item number\r
-//\r
-       for (type=0 ;  ; type++)\r
-       {\r
-               if (statinfo[type].picnum == -1)                // end of list\r
-                       Quit ("PlaceItemType: couldn't find type!");\r
-               if (statinfo[type].type == itemtype)\r
-                       break;\r
-       }\r
-\r
-//\r
-// find a spot in statobjlist to put it in\r
-//\r
-       for (spot=&statobjlist[0] ; ; spot++)\r
-       {\r
-               if (spot==laststatobj)\r
-               {\r
-                       if (spot == &statobjlist[MAXSTATS])\r
-                               return;                                                 // no free spots\r
-                       laststatobj++;                                          // space at end\r
-                       break;\r
-               }\r
-\r
-               if (spot->shapenum == -1)                               // -1 is a free spot\r
-                       break;\r
-       }\r
-//\r
-// place it\r
-//\r
-       spot->shapenum = statinfo[type].picnum;\r
-       spot->tilex = tilex;\r
-       spot->tiley = tiley;\r
-       spot->visspot = &spotvis[tilex][tiley];\r
-       spot->flags = FL_BONUS;\r
-       spot->itemnumber = statinfo[type].type;\r
-}\r
-\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                       DOORS\r
-\r
-doorobjlist[] holds most of the information for the doors\r
-\r
-doorposition[] holds the amount the door is open, ranging from 0 to 0xffff\r
-       this is directly accessed by AsmRefresh during rendering\r
-\r
-The number of doors is limited to 64 because a spot in tilemap holds the\r
-       door number in the low 6 bits, with the high bit meaning a door center\r
-       and bit 6 meaning a door side tile\r
-\r
-Open doors conect two areas, so sounds will travel between them and sight\r
-       will be checked when the player is in a connected area.\r
-\r
-Areaconnect is incremented/decremented by each door. If >0 they connect\r
-\r
-Every time a door opens or closes the areabyplayer matrix gets recalculated.\r
-       An area is true if it connects with the player's current spor.\r
-\r
-=============================================================================\r
-*/\r
-\r
-#define DOORWIDTH      0x7800\r
-#define OPENTICS       300\r
-\r
-doorobj_t      doorobjlist[MAXDOORS],*lastdoorobj;\r
-int                    doornum;\r
-\r
-unsigned       doorposition[MAXDOORS];         // leading edge of door 0=closed\r
-                                                                               // 0xffff = fully open\r
-\r
-byte           far areaconnect[NUMAREAS][NUMAREAS];\r
-\r
-boolean                areabyplayer[NUMAREAS];\r
-\r
-\r
-/*\r
-==============\r
-=\r
-= ConnectAreas\r
-=\r
-= Scans outward from playerarea, marking all connected areas\r
-=\r
-==============\r
-*/\r
-\r
-void RecursiveConnect (int areanumber)\r
-{\r
-       int     i;\r
-\r
-       for (i=0;i<NUMAREAS;i++)\r
-       {\r
-               if (areaconnect[areanumber][i] && !areabyplayer[i])\r
-               {\r
-                       areabyplayer[i] = true;\r
-                       RecursiveConnect (i);\r
-               }\r
-       }\r
-}\r
-\r
-\r
-void ConnectAreas (void)\r
-{\r
-       memset (areabyplayer,0,sizeof(areabyplayer));\r
-       areabyplayer[player->areanumber] = true;\r
-       RecursiveConnect (player->areanumber);\r
-}\r
-\r
-\r
-void InitAreas (void)\r
-{\r
-       memset (areabyplayer,0,sizeof(areabyplayer));\r
-       areabyplayer[player->areanumber] = true;\r
-}\r
-\r
-\r
-\r
-/*\r
-===============\r
-=\r
-= InitDoorList\r
-=\r
-===============\r
-*/\r
-\r
-void InitDoorList (void)\r
-{\r
-       memset (areabyplayer,0,sizeof(areabyplayer));\r
-       _fmemset (areaconnect,0,sizeof(areaconnect));\r
-\r
-       lastdoorobj = &doorobjlist[0];\r
-       doornum = 0;\r
-}\r
-\r
-\r
-/*\r
-===============\r
-=\r
-= SpawnDoor\r
-=\r
-===============\r
-*/\r
-\r
-void SpawnDoor (int tilex, int tiley, boolean vertical, int lock)\r
-{\r
-       int     areanumber;\r
-       unsigned        far *map;\r
-\r
-       if (doornum==64)\r
-               Quit ("64+ doors on level!");\r
-\r
-       doorposition[doornum] = 0;              // doors start out fully closed\r
-       lastdoorobj->tilex = tilex;\r
-       lastdoorobj->tiley = tiley;\r
-       lastdoorobj->vertical = vertical;\r
-       lastdoorobj->lock = lock;\r
-       lastdoorobj->action = dr_closed;\r
-\r
-       (unsigned)actorat[tilex][tiley] = doornum | 0x80;       // consider it a solid wall\r
-\r
-//\r
-// make the door tile a special tile, and mark the adjacent tiles\r
-// for door sides\r
-//\r
-       tilemap[tilex][tiley] = doornum | 0x80;\r
-       map = mapsegs[0] + farmapylookup[tiley]+tilex;\r
-       if (vertical)\r
-       {\r
-               *map = *(map-1);                        // set area number\r
-               tilemap[tilex][tiley-1] |= 0x40;\r
-               tilemap[tilex][tiley+1] |= 0x40;\r
-       }\r
-       else\r
-       {\r
-               *map = *(map-mapwidth);                                 // set area number\r
-               tilemap[tilex-1][tiley] |= 0x40;\r
-               tilemap[tilex+1][tiley] |= 0x40;\r
-       }\r
-\r
-       doornum++;\r
-       lastdoorobj++;\r
-}\r
-\r
-//===========================================================================\r
-\r
-/*\r
-=====================\r
-=\r
-= OpenDoor\r
-=\r
-=====================\r
-*/\r
-\r
-void OpenDoor (int door)\r
-{\r
-       if (doorobjlist[door].action == dr_open)\r
-               doorobjlist[door].ticcount = 0;                 // reset open time\r
-       else\r
-               doorobjlist[door].action = dr_opening;  // start it opening\r
-}\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= CloseDoor\r
-=\r
-=====================\r
-*/\r
-\r
-void CloseDoor (int door)\r
-{\r
-       int     tilex,tiley,area;\r
-       objtype *check;\r
-\r
-//\r
-// don't close on anything solid\r
-//\r
-       tilex = doorobjlist[door].tilex;\r
-       tiley = doorobjlist[door].tiley;\r
-\r
-       if (actorat[tilex][tiley])\r
-               return;\r
-\r
-       if (player->tilex == tilex && player->tiley == tiley)\r
-               return;\r
-\r
-       if (doorobjlist[door].vertical)\r
-       {\r
-               if ( player->tiley == tiley )\r
-               {\r
-                       if ( ((player->x+MINDIST) >>TILESHIFT) == tilex )\r
-                               return;\r
-                       if ( ((player->x-MINDIST) >>TILESHIFT) == tilex )\r
-                               return;\r
-               }\r
-               check = actorat[tilex-1][tiley];\r
-               if (check && ((check->x+MINDIST) >> TILESHIFT) == tilex )\r
-                       return;\r
-               check = actorat[tilex+1][tiley];\r
-               if (check && ((check->x-MINDIST) >> TILESHIFT) == tilex )\r
-                       return;\r
-       }\r
-       else if (!doorobjlist[door].vertical)\r
-       {\r
-               if (player->tilex == tilex)\r
-               {\r
-                       if ( ((player->y+MINDIST) >>TILESHIFT) == tiley )\r
-                               return;\r
-                       if ( ((player->y-MINDIST) >>TILESHIFT) == tiley )\r
-                               return;\r
-               }\r
-               check = actorat[tilex][tiley-1];\r
-               if (check && ((check->y+MINDIST) >> TILESHIFT) == tiley )\r
-                       return;\r
-               check = actorat[tilex][tiley+1];\r
-               if (check && ((check->y-MINDIST) >> TILESHIFT) == tiley )\r
-                       return;\r
-       }\r
-\r
-\r
-//\r
-// play door sound if in a connected area\r
-//\r
-       area = *(mapsegs[0] + farmapylookup[doorobjlist[door].tiley]\r
-                       +doorobjlist[door].tilex)-AREATILE;\r
-       if (areabyplayer[area])\r
-       {\r
-               PlaySoundLocTile(CLOSEDOORSND,doorobjlist[door].tilex,doorobjlist[door].tiley); // JAB\r
-       }\r
-\r
-       doorobjlist[door].action = dr_closing;\r
-//\r
-// make the door space solid\r
-//\r
-       (unsigned)actorat[tilex][tiley]\r
-               = door | 0x80;\r
-}\r
-\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= OperateDoor\r
-=\r
-= The player wants to change the door's direction\r
-=\r
-=====================\r
-*/\r
-\r
-void OperateDoor (int door)\r
-{\r
-       int     lock;\r
-\r
-       lock = doorobjlist[door].lock;\r
-       if (lock >= dr_lock1 && lock <= dr_lock4)\r
-       {\r
-               if ( ! (gamestate.keys & (1 << (lock-dr_lock1) ) ) )\r
-               {\r
-                       SD_PlaySound (NOWAYSND);                // locked\r
-                       return;\r
-               }\r
-       }\r
-\r
-       switch (doorobjlist[door].action)\r
-       {\r
-       case dr_closed:\r
-       case dr_closing:\r
-               OpenDoor (door);\r
-               break;\r
-       case dr_open:\r
-       case dr_opening:\r
-               CloseDoor (door);\r
-               break;\r
-       }\r
-}\r
-\r
-\r
-//===========================================================================\r
-\r
-/*\r
-===============\r
-=\r
-= DoorOpen\r
-=\r
-= Close the door after three seconds\r
-=\r
-===============\r
-*/\r
-\r
-void DoorOpen (int door)\r
-{\r
-       if ( (doorobjlist[door].ticcount += tics) >= OPENTICS)\r
-               CloseDoor (door);\r
-}\r
-\r
-\r
-\r
-/*\r
-===============\r
-=\r
-= DoorOpening\r
-=\r
-===============\r
-*/\r
-\r
-void DoorOpening (int door)\r
-{\r
-       int             area1,area2;\r
-       unsigned        far     *map;\r
-       long    position;\r
-\r
-       position = doorposition[door];\r
-       if (!position)\r
-       {\r
-       //\r
-       // door is just starting to open, so connect the areas\r
-       //\r
-               map = mapsegs[0] + farmapylookup[doorobjlist[door].tiley]\r
-                       +doorobjlist[door].tilex;\r
-\r
-               if (doorobjlist[door].vertical)\r
-               {\r
-                       area1 = *(map+1);\r
-                       area2 = *(map-1);\r
-               }\r
-               else\r
-               {\r
-                       area1 = *(map-mapwidth);\r
-                       area2 = *(map+mapwidth);\r
-               }\r
-               area1 -= AREATILE;\r
-               area2 -= AREATILE;\r
-               areaconnect[area1][area2]++;\r
-               areaconnect[area2][area1]++;\r
-               ConnectAreas ();\r
-               if (areabyplayer[area1])\r
-               {\r
-                       PlaySoundLocTile(OPENDOORSND,doorobjlist[door].tilex,doorobjlist[door].tiley);  // JAB\r
-               }\r
-       }\r
-\r
-//\r
-// slide the door by an adaptive amount\r
-//\r
-       position += tics<<10;\r
-       if (position >= 0xffff)\r
-       {\r
-       //\r
-       // door is all the way open\r
-       //\r
-               position = 0xffff;\r
-               doorobjlist[door].ticcount = 0;\r
-               doorobjlist[door].action = dr_open;\r
-               actorat[doorobjlist[door].tilex][doorobjlist[door].tiley] = 0;\r
-       }\r
-\r
-       doorposition[door] = position;\r
-}\r
-\r
-\r
-/*\r
-===============\r
-=\r
-= DoorClosing\r
-=\r
-===============\r
-*/\r
-\r
-void DoorClosing (int door)\r
-{\r
-       int             area1,area2,move;\r
-       unsigned        far     *map;\r
-       long    position;\r
-       int             tilex,tiley;\r
-\r
-       tilex = doorobjlist[door].tilex;\r
-       tiley = doorobjlist[door].tiley;\r
-\r
-       if ( ((unsigned)actorat[tilex][tiley] != (door | 0x80))\r
-       || (player->tilex == tilex && player->tiley == tiley) )\r
-       {                       // something got inside the door\r
-               OpenDoor (door);\r
-               return;\r
-       };\r
-\r
-       position = doorposition[door];\r
-\r
-//\r
-// slide the door by an adaptive amount\r
-//\r
-       position -= tics<<10;\r
-       if (position <= 0)\r
-       {\r
-       //\r
-       // door is closed all the way, so disconnect the areas\r
-       //\r
-               position = 0;\r
-\r
-               doorobjlist[door].action = dr_closed;\r
-\r
-               map = mapsegs[0] + farmapylookup[doorobjlist[door].tiley]\r
-                       +doorobjlist[door].tilex;\r
-\r
-               if (doorobjlist[door].vertical)\r
-               {\r
-                       area1 = *(map+1);\r
-                       area2 = *(map-1);\r
-               }\r
-               else\r
-               {\r
-                       area1 = *(map-mapwidth);\r
-                       area2 = *(map+mapwidth);\r
-               }\r
-               area1 -= AREATILE;\r
-               area2 -= AREATILE;\r
-               areaconnect[area1][area2]--;\r
-               areaconnect[area2][area1]--;\r
-\r
-               ConnectAreas ();\r
-       }\r
-\r
-       doorposition[door] = position;\r
-}\r
-\r
-\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= MoveDoors\r
-=\r
-= Called from PlayLoop\r
-=\r
-=====================\r
-*/\r
-\r
-void MoveDoors (void)\r
-{\r
-       int             door;\r
-\r
-       if (gamestate.victoryflag)              // don't move door during victory sequence\r
-               return;\r
-\r
-       for (door = 0 ; door < doornum ; door++)\r
-               switch (doorobjlist[door].action)\r
-               {\r
-               case dr_open:\r
-                       DoorOpen (door);\r
-                       break;\r
-\r
-               case dr_opening:\r
-                       DoorOpening(door);\r
-                       break;\r
-\r
-               case dr_closing:\r
-                       DoorClosing(door);\r
-                       break;\r
-               }\r
-}\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                               PUSHABLE WALLS\r
-\r
-=============================================================================\r
-*/\r
-\r
-unsigned       pwallstate;\r
-unsigned       pwallpos;                       // amount a pushable wall has been moved (0-63)\r
-unsigned       pwallx,pwally;\r
-int                    pwalldir;\r
-\r
-/*\r
-===============\r
-=\r
-= PushWall\r
-=\r
-===============\r
-*/\r
-\r
-void PushWall (int checkx, int checky, int dir)\r
-{\r
-       int             oldtile;\r
-\r
-       if (pwallstate)\r
-         return;\r
-\r
-\r
-       oldtile = tilemap[checkx][checky];\r
-       if (!oldtile)\r
-               return;\r
-\r
-       switch (dir)\r
-       {\r
-       case di_north:\r
-               if (actorat[checkx][checky-1])\r
-               {\r
-                       SD_PlaySound (NOWAYSND);\r
-                       return;\r
-               }\r
-               (unsigned)actorat[checkx][checky-1] =\r
-               tilemap[checkx][checky-1] = oldtile;\r
-               break;\r
-\r
-       case di_east:\r
-               if (actorat[checkx+1][checky])\r
-               {\r
-                       SD_PlaySound (NOWAYSND);\r
-                       return;\r
-               }\r
-               (unsigned)actorat[checkx+1][checky] =\r
-               tilemap[checkx+1][checky] = oldtile;\r
-               break;\r
-\r
-       case di_south:\r
-               if (actorat[checkx][checky+1])\r
-               {\r
-                       SD_PlaySound (NOWAYSND);\r
-                       return;\r
-               }\r
-               (unsigned)actorat[checkx][checky+1] =\r
-               tilemap[checkx][checky+1] = oldtile;\r
-               break;\r
-\r
-       case di_west:\r
-               if (actorat[checkx-1][checky])\r
-               {\r
-                       SD_PlaySound (NOWAYSND);\r
-                       return;\r
-               }\r
-               (unsigned)actorat[checkx-1][checky] =\r
-               tilemap[checkx-1][checky] = oldtile;\r
-               break;\r
-       }\r
-\r
-       gamestate.secretcount++;\r
-       pwallx = checkx;\r
-       pwally = checky;\r
-       pwalldir = dir;\r
-       pwallstate = 1;\r
-       pwallpos = 0;\r
-       tilemap[pwallx][pwally] |= 0xc0;\r
-       *(mapsegs[1]+farmapylookup[pwally]+pwallx) = 0; // remove P tile info\r
-\r
-       SD_PlaySound (PUSHWALLSND);\r
-}\r
-\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= MovePWalls\r
-=\r
-=================\r
-*/\r
-\r
-void MovePWalls (void)\r
-{\r
-       int             oldblock,oldtile;\r
-\r
-       if (!pwallstate)\r
-               return;\r
-\r
-       oldblock = pwallstate/128;\r
-\r
-       pwallstate += tics;\r
-\r
-       if (pwallstate/128 != oldblock)\r
-       {\r
-       // block crossed into a new block\r
-               oldtile = tilemap[pwallx][pwally] & 63;\r
-\r
-               //\r
-               // the tile can now be walked into\r
-               //\r
-               tilemap[pwallx][pwally] = 0;\r
-               (unsigned)actorat[pwallx][pwally] = 0;\r
-               *(mapsegs[0]+farmapylookup[pwally]+pwallx) = player->areanumber+AREATILE;\r
-\r
-               //\r
-               // see if it should be pushed farther\r
-               //\r
-               if (pwallstate>256)\r
-               {\r
-               //\r
-               // the block has been pushed two tiles\r
-               //\r
-                       pwallstate = 0;\r
-                       return;\r
-               }\r
-               else\r
-               {\r
-                       switch (pwalldir)\r
-                       {\r
-                       case di_north:\r
-                               pwally--;\r
-                               if (actorat[pwallx][pwally-1])\r
-                               {\r
-                                       pwallstate = 0;\r
-                                       return;\r
-                               }\r
-                               (unsigned)actorat[pwallx][pwally-1] =\r
-                               tilemap[pwallx][pwally-1] = oldtile;\r
-                               break;\r
-\r
-                       case di_east:\r
-                               pwallx++;\r
-                               if (actorat[pwallx+1][pwally])\r
-                               {\r
-                                       pwallstate = 0;\r
-                                       return;\r
-                               }\r
-                               (unsigned)actorat[pwallx+1][pwally] =\r
-                               tilemap[pwallx+1][pwally] = oldtile;\r
-                               break;\r
-\r
-                       case di_south:\r
-                               pwally++;\r
-                               if (actorat[pwallx][pwally+1])\r
-                               {\r
-                                       pwallstate = 0;\r
-                                       return;\r
-                               }\r
-                               (unsigned)actorat[pwallx][pwally+1] =\r
-                               tilemap[pwallx][pwally+1] = oldtile;\r
-                               break;\r
-\r
-                       case di_west:\r
-                               pwallx--;\r
-                               if (actorat[pwallx-1][pwally])\r
-                               {\r
-                                       pwallstate = 0;\r
-                                       return;\r
-                               }\r
-                               (unsigned)actorat[pwallx-1][pwally] =\r
-                               tilemap[pwallx-1][pwally] = oldtile;\r
-                               break;\r
-                       }\r
-\r
-                       tilemap[pwallx][pwally] = oldtile | 0xc0;\r
-               }\r
-       }\r
-\r
-\r
-       pwallpos = (pwallstate/2)&63;\r
-\r
-}\r
-\r