123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789 |
- #ifndef __DB_H
- #define __DB_H
- #include "typedefs.h"
- #include "engine.h" // kMaxStatus
- /***********************************************************************
- * Constants
- **********************************************************************/
- /*******************************************************************************
- The following max constants should be eventually removed, and storage
- dynamically allocated.
- *******************************************************************************/
- #define kMaxXSprites 2048
- #define kMaxXWalls 512
- #define kMaxXSectors 512
- // 3d view types
- enum {
- kSpriteViewSingle = 0,
- kSpriteView5Full,
- kSpriteView8Full,
- kSpriteView5Half,
- kSpriteView3Flat,
- kSpriteView4Flat
- };
- // status lists
- enum {
- kStatDefault = 0, // inactive items, like torches and stuff, but NOT dudes
- kStatTouch = 1, // items that can be picked up
- kStatProximity = 2, // sprites triggered by proximity
- kStatMissile = 3, // player/enemy missiles that do damage
- kStatExplosion = 4, // an explosion that gives damage and inertia
- kStatDebris = 5, // debris from explosions
- kStatDude = 6, // an active dude
- kStatInactive = 7, // an inactive dude
- kStatExplodable = 8, // non-dude objects affected by explosions
- kStatPurge = 9, // use these for purgeable sprites
- kStatMarker = 10,
- kStatEffect = 12, // non-damaging ricochets, splashes, etc.
- kStatSpares = kMaxStatus - 1, // allocated invisible sprites
- kStatInvalid = kMaxStatus, // invalid sprite status list
- };
- enum {
- kStatDefault=0, // completely inactive sprites
- kStatTouch, // sprite items that can be picked up by players
- kStatProxBomb, // bombs triggers by proximity or impact damage
- kStatDudes1, // dudes processed in phase 1
- kStatDudes2, // dudes processed in phase 2
- kStatDudes3, // dudes processed in phase 3
- kStatDudes4, // dudes processed in phase 4
- };
- Player
- Water Splash
- One-shot animation - stays on floor
- Sludge Splash
- One-shot animation - stays on floor
- Blood Squib
- One-shot animation - falls to floor
- Shotgun/Tommy Gun
- Spark Ricochet
- One-shot animation - stays on wall
- Wood Ricochet
- One-shot animation - stays on wall
- Bullet Holes
- Semi-permanent flat sprite - stays on wall
- Pitchfork
- Spark Ricochet (?)
- 4 one-shot animations - stays on wall
- Blood Squib
- One-shot animation - falls to floor
- Guts (FPP)
- One-shot animation - falls off screen
- Speargun
- Spear
- Missile
- Flat or multi-view sprite - arcs slowly to floor
- Blood Squib
- One-shot animation - falls to floor
- HE Spear
- Missile
- Flat or multi-view sprite - arcs slowly to floor
- Explosion
- One-shot animation - stays on floor
- Broken Spear
- Face sprite - falls to floor
- Flare Gun
- Flare
- Fire
- HE Flare
- Explosion
- Starburt Flare
- Multiple Explosions
- enum {
- kMarkerOff,
- kMarkerOn,
- kMarkerAxis,
- kMarkerUpperLink,
- kMarkerLowerLink,
- };
- enum {
- kNothing = 0,
- kMarkerPlayerstart = 1,
- kMarkerBathstart,
- kMarkerTeleportdest,
- kMarkerAsyncsound,
- kMarkerSyncsound,
- kMarkerRaingen,
- kSwitchToggle = 20,
- kSwitchMomentary,
- kSwitchCombination,
- kSwitchMax,
- kWeaponItemBase = 40,
- kWeaponItem1_Pitchfork = kWeaponItemBase,
- kWeaponItemSprayCan,
- kWeaponItem3_TNT,
- kWeaponItemShotgun,
- kWeaponItemFlareGun,
- kWeaponItemSpearGun,
- kWeaponItemTommyGun,
- kWeaponItemEctoBlaster,
- kWeaponItemShadowBlaster,
- kWeaponItemLifeStealer,
- kWeaponItemRandom,
- kWeaponItemMax,
- kAmmoBase = 60,
- kAmmoSprayCan = kAmmoBase,
- kAmmoTNTStick,
- kAmmoTNTBundle,
- kAmmoTNTCase,
- kAmmoTNTProximity,
- kAmmoTNTRemote,
- kAmmoTNTTimer,
- kAmmoShells,
- kAmmoShellBox,
- kAmmoBullets,
- kAmmoBulletBox,
- kAmmoAPBullets,
- kAmmoHEBullets,
- kAmmoTommyDrum,
- kAmmoSpear,
- kAmmoSpearPack,
- kAmmoHESpears,
- kAmmoFlares,
- kAmmoHEFlares,
- kAmmoStarFlares,
- kAmmoRandom,
- kAmmoMax,
- kItemBase = kAmmoMax,
- kItemKey1 = kItemBase,
- kItemKey2,
- kItemKey3,
- kItemKey4,
- kItemKey5,
- kItemKey6,
- kItemKey7,
- kItemDoctorBag,
- kItemMedPouch,
- kItemLifeEssence,
- kItemLifeSeed,
- kItemPotion1,
- kItemFeatherFall,
- kItemLtdInvisibility,
- kItemInvulnerability,
- kItemJumpBoots,
- kItemWitchBroom,
- kItemGunsAkimbo,
- kItemDivingSuit,
- kItemGasMask,
- kItemTrickOrTreat,
- kItemClone,
- kItemCrystalBall,
- kItemDecoy,
- kItemDoppleganger,
- kItemReflectiveShots,
- kItemRoseGlasses,
- kItemShadowCloak,
- kItemShroomRage,
- kItemShroomDelirium,
- kItemShroomGrow,
- kItemShroomShrink,
- kItemSnorkel,
- kItemDeathmask,
- kItemGauntlets,
- kItemBoots,
- kItemTalisman,
- kItemWineGoblet,
- kItemWineBottle,
- kItemSkullGrail,
- kItemSilverGrail,
- kItemShrub,
- kItemTome,
- kItemBlackChest,
- kItemWoodenChest,
- kItemLocket,
- kItemAsbestosArmor,
- kItemRandom,
- kItemMax,
- kCreatureBase = 200,
- kCreatureCultist = kCreatureBase,
- kCreatureZombie1,
- kCreatureZombie2,
- kCreatureGargoyle,
- kCreaturePhantasm,
- kCreatureHellhound,
- kCreatureHand,
- kCreatureSpider,
- kCreatureChrysalid,
- kCreatureGillbeast,
- kCreaturePirahna,
- kCreatureEel,
- kCreatureBat,
- kCreatureSnake,
- kCreatureRat,
- kCreaturePod,
- kCreatureTentacle,
- kCreatureCerberus,
- kCreatureIshkabaal,
- kCreatureDarkone,
- kCreatureRachel,
- kCreatureRandom,
- kCreaturePlayer,
- kCreatureClone,
- kCreatureMax,
- // missile things
- kMissileBase = 300,
- kMissileButcherKnife = kMissileBase,
- kMissileEctoSkull,
- kMissileSpear,
- kMissileShadowBall,
- kMissileFlare,
- kMissileGreenPuke,
- kMissileRedPuke,
- kMissileSprayFlame,
- kMissileTNTStick,
- kMissileMax,
- // special thing types
- kThingBase = 400,
- kThingTNTBarrel = kThingBase,
- kThingSpiketrap,
- kThingRocktrap,
- kThingGastrap,
- kThingSatellite,
- kThingSawBlade,
- kThingTNTProxArmed,
- kThingTNTRemArmed,
- kThingUnpoweredZap,
- kThingPoweredZap,
- kThingNormalStatue,
- kThingLiveStatue,
- kThingCrateFace,
- kThingMax,
- // special wall types
- kWallXpanning = 500,
- kWallYpanning,
- kWallCWpivot,
- kWallCCWpivot,
- kWallForcefield,
- kWallCrushing,
- kWallPendulum,
- kWallSpeartrap,
- kWallFlametrap,
- kWallRazordoor,
- kWallGuillotine,
- kWallBreakable,
- // special sector types
- kSectorBase = 600,
- kSectorZMotion = kSectorBase,
- kSectorZCrusher,
- kSectorFloorPad,
- kSectorWarp, // warp when triggered
- kSectorTeleport,
- kSectorUpperlink,
- kSectorLowerlink,
- kSectorUpperwater,
- kSectorLowerwater,
- kSectorSwingDoor,
- kSectorTopDoor,
- kSectorBottomDoor,
- kSectorPlatformUp,
- kSectorPlatformDown,
- kSectorVSplitDoor, // door splits left/right
- kSectorHSplitDoor, // door splits top/bottom
- kSectorSlide, // slide marked walls within sector
- kSectorRotate, // rotating sector that rotates sprites within
- kSectorSlideCrush, // slide crushing walls within sector
- kSectorRotateCrush, // rotating sector with crushing walls
- kSectorMax,
- };
- enum {
- kSurfStone,
- kSurfWood,
- kSurfDirt,
- kSurfMetal,
- kSurfWater,
- kSurfLava,
- };
- enum {
- kDepthWalk = 0,
- kDepthTread = 1,
- kDepthWade = 2,
- kDepthSwim = 3
- };
- /***********************************************************************
- * Structures and typedefs
- **********************************************************************/
- struct XSPRITE
- {
- signed reference : 16;
- unsigned state : 1;
- // trigger data
- unsigned busy : 17;
- unsigned type : 10;
- signed data : 16;
- unsigned txID : 10;
- unsigned rxID : 10;
- unsigned command : 3;
- unsigned triggerOn : 1;
- unsigned triggerOff : 1;
- unsigned triggerOnce : 1;
- unsigned restState : 1; // state to return to on callback
- unsigned key : 3;
- unsigned difficulty : 2;
- unsigned detail : 2;
- unsigned map : 2;
- unsigned view : 4;
- unsigned soundKit : 8;
- unsigned isTriggered : 1; // used for triggerOnce objects
- unsigned triggerPush : 1; // gates?
- unsigned triggerImpact : 1; // exploding things, etc.
- unsigned triggerPickup : 1; // secrets
- unsigned triggerTouch : 1; // sawblades, spikes, zaps?
- unsigned triggerSight : 1; // dunno, yet.
- unsigned triggerProximity : 1; // proximity bombs
- unsigned decoupled : 1;
- unsigned waitTime : 8;
- unsigned permanent : 1; // 0=not permanent, 1=permanent (respawn ignored)
- unsigned respawn : 2; // 0=never, 1=always, 2=optional never, 3=optional always
- unsigned respawnTime : 8; // 0=instant, >0=time in tenths of a second,
- unsigned launchMode : 2; // 0=all, 1=bloodbath, 2=ally, 3=ally&bloodbath,
- unsigned pad1 : 32;
- unsigned pad2 : 32;
- };
- struct XWALL
- {
- signed reference : 16;
- unsigned state : 1;
- unsigned map : 2;
- // trigger data
- unsigned busy : 17;
- unsigned type : 10;
- signed data : 16;
- unsigned txID : 10;
- unsigned rxID : 10;
- unsigned command : 3;
- unsigned triggerOn : 1;
- unsigned triggerOff : 1;
- unsigned triggerOnce : 1;
- unsigned key : 3;
- // panning data
- signed panXVel : 8;
- signed panYVel : 8;
- unsigned isTriggered : 1; // used for triggerOnce objects
- unsigned triggerPush : 1;
- unsigned triggerImpact : 1;
- unsigned triggerRsvd1 : 1;
- unsigned triggerRsvd2 : 1;
- unsigned decoupled : 1;
- unsigned panAlways : 1;
- unsigned restState : 1; // state to return to on callback
- unsigned waitTime : 8; // delay before callback
- unsigned pad1 : 32;
- unsigned pad2 : 32;
- };
- struct XSECTOR
- {
- signed reference : 16;
- unsigned state : 1;
- // trigger data
- unsigned busy : 17;
- unsigned type : 10;
- signed data : 16;
- unsigned txID : 10;
- unsigned rxID : 10;
- unsigned command : 3;
- unsigned triggerOn : 1;
- unsigned triggerOff : 1;
- unsigned triggerOnce : 1;
- unsigned restState : 1; // state to return to on callback
- unsigned key : 3;
- // lighting data
- signed amplitude : 8;
- unsigned freq : 8;
- unsigned wave : 4;
- unsigned shadeAlways : 1;
- unsigned phase : 8;
- unsigned shadeFloor : 1;
- unsigned shadeCeiling : 1;
- unsigned shadeWalls : 1;
- signed shade : 8;
- // panning data
- unsigned panFloor : 1;
- unsigned panCeiling : 1;
- unsigned panDrag : 1;
- unsigned waitTime : 8; // delay before callback
- unsigned panAlways : 1;
- unsigned busyTime : 8; // time to reach next state
- // wind/water stuff
- unsigned underwater : 1;
- unsigned depth : 2;
- unsigned panVel : 8;
- unsigned panAngle : 11;
- unsigned wind : 1;
- unsigned isTriggered : 1;
- unsigned triggerPush : 1;
- unsigned triggerImpact : 1;
- unsigned triggerEnter : 1;
- unsigned triggerExit : 1;
- unsigned decoupled : 1;
- unsigned triggerWPush : 1;
- signed offCeilZ : 32;
- signed onCeilZ : 32;
- signed offFloorZ : 32;
- signed onFloorZ : 32;
- unsigned pad1 : 32;
- unsigned pad2 : 32;
- };
- #if 0
- /***********************************************************************
- * Structures and typedefs
- **********************************************************************/
- struct XSPRITE
- {
- signed reference : 16;
- unsigned state : 1;
- // trigger data
- unsigned busy : 16;
- unsigned type : 10;
- signed data : 16;
- unsigned txID : 10;
- unsigned rxID : 10;
- unsigned command : 3;
- unsigned triggerOn : 1;
- unsigned triggerOff : 1;
- unsigned triggerOnce : 1;
- unsigned restState : 1; // state to return to on callback
- unsigned key : 3;
- unsigned difficulty : 2;
- unsigned detail : 2;
- unsigned map : 2;
- unsigned view : 4;
- unsigned soundKit : 8;
- unsigned isTriggered : 1; // used for triggerOnce objects
- unsigned triggerPush : 1; // gates?
- unsigned triggerImpact : 1; // exploding things, etc.
- unsigned triggerPickup : 1; // secrets
- unsigned triggerTouch : 1; // sawblades, spikes, zaps?
- unsigned triggerSight : 1; // dunno, yet.
- unsigned triggerProximity : 1; // proximity bombs
- unsigned decoupled : 1;
- unsigned waitTime : 8;
- // unsigned permanent : 1; // 0=not permanent, 1=permanent (respawn ignored)
- // unsigned respawn : 2; // 0=never, 1=always, 2=optional never, 3=optional always
- // unsigned respawnTime : 8; // 0=instant, >0=time in tenths of a second,
- // unsigned launchMode : 2; // 0=all, 1=bloodbath, 2=ally, 3=ally&bloodbath,
- };
- struct XWALL
- {
- signed reference : 16;
- unsigned state : 1;
- unsigned map : 2;
- // trigger data
- unsigned busy : 16;
- unsigned type : 10;
- signed data : 16;
- unsigned txID : 10;
- unsigned rxID : 10;
- unsigned command : 3;
- unsigned triggerOn : 1;
- unsigned triggerOff : 1;
- unsigned triggerOnce : 1;
- unsigned key : 3;
- // panning data
- signed panXVel : 8;
- signed panYVel : 8;
- unsigned isTriggered : 1; // used for triggerOnce objects
- unsigned triggerPush : 1;
- unsigned triggerImpact : 1;
- unsigned triggerRsvd1 : 1;
- unsigned triggerRsvd2 : 1;
- unsigned decoupled : 1;
- unsigned panAlways : 1;
- unsigned restState : 1; // state to return to on callback
- unsigned waitTime : 8;
- };
- struct XSECTOR
- {
- signed reference : 16;
- unsigned state : 1;
- // trigger data
- unsigned busy : 16;
- unsigned type : 10;
- signed data : 16;
- unsigned txID : 10;
- unsigned rxID : 10;
- unsigned command : 3;
- unsigned triggerOn : 1;
- unsigned triggerOff : 1;
- unsigned triggerOnce : 1;
- unsigned restState : 1; // state to return to on callback
- unsigned key : 3;
- // lighting data
- signed amplitude : 8;
- unsigned freq : 8;
- unsigned wave : 4;
- unsigned shadeAlways : 1;
- unsigned unused2 : 3; // !!! USE ME !!!
- unsigned phase : 8;
- unsigned shadeFloor : 1;
- unsigned shadeCeiling : 1;
- unsigned shadeWalls : 1;
- signed shade : 8;
- // panning data
- unsigned panFloor : 1;
- unsigned panCeiling : 1;
- unsigned panDrag : 1;
- unsigned waitTime : 8;
- unsigned panAlways : 1;
- unsigned unused3 : 3; // !!! USE ME !!!
- // speed for moving sectors
- unsigned busyTime : 8;
- // water stuff
- unsigned underwater : 1;
- unsigned depth : 2;
- unsigned panVel : 8;
- unsigned panAngle : 12; // change to 11 bits in CONVDB4!!!
- unsigned wind : 3;
- unsigned isTriggered : 1; // used for triggerOnce objects
- unsigned triggerPush : 1;
- unsigned triggerImpact : 1;
- unsigned triggerEnter : 1;
- unsigned triggerExit : 1;
- unsigned decoupled : 1;
- unsigned triggerWPush : 1; // push from outside wall (convenience bit)
- // uncomment these for CONVDB4
- // signed ceilingOffZ : 32;
- // signed ceilingOnZ : 32;
- // signed floorOffZ : 32;
- // signed floorOnZ : 32;
- };
- #endif
- #if 0
- // PROPOSED XSECTOR CHANGES TO DECREASE MEMORY REQUIREMENTS
- //
- struct XSECTOR
- {
- signed reference : 15; // *** Made 1 bit smaller to accommodate state
- unsigned state : 1;
- unsigned trigger : 16; // these fields could be smaller
- unsigned lighting : 16; // unless you want to make them pointers
- unsigned surfMotion : 16; // and allocate them at load time.
- unsigned motion : 16; // this might work since sectors are not
- unsigned zMotion : 16; // allocated/deallocated during play
- };
- struct TRIGGER
- {
- unsigned type : 10;
- unsigned state : 1;
- unsigned command : 3;
- unsigned txID : 10;
- unsigned rxID : 10;
- signed data : 16;
- unsigned busy : 16;
- unsigned triggerOn : 1; // trigger on "on" state change
- unsigned triggerOff : 1; // trigger on "off" state change
- unsigned isTriggered : 1; // trigger is "tripped" - for triggerOnce types
- unsigned triggerOnce : 1; // trigger only once
- unsigned key : 3; // key required to activate, if any
- unsigned triggerEnter : 1; // trigger on player entrance
- unsigned triggerExit : 1; // trigger on player exit
- unsigned triggerPush : 1; // trigger on player action
- unsigned triggerImpact : 1; // trigger on player weapon impact
- unsigned triggerWPush : 1; // trigger on push from outside wall (convenience bit)
- unsigned waitTime : 8;
- unsigned restState : 1; // state to return to on callback
- };
- struct SURFMOTION
- {
- // panning/movement data
- unsigned depth : 2;
- unsigned underwater : 1;
- unsigned wind : 1; // wind or underwater current
- unsigned panAlways : 1;
- unsigned panFloor : 1;
- unsigned panCeiling : 1;
- unsigned panDrag : 1;
- unsigned panVel : 8;
- unsigned panAngle : 11;
- };
- struct LIGHTING
- {
- // lighting data
- signed amplitude : 8;
- unsigned freq : 8;
- unsigned wave : 4;
- unsigned phase : 8;
- unsigned shadeFloor : 1;
- unsigned shadeCeiling : 1;
- unsigned shadeWalls : 1;
- signed shade : 8;
- unsigned shadeAlways : 1
- }
- struct MOTION
- {
- signed marker0 : 16;
- signed marker1 : 16;
- int upperOffZ;
- int upperOnZ;
- int lowerOffZ;
- int lowerOnZ;
- uchar busyTime;
- unsigned upperModelType : 2; // 0:from trigger's, 1:lowest's adjacent, 2-3:unused
- unsigned upperOffModel : 3; // 0:same, 1:pic, 2:effects, 3-7:unused
- unsigned upperOnModel : 3; // 0:same, 1:pic, 2:effects, 3-7:unused
- unsigned lowerModelType : 2; // 0:from trigger's, 1:lowest's adjacent, 2-3:unused
- unsigned lowerOnModel : 3; // 0:same, 1:pic, 2:effects, 3-7:unused
- unsigned lowerOffModel : 3; // 0:same, 1:pic, 2:effects, 3-7:unused
- };
- struct DISK_XSECTOR
- {
- BOOL state;
- TRIGGER trigger;
- LIGHTING lighting;
- SURFMOTION surfMotion;
- MOTION motion;
- ZMOTION zMotion;
- };
- // these could be allocated, see XSECTOR notes above
- TRIGGER gSectorTriggers[ kMaxSectorTriggers ];
- LIGHTING gLighting[ kMaxLighting ];
- SURFMOTION gSurfMotion[ kMaxSurfMotion ];
- MOTION gMotion[ kMaxMotion ];
- ZMOTION gZMotion[ kMaxZMotion ];
- NOTES: A SECTOR structure would be saved out prior to the DISK_XSECTOR.
- Also, surftypes are not accounted for here, but could be saved in both the
- lotag and hitag fields of the sector. For walls, the surftype could be
- placed in either the lotag or hitag.
- #endif
- /***********************************************************************
- * Variables
- **********************************************************************/
- extern XSPRITE xsprite[];
- extern XWALL xwall[];
- extern XSECTOR xsector[];
- extern uchar spriteSurf[];
- extern uchar wallSurf[];
- extern uchar floorSurf[];
- extern uchar ceilingSurf[];
- #define kMapAuthorLen 64
- #define kMapNameLen 64
- extern char gMapAuthor[];
- extern char gMapName[];
- extern int gMapRev;
- extern int gSongId;
- extern ulong gMapCRC;
- extern int gSkyCount;
- /***********************************************************************
- * Global Variables / MPX related strings
- **********************************************************************/
- extern char *gItemText[ kItemMax - kItemBase ];
- extern char *gAmmoText[ kAmmoMax - kAmmoBase ];
- extern char *gWeaponText[ kWeaponItemMax - kWeaponItemBase ];
- extern char *gCreatureText[ kCreatureMax - kCreatureBase ];
- extern char *gThingText[ kThingMax - kThingBase ];
- /***********************************************************************
- * Functions
- **********************************************************************/
- ushort dbInsertXSprite( int nSprite );
- void dbDeleteXSprite( int nXSprite );
- void dbXSpriteClean( void );
- ushort dbInsertXWall( int nWall );
- void dbDeleteXWall( int nXWall );
- void dbXWallClean( void );
- ushort dbInsertXSector( int nSector );
- void dbDeleteXSector( int nXSector );
- void dbXSectorClean( void );
- void dbInit( void );
- void dbLoadMap(const char *mapname, long *x, long *y, long *z, short *angle, short *nSector);
- void dbSaveMap(const char *mapname, long x, long y, long z, short angle, short nSector);
- #endif
|