diff --git a/platform/Windows/build.vcxproj b/platform/Windows/build.vcxproj
index 925a0fe4a..b36d10c8c 100644
--- a/platform/Windows/build.vcxproj
+++ b/platform/Windows/build.vcxproj
@@ -296,13 +296,7 @@
true
-
- true
- true
- true
- true
-
-
+
@@ -319,32 +313,26 @@
-
+
-
-
+
-
-
-
-
-
+
+
+
-
+
-
-
-
@@ -360,7 +348,7 @@
-
+
@@ -368,7 +356,7 @@
-
+
diff --git a/source/build/include/m32script.h b/source/build/include/m32script.h
deleted file mode 100644
index 5f7d3cf2b..000000000
--- a/source/build/include/m32script.h
+++ /dev/null
@@ -1,258 +0,0 @@
-//-------------------------------------------------------------------------
-/*
-Copyright (C) 1996, 2003 - 3D Realms Entertainment
-Copyright (C) 2000, 2003 - Matt Saettler (EDuke Enhancements)
-Copyright (C) 2004, 2007 - EDuke32 developers
-
-This file is part of EDuke32
-
-EDuke32 is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License version 2
-as published by the Free Software Foundation.
-
-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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*/
-//-------------------------------------------------------------------------
-
-#ifndef _m32script_h_
-#define _m32script_h_
-
-#include "compat.h"
-#include "baselayer.h"
-#include "build.h"
-#include "editor.h"
-
-#define MAXQUOTES 2048
-#define MAXQUOTELEN 128
-
-typedef int32_t instype;
-typedef int32_t ofstype;
-
-extern char *apStrings[MAXQUOTES+1], *apXStrings[MAXQUOTES+1];
-extern int32_t g_numQuoteRedefinitions;
-
-extern int32_t VM_Execute(int32_t once);
-extern void VM_OnEvent(int32_t iEventID, int32_t spriteNum);
-
-extern void VM_ScriptInfo(void);
-extern void VM_Disasm(ofstype beg, int32_t size);
-
-void Gv_NewVar(const char *pszLabel, intptr_t lValue, uint32_t dwFlags);
-void Gv_NewArray(const char *pszLabel, void *arrayptr, intptr_t asize, uint32_t dwFlags);
-extern void Gv_Init(void);
-
-extern int32_t __fastcall Gv_GetVar(int32_t id);
-extern void __fastcall Gv_SetVar(int32_t id, int32_t lValue);
-extern int32_t __fastcall Gv_GetVarN(int32_t id); // 'N' for "no side-effects"... vars and locals only!
-
-extern void SetGamePalette(int32_t);
-
-extern int32_t *constants, constants_allocsize;
-extern int32_t g_numSavedConstants;
-
-extern instype *apScript ,*insptr;
-extern int32_t *labelval;
-extern uint8_t *labeltype;
-extern int32_t g_numLabels, g_numDefaultLabels;
-extern int32_t g_scriptSize;
-extern char *label;
-//extern int32_t label_allocsize;
-
-extern hashtable_t h_labels;
-
-#define MAXLABELLEN 32
-
-//extern uint8_t waterpal[768],slimepal[768],titlepal[768],drealms[768],endingpal[768],animpal[768];
-//extern char currentboardfilename[BMAVM_PATH];
-
-
-enum GameEvent_t {
- EVENT_ENTER3DMODE,
- EVENT_ANALYZESPRITES,
- EVENT_INSERTSPRITE2D,
- EVENT_INSERTSPRITE3D,
- EVENT_DRAW2DSCREEN,
- EVENT_DRAW3DSCREEN,
- EVENT_KEYS2D,
- EVENT_KEYS3D,
- EVENT_PREKEYS2D,
- EVENT_PREKEYS3D,
- EVENT_LINKTAGS,
- EVENT_KEYPRESS,
- EVENT_PREDRAW3DSCREEN,
- EVENT_LOADMAP,
- EVENT_SAVEMAP,
- EVENT_PRELOADMAP,
- EVENT_PRESAVEMAP,
- EVENT_PREDRAW2DSCREEN,
- MAXEVENTS
-};
-
-extern ofstype aEventOffsets[MAXEVENTS];
-extern int32_t aEventSizes[MAXEVENTS];
-extern uint8_t aEventEnabled[MAXEVENTS];
-extern uint16_t aEventNumLocals[MAXEVENTS];
-
-
-enum GamevarFlags_t {
- MAXGAMEVARS = 1024, // must be a power of two between 256 and 4096, inclusive
- LOG2MAXGV = 10,
- MAXVARLABEL = MAXLABELLEN, //26,
-
- GAMEVAR_PERBLOCK = 0x00000001, // per-block (state, event, or top-level) variable
- GAMEVAR_USER_MASK = GAMEVAR_PERBLOCK,
-
- GAMEVAR_RESET = 0x00000008, // marks var for to default
-
- GAMEVAR_SYSTEM = 0x00000800, // cannot change mode flags...(only default value)
- GAMEVAR_READONLY = 0x00001000, // values are read-only (no setvar allowed)
-
- GAMEVAR_INTPTR = 0x00002000, // plValues is a pointer to an int32_t
- GAMEVAR_FLOATPTR = 0x00004000, // plValues is a pointer to a float
- GAMEVAR_SHORTPTR = 0x00008000, // plValues is a pointer to a short
- GAMEVAR_CHARPTR = 0x00010000, // plValues is a pointer to a char
- GAMEVAR_PTR_MASK = GAMEVAR_INTPTR|GAMEVAR_FLOATPTR|GAMEVAR_SHORTPTR|GAMEVAR_CHARPTR,
-
- GAMEVAR_SPECIAL = 0x00040000, // flag for structure member shortcut vars
-};
-
-enum GamearrayFlags_t
-{
- MAXGAMEARRAYS = (MAXGAMEVARS >> 2), // must be strictly smaller than MAXGAMEVARS
- MAXARRAYLABEL = MAXVARLABEL,
-
- GAMEARRAY_READONLY = 0x00001000,
- GAMEARRAY_WARN = 0x00002000,
-
- GAMEARRAY_NORMAL = 0x00004000,
- GAMEARRAY_UINT8 = 0x00000001,
- GAMEARRAY_INT16 = 0x00000002,
- GAMEARRAY_INT32 = 0x00000004,
- GAMEARRAY_TYPE_MASK = GAMEARRAY_UINT8 | GAMEARRAY_INT16 | GAMEARRAY_INT32,
-
- GAMEARRAY_RESET = 0x00000008,
-
- GAMEARRAY_VARSIZE = 0x00000020,
- GAMEARRAY_STRIDE2 = 0x00000040,
-};
-
-typedef struct {
- union {
- intptr_t lValue; // pointer when (dwFlags & GAMEVAR_*PTR)
- int32_t *plValues; // array of values when (dwFlags & GAMEVAR_PERBLOCK)
- } val;
- intptr_t lDefault;
- char *szLabel;
- uint32_t dwFlags;
-} gamevar_t;
-
-typedef struct {
- char *szLabel;
- void *vals; // array of values, type determined by (dwFlags & GAMEARRAY_TYPEMASK)
- uint32_t dwFlags;
- int32_t size; // id to size gamevar when (dwFlags & GAMEARRAY_VARSIZE)
-} gamearray_t;
-
-extern gamevar_t aGameVars[MAXGAMEVARS];
-extern gamearray_t aGameArrays[MAXGAMEARRAYS];
-extern int32_t g_gameVarCount, g_systemVarCount;
-extern int32_t g_gameArrayCount, g_systemArrayCount;
-
-extern uint32_t m32_drawlinepat;
-
-
-extern int32_t g_iReturnVar;
-extern int32_t g_doScreenShot;
-extern int32_t m32_sortvar1, m32_sortvar2;
-
-//extern int32_t g_scriptDebug;
-
-
-
-extern hashtable_t h_gamevars;
-extern hashtable_t h_arrays;
-//extern hashtable_t h_keywords;
-extern hashtable_t h_gamefuncs;
-
-
-extern int32_t mousxplc;
-extern int32_t mousyplc;
-
-
-// gamevar bytecode format:
-
-// FEDC|BA98|7654|3210|FEDC|BA98|7654|3120
-// | .. .... .... gamevar ID
-// | . constant bit (checked first) / get-payload-var bit for array or struct
-// | . negate bit
-// | . array bit \___\ if both set:
-// | . struct bit / / local var
-// .... .... .... ....| optional payload
-
-
-
-#define M32_FLAG_CONSTANT (MAXGAMEVARS)
-#define M32_FLAG_NEGATE (MAXGAMEVARS<<1)
-
-#define M32_FLAG_VAR (0)
-#define M32_FLAG_ARRAY (MAXGAMEVARS<<2)
-#define M32_FLAG_STRUCT (MAXGAMEVARS<<3)
-#define M32_FLAG_LOCAL (M32_FLAG_ARRAY|M32_FLAG_STRUCT)
-#define M32_VARTYPE_MASK (M32_FLAG_ARRAY|M32_FLAG_STRUCT)
-
-#define M32_FLAG_CONSTANTINDEX M32_FLAG_CONSTANT
-// if set, fetch index for array or struct array from 16 high bits as a constant (otherwise: gamevar)
-
-#define M32_BITS_MASK (0x0000ffff-(MAXGAMEVARS-1))
-
-// IDs of special vars
-#define M32_SPRITE_VAR_ID 0
-#define M32_SECTOR_VAR_ID 1
-#define M32_WALL_VAR_ID 2
-#define M32_TSPRITE_VAR_ID 3
-#define M32_LIGHT_VAR_ID 4
-
-#define M32_THISACTOR_VAR_ID 5
-#define M32_RETURN_VAR_ID 6
-#define M32_LOTAG_VAR_ID 7
-#define M32_HITAG_VAR_ID 8
-#define M32_TEXTURE_VAR_ID 9
-#define M32_DOSCRSHOT_VAR_ID 10
-
-#define M32_LOCAL_ARRAY_ID 0
-
-#define M32_PRINTERROR(Text, ...) OSD_Printf("%sLine %d, %s: " Text "\n", osd->draw.errorfmt, g_errorLineNum, keyw[g_tw], ## __VA_ARGS__)
-#define M32_ERROR(Text, ...) do { M32_PRINTERROR(Text, ## __VA_ARGS__); vm.flags |= VMFLAG_ERROR; } while (0)
-
-
-// how local gamevars are allocated:
-
-// uncomment if variable-length arrays are available
-//#define M32_LOCALS_VARARRAY
-
-// if neither is there, use a constant number of them
-#define M32_LOCALS_FIXEDNUM 64
-
-#if defined M32_LOCALS_VARARRAY
-# define M32_MAX_LOCALS MAXGAMEVARS
-#else
-# define M32_MAX_LOCALS M32_LOCALS_FIXEDNUM
-#endif
-
-static inline int32_t Gv_GetArraySize(int32_t id)
-{
- if (aGameArrays[id].dwFlags & GAMEARRAY_VARSIZE)
- return Gv_GetVarN(aGameArrays[id].size);
-
- return aGameArrays[id].size;
-}
-
-#endif
diff --git a/source/sw/src/jnstub.cpp b/source/sw/src/jnstub.cpp
deleted file mode 100644
index 65337211d..000000000
--- a/source/sw/src/jnstub.cpp
+++ /dev/null
@@ -1,3868 +0,0 @@
-//-------------------------------------------------------------------------
-/*
-Copyright (C) 1996, 2005 - 3D Realms Entertainment
-
-This file is NOT part of Shadow Warrior version 1.2
-However, it is either an older version of a file that is, or is
-some test code written during the development of Shadow Warrior.
-This file is provided purely for educational interest.
-
-Shadow Warrior 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
-*/
-//-------------------------------------------------------------------------
-
-#include "build.h"
-#include "editor.h"
-#include "cache1d.h"
-
-#include "keys.h"
-#include "names2.h"
-#include "game.h"
-#include "tags.h"
-#include "pal.h"
-
-#include "common.h"
-#include "common_game.h"
-
-#include "colormap.h"
-
-
-const char* AppProperName = "Wangulator";
-const char* AppTechnicalName = "wangulator";
-
-#if defined(_WIN32)
-#define DEFAULT_GAME_EXEC "voidsw.exe"
-#define DEFAULT_GAME_LOCAL_EXEC "voidsw.exe"
-#else
-#define DEFAULT_GAME_EXEC "voidsw"
-#define DEFAULT_GAME_LOCAL_EXEC "./voidsw"
-#endif
-
-const char *DefaultGameExec = DEFAULT_GAME_EXEC;
-const char *DefaultGameLocalExec = DEFAULT_GAME_LOCAL_EXEC;
-
-#define SETUPFILENAME "wangulator.cfg"
-const char *defaultsetupfilename = SETUPFILENAME;
-char setupfilename[BMAX_PATH] = SETUPFILENAME;
-
-
-#define M_RED 102
-#define M_BLUE 198
-
-
-void ToggleFAF(void); // brooms.c
-void FAF_AfterDrawRooms(void); // brooms.c
-void ResetBuildFAF(void); // brooms.c
-
-
-// Jim's Vars
-
-#define BUILD_DEV_VER 0 // True if this is the developer version of build.
-
-
-// Idle time counter
-//int idleclock=0; // How much time is spent not touching the keyboard.
-//int slackerclock=0; // Accumulated no keyboard time, adds every 30 secs
-//int oldtotalclock=0;
-
-// Sprite lists
-int numsprite[MAXSPRITES], multisprite[MAXSPRITES];
-
-// Next available tag tracking vars
-short siNextTag = 1; // Shows next available tag if there
-// is an open gap in tagging
-short siNextEndTag = 1; // Shows the hightest possible next
-// tag
-
-int loaded_numwalls;
-// Boolean flags used for sprite searching
-SWBOOL bFindPicNum = TRUE; // Default
-SWBOOL bFindHiTag = FALSE;
-SWBOOL bFindLowTag = FALSE;
-SWBOOL bVoxelsOn = TRUE; // Turn voxels on by default
-SWBOOL bSpinBobVoxels = TRUE; // Do twizzly stuff to voxels
-SWBOOL bAutoSize = TRUE; // Autosizing on/off
-
-int nextvoxid = 0;
-
-// Globals used to hold current sprite type being searched for.
-short FindPicNum = 0;
-short FindSpriteNum = 0;
-
-// My Function Prototypes
-void ContextHelp(short spritenum);
-void LoadKVXFromScript(const char *filename);
-
-//void LogUserTime( SWBOOL bIsLoggingIn );
-
-// voxelarray format is:
-// spritenumber, voxelnumber
-extern int aVoxelArray[MAXTILES];
-
-// Ken ALT highlighted array
-extern short highlightsector[MAXSECTORS];
-extern short highlightsectorcnt;
-
-
-int DispMono = FALSE;
-
-//
-// KENS setup variables
-//
-
-#define MAX_STAG_INFO 1024
-typedef struct
-{
- char name[64];
- int flags;
-} STAG_INFO, *STAG_INFOp;
-
-STAG_INFO StagInfo[MAX_STAG_INFO];
-
-void PrintStatus(const char *string, int num, char x, char y, char color);
-
-#define NUMOPTIONS 8
-char option[NUMOPTIONS] = {0, 0, 0, 0, 0, 0, 1, 0};
-char default_buildkeys[NUMBUILDKEYS] =
-{
- 0xc8, 0xd0, 0xcb, 0xcd, 0x2a, 0x9d, 0x1d, 0x39,
- 0x1e, 0x2c, 0xd1, 0xc9, 0x33, 0x34,
- 0x9c, 0x1c, 0xd, 0xc, 0xf, 0x45
-};
-
-#define MODE_3D 200
-
-extern short pointhighlight, linehighlight;
-extern short asksave;
-short ExtSectorTag[MAXSECTORS][4];
-static char tempbuf[256];
-char ds[256];
-
-enum
-{
- CAPTION_NONE,
- CAPTION_DEFAULT,
- CAPTION_NAMES,
- CAPTION_MOST,
- CAPTION_ALL,
- CAPTION_MAX,
-};
-short CaptionMode = CAPTION_NAMES;
-
-
-// RIGHT ALT selection key
-extern short highlightsector[MAXSECTORS];
-extern short highlightsectorcnt;
-
-// RIGHT SHIFT selection key
-#define SPRITE_FLAG 16384
-extern short highlight[MAXWALLS+MAXSPRITES]; // sprite nums are + 16348
-extern short highlightcnt;
-
-// Variables copied with the tab key
-extern int32_t temppicnum, tempcstat, templotag, temphitag, tempextra;
-
-void SectorMoveFloorZ(int);
-void SectorMoveCeilingZ(int);
-
-void BuildStagTable(void);
-void Message(const char *string, char color);
-void ShowMessage(void);
-void ShadeMenu(void);
-void FindNextTag(void);
-void ShowNextTag(void);
-void FindSprite(short picnum, short findspritenum);
-void FindNextSprite(short picnum);
-void SetClipdist2D(void);
-void DrawClipBox(short spritenum);
-
-//printext16 parameters:
-//printext16(int xpos, int ypos, short col, short backcol,
-// char name[82], char fontsize)
-// xpos 0-639 (top left)
-// ypos 0-479 (top left)
-// col 0-15
-// backcol 0-15, -1 is transparent background
-// name
-// fontsize 0=8*8, 1=3*5
-
-//drawline16 parameters:
-// drawline16(int x1, int y1, int x2, int y2, char col)
-// x1, x2 0-639
-// y1, y2 0-143 (status bar is 144 high, origin is top-left of STATUS BAR)
-// col 0-15
-
-//Detecting 2D / 3D mode:
-// qsetmode is 200 in 3D mode
-// qsetmode is 350/480 in 2D mode
-//
-//You can read these variables when F5-F8 is pressed in 3D mode only:
-//
-// If (searchstat == 0) WALL searchsector=sector, searchwall=wall
-// If (searchstat == 1) CEILING searchsector=sector
-// If (searchstat == 2) FLOOR searchsector=sector
-// If (searchstat == 3) SPRITE searchsector=sector, searchwall=sprite
-// If (searchstat == 4) MASKED WALL searchsector=sector, searchwall=wall
-//
-// searchsector is the sector of the selected item for all 5 searchstat's
-//
-// searchwall is undefined if searchstat is 1 or 2
-// searchwall is the wall if searchstat = 0 or 4
-// searchwall is the sprite if searchstat = 3 (Yeah, I know - it says wall,
-// but trust me, it's the sprite number)
-
-void
-ResetKeys(void)
-{
- unsigned i;
-
- for (i = 0; i < SIZ(keystatus); i++)
- {
- KEY_PRESSED(i) = 0;
- }
-}
-
-void ExtPreCheckKeys(void)
-{
- ToggleFAF();
-}
-
-
-// Toggle sprites on/off. Good for frame rate checks.
-SWBOOL DebugActorFreeze = 0;
-
-void
-ToggleSprites()
-{
- spritetype *tspr;
-
-
- DebugActorFreeze++;
- if (DebugActorFreeze > 2)
- DebugActorFreeze = 0;
-
- // Don't show any sprites, period
- if (DebugActorFreeze == 2)
- {
- short i;
-
- for (i = 0, tspr = &sprite[0]; i < MAXSPRITES; i++, tspr++)
- {
- SET(tspr->cstat, CSTAT_SPRITE_INVISIBLE);
-// if (TEST(tspr->cstat, CSTAT_SPRITE_BLOCK))
-// {
-// SET(tspr->extra, SPRX_BLOCK);
-// RESET(tspr->cstat, CSTAT_SPRITE_BLOCK);
-// }
- }
- }
-
-
- // Show all sprites except actors and ST's
- if (DebugActorFreeze == 1)
- {
- short i;
-
- for (i = 0, tspr = &sprite[0]; i < MAXSPRITES; i++, tspr++)
- {
- switch (tspr->picnum)
- {
- case COOLIE_RUN_R0:
- case ZOMBIE_RUN_R0:
- case NINJA_RUN_R0:
- case SERP_RUN_R0:
- case LAVA_RUN_R0:
- case SKEL_RUN_R0:
- case GORO_RUN_R0:
- case HORNET_RUN_R0:
- case SKULL_R0:
- case RIPPER_RUN_R0:
- case 2307: // ST1
- case 2308: // ST2
- case 2309: // QJ
- case 2310: // QJD
- case 2311: // QSJ
- case 2312: // QSCN
- case 2313: // QEXIT
- SET(tspr->cstat, CSTAT_SPRITE_INVISIBLE);
-// if (TEST(tspr->cstat, CSTAT_SPRITE_BLOCK))
-// {
-// SET(tspr->extra, SPRX_BLOCK);
-// RESET(tspr->cstat, CSTAT_SPRITE_BLOCK);
-// }
- break;
- }
- }
- }
-
-
- // Show all sprites
- if (DebugActorFreeze == FALSE)
- {
- short i;
-
- for (i = 0, tspr = &sprite[0]; i < MAXSPRITES; i++, tspr++)
- {
- RESET(tspr->cstat, CSTAT_SPRITE_INVISIBLE);
-// if (TEST(tspr->extra, SPRX_BLOCK))
-// SET(tspr->cstat, CSTAT_SPRITE_BLOCK);
- }
- }
-}
-
-
-void
-DoAutoSize(uspritetype *tspr)
-{
- short i;
-
- if (!bAutoSize)
- return;
-
- switch (tspr->picnum)
- {
- case ICON_STAR: // 1793
- break;
- case ICON_UZI: // 1797
- tspr->xrepeat = 43;
- tspr->yrepeat = 40;
- break;
- case ICON_UZIFLOOR: // 1807
- tspr->xrepeat = 43;
- tspr->yrepeat = 40;
- break;
- case ICON_LG_UZI_AMMO: // 1799
- break;
- case ICON_HEART: // 1824
- break;
- case ICON_HEART_LG_AMMO: // 1820
- break;
- case ICON_GUARD_HEAD: // 1814
- break;
- case ICON_FIREBALL_LG_AMMO: // 3035
- break;
- case ICON_ROCKET: // 1843
- break;
- case ICON_SHOTGUN: // 1794
- tspr->xrepeat = 57;
- tspr->yrepeat = 58;
- break;
- case ICON_LG_ROCKET: // 1796
- break;
- case ICON_LG_SHOTSHELL: // 1823
- break;
- case ICON_MICRO_GUN: // 1818
- break;
- case ICON_MICRO_BATTERY: // 1800
- break;
- case ICON_GRENADE_LAUNCHER: // 1817
- tspr->xrepeat = 54;
- tspr->yrepeat = 52;
- break;
- case ICON_LG_GRENADE: // 1831
- break;
- case ICON_LG_MINE: // 1842
- break;
- case ICON_RAIL_GUN: // 1811
- tspr->xrepeat = 50;
- tspr->yrepeat = 54;
- break;
- case ICON_RAIL_AMMO: // 1812
- break;
- case ICON_SM_MEDKIT: // 1802
- break;
- case ICON_MEDKIT: // 1803
- break;
- case ICON_CHEMBOMB:
- tspr->xrepeat = 64;
- tspr->yrepeat = 47;
- break;
- case ICON_FLASHBOMB:
- tspr->xrepeat = 32;
- tspr->yrepeat = 34;
- break;
- case ICON_NUKE:
- break;
- case ICON_CALTROPS:
- tspr->xrepeat = 37;
- tspr->yrepeat = 30;
- break;
- case ICON_BOOSTER: // 1810
- tspr->xrepeat = 30;
- tspr->yrepeat = 38;
- break;
- case ICON_HEAT_CARD: // 1819
- tspr->xrepeat = 46;
- tspr->yrepeat = 47;
- break;
- case ICON_REPAIR_KIT: // 1813
- break;
- case ICON_EXPLOSIVE_BOX: // 1801
- break;
- case ICON_ENVIRON_SUIT: // 1837
- break;
- case ICON_FLY: // 1782
- break;
- case ICON_CLOAK: // 1826
- break;
- case ICON_NIGHT_VISION: // 3031
- tspr->xrepeat = 59;
- tspr->yrepeat = 71;
- break;
- case ICON_NAPALM: // 3046
- break;
- case ICON_RING: // 3050
- break;
- case ICON_RINGAMMO: // 3054
- break;
- case ICON_NAPALMAMMO: // 3058
- break;
- case ICON_GRENADE: // 3059
- break;
- case ICON_ARMOR: // 3030
- tspr->xrepeat = 82;
- tspr->yrepeat = 84;
- break;
- case BLUE_KEY: // 1766
- break;
- case RED_KEY: // 1770
- break;
- case GREEN_KEY: // 1774
- break;
- case YELLOW_KEY: // 1778
- break;
- case BLUE_CARD:
- case RED_CARD:
- case GREEN_CARD:
- case YELLOW_CARD:
- tspr->xrepeat = 36;
- tspr->yrepeat = 33;
- break;
- case GOLD_SKELKEY:
- case SILVER_SKELKEY:
- case BRONZE_SKELKEY:
- case RED_SKELKEY:
- tspr->xrepeat = 39;
- tspr->yrepeat = 45;
- break;
- case SKEL_LOCKED:
- case SKEL_UNLOCKED:
- tspr->xrepeat = 47;
- tspr->yrepeat = 40;
- break;
- case RAMCARD_LOCKED:
- case RAMCARD_UNLOCKED:
- case CARD_LOCKED:
- case CARD_UNLOCKED:
- break;
- default:
- break;
- }
-}
-
-// Rotation angles for sprites
-short rotang = 0;
-
-void
-ExtAnalyzeSprites(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothr)
-{
- int i, currsprite;
- uspritetype *tspr;
-
- UNREFERENCED_PARAMETER(ourx);
- UNREFERENCED_PARAMETER(oury);
- UNREFERENCED_PARAMETER(oura);
- UNREFERENCED_PARAMETER(smoothr);
-
- rotang += 4;
- if (rotang > 2047)
- rotang = 0;
-
- for (i = 0, tspr = &tsprite[0]; i < spritesortcnt; i++, tspr++)
- {
-
- // Take care of autosizing
- DoAutoSize(tspr);
-
- tspr->shade += 6;
- if (sector[tspr->sectnum].ceilingstat & 1)
- tspr->shade += sector[tspr->sectnum].ceilingshade;
- else
- tspr->shade += sector[tspr->sectnum].floorshade;
-
- if (tspr->picnum == ICON_ARMOR)
- {
- if (tspr->pal != 19) // Red
- tspr->pal = 17; // Gray
- }
-
- // Check for voxels
- if (bVoxelsOn)
- {
- if (bSpinBobVoxels)
- {
- switch (tspr->picnum)
- {
- case ICON_STAR: // 1793
- case ICON_UZI: // 1797
- case ICON_UZIFLOOR: // 1807
- case ICON_LG_UZI_AMMO: // 1799
- case ICON_HEART: // 1824
- case ICON_HEART_LG_AMMO: // 1820
- case ICON_GUARD_HEAD: // 1814
- case ICON_FIREBALL_LG_AMMO: // 3035
- case ICON_ROCKET: // 1843
- case ICON_SHOTGUN: // 1794
- case ICON_LG_ROCKET: // 1796
- case ICON_LG_SHOTSHELL: // 1823
- case ICON_MICRO_GUN: // 1818
- case ICON_MICRO_BATTERY: // 1800
- case ICON_GRENADE_LAUNCHER: // 1817
- case ICON_LG_GRENADE: // 1831
- case ICON_LG_MINE: // 1842
- case ICON_RAIL_GUN: // 1811
- case ICON_RAIL_AMMO: // 1812
- case ICON_SM_MEDKIT: // 1802
- case ICON_MEDKIT: // 1803
- case ICON_BOOSTER: // 1810
- case ICON_HEAT_CARD: // 1819
- case ICON_REPAIR_KIT: // 1813
- case ICON_EXPLOSIVE_BOX: // 1801
- case ICON_ENVIRON_SUIT: // 1837
- case ICON_FLY: // 1782
- case ICON_CLOAK: // 1826
- case ICON_NIGHT_VISION: // 3031
- case ICON_NAPALM: // 3046
- case ICON_RING: // 3050
- // case ICON_GOROAMMO: // 3035
- // case ICON_HEARTAMMO: // 1820
- case ICON_RINGAMMO: // 3054
- case ICON_NAPALMAMMO: // 3058
- case ICON_GRENADE: // 3059
- // case ICON_OXYGEN: // 1800
- case ICON_ARMOR: // 3030
- case BLUE_KEY: // 1766
- case RED_KEY: // 1770
- case GREEN_KEY: // 1774
- case YELLOW_KEY: // 1778
- case ICON_CHEMBOMB:
- case ICON_FLASHBOMB:
- case ICON_NUKE:
- case ICON_CALTROPS:
- tspr->ang = rotang;
- // tspr->z+=(sintable[(rotang*2)%2047]/16);
- break;
- }
- }
-
- if (aVoxelArray[tspr->picnum] >= 0)
- {
-
- // Turn on voxels
- tspr->picnum = aVoxelArray[tspr->picnum]; // Get the voxel number
- tspr->cstat |= 48; // Set stat to voxelize sprite
- }
- }
- }
-
-}
-
-uint8_t*
-BKeyPressed(void)
-{
- uint8_t* k;
-
- for (k = (uint8_t*) & KEY_PRESSED(0); k < (uint8_t*) &KEY_PRESSED(SIZ(keystatus)); k++)
- {
- if (*k)
- return k;
- }
-
- return NULL;
-}
-
-uint8_t*
-KeyPressedRange(uint8_t* kb, uint8_t* ke)
-{
- uint8_t* k;
-
- for (k = kb; k <= ke; k++)
- {
- if (*k)
- return k;
- }
-
- return NULL;
-}
-
-void
-ResetKeyRange(uint8_t* kb, uint8_t* ke)
-{
- uint8_t* k;
-
- for (k = kb; k <= ke; k++)
- {
- *k = 0;
- }
-}
-
-#if 0
-void
-ExtInit(void)
-{
- int i, fil;
-
- initgroupfile(G_GrpFile());
- if ((fil = open("setup.dat", O_BINARY | O_RDWR, S_IREAD)) != -1)
- {
- read(fil, &option[0], NUMOPTIONS);
- read(fil, &default_buildkeys[0], NUMKEYS);
- memcpy((void *) buildkeys, (void *) default_buildkeys, NUMKEYS); // Trick to make build
- // use setup.dat keys
- close(fil);
- }
- if (option[4] > 0)
- option[4] = 0;
- initmouse();
-
- initengine();
- vidoption = option[0];
- xdim = vesares[option[6] & 15][0];
- ydim = vesares[option[6] & 15][1];
-
-#if 0
- switch (option[0])
- {
- case 0:
- initengine(0, chainxres[option[6] & 15], chainyres[option[6] >> 4]);
- break;
- case 1:
- initengine(1, vesares[option[6] & 15][0], vesares[option[6] & 15][1]);
- break;
- default:
- initengine(option[0], 320L, 200L);
- }
-#endif
-
- InitPalette();
-
- kensplayerheight = 58;
- zmode = 0;
-
-}
-
-#endif
-
-const char *startwin_labeltext = "Starting Build Editor for Shadow Warrior...";
-
-const char *ExtGetVer(void)
-{
- return s_buildRev;
-}
-
-void ExtSetupMapFilename(const char *mapname)
-{
- UNREFERENCED_PARAMETER(mapname);
-}
-
-int32_t ExtPreInit(int32_t argc,char const * const * argv)
-{
- UNREFERENCED_PARAMETER(argc);
- UNREFERENCED_PARAMETER(argv);
-
- OSD_SetLogFile("wangulator.log");
- OSD_SetVersion(AppProperName,0,2);
- initprintf("%s %s\n", AppProperName, s_buildRev);
- PrintBuildInfo();
-
- return 0;
-}
-
-int
-ExtInit(void)
-{
- int rv = 0;
-
-#ifndef BUILD_DEV_VER
- char ch;
-
- printf("\n------------------------------------------------------------------------------\n");
- printf("BUILD.EXE for Shadow Warrior\n\n");
- printf("Copyright (c) 1993 - 1997, 3D Realms Entertainment.\n");
- printf("\n");
- printf("IMPORTANT: This editor and associated tools and utilities are NOT\n");
- printf("shareware and may NOT be freely distributed to any BBS, CD, floppy, or\n");
- printf("any other media. These tools may NOT be sold or repackaged for sale in\n");
- printf("a commercial product.\n");
- printf("\n");
- printf("Any levels created with these editors and tools may only be used with the\n");
- printf("full (registered) copy of Shadow Warrior, and not the shareware version.\n");
- printf("Please refer to LICENSE.DOC for further information on levels created with\n");
- printf("BUILD.EXE.\n");
- printf("\n");
- printf("Press if you have read and accepted the terms of LICENSE.DOC,\n");
- printf("or any other key to abort the program. \n");
- printf("\n");
- ch = getch();
-
- if (ch == 'y' || ch == 'Y') // if user press Y
- {
-#endif
-
-
- int i, fil;
-
- // Store user log in time
- //LogUserTime(TRUE); // Send true because user is logging
- // in.
-
-#ifdef _WIN32
- if (!access("user_profiles_enabled", F_OK))
-#endif
- {
- char cwd[BMAX_PATH];
- char *homedir;
- int asperr;
-
-#if defined(__linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
- addsearchpath("/usr/share/games/jfsw");
- addsearchpath("/usr/local/share/games/jfsw");
-#elif defined(__APPLE__)
- addsearchpath("/Library/Application Support/JFShadowWarrior");
-#endif
- if (getcwd(cwd,BMAX_PATH)) addsearchpath(cwd);
- if ((homedir = Bgethomedir()))
- {
- Bsnprintf(cwd,sizeof(cwd),"%s/"
-#if defined(_WIN32)
- "JFShadowWarrior"
-#elif defined(__APPLE__)
- "Library/Application Support/JFShadowWarrior"
-#else
- ".jfsw"
-#endif
- ,homedir);
- asperr = addsearchpath(cwd);
- if (asperr == -2)
- {
- if (Bmkdir(cwd,S_IRWXU) == 0) asperr = addsearchpath(cwd);
- else asperr = -1;
- }
- if (asperr == 0)
- chdir(cwd);
- free(homedir);
- }
- }
-
- if (g_grpNamePtr == NULL)
- {
- const char *cp = getenv("SWGRP");
- if (cp)
- {
- clearGrpNamePtr();
- g_grpNamePtr = dup_filename(cp);
- initprintf("Using \"%s\" as main GRP file\n", g_grpNamePtr);
- }
- }
- /*
- if ((fil = open("setup.dat", O_BINARY | O_RDWR, S_IREAD)) != -1)
- {
- read(fil, &option[0], NUMOPTIONS);
- read(fil, &default_buildkeys[0], NUMKEYS);
- memcpy((void *) buildkeys, (void *) default_buildkeys, NUMKEYS); // Trick to make build
- // use setup.dat keys
- close(fil);
- }
- */
- bpp = 8;
- if (loadsetup("build.cfg") < 0) buildputs("Configuration file not found, using defaults.\n"), rv = 1;
- Bmemcpy((void *)buildkeys,(void *)default_buildkeys,NUMBUILDKEYS); //Trick to make build use setup.dat keys
- if (option[4] > 0)
- option[4] = 0;
-
- kensplayerheight = 58;
- zmode = 0;
-
-#ifndef BUILD_DEV_VER
-} // end user press Y
-else
-{
- printf("------------------------------------------------------------------------------\n");
- exit(0);
-}
-#endif
- return rv;
-}
-
-int32_t ExtPostStartupWindow(void)
-{
- initgroupfile(G_GrpFile());
-
- if (engineInit())
- {
- wm_msgbox("Build Engine Initialisation Error",
- "There was a problem initialising the Build engine: %s", engineerrstr);
- return -1;
- }
-
- InitPalette();
- SW_InitMultiPsky();
-
- return 0;
-}
-
-void ExtPostInit(void)
-{
-}
-
-void
-ExtUnInit(void)
-{
- uninitgroupfile();
- writesetup("build.cfg");
- // Store user log in time
- //LogUserTime(FALSE); // FALSE means user is logging out
- // now.
-}
-
-void
-SetSpriteExtra(void)
-{
- SPRITEp sp;
- int i;
-
-#define DEFAULT_SKILL 2
-
- // for (sp = sprite; sp < &sprite[MAXSPRITES]; sp++)
- for (sp = sprite; sp < &sprite[MAXSPRITES]; sp++)
- {
- if (sp->picnum == ST1)
- {
- if (sp->owner == -1)
- sp->owner = 0;
- }
- else
- {
- sp->owner = -1;
- }
-
- if (sp->extra == -1)
- {
- sp->extra = 0;
- SET(sp->extra, DEFAULT_SKILL);
- }
- }
-
- // loaded_numwalls is what numwalls is after a load
- // only new walls get their extra's set
- if (loaded_numwalls != numwalls)
- {
- for (i = 0; i < numwalls; i++)
- {
- if (wall[i].extra != 0)
- wall[i].extra = 0;
- }
- }
- loaded_numwalls = numwalls;
-}
-
-void
-ResetSpriteFound(void)
-{
- SPRITEp sp;
-
- for (sp = sprite; sp < &sprite[MAXSPRITES]; sp++)
- {
- RESET(sp->extra, SPRX_FOUND);
- }
-}
-
-
-// imported from allen code
-void
-Keys3D(void)
-{
- int i;
-
- // 'PGUP - Move a floor/ceiling sector up 8 pixels.
- if (keystatus[KEYSC_RCTRL] && keystatus[KEYSC_PGUP])
- {
- switch (searchstat)
- {
- case 1: // Ceiling
- sector[searchsector].ceilingz -= (1024 * 8);
- keystatus[KEYSC_PGUP] = 0;
- break;
- case 2: // Floor
- sector[searchsector].floorz -= (1024 * 8);
- keystatus[KEYSC_PGUP] = 0;
- break;
- }
-
- }
-
- // 'PGDN - Move a floor/ceiling sector down 8 pixels.
- if (keystatus[KEYSC_RCTRL] && keystatus[KEYSC_PGDN])
- {
- switch (searchstat)
- {
- case 1: // Ceiling
- sector[searchsector].ceilingz += (1024 * 8);
- keystatus[KEYSC_PGDN] = 0;
- break;
- case 2: // Floor
- sector[searchsector].floorz += (1024 * 8);
- keystatus[KEYSC_PGDN] = 0;
- break;
- }
- }
-
-
-
- // R - Set relative mode on a floor/ceiling.
- if (!keystatus[KEYSC_ENTER] && !keystatus[KEYSC_QUOTE] && keystatus[KEYSC_R])
- {
- switch (searchstat)
- {
- case 0:
- case 4: // Wall
- break;
- case 1: // Ceiling
- if (sector[searchsector].ceilingstat & 65)
- Message("Ceiling Relative OFF", M_RED);
- else
- Message("Ceiling Relative ON", M_BLUE);
- break;
- case 2: // Floor
- if (sector[searchsector].floorstat & 65)
- Message("Floor Relative OFF", M_RED);
- else
- Message("Floor Relative ON", M_BLUE);
- break;
- case 3: // Sprite
- break;
- }
- }
-
- // '+ = Shade down a floor ceiling while keeping sprites constant
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_GPLUS])
- {
- SWBOOL dospriteshade = FALSE;
-
- keystatus[KEYSC_GPLUS] = 0;
-
- switch (searchstat)
- {
- case 1:
- if (sector[searchsector].ceilingstat & 1)
- dospriteshade = TRUE;
- if (sector[searchsector].ceilingshade > -128)
- sector[searchsector].ceilingshade--;
- break;
- case 2:
- if (!(sector[searchsector].ceilingstat & 1))
- dospriteshade = TRUE;
- if (sector[searchsector].floorshade > -128)
- sector[searchsector].floorshade--;
- break;
- default:
- break;
- }
-
- if (dospriteshade)
- {
- for (i = 0; i < MAXSPRITES; i++)
- {
- if (sprite[i].sectnum == searchsector)
- {
- if (sprite[i].shade < 127)
- sprite[i].shade++;
- }
- }
- }
- }
-
- // '- = Shade down a floor ceiling while keeping sprites constant
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_GMINUS])
- {
- SWBOOL dospriteshade = FALSE;
-
- keystatus[KEYSC_GMINUS] = 0;
-
- switch (searchstat)
- {
- case 1:
- if (sector[searchsector].ceilingstat & 1)
- dospriteshade = TRUE;
- if (sector[searchsector].ceilingshade < 127)
- sector[searchsector].ceilingshade++;
- break;
- case 2:
- if (!(sector[searchsector].ceilingstat & 1))
- dospriteshade = TRUE;
- if (sector[searchsector].floorshade < 127)
- sector[searchsector].floorshade++;
- break;
- default:
- break;
- }
-
- if (dospriteshade)
- {
- for (i = 0; i < MAXSPRITES; i++)
- {
- if (sprite[i].sectnum == searchsector)
- {
- if (sprite[i].shade > -128)
- sprite[i].shade--;
- }
- }
- }
- }
-
-
- // 'ENTER - Copies only the bitmap in the copy buffer to
- // wall/ceiling/floor/sprite,
- // whatever the cursor is pointing to. Does not copy x/y repeats etc.,
- // like ENTER does.
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_ENTER]) // ' ENTER
- {
- printext256(0, 0, 15, 0, "Put Graphic ONLY", 0);
- keystatus[KEYSC_ENTER] = 0;
- switch (searchstat)
- {
- case 0:
- wall[searchwall].picnum = temppicnum;
- break;
- case 1:
- sector[searchsector].ceilingpicnum = temppicnum;
- break;
- case 2:
- sector[searchsector].floorpicnum = temppicnum;
- break;
- case 3:
- sprite[searchwall].picnum = temppicnum;
- break;
- case 4:
- wall[searchwall].overpicnum = temppicnum;
- break;
- }
- }
-
- // ;S
- if (keystatus[KEYSC_SEMI] && keystatus[KEYSC_S]) // ; S
- {
- keystatus[KEYSC_S] = 0;
- switch (searchstat)
- {
-
- case 0:
- case 4:
- for (i = 0; i < MAXWALLS; i++)
- {
- if (wall[i].picnum == temppicnum)
- {
- wall[i].shade = tempshade;
- }
- }
- break;
- case 1:
- case 2:
- for (i = 0; i < MAXSECTORS; i++)
- {
- if (searchstat)
- if (sector[i].ceilingpicnum == temppicnum)
- {
- sector[i].ceilingshade = tempshade;
- }
- if (searchstat == 2)
- if (sector[i].floorpicnum == temppicnum)
- {
- sector[i].floorshade = tempshade;
- }
- }
- break;
- case 3:
- for (i = 0; i < MAXSPRITES; i++)
- {
- if (sprite[i].picnum == temppicnum)
- {
- sprite[i].shade = tempshade;
- }
- }
- break;
- }
- }
-
- // 'C - Does a global tile replacement using bitmap only, no x/y repeat,
- // etc....
- // Works for walls, sectors, or sprites.
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_C]) // ' C
- {
- short searchpicnum = 0;
- short w, start_wall, end_wall, currsector;
-
- keystatus[KEYSC_C] = 0;
-
- switch (searchstat)
- {
-
- case 0:
- case 4:
- searchpicnum = wall[searchwall].picnum;
- if (highlightsectorcnt <= 0)
- {
- for (i = 0; i < MAXWALLS; i++)
- {
- if (wall[i].picnum == searchpicnum)
- {
- wall[i].picnum = temppicnum;
- }
- }
- }
- else
- {
- for (i = 0; i < highlightsectorcnt; i++)
- {
- currsector = highlightsector[i];
- start_wall = sector[currsector].wallptr;
- end_wall = start_wall + sector[currsector].wallnum;
-
- for (w = start_wall; w < end_wall; w++)
- {
- if (wall[w].picnum == searchpicnum)
- wall[w].picnum = temppicnum;
- }
- }
- }
- break;
- case 1:
- if (highlightsectorcnt <= 0)
- {
- searchpicnum = sector[searchsector].ceilingpicnum;
- for (i = 0; i < MAXSECTORS; i++)
- {
- if (sector[i].ceilingpicnum == searchpicnum)
- {
- sector[i].ceilingpicnum = temppicnum;
- }
- }
- }
- else
- {
- for (i = 0; i < highlightsectorcnt; i++)
- {
- currsector = highlightsector[i];
-
- if (sector[currsector].ceilingpicnum == searchpicnum)
- sector[currsector].ceilingpicnum = temppicnum;
- }
- }
- break;
- case 2:
- searchpicnum = sector[searchsector].floorpicnum;
- if (highlightsectorcnt <= 0)
- {
- for (i = 0; i < MAXSECTORS; i++)
- {
- if (sector[i].floorpicnum == searchpicnum)
- {
- sector[i].floorpicnum = temppicnum;
- }
- }
- }
- else
- {
- for (i = 0; i < highlightsectorcnt; i++)
- {
- currsector = highlightsector[i];
-
- if (sector[currsector].floorpicnum == searchpicnum)
- sector[currsector].floorpicnum = temppicnum;
- }
- }
- break;
- case 3:
- searchpicnum = sprite[searchwall].picnum;
-
- if (highlightsectorcnt <= 0)
- {
- for (i = 0; i < MAXSPRITES; i++)
- {
- if (sprite[i].picnum == searchpicnum)
- sprite[i].picnum = temppicnum;
- }
- }
- break;
- default:
- break;
- }
- }
-
- // 'T - Set's the low tag of a wall/sector/sprite.
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_T]) // ' T
- {
- keystatus[KEYSC_T] = 0;
- switch (searchstat)
- {
- case 0:
- case 4:
- strcpy(tempbuf, "Wall lotag: ");
- wall[searchwall].lotag =
- getnumber256(tempbuf, wall[searchwall].lotag, 65536L, 1);
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector lotag: ");
- sector[searchsector].lotag =
- getnumber256(tempbuf, sector[searchsector].lotag, 65536L, 1);
- break;
- case 3:
- strcpy(tempbuf, "Sprite lotag: ");
- sprite[searchwall].lotag =
- getnumber256(tempbuf, sprite[searchwall].lotag, 65536L, 1);
- // Find the next lotag
- if (sprite[searchwall].picnum == ST1)
- {
- FindNextTag();
- ShowNextTag();
- }
-
- break;
- }
- }
-
- // 'H - Sets the high tag of a wall/sector/sprite.
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_H]) // ' H
- {
- keystatus[KEYSC_H] = 0;
- switch (searchstat)
- {
- case 0:
- case 4:
- strcpy(tempbuf, "Wall hitag: ");
- wall[searchwall].hitag =
- getnumber256(tempbuf, wall[searchwall].hitag, 65536L, 1);
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector hitag: ");
- sector[searchsector].hitag =
- getnumber256(tempbuf, sector[searchsector].hitag, 65536L, 1);
- break;
- case 3:
- strcpy(tempbuf, "Sprite hitag: ");
- sprite[searchwall].hitag =
- getnumber256(tempbuf, sprite[searchwall].hitag, 65536L, 1);
- break;
- }
- }
-
- // 'S - Sets the shade of a wall/sector/sprite using an entered input
- // value
- // between 0-65536.
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_S]) // ' S
- {
- keystatus[KEYSC_S] = 0;
- switch (searchstat)
- {
- case 0:
- case 4:
- strcpy(tempbuf, "Wall shade: ");
- wall[searchwall].shade =
- getnumber256(tempbuf, wall[searchwall].shade, 65536L, 1);
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector shade: ");
- if (searchstat == 1)
- sector[searchsector].ceilingshade =
- getnumber256(tempbuf, sector[searchsector].ceilingshade, 65536L, 1);
- if (searchstat == 2)
- sector[searchsector].floorshade =
- getnumber256(tempbuf, sector[searchsector].floorshade, 65536L, 1);
- break;
- case 3:
- strcpy(tempbuf, "Sprite shade: ");
- sprite[searchwall].shade =
- getnumber256(tempbuf, sprite[searchwall].shade, 65536L, 1);
- break;
- }
- }
-
- // 'V - Sets sector visibility on a sector using an input value between
- // 0-65536.
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_V]) // ' V
- {
- keystatus[KEYSC_V] = 0;
- switch (searchstat)
- {
- case 1:
- case 2:
- strcpy(tempbuf, "Sector visibility: ");
- sector[searchsector].visibility =
- getnumber256(tempbuf, sector[searchsector].visibility, 65536L, 1);
- break;
- }
- }
-
- // 'X - Toggles voxel sprites on/off
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_X]) // ' X
- {
- keystatus[KEYSC_X] = 0;
-
- bVoxelsOn = !bVoxelsOn;
- }
-
- // 'Z - Toggles voxel rotation on/off
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_Z]) // ' Z
- {
- keystatus[KEYSC_Z] = 0;
-
- bSpinBobVoxels = !bSpinBobVoxels;
- }
-
- // 'A - Toggles sprite autosizing on/off
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_A]) // ' A
- {
- keystatus[KEYSC_A] = 0;
-
- bAutoSize = !bAutoSize;
- }
-
- // 'M - Toggles sprites on/off
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_M]) // ' M
- {
- keystatus[KEYSC_M] = 0;
-
- ToggleSprites();
- }
-
- // 'P - Will copy palette to all sectors highlighted with R-Alt key
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_P]) // ' P
- {
- short w, start_wall, end_wall, currsector;
-
- keystatus[KEYSC_P] = 0;
-
- for (i = 0; i < highlightsectorcnt; i++)
- {
- currsector = highlightsector[i];
- sector[currsector].ceilingpal = temppal;
- sector[currsector].floorpal = temppal;
- // Do all the walls in the sector
- start_wall = sector[currsector].wallptr;
- end_wall = start_wall + sector[currsector].wallnum;
-
- for (w = start_wall; w < end_wall; w++)
- {
- wall[w].pal = temppal;
- }
- }
- }
-
- // ;P - Will copy palette to all sectors highlighted with R-Alt key
- if (keystatus[KEYSC_SEMI] && keystatus[KEYSC_P]) // ; P
- {
- short w, start_wall, end_wall, currsector;
-
- keystatus[KEYSC_P] = 0;
-
- for (i = 0; i < highlightsectorcnt; i++)
- {
- currsector = highlightsector[i];
-
- if ((sector[currsector].ceilingpal == temppal && temppal != 0) || (temppal == 0 && sector[currsector].ceilingpal != 0))
- sector[currsector].ceilingshade = 127;
- if ((sector[currsector].floorpal == temppal && temppal != 0) || (temppal == 0 && sector[currsector].ceilingpal != 0))
- sector[currsector].floorshade = 127;
-
- // Do all the walls in the sector
- start_wall = sector[currsector].wallptr;
- end_wall = start_wall + sector[currsector].wallnum;
-
- for (w = start_wall; w < end_wall; w++)
- {
- if ((wall[w].pal == temppal && temppal != 0) || (temppal == 0 && wall[w].pal != 0))
- wall[w].shade = 127;
- }
- }
- }
-
- ShowMessage();
-} // end Keys3D()
-
-// Used to help print out the item status list
-void
-PrintStatus(const char *string, int num, char x, char y, char color)
-{
- sprintf(tempbuf, "%s %d", string, num);
- printext16(x * 8, ydim16+y * 8, color, -1, tempbuf, 0);
-}
-
-
-static int32_t sw_getnumber256(const char *namestart, int32_t num, int32_t maxnumber, char sign)
-{
- return _getnumber256(namestart, num, maxnumber, sign, NULL);
-}
-static int32_t sw_getnumber16(const char *namestart, int32_t num, int32_t maxnumber, char sign)
-{
- return _getnumber16(namestart, num, maxnumber, sign, NULL);
-}
-static void sw_printmessage256(const char *text)
-{
- printmessage256(0, 0, text);
-}
-static void sw_printmessage16(const char *text)
-{
- lastpm16time = (int32_t) totalclock;
- _printmessage16("%s", text);
-}
-
-void
-MoreKeys(short searchstat, short searchwall, short searchsector, short pointhighlight)
-{
-
- typedef int32_t GET_NUM_FUNC (const char *, int32_t, int32_t, char);
- typedef GET_NUM_FUNC *GET_NUM_FUNCp;
- typedef void PRINT_MSG_FUNC (const char *);
- typedef PRINT_MSG_FUNC *PRINT_MSG_FUNCp;
- SPRITEp sp;
-
- int i;
- int value;
-
- GET_NUM_FUNCp getnumber;
- PRINT_MSG_FUNCp printmessage;
-
- if (qsetmode == MODE_3D)
- {
- getnumber = sw_getnumber256;
- printmessage = sw_printmessage256;
- }
- else
- {
- getnumber = sw_getnumber16;
- printmessage = sw_printmessage16;
-
- if (TEST(pointhighlight, SPRITE_FLAG))
- {
- searchstat = 3;
- searchwall = RESET(pointhighlight, SPRITE_FLAG);
- }
- else
- {
- // for now make search stat invalid
- searchstat = 5;
- }
- }
-
- sp = &sprite[searchwall];
-
-
-
- if (KEY_PRESSED(KEYSC_RALT) && KEY_PRESSED(KEYSC_RCTRL))
- {
- if (KEY_PRESSED(KEYSC_KPMINUS))
- {
- KEY_PRESSED(KEYSC_KPMINUS) = 0;
- g_visibility = g_visibility - (g_visibility >> 3);
-
- if (g_visibility < 0)
- g_visibility = 16348;
- }
- else if (KEY_PRESSED(KEYSC_KPPLUS))
- {
- KEY_PRESSED(KEYSC_KPPLUS) = 0;
- g_visibility = g_visibility + (g_visibility >> 3);
-
- if (g_visibility > 16348)
- g_visibility = 0;
- }
- }
-
-
- if (keystatus[KEYSC_QUOTE])
- {
-
- if (keystatus[KEYSC_K]) // ' K
- {
- short data;
- SPRITEp sp = &sprite[searchwall];
-
- keystatus[KEYSC_K] = 0;
- switch (searchstat)
- {
- case 3:
- data = TEST(sp->extra, SPRX_SKILL);
-
- //data = getnumber256(tempbuf, data, 65536L);
- data++; // Toggle
-
- if (data > 3)
- data = 0;
-
- RESET(sp->extra, SPRX_SKILL);
- SET(sp->extra, data);
- break;
- }
- }
-
- if (keystatus[KEYSC_RSHIFT] || keystatus[KEYSC_LSHIFT])
- {
- if (keystatus[KEYSC_1])
- {
- keystatus[KEYSC_1] = 0;
- keystatus[KEYSC_SEMI] = 0;
-
- switch (searchstat)
- {
- case 3:
- sprintf(tempbuf, "Sprite tag 11 (shade) (snum = %d): ", searchwall);
- SPRITE_TAG11(searchwall) =
- getnumber(tempbuf, SPRITE_TAG11(searchwall), 65536L, 0);
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_2])
- {
- keystatus[KEYSC_2] = 0;
- keystatus[KEYSC_SEMI] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Sprite tag 12 (pal): ");
- SPRITE_TAG12(searchwall) =
- getnumber(tempbuf, SPRITE_TAG12(searchwall), 65536L, 0);
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_3])
- {
- keystatus[KEYSC_3] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Sprite tag 13 (xoffset/yoffset): ");
- i = getnumber(tempbuf, SPRITE_TAG13(searchwall), 65536L, 0);
- SET_SPRITE_TAG13(searchwall, i);
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_4])
- {
- keystatus[KEYSC_4] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Sprite tag 14 (xrepeat/yrepeat): ");
- i = getnumber(tempbuf, SPRITE_TAG14(searchwall), 65536L, 0);
- SET_SPRITE_TAG14(searchwall, i);
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_5])
- {
- keystatus[KEYSC_5] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Sprite tag 15 (z): ");
- SPRITE_TAG15(searchwall) =
- getnumber(tempbuf, SPRITE_TAG15(searchwall), 65536L, 0);
- break;
- }
-
- printmessage(" ");
- }
- }
-
- if (keystatus[KEYSC_1])
- {
- keystatus[KEYSC_1] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- strcpy(tempbuf, "Wall tag 1 (hitag): ");
- wall[searchwall].hitag =
- getnumber(tempbuf, wall[searchwall].hitag, 65536L, 0);
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector tag 1 (hitag): ");
- sector[searchsector].hitag =
- getnumber(tempbuf, sector[searchsector].hitag, 65536L, 0);
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 1 (hitag): ");
- SPRITE_TAG1(searchwall) =
- getnumber(tempbuf, SPRITE_TAG1(searchwall), 65536L, 0);
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_2])
- {
- keystatus[KEYSC_2] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- strcpy(tempbuf, "Wall tag 2 (lotag): ");
- wall[searchwall].lotag =
- getnumber(tempbuf, wall[searchwall].lotag, 65536L, 0);
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector tag 2 (lotag): ");
- sector[searchsector].lotag =
- getnumber(tempbuf, sector[searchsector].lotag, 65536L, 0);
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 2 (lotag): ");
- SPRITE_TAG2(searchwall) =
- getnumber(tempbuf, SPRITE_TAG2(searchwall), 65536L, 0);
- // Find the next lotag
- if (sprite[searchwall].picnum == ST1)
- {
- FindNextTag();
- ShowNextTag();
- }
- break;
- }
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_3])
- {
- keystatus[KEYSC_3] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- strcpy(tempbuf, "Wall tag 3 (xpanning): ");
- wall[searchwall].xpanning =
- getnumber(tempbuf, wall[searchwall].xpanning, 65536L, 0);
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector tag 3 (ceilingxpanning): ");
- sector[searchsector].ceilingxpanning =
- getnumber(tempbuf, sector[searchsector].ceilingxpanning, 65536L, 0);
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 3 (clipdist) : ");
- SPRITE_TAG3(searchwall) =
- getnumber(tempbuf, SPRITE_TAG3(searchwall), 65536L, 0);
-
- break;
- }
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_4])
- {
- keystatus[KEYSC_4] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- strcpy(tempbuf, "Wall tag 4 (ypanning): ");
- wall[searchwall].ypanning =
- getnumber(tempbuf, wall[searchwall].ypanning, 65536L, 0);
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector tag 4 (ceilingypanning): ");
- sector[searchsector].ceilingypanning =
- getnumber(tempbuf, sector[searchsector].ceilingypanning, 65536L, 0);
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 4 (ang) : ");
- SPRITE_TAG4(searchwall) =
- getnumber(tempbuf, SPRITE_TAG4(searchwall), 65536L, 0);
- break;
- }
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_5])
- {
- keystatus[KEYSC_5] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector tag 5 (floorxpanning): ");
- sector[searchsector].floorxpanning =
- getnumber(tempbuf, sector[searchsector].floorxpanning, 65536L, 0);
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 5 (xvel) : ");
- SPRITE_TAG5(searchwall) =
- getnumber(tempbuf, SPRITE_TAG5(searchwall), 65536L, 0);
- break;
- }
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_6])
- {
- keystatus[KEYSC_6] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector tag 6 (floorypanning): ");
- sector[searchsector].floorypanning =
- getnumber(tempbuf, sector[searchsector].floorypanning, 65536L, 0);
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 6 (yvel) : ");
- SPRITE_TAG6(searchwall) =
- getnumber(tempbuf, SPRITE_TAG6(searchwall), 65536L, 0);
- break;
- }
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_7])
- {
- keystatus[KEYSC_7] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- break;
- case 1:
- case 2:
- strcpy(tempbuf, "Sector tag 7 (floorypanning): ");
- sector[searchsector].floorypanning =
- getnumber(tempbuf, sector[searchsector].floorypanning, 65536L, 0);
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 7 (zvel 1) <0-255> : ");
- SPRITE_TAG7(searchwall) =
- getnumber(tempbuf, SPRITE_TAG7(searchwall), 65536L, 0);
- break;
- }
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_8])
- {
- keystatus[KEYSC_8] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- break;
- case 1:
- case 2:
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 8 (zvel 2) <0-255> : ");
- SPRITE_TAG8(searchwall) =
- getnumber(tempbuf, SPRITE_TAG8(searchwall), 65536L, 0);
- break;
- }
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_9])
- {
- keystatus[KEYSC_9] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- break;
- case 1:
- case 2:
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 9 (owner 1) <0-255> : ");
- SPRITE_TAG9(searchwall) =
- getnumber(tempbuf, SPRITE_TAG9(searchwall), 65536L, 0);
- break;
- }
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_0])
- {
- keystatus[KEYSC_0] = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- break;
- case 1:
- case 2:
- break;
- case 3:
- strcpy(tempbuf, "Sprite tag 10 (owner 2) <0-255> : ");
- SPRITE_TAG10(searchwall) =
- getnumber(tempbuf, SPRITE_TAG10(searchwall), 65536L, 0);
- break;
- }
- printmessage(" ");
- }
-
- }
-
- if (!keystatus[KEYSC_SEMI])
- return;
-
- if (keystatus[KEYSC_RSHIFT] || keystatus[KEYSC_LSHIFT])
- {
- if (keystatus[KEYSC_1])
- {
- keystatus[KEYSC_1] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 11 (0 or 1): ");
- value = !!TEST_BOOL11(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL11(sp);
- else
- RESET_BOOL11(sp);
-
- break;
- }
-
- printmessage(" ");
- }
- }
- else
- {
- if (keystatus[KEYSC_1])
- {
- keystatus[KEYSC_1] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 1 (0 or 1): ");
- value = !!TEST_BOOL1(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL1(sp);
- else
- RESET_BOOL1(sp);
-
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_2])
- {
- keystatus[KEYSC_2] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 2 (0 or 1): ");
- value = !!TEST_BOOL2(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL2(sp);
- else
- RESET_BOOL2(sp);
-
- break;
- }
-
- printmessage(" ");
- }
-
-
- if (keystatus[KEYSC_3])
- {
- keystatus[KEYSC_3] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 3 (0 or 1): ");
- value = !!TEST_BOOL3(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL3(sp);
- else
- RESET_BOOL3(sp);
-
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_4])
- {
- keystatus[KEYSC_4] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 4 (0 or 1): ");
- value = !!TEST_BOOL4(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL4(sp);
- else
- RESET_BOOL4(sp);
-
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_5])
- {
- keystatus[KEYSC_5] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 5 (0 or 1): ");
- value = !!TEST_BOOL5(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL5(sp);
- else
- RESET_BOOL5(sp);
-
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_6])
- {
- keystatus[KEYSC_6] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 6 (0 or 1): ");
- value = !!TEST_BOOL6(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL6(sp);
- else
- RESET_BOOL6(sp);
-
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_7])
- {
- keystatus[KEYSC_7] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 7 (0 or 1): ");
- value = !!TEST_BOOL7(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL7(sp);
- else
- RESET_BOOL7(sp);
-
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_8])
- {
- keystatus[KEYSC_8] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 8 (0 or 1): ");
- value = !!TEST_BOOL8(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL8(sp);
- else
- RESET_BOOL8(sp);
-
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_9])
- {
- keystatus[KEYSC_9] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 9 (0 or 1): ");
- value = !!TEST_BOOL9(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL9(sp);
- else
- RESET_BOOL9(sp);
-
- break;
- }
-
- printmessage(" ");
- }
-
- if (keystatus[KEYSC_0])
- {
- keystatus[KEYSC_0] = 0;
-
- switch (searchstat)
- {
- case 3:
- strcpy(tempbuf, "Boolean Sprite tag 10 (0 or 1): ");
- value = !!TEST_BOOL10(sp);
- value = getnumber(tempbuf, value, 65536L, 0);
-
- if (value)
- SET_BOOL10(sp);
- else
- RESET_BOOL10(sp);
-
- break;
- }
-
- printmessage(" ");
- }
- }
-}
-
-
-#define COINCURSOR 2440
-
-int intro;
-void
-ExtCheckKeysNotice(void)
-{
-#if 0
- if (qsetmode == 200) // In 3D mode
- {
- if (intro < 600)
- {
- intro++;
- sprintf(tempbuf, BUILD_VER_MSG);
- printext256(46 * 8, (24 * 8) - 1, 0, -1, tempbuf, 1);
- printext256(46 * 8, 24 * 8, 15, -1, tempbuf, 1);
- rotatesprite((320 - 8) << 16, (200 - 8) << 16, 64 << 9, 0, COINCURSOR + (((4 - totalclock >> 3)) & 7), 0, 0, 0, 0, 0, xdim - 1, ydim - 1);
- }
- }
-#endif
-} // end
-
-void
-ExtCheckKeys(void)
-{
- extern short f_c;
-
-// int ticdiff=0;
-
- // Display BUILD notice
- ExtCheckKeysNotice();
-
- FAF_AfterDrawRooms();
-
- // try it every time through the loop
- SetSpriteExtra();
- sector[0].extra = g_visibility;
-
-// if(!BKeyPressed())
-// ticdiff = totalclock-oldtotalclock; // Difference in tics from last time
-
-// oldtotalclock = totalclock; // Set old clock to new time
-
-// slackerclock += ticdiff;
-// ticdiff = 0; // Set it back to 0!
-
-
- if (qsetmode == 200) // In 3D mode
- {
-#define AVERAGEFRAMES 16
- static int frameval[AVERAGEFRAMES], framecnt = 0;
- int i;
-
- i = (int32_t) totalclock;
- if (i != frameval[framecnt])
- {
- sprintf(tempbuf, "%d", ((120 * AVERAGEFRAMES) / (i - frameval[framecnt])) + f_c);
- printext256(0L, 0L, 1, -1, tempbuf, 1);
- frameval[framecnt] = i;
- }
- framecnt = ((framecnt + 1) & (AVERAGEFRAMES - 1));
-
- }
-
- MoreKeys(searchstat, searchwall, searchsector, pointhighlight);
-
- if (qsetmode == 200) // In 3D mode
- {
- Keys3D();
-
- if (KEY_PRESSED(KEYSC_W))
- {
- KEY_PRESSED(KEYSC_W) = 0;
-
- switch (searchstat)
- {
- case 0:
- case 4:
- wall[searchwall].picnum = temppicnum;
- break;
- case 1:
- sector[searchsector].ceilingpicnum = temppicnum;
- break;
- case 2:
- sector[searchsector].floorpicnum = temppicnum;
- break;
- case 3:
- sprite[searchwall].picnum = temppicnum;
- break;
- }
- }
-
- // calling this twice seems to speed up the movement
- editinput();
- editinput();
- }
- else
- {
-
- if (KEY_PRESSED(KEYSC_QUOTE) && KEY_PRESSED(KEYSC_M))
- {
- KEY_PRESSED(KEYSC_M) = FALSE;
- ShadeMenu();
- }
-
- // greater than & less than keys
-// if (KEY_PRESSED(KEYSC_COMMA) || KEY_PRESSED(KEYSC_PERIOD))
-// {
-// KEY_PRESSED(KEYSC_COMMA) = KEY_PRESSED(KEYSC_PERIOD) = FALSE;
-// }
-
- // c for clip boxes
- // will find out
- if (KEY_PRESSED(KEYSC_QUOTE) && KEY_PRESSED(KEYSC_V))
- {
- KEY_PRESSED(KEYSC_V) = FALSE;
- CaptionMode++;
- if (CaptionMode >= CAPTION_MAX)
- CaptionMode = 0;
- }
-
- if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_D])
- {
- keystatus[KEYSC_D] = 0;
- SetClipdist2D();
- }
-
- }
-}
-
-void
-ExtLoadMap(const char *mapname)
-{
- SPRITEp sp;
- int i;
-
- BuildStagTable();
-
- SetSpriteExtra();
-
-
-#if 0
- Old visibility New visibility
- 8->16384
- 9->8192
- 10->4096
- 11->2048
- 12->1024
- 13->512
- 14->256
- 15->128
-#endif
-
- // if in valid range set visiblity for the map
- if (sector[0].extra != -1 && sector[0].extra > 0 && sector[0].extra < 16384)
- g_visibility = sector[0].extra;
-
- else
- // if NOT in valid range set a default
- g_visibility = 2;
-
- // Load up voxel sprites from voxel script file
- //LoadKVXFromScript("swvoxfil.txt");
- loaded_numwalls = numwalls;
-}
-
-void
-ExtSaveMap(const char *mapname)
-{
- SPRITEp sp;
- int i;
-
- SetSpriteExtra();
- ResetSpriteFound();
-
- for (i = 0; i < MAXWALLS; i++)
- {
- if (wall[i].extra != 0)
- wall[i].extra = 0;
- }
-}
-
-const char *
-ExtGetSectorCaption(short sectnum)
-{
- if ((sector[sectnum].lotag | sector[sectnum].hitag) == 0)
- {
- tempbuf[0] = 0;
- }
- else
- {
- sprintf(tempbuf, "%d,%d", TrackerCast(sector[sectnum].hitag),
- TrackerCast(sector[sectnum].lotag));
- }
- return tempbuf;
-}
-
-const char *
-ExtGetWallCaption(short wallnum)
-{
- if ((wall[wallnum].lotag | wall[wallnum].hitag) == 0)
- {
- tempbuf[0] = 0;
- }
- else
- {
- sprintf(tempbuf, "%d,%d", TrackerCast(wall[wallnum].hitag),
- TrackerCast(wall[wallnum].lotag));
- }
- return tempbuf;
-}
-
-const char *
-ExtGetSpriteCaption(short spritenum)
-{
- SPRITEp sp = &sprite[spritenum];
- const char *p = "";
- char name[66];
- char tp[30];
- char multi_str[30] = "";
- int16_t data;
-
- data = TEST(sp->extra, SPRX_SKILL);
-
- // Non ST1 sprites that are tagged like them
- if (TEST_BOOL1(sp) && sp->picnum != ST1)
- {
- if ((uint16_t)SP_TAG1(sp) > 1006)
- sprintf(name, "Invalid Tag");
- else
- sprintf(name, "%s,", StagInfo[SP_TAG1(sp)].name); // This page faults if
- // invalid #
-
- p = name;
- }
- else
- switch (sp->picnum)
- {
- case ST1:
- if ((uint16_t)SP_TAG1(sp) > 1006)
- sprintf(name, "Invalid Tag");
- else
- sprintf(name, "*%s,", StagInfo[SP_TAG1(sp)].name);
- p = name;
- break;
- case ST_QUICK_JUMP:
- p = "QJ,";
- break;
- case ST_QUICK_JUMP_DOWN:
- p = "QJD,";
- break;
- case ST_QUICK_SUPER_JUMP:
- p = "QSJ,";
- break;
- case ST_QUICK_EXIT:
- p = "QEXIT,";
- break;
- case ST_QUICK_SCAN:
- p = "QSCAN,";
- break;
- case ST_QUICK_OPERATE:
- p = "QOPERATE,";
- break;
- case ST_QUICK_DUCK:
- p = "QDUCK,";
- break;
- case ST_QUICK_DEFEND:
- p = "QDEFEND,";
- break;
- case NINJA_RUN_R0:
- p = "NINJA,";
- break;
- case GORO_RUN_R0:
- p = "GAURD,";
- break;
- case COOLIE_RUN_R0:
- p = "COOLIE,";
- break;
- case COOLG_RUN_R0:
- p = "GHOST,";
- break;
- case RIPPER_RUN_R0:
- p = "RIPPER,";
- break;
- case SKEL_RUN_R0:
- p = "SKEL,";
- break;
- case HORNET_RUN_R0:
- p = "HORNET,";
- break;
- case SERP_RUN_R0:
- p = "SERP,";
- break;
- case SKULL_R0:
- p = "SKULL,";
- break;
-
- case ICON_STAR:
- p = "STAR,";
- break;
- case ICON_LG_MINE:
- p = "LG_MINE,";
- break;
- case ICON_GRENADE_LAUNCHER:
- p = "GRENADE_LAUNCHER,";
- break;
- case ICON_LG_GRENADE:
- p = "LG_GRENADE,";
- break;
- case ICON_MICRO_GUN:
- p = "MICRO_GUN,";
- break;
- case ICON_MICRO_BATTERY:
- p = "MICRO_BATTERY,";
- break;
- case ICON_SHOTGUN:
- p = "RIOT_GUN,";
- break;
- case ICON_LG_SHOTSHELL:
- p = "LG_SHOTSHELL,";
- break;
- case ICON_ROCKET:
- p = "ROCKET,";
- break;
- case ICON_LG_ROCKET:
- p = "LG_ROCKET,";
- break;
- case ICON_UZI:
- p = "UZI,";
- break;
- case ICON_UZIFLOOR:
- p = "UZI_FLOOR,";
- break;
- case ICON_LG_UZI_AMMO:
- p = "LG_UZI_AMMO,";
- break;
- case ICON_GUARD_HEAD:
- p = "FIRE,";
- break;
- case ICON_HEART:
- p = "HEART,";
- break;
- case ICON_HEART_LG_AMMO:
- p = "HEART_LG_AMMO,";
- break;
-
- case ICON_SPELL:
- p = "SPELL,";
- break;
- case ICON_EXPLOSIVE_BOX:
- p = "CRATE,";
- break;
- case ICON_SM_MEDKIT:
- p = "FIRST_AID,";
- break;
- case ICON_MEDKIT:
- p = "MEDKIT,";
- break;
- case ICON_CHEMBOMB:
- p = "CHEM_BOMB,";
- break;
- case ICON_FLASHBOMB:
- p = "FLASH_BOMB,";
- break;
- case ICON_NUKE:
- p = "NUKE_BOMB,";
- break;
- case ICON_CALTROPS:
- p = "CALTROPS,";
- break;
- case ICON_BOOSTER:
- p = "BOT_HEALTH,";
- break;
- case ICON_HEAT_CARD:
- p = "HEAT_SEEKERS,";
- break;
-// case ICON_ENVIRON_SUIT:
-// p = "EVIRON_SUIT,";
-// break;
- case ICON_CLOAK:
- p = "SMOKE_BOMB,";
- break;
- case ICON_FLY:
- p = "FLY,";
- break;
- case ICON_GOROAMMO:
- p = "GAURDAMMO,";
- break;
- case ICON_RAIL_GUN:
- p = "RAIL_GUN,";
- break;
- case ICON_RAIL_AMMO:
- p = "RAIL_AMMO,";
- break;
- case ICON_REPAIR_KIT:
- p = "REPAIR_KIT,";
- break;
- /*
- * case ICON_GAUNTAMMO: p = "GAUNTAMMO,"; break;
- */
- case ICON_RINGAMMO:
- p = "RINGAMMO,";
- break;
- case ICON_NAPALMAMMO:
- p = "NAPALMAMMO,";
- break;
- case ICON_GRENADE:
- p = "GRENADE,";
- break;
- case ICON_NIGHT_VISION:
- p = "NIGHT_VISION,";
- break;
- case ICON_ARMOR:
- p = "ARMOR,";
- break;
- case SKEL_LOCKED:
- p = "SKELETON KEY LOCK,";
- switch (sp->hitag)
- {
- case 1:
- sp->pal = PALETTE_PLAYER9;
- break;
- case 2:
- sp->pal = PALETTE_PLAYER7;
- break;
- case 3:
- sp->pal = PALETTE_PLAYER6;
- break;
- case 4:
- sp->pal = PALETTE_PLAYER4;
- break;
- case 5:
- sp->pal = PALETTE_PLAYER4;
- break;
- case 6:
- sp->pal = PALETTE_PLAYER1;
- break;
- case 7:
- sp->pal = PALETTE_PLAYER8;
- break;
- case 8:
- sp->pal = PALETTE_PLAYER9;
- break;
- }
- break;
- case RAMCARD_LOCKED:
- p = "RAM CARD LOCK,";
- switch (sp->hitag)
- {
- case 1:
- sp->pal = PALETTE_PLAYER9;
- break;
- case 2:
- sp->pal = PALETTE_PLAYER7;
- break;
- case 3:
- sp->pal = PALETTE_PLAYER6;
- break;
- case 4:
- sp->pal = PALETTE_PLAYER4;
- break;
- case 5:
- sp->pal = PALETTE_PLAYER4;
- break;
- case 6:
- sp->pal = PALETTE_PLAYER1;
- break;
- case 7:
- sp->pal = PALETTE_PLAYER8;
- break;
- case 8:
- sp->pal = PALETTE_PLAYER9;
- break;
- }
- break;
- case CARD_LOCKED:
- p = "CARD KEY LOCK,";
- switch (sp->hitag)
- {
- case 1:
- sp->pal = PALETTE_PLAYER9;
- break;
- case 2:
- sp->pal = PALETTE_PLAYER7;
- break;
- case 3:
- sp->pal = PALETTE_PLAYER6;
- break;
- case 4:
- sp->pal = PALETTE_PLAYER4;
- break;
- case 5:
- sp->pal = PALETTE_PLAYER4;
- break;
- case 6:
- sp->pal = PALETTE_PLAYER1;
- break;
- case 7:
- sp->pal = PALETTE_PLAYER8;
- break;
- case 8:
- sp->pal = PALETTE_PLAYER9;
- break;
- }
- break;
- case RED_KEY:
- p = "RED KEY,";
- sp->pal = PALETTE_PLAYER9; // Hard set the palette
- break;
- case BLUE_KEY:
- p = "BLUE KEY,";
- sp->pal = PALETTE_PLAYER7; // Hard set the palette
- break;
- case GREEN_KEY:
- p = "GREEN KEY,";
- sp->pal = PALETTE_PLAYER6; // Hard set the palette
- break;
- case YELLOW_KEY:
- p = "YEL KEY,";
- sp->pal = PALETTE_PLAYER4; // Hard set the palette
- break;
- case RED_CARD:
- p = "RED CARD,";
- sp->pal = PALETTE_PLAYER9; // Hard set the palette
- break;
- case BLUE_CARD:
- p = "BLUE CARD,";
- sp->pal = PALETTE_PLAYER7; // Hard set the palette
- break;
- case GREEN_CARD:
- p = "GREEN CARD,";
- sp->pal = PALETTE_PLAYER6; // Hard set the palette
- break;
- case YELLOW_CARD:
- p = "YEL CARD,";
- sp->pal = PALETTE_PLAYER4; // Hard set the palette
- break;
- case SILVER_SKELKEY:
- p = "SILVER SKELKEY,";
- sp->pal = PALETTE_PLAYER1; // Hard set the palette
- break;
- case GOLD_SKELKEY:
- p = "GOLD SKELKEY,";
- sp->pal = PALETTE_PLAYER4; // Hard set the palette
- break;
- case BRONZE_SKELKEY:
- p = "BRONZE SKELKEY,";
- sp->pal = PALETTE_PLAYER8; // Hard set the palette
- break;
- case RED_SKELKEY:
- p = "RED SKELKEY,";
- sp->pal = PALETTE_PLAYER9; // Hard set the palette
- break;
- case RED_KEY_STATUE:
- p = "RED STAT,";
- break;
- case BLUE_KEY_STATUE:
- p = "BLUE STAT,";
- break;
- case GREEN_KEY_STATUE:
- p = "GREEN STAT,";
- break;
- case YELLOW_KEY_STATUE:
- p = "YEL STAT,";
- break;
- default:
- p = "";
- break;
- }
-
- if (sp->picnum != ST1)
- {
- if (sp->lotag == TAG_SPRITE_HIT_MATCH)
- {
- p = "TAG_SPRITE_HIT_MATCH";
- }
-
- // multi
- if (TEST(sp->extra, SPRX_MULTI_ITEM))
- strcpy(multi_str, "MULTI,");
- }
-
- // track
- if (sp->picnum >= TRACK_SPRITE && sp->picnum < TRACK_SPRITE + 100)
- {
- sprintf(tp, "T%d,", sp->picnum - TRACK_SPRITE);
- p = tp;
- }
-
- switch (CaptionMode)
- {
- case CAPTION_NONE:
- tempbuf[0] = 0;
- break;
-
- case CAPTION_DEFAULT:
- if ((sprite[spritenum].lotag | sprite[spritenum].hitag) == 0)
- //tempbuf[0] = NULL;
- sprintf(tempbuf, "S:%d", data);
- else
- sprintf(tempbuf, "S:%d,%d,%d", data, TrackerCast(sprite[spritenum].hitag), TrackerCast(sprite[spritenum].lotag));
- break;
-
-
- case CAPTION_NAMES:
- // Show clip boxes in default mode
- if (sp->hitag == SO_CLIP_BOX)
- DrawClipBox(spritenum);
- if (sp->hitag == SECT_SO_CLIP_DIST)
- DrawClipBox(spritenum);
-
- if ((sprite[spritenum].lotag | sprite[spritenum].hitag) == 0)
- sprintf(tempbuf, "S:%d,%s%s", data, p, multi_str);
- else
- // name and numbers - name only prints if not null string
- sprintf(tempbuf, "%s%s%d,%d", p, multi_str, TrackerCast(sprite[spritenum].hitag), TrackerCast(sprite[spritenum].lotag));
-
- break;
-
- case CAPTION_MOST:
- if ((sprite[spritenum].lotag | sprite[spritenum].hitag) == 0)
- sprintf(tempbuf, "%s%s", p, multi_str);
- else
- sprintf(tempbuf, "%s%s%d,%d,%d,%d,%d,%d", p, multi_str,
- TrackerCast(SPRITE_TAG1(spritenum)),
- TrackerCast(SPRITE_TAG2(spritenum)),
- TrackerCast(SPRITE_TAG3(spritenum)),
- TrackerCast(SPRITE_TAG4(spritenum)),
- TrackerCast(SPRITE_TAG5(spritenum)),
- TrackerCast(SPRITE_TAG6(spritenum)));
- break;
-
- case CAPTION_ALL:
-// if (sp->hitag == SO_CLIP_BOX)
-// DrawClipBox(spritenum);
-
- if ((sprite[spritenum].lotag | sprite[spritenum].hitag) == 0)
- sprintf(tempbuf, "%s%s", p, multi_str);
- else
- sprintf(tempbuf, "%s%s%d,%d,%d,%d,%d,%d,%d,%d,%d,%d", p, multi_str,
- TrackerCast(SPRITE_TAG1(spritenum)),
- TrackerCast(SPRITE_TAG2(spritenum)),
- TrackerCast(SPRITE_TAG3(spritenum)),
- TrackerCast(SPRITE_TAG4(spritenum)),
- TrackerCast(SPRITE_TAG5(spritenum)),
- TrackerCast(SPRITE_TAG6(spritenum)),
- SPRITE_TAG7(spritenum),
- SPRITE_TAG8(spritenum),
- SPRITE_TAG9(spritenum),
- SPRITE_TAG10(spritenum));
- break;
- }
-
-
- return tempbuf;
-}
-
-void
-SectorMidPoint(short sectnum, int *xmid, int *ymid, int *zmid)
-{
- short startwall, endwall, j;
- int xsum = 0, ysum = 0;
- WALLp wp;
-
- startwall = sector[sectnum].wallptr;
- endwall = startwall + sector[sectnum].wallnum - 1;
-
- for (wp = &wall[startwall], j = startwall; j <= endwall; wp++, j++)
- {
- xsum += wp->x;
- ysum += wp->y;
- }
-
- *xmid = xsum / (endwall - startwall + 1);
- *ymid = ysum / (endwall - startwall + 1);
-
- *zmid = DIV2(sector[sectnum].floorz + sector[sectnum].ceilingz);
-}
-
-void
-DrawClipBox(short spritenum)
-{
- int x = 0, y = 0, z;
- int radius;
- extern int zoom;
-
- if (sprite[spritenum].hitag == SO_CLIP_BOX)
- {
- x = mulscale14(sprite[spritenum].x - pos.x, zoom);
- y = mulscale14(sprite[spritenum].y - pos.y, zoom);
- }
- else if (sprite[spritenum].hitag == SECT_SO_CLIP_DIST)
- {
- SectorMidPoint(sprite[spritenum].sectnum,&x, &y, &z);
- x = mulscale14(x - pos.x, zoom);
- y = mulscale14(y - pos.y, zoom);
- }
-
- x += 320;
- y += 200;
-
- radius = mulscale14(sprite[spritenum].lotag, zoom);
-
-#define BOX_COLOR 3
- // upper
- editorDraw2dLine(x - radius, y - radius, x + radius, y - radius, BOX_COLOR);
- // lower
- editorDraw2dLine(x - radius, y + radius, x + radius, y + radius, BOX_COLOR);
- // left
- editorDraw2dLine(x - radius, y - radius, x - radius, y + radius, BOX_COLOR);
- // right
- editorDraw2dLine(x + radius, y - radius, x + radius, y + radius, BOX_COLOR);
-}
-
-void
-ExtShowSectorData(short sectnum) // F5
-{
- int i, x, y, x2;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- clearmidstatbar16(); // Clear middle of status bar
-
-
-// if (keystatus[KEYSC_F5] )
-// {
- KEY_PRESSED(KEYSC_F5) = 0;
- for (i = 0; i < MAXSPRITES; i++)
- numsprite[i] = 0;
- for (i = 0; i < MAXSPRITES; i++)
- multisprite[i] = 0;
- for (i = 0; i < MAXSPRITES; i++)
- {
- if (sprite[i].statnum == 0)
- {
- if (TEST(sprite[i].extra, SPRX_MULTI_ITEM))
- {
- if (sprite[i].picnum == ICON_UZIFLOOR)
- multisprite[ICON_UZI]++;
- else
- multisprite[sprite[i].picnum]++;
-
- }
- else
- {
- if (sprite[i].picnum == ICON_UZIFLOOR)
- numsprite[ICON_UZI]++;
- else
- numsprite[sprite[i].picnum]++;
- }
- }
- }
-
-
- clearmidstatbar16(); // Clear middle of status bar
-
- x = 1;
- x2 = 14;
- y = 4;
- printext16(x * 8, ydim16+y * 8, 11, -1, "Item Count", 0);
- PrintStatus("10%Health=", numsprite[ICON_SM_MEDKIT], x, y + 2, 11);
- PrintStatus("", multisprite[ICON_SM_MEDKIT], x2, y + 2, 1);
- PrintStatus("HealthBot=", numsprite[ICON_BOOSTER], x, y + 3, 11);
- PrintStatus("", multisprite[ICON_BOOSTER], x2, y + 3, 1);
- PrintStatus("Armor =", numsprite[ICON_ARMOR], x, y + 4, 11);
- PrintStatus("", multisprite[ICON_ARMOR], x2, y + 4, 1);
-
- x = 17;
- x2 = 30;
- y = 4;
- printext16(x * 8, ydim16+y * 8, 11, -1, "Inventory", 0);
- PrintStatus("Med-Kit =", numsprite[ICON_MEDKIT], x, y + 2, 11);
- PrintStatus("", multisprite[ICON_MEDKIT], x2, y + 2, 1);
- PrintStatus("Bio_Suit =", numsprite[ICON_ENVIRON_SUIT], x, y + 3, 11);
- PrintStatus("", multisprite[ICON_ENVIRON_SUIT], x2, y + 3, 1);
- PrintStatus("NightGogs=", numsprite[ICON_NIGHT_VISION], x, y + 4, 11);
- PrintStatus("", multisprite[ICON_NIGHT_VISION], x2, y + 4, 1);
- PrintStatus("SmokeBomb=", numsprite[ICON_CLOAK], x, y + 5, 11);
- PrintStatus("", multisprite[ICON_CLOAK], x2, y + 5, 1);
- PrintStatus("Tool_Box =", numsprite[ICON_REPAIR_KIT], x, y + 6, 11);
- PrintStatus("", multisprite[ICON_REPAIR_KIT], x2, y + 6, 1);
- PrintStatus("Heat_Card=", numsprite[ICON_HEAT_CARD], x, y + 7, 11);
- PrintStatus("", multisprite[ICON_HEAT_CARD], x2, y + 7, 1);
- PrintStatus("FlashBomb=", numsprite[ICON_FLASHBOMB], x, y + 8, 11);
- PrintStatus("", multisprite[ICON_FLASHBOMB], x2, y + 8, 1);
- PrintStatus("Caltrops =", numsprite[ICON_CALTROPS], x, y + 9, 11);
- PrintStatus("", multisprite[ICON_CALTROPS], x2, y + 9, 1);
-
- x = 33;
- x2 = 46;
- y = 4;
- printext16(x * 8, ydim16+y * 8, 11, -1, "Weapon Count", 0);
- PrintStatus("Shuriken =", numsprite[ICON_STAR], x, y + 2, 11);
- PrintStatus("", multisprite[ICON_STAR], x2, y + 2, 1);
- PrintStatus("Uzi =", numsprite[ICON_UZI], x, y + 3, 11);
- PrintStatus("", multisprite[ICON_UZI], x2, y + 3, 1);
- PrintStatus("Riot_Gun =", numsprite[ICON_SHOTGUN], x, y + 4, 11);
- PrintStatus("", multisprite[ICON_SHOTGUN], x2, y + 4, 1);
- PrintStatus("Misl_Bat =", numsprite[ICON_MICRO_GUN], x, y + 5, 11);
- PrintStatus("", multisprite[ICON_MICRO_GUN], x2, y + 5, 1);
- PrintStatus("40mm =", numsprite[ICON_GRENADE_LAUNCHER], x, y + 6, 11);
- PrintStatus("", multisprite[ICON_GRENADE_LAUNCHER], x2, y + 6, 1);
- PrintStatus("Mines =", numsprite[ICON_LG_MINE], x, y + 7, 11);
- PrintStatus("", multisprite[ICON_LG_MINE], x2, y + 7, 1);
- PrintStatus("Rail_Gun =", numsprite[ICON_RAIL_GUN], x, y + 8, 11);
- PrintStatus("", multisprite[ICON_RAIL_GUN], x2, y + 8, 1);
- PrintStatus("Evil Head=", numsprite[ICON_GUARD_HEAD], x, y + 9, 11);
- PrintStatus("", multisprite[ICON_GUARD_HEAD], x2, y + 9, 1);
- PrintStatus("Heart =", numsprite[ICON_HEART], x, y + 10, 11);
- PrintStatus("", multisprite[ICON_HEART], x2, y + 10, 1);
-
- x = 49;
- x2 = 62;
- y = 4;
- printext16(x * 8, ydim16+y * 8, 11, -1, "Ammo Count", 0);
- PrintStatus("Bullets =", numsprite[ICON_LG_UZI_AMMO], x, y + 2, 11);
- PrintStatus("", multisprite[ICON_LG_UZI_AMMO], x2, y + 2, 1);
- PrintStatus("ShotShell=", numsprite[ICON_LG_SHOTSHELL], x, y + 3, 11);
- PrintStatus("", multisprite[ICON_LG_SHOTSHELL], x2, y + 3, 1);
- PrintStatus("Rockets =", numsprite[ICON_MICRO_BATTERY], x, y + 4, 11);
- PrintStatus("", multisprite[ICON_MICRO_BATTERY], x2, y + 4, 1);
- PrintStatus("40mmShell=", numsprite[ICON_LG_GRENADE], x, y + 5, 11);
- PrintStatus("", multisprite[ICON_LG_GRENADE], x2, y + 5, 1);
- PrintStatus("Rail_Pack=", numsprite[ICON_RAIL_AMMO], x, y + 6, 11);
- PrintStatus("", multisprite[ICON_RAIL_AMMO], x2, y + 6, 1);
-
-
- // Show next tags
- FindNextTag();
- ShowNextTag();
- /*
- printext16(65*8,ydim16+4*8,11,-1,"MISC",0);
- PrintStatus("Secrets =",secrets,65,6,11);
- printext16(65*8,ydim16+7*8,11,-1,"ACTORS",0);
- PrintStatus("Skill 1 =",totalactors1,65,8,11);
- PrintStatus("Skill 2 =",totalactors2,65,9,11);
- PrintStatus("Skill 3 =",totalactors3,65,10,11);
- PrintStatus("Skill 4 =",totalactors4,65,11,11);
- PrintStatus("Respawn =",totalrespawn,65,12,11);
- */
-// }
-
-#if 0
- sprintf(tempbuf, "Sector %d", sectnum);
- printext16(8, ydim16+32, 11, -1, tempbuf, 0);
-
- printext16(8, ydim16+48, 11, -1, "8*8 font: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789", 0);
- printext16(8, ydim16+56, 11, -1, "3*5 font: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789", 1);
-
- drawline16(320, 68, 344, 80, 4); // Draw house
- drawline16(344, 80, 344, 116, 4);
- drawline16(344, 116, 296, 116, 4);
- drawline16(296, 116, 296, 80, 4);
- drawline16(296, 80, 320, 68, 4);
-#endif
-}
-
-void
-ExtShowWallData(short wallnum) // F6
-{
- if (qsetmode == 200) // In 3D mode
- return;
-
-
- clearmidstatbar16(); // Clear middle of status bar
- sprintf(tempbuf, "Wall %d", wallnum);
- printext16(8, ydim16+32, 11, -1, tempbuf, 0);
-}
-
-void
-ExtShowSpriteData(short spritenum) // F6
-{
- if (qsetmode == 200) // In 3D mode
- return;
-
- while (KEY_PRESSED(KEYSC_F6)) ;
- ResetKeys();
- ContextHelp(spritenum); // Get context sensitive help
-
-
-// OLD
-// clearmidstatbar16();
-// sprintf(tempbuf, "Sprite %d", spritenum);
-// printext16(8, ydim16+32, 11, -1, tempbuf, 0);
-}
-
-void
-ExtEditSectorData(short sectnum) // F7
-{
- short key_num;
- SPRITEp sp;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
-
- sp = &sprite[FindSpriteNum]; // Set sprite to current spritenum
-
- clearmidstatbar16(); // Clear middle of status bar
-
- sprintf(tempbuf, "Current attributes for sprite being searched for:");
- printext16(8, ydim16+32, 11, -1, tempbuf, 0);
-
- sprintf(tempbuf, "PicNum = %d", FindPicNum);
- printext16(8, ydim16+32 + 16, 11, -1, tempbuf, 0);
-
- sprintf(tempbuf, "HiTag = %d", TrackerCast(sp->hitag));
- printext16(8, ydim16+32 + 24, 11, -1, tempbuf, 0);
-
- sprintf(tempbuf, "LowTag = %d", TrackerCast(sp->lotag));
- printext16(8, ydim16+32 + 32, 11, -1, tempbuf, 0);
-
- FindNextSprite(FindPicNum);
-}
-
-void
-ExtEditWallData(short wallnum) // F8
-{
-// short nickdata;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
-// sprintf(tempbuf, "Wall (%ld): ", wallnum);
-// nickdata = 0;
-// nickdata = getnumber16(tempbuf, nickdata, 65536L);
-
-// printmessage16(" "); // Clear message box (top right of
- // status bar)
-// ExtShowWallData(wallnum);
-}
-
-void
-ExtEditSpriteData(short spritenum) // F8
-{
- uint8_t* key;
- short data;
- SPRITEp sp;
-
- SetSpriteExtra();
-
- sp = &sprite[spritenum];
-
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- clearmidstatbar16(); // Clear middle of status bar
- printext16(8, ydim16+32, 11, -1, "(1) Skill Level - 0=Easy 1=Normal 2=Hard 3=Crazy", 0);
- printext16(8, ydim16+32 + 8, 11, -1, "(2) Multi-Player Item Toggle", 0);
- printext16(8, ydim16+32 + 16, 11, -1, "(3) Find Sprite", 0);
- printext16(8, ydim16+32 + 24, 11, -1, "(4) Dbug Toggle (* Programming use only *) ", 0);
- videoShowFrame(1);
-
- while (KEY_PRESSED(KEYSC_F8)) handleevents();
-
- ResetKeys();
-
- while ((key = BKeyPressed()) == NULL) handleevents();
-
- if (key == (uint8_t*)&KEY_PRESSED(KEYSC_1) || key == (uint8_t*)&KEY_PRESSED(KEYSC_F8))
- {
- *key = FALSE;
-
- sprintf(tempbuf, "Sprite (%d) Skill Level (0-3) : ", spritenum);
-
- data = TEST(sp->extra, SPRX_SKILL);
-
- data = getnumber16(tempbuf, data, 65536L, 1);
-
- if (data > 3)
- data = 3;
-
- RESET(sp->extra, SPRX_SKILL);
- SET(sp->extra, data);
- }
- else if (key == (uint8_t*)&KEY_PRESSED(KEYSC_2) || key == (uint8_t*)&KEY_PRESSED(KEYSC_F9))
- {
- *key = FALSE;
-
- FLIP(sprite[spritenum].extra, SPRX_MULTI_ITEM);
- }
- else if (key == (uint8_t*)&KEY_PRESSED(KEYSC_3) || key == (uint8_t*)&KEY_PRESSED(KEYSC_F10))
- {
- *key = FALSE;
-
- do
- {
-DISPLAY:
- clearmidstatbar16();
- printext16(8, ydim16+32, 11, -1, "Toggle Sprite Seach Criteria. ESC quits.", 0);
-
- printext16(8, ydim16+32 + 16, 11, -1, "(1) Use PicNum in search: ", 0);
- if (bFindPicNum)
- printext16(8 + 240, ydim16+32 + 16, 11, -1, "TRUE", 0);
- else
- printext16(8 + 240, ydim16+32 + 16, 11, -1, "FALSE", 0);
-
- printext16(8, ydim16+32 + 24, 11, -1, "(2) Use HiTag in search: ", 0);
- if (bFindHiTag)
- printext16(8 + 240, ydim16+32 + 24, 11, -1, "TRUE", 0);
- else
- printext16(8 + 240, ydim16+32 + 24, 11, -1, "FALSE", 0);
-
- printext16(8, ydim16+32 + 32, 11, -1, "(3) Use LowTag in search: ", 0);
- if (bFindLowTag)
- printext16(8 + 240, ydim16+32 + 32, 11, -1, "TRUE", 0);
- else
- printext16(8 + 240, ydim16+32 + 32, 11, -1, "FALSE", 0);
- videoShowFrame(1);
-
- // Disallow invalid settings
- if (!bFindPicNum && !bFindHiTag && !bFindLowTag)
- {
- bFindPicNum = TRUE;
- goto DISPLAY;
- }
-
- while (KEY_PRESSED(KEYSC_1) || KEY_PRESSED(KEYSC_2) || KEY_PRESSED(KEYSC_3)
- || KEY_PRESSED(KEYSC_4)) handleevents();
-
- ResetKeys();
-
- while ((key = BKeyPressed()) == NULL) handleevents();
-
- if (key == (uint8_t*)&KEY_PRESSED(KEYSC_1))
- {
- *key = FALSE;
- bFindPicNum = !bFindPicNum;
- }
- else if (key == (uint8_t*)&KEY_PRESSED(KEYSC_2))
- {
- *key = FALSE;
- bFindHiTag = !bFindHiTag;
- }
- else if (key == (uint8_t*)&KEY_PRESSED(KEYSC_3))
- {
- *key = FALSE;
- bFindLowTag = !bFindLowTag;
- }
-
- }
- while ((KEY_PRESSED(0x1c) == 0) && (KEY_PRESSED(0x1) == 0)); // Enter, ESC
- KEY_PRESSED(0x1c) = 0;
- KEY_PRESSED(0x1) = 0;
-
- FindSprite(sprite[spritenum].picnum, spritenum);
- }
- else if (key == (uint8_t*)&KEY_PRESSED(KEYSC_4))
- {
- *key = FALSE;
- FLIP(sprite[spritenum].extra, SPRX_BLOCK);
- }
-
- printmessage16(" ");
-
- clearmidstatbar16(); // Clear middle of status bar
-
- sprintf(tempbuf, "Current attributes for selected sprite:");
- printext16(8, ydim16+32, 11, -1, tempbuf, 0);
-
- sprintf(tempbuf, " Skill = %d", TEST(sp->extra, SPRX_SKILL));
- printext16(8, ydim16+32 + 16, 11, -1, tempbuf, 0);
-
- sprintf(tempbuf, " Multi Item = %d", !!TEST(sp->extra, SPRX_MULTI_ITEM));
- printext16(8, ydim16+32 + 24, 11, -1, tempbuf, 0);
-
- sprintf(tempbuf, " Debug = %d", !!TEST(sp->extra, SPRX_BLOCK));
- printext16(8, ydim16+32 + 32, 11, -1, tempbuf, 0);
-
-}
-
-void
-PlaxSetShade(void)
-{
- short data;
- short shade;
- int i, count = 0;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- sprintf(tempbuf, "Plax Sky set shade to #: ");
- shade = getnumber16(tempbuf, 0, 65536L, 1);
-
- if (shade == 0)
- return;
-
- for (i = 0, count = 0; i < numsectors; i++)
- {
- if (TEST(sector[i].ceilingstat, CEILING_STAT_PLAX))
- {
- sector[i].ceilingshade = shade;
- count++;
- }
- }
-
- printmessage16(" ");
-
- clearmidstatbar16(); // Clear middle of status bar
-
- sprintf(tempbuf, "%d Plax Sky shades set.", count);
- printext16(8, ydim16+32, 11, -1, tempbuf, 0);
-}
-
-void
-PlaxAdjustShade(void)
-{
- short data;
- short shade;
- int i, count = 0;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- sprintf(tempbuf, "Plax Sky adjust shade by (+10000 for negative): ");
- shade = getnumber16(tempbuf, 0, 65536L, 1);
-
- if (shade == 0)
- return;
-
- if (shade > 10000)
- {
- shade = -(shade - 10000);
- }
-
-
- for (i = 0; i < numsectors; i++)
- {
- if (TEST(sector[i].ceilingstat, CEILING_STAT_PLAX))
- {
- sector[i].ceilingshade += shade;
- }
- }
-
- printmessage16(" ");
-
- clearmidstatbar16(); // Clear middle of status bar
-
- sprintf(tempbuf, "%d Plax Sky shades adjusted.", count);
- printext16(8, ydim16+32, 11, -1, tempbuf, 0);
-}
-
-void
-AdjustShade(void)
-{
- short data;
- short shade;
- int i, count;
- short SpriteNum, NextSprite;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- sprintf(tempbuf, "Adjust amount (+10000 for negative): ");
- shade = getnumber16(tempbuf, 0, 65536L, 1);
-
- if (shade == 0)
- return;
-
- if (shade > 10000)
- {
- shade = -(shade - 10000);
- }
-
- if (highlightsectorcnt > -1)
- {
- short startwall, endwall;
- short i, j = 0;
-
- for (i = 0; i < highlightsectorcnt; i++)
- {
- sector[highlightsector[i]].floorshade += shade;
- sector[highlightsector[i]].ceilingshade += shade;
-
- TRAVERSE_SPRITE_SECT(headspritesect[highlightsector[i]], SpriteNum, NextSprite)
- {
- sprite[SpriteNum].shade += shade;
- }
-
- startwall = sector[highlightsector[i]].wallptr;
- endwall = startwall + sector[highlightsector[i]].wallnum - 1;
-
- for (j = startwall; j <= endwall; j++)
- {
- if (!TEST(wall[j].extra, 0x1))
- {
- SET(wall[j].extra, 0x1);
- wall[j].shade += shade;
- }
-
- if (!TEST(wall[wall[j].nextwall].extra, 0x1))
- {
- SET(wall[wall[j].nextwall].extra, 0x1);
- wall[wall[j].nextwall].shade += shade;
- }
-
- }
- }
-
- for (i = 0; i < MAXWALLS; i++)
- {
- RESET(wall[j].extra, 0x1);
- }
-
- }
- else
- {
- for (i = count = 0; i < numwalls; i++)
- {
- wall[i].shade += shade;
- }
-
- for (i = 0; i < numsectors; i++)
- {
- sector[i].floorshade += shade;
- sector[i].ceilingshade += shade;
-
- TRAVERSE_SPRITE_SECT(headspritesect[i], SpriteNum, NextSprite)
- {
- sprite[SpriteNum].shade += shade;
- }
- }
- }
-
- printmessage16(" ");
-
- clearmidstatbar16(); // Clear middle of status bar
-}
-
-
-void
-SetClipdist2D(void)
-{
- short dist;
- int i;
- short num;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- if (highlightcnt <= -1)
- return;
-
- sprintf(tempbuf, "Sprite Clipdist: ");
- dist = getnumber16(tempbuf, 0, 65536L, 1);
-
- for (i = 0; i < highlightcnt; i++)
- {
- if (TEST(highlight[i], SPRITE_FLAG))
- {
- num = RESET(highlight[i], SPRITE_FLAG);
- sprite[highlight[i]].clipdist = dist;
- }
- }
-
- printmessage16(" ");
-
- clearmidstatbar16(); // Clear middle of status bar
-}
-
-void
-AdjustVisibility(void)
-{
- short data;
- short vis;
- int i, count = 0;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- sprintf(tempbuf, "Adjust non-zero vis sectors by (+10000 for neg): ");
- vis = getnumber16(tempbuf, 0, 65536L, 1);
-
- if (vis == 0)
- return;
-
- if (vis > 10000)
- {
- vis = -(vis - 10000);
- }
-
- if (highlightsectorcnt > -1)
- {
- short i, j;
-
- for (i = 0; i < highlightsectorcnt; i++)
- {
- if (sector[highlightsector[i]].visibility != 0)
- {
- count++;
- sector[highlightsector[i]].visibility += vis;
- }
- }
- }
- else
- for (i = 0; i < numsectors; i++)
- {
- if (sector[i].visibility != 0)
- {
- count++;
- sector[i].visibility += vis;
- }
- }
-
- printmessage16(" ");
-
- clearmidstatbar16(); // Clear middle of status bar
-
- sprintf(tempbuf, "%d Vis adjusted.", count);
- printext16(8, ydim16+32, 11, -1, tempbuf, 0);
-}
-
-void
-FindSprite(short picnum, short findspritenum)
-{
- int i, count;
- short SpriteNum, NextSprite;
- SPRITEp sp;
-
- SWBOOL bFoundPicNum, bFoundHiTag, bFoundLowTag, bFoundIt;
-
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- if (picnum == 0)
- {
- sprintf(tempbuf, "Find sprite (tile number): ");
- picnum = getnumber16(tempbuf, 0, 65536L, 1);
- }
-
- FindPicNum = picnum;
- FindSpriteNum = findspritenum;
-
- ResetSpriteFound();
-
- // go to the first one
- for (i = 0; i < numsectors; i++)
- {
- TRAVERSE_SPRITE_SECT(headspritesect[i], SpriteNum, NextSprite)
- {
- sp = &sprite[SpriteNum];
-
- // Reset search status
- bFoundIt = TRUE;
- bFoundPicNum = bFoundHiTag = bFoundLowTag = FALSE;
-
- if (bFindPicNum)
- {
- if (sp->picnum == picnum)
- bFoundPicNum = TRUE;
- bFoundIt = bFoundIt & bFoundPicNum;
- }
- if (bFindHiTag)
- {
- if (sp->hitag == sprite[FindSpriteNum].hitag)
- bFoundHiTag = TRUE;
- bFoundIt = bFoundIt & bFoundHiTag;
- }
- if (bFindLowTag)
- {
- if (sp->lotag == sprite[FindSpriteNum].lotag)
- bFoundLowTag = TRUE;
- bFoundIt = bFoundIt & bFoundLowTag;
- }
-
- if (bFoundIt)
- {
- SET(sp->extra, SPRX_FOUND);
- cursectnum = sp->sectnum;
- pos.x = sp->x;
- pos.y = sp->y;
- pos.z = sp->z - kensplayerheight;
- return;
- }
-
- }
- }
-
- printmessage16(" ");
-
- clearmidstatbar16(); // Clear middle of status bar
-}
-
-void
-FindNextSprite(short picnum)
-{
- int i, count;
- short SpriteNum, NextSprite;
- SPRITEp sp;
- short animlen;
-
- SWBOOL bFoundPicNum, bFoundHiTag, bFoundLowTag, bFoundIt;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- for (i = 0; i < numsectors; i++)
- {
- TRAVERSE_SPRITE_SECT(headspritesect[i], SpriteNum, NextSprite)
- {
- sp = &sprite[SpriteNum];
-
- // Reset search status
- bFoundIt = TRUE;
- bFoundPicNum = bFoundHiTag = bFoundLowTag = FALSE;
-
- if (bFindPicNum)
- {
- if (sp->picnum == picnum)
- bFoundPicNum = TRUE;
- bFoundIt = bFoundIt & bFoundPicNum;
- }
- if (bFindHiTag)
- {
- if (sp->hitag == sprite[FindSpriteNum].hitag)
- bFoundHiTag = TRUE;
- bFoundIt = bFoundIt & bFoundHiTag;
- }
- if (bFindLowTag)
- {
- if (sp->lotag == sprite[FindSpriteNum].lotag)
- bFoundLowTag = TRUE;
- bFoundIt = bFoundIt & bFoundLowTag;
- }
-
- if (bFoundIt && !TEST(sp->extra, SPRX_FOUND))
- {
- SET(sp->extra, SPRX_FOUND);
- cursectnum = sp->sectnum;
- pos.x = sp->x;
- pos.y = sp->y;
- pos.z = sp->z - kensplayerheight;
- return;
- }
- }
- }
-}
-
-
-// Array of no-no ST1 tags that should not be considered for match tags.
-short tagcheck[] = {0, 1, 3, 5, 16, 23, 25, 27, 29, 30, 31, 32, 33, 34, 37, 38, 39, 42,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 62, 64, 65, 66, 68, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 90, 94, 97, 98, 99, 100,
- 101, 102, 135, 110, 111, 112, 113, 114, 115, 9002};
-
-SWBOOL
-DoMatchCheck(SPRITEp sp)
-{
- unsigned i;
-
- // Don't F up the next tag with weird tag 2 cases that aren't match tags!
- for (i = 0; i < sizeof(tagcheck); i++)
- if (tagcheck[i] == sp->hitag)
- return TRUE; // This ST1 tag is evil! Don't
- // consider it!
-
- return FALSE; // This ST1 tag if fine.
-}
-
-void
-ShowNextTag(void)
-{
- if (qsetmode == 200) // In 3D mode
- return;
-
- printmessage16(" ");
- printmessage16("Next tag = %d", siNextEndTag);
-}
-
-void
-FindNextTag(void)
-{
- int i, count, j;
- short SpriteNum, NextSprite;
- short siNextFind; // Next tag that SHOULD be found
- SPRITEp sp;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- siNextTag = siNextEndTag = 0; // Reset tags for new search
- siNextFind = 0;
-
- // go to the first one
- for (i = 0; i < numsectors; i++)
- {
- TRAVERSE_SPRITE_SECT(headspritesect[i], SpriteNum, NextSprite)
- {
- sp = &sprite[SpriteNum];
-
- // If it's not an ST1 sprite, blow past it
- if (sp->picnum != ST1)
- continue;
-
- // Check for evil tags
- if (DoMatchCheck(sp))
- continue;
-
- // Show the highest possible next tag
- if (sp->lotag >= siNextEndTag)
- siNextEndTag = sp->lotag + 1;
-
- }
- }
-}
-
-
-void
-ShadeMenu(void) // F8
-{
- uint8_t* key;
-
- if (qsetmode == 200) // In 3D mode
- return;
-
- clearmidstatbar16(); // Clear middle of status bar
- printext16(8, ydim16+32, 11, -1, "(1) Plax Set ", 0);
- printext16(8, ydim16+32 + 8, 11, -1, "(2) Plax Adjust ", 0);
- printext16(8, ydim16+32 + 16, 11, -1, "(3) Shade Adjust ", 0);
- printext16(8, ydim16+32 + 24, 11, -1, "(4) Visibility ", 0);
-
- ResetKeys();
-
- while ((key = BKeyPressed()) == NULL) ;
-
- if (key == (uint8_t*)&KEY_PRESSED(KEYSC_1))
- {
- *key = FALSE;
- PlaxSetShade();
- }
- else if (key == (uint8_t*)&KEY_PRESSED(KEYSC_2))
- {
- *key = FALSE;
- PlaxAdjustShade();
- }
- else if (key == (uint8_t*)&KEY_PRESSED(KEYSC_3))
- {
- *key = FALSE;
- AdjustShade();
- }
- else if (key == (uint8_t*)&KEY_PRESSED(KEYSC_4))
- {
- *key = FALSE;
- AdjustVisibility();
- }
-}
-
-void faketimerhandler(void)
-{
- timerUpdate();
-}
-
-//Just thought you might want my getnumber16 code
-/*
-getnumber16(char namestart[80], short num, int maxnumber)
-{
- char buffer[80];
- int j, k, n, danum, oldnum;
-
- danum = (int)num;
- oldnum = danum;
- while ((KEY_PRESSED(0x1c) != 2) && (KEY_PRESSED(0x1) == 0)) //Enter, ESC
- {
- sprintf(&buffer,"%s%ld_ ",namestart,danum);
- printmessage16(buffer);
-
- for(j=2;j<=11;j++) //Scan numbers 0-9
- if (KEY_PRESSED(j) > 0)
- {
- KEY_PRESSED(j) = 0;
- k = j-1;
- if (k == 10) k = 0;
- n = (danum*10)+k;
- if (n < maxnumber) danum = n;
- }
- if (KEY_PRESSED(0xe) > 0) // backspace
- {
- danum /= 10;
- KEY_PRESSED(0xe) = 0;
- }
- if (KEY_PRESSED(0x1c) == 1) //L. enter
- {
- oldnum = danum;
- KEY_PRESSED(0x1c) = 2;
- asksave = 1;
- }
- }
- KEY_PRESSED(0x1c) = 0;
- KEY_PRESSED(0x1) = 0;
- return((short)oldnum);
-}
-*/
-
-static char messagecolor = 31;
-static unsigned short messagedelay = 0;
-static char messagebuf[1024];
-
-void
-Message(const char *string, char color)
-{
- sprintf(messagebuf, string, 0);
- messagedelay = 512;
- messagecolor = color;
-}
-
-void
-ShowMessage(void)
-{
- if (messagedelay < 1)
- return;
- messagedelay--;
- printext256(1 * 4, 1 * 8, 1, 0, messagebuf, 1);
-}
-
-void
-ResetSprites()
-{
- short i;
- spritetype *tspr;
-
- DebugActorFreeze = 0;
-
- for (i = 0, tspr = &sprite[0]; i < MAXSPRITES; i++, tspr++)
- {
- RESET(tspr->cstat, CSTAT_SPRITE_INVISIBLE);
-// if (TEST(tspr->extra, SPRX_BLOCK))
-// SET(tspr->cstat, CSTAT_SPRITE_BLOCK);
- }
-
-}
-
-static char kvxloaded = 0;
-void ExtPreLoadMap(void)
-{
- ResetSprites();
- if (!kvxloaded) LoadKVXFromScript("swvoxfil.txt"), kvxloaded = 1;
-}
-
-
-int32_t ExtPreSaveMap(void)
-{
- ResetBuildFAF();
- ResetSprites();
-
- return 0;
-}
-
-void
-dsprintf(char *str, char *format, ...)
-{
- va_list arglist;
-
- va_start(arglist, format);
- vsprintf(str, format, arglist);
- va_end(arglist);
-}
-
-void
-dsprintf_null(char *str, const char *format, ...)
-{
- va_list arglist;
-}
-
-
-void
-BuildStagTable(void)
-{
-#define MAKE_STAG_TABLE
-#include "stag.h"
-#undef MAKE_STAG_TABLE
-}
-
-#include "m32script.h"
-
-void M32RunScript(const char *s) { UNREFERENCED_PARAMETER(s); }
-void G_Polymer_UnInit(void) { }
-void SetGamePalette(int32_t j) { UNREFERENCED_PARAMETER(j); }
-
-int32_t AmbienceToggle, MixRate, ParentalLock;
-
-int32_t taglab_linktags(int32_t spritep, int32_t num)
-{
- int32_t link = 0;
-
- g_iReturnVar = link;
- VM_OnEvent(EVENT_LINKTAGS, spritep ? num : -1);
- link = g_iReturnVar;
-
- return link;
-}
-
-int32_t taglab_getnextfreetag(int32_t *duetoptr)
-{
- int32_t i, nextfreetag=1;
- int32_t obj = -1;
-
- for (i=0; i