mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-29 07:22:33 +00:00
a4dd5bb4ce
Using proper C++ containers now.
145 lines
3.2 KiB
C++
145 lines
3.2 KiB
C++
// "Build Engine & Tools" Copyright (c) 1993-1997 Ken Silverman
|
|
// Ken Silverman's official web site: "http://www.advsys.net/ken"
|
|
// See the included license file "BUILDLIC.TXT" for license info.
|
|
//
|
|
// This file has been modified from Ken Silverman's original release
|
|
// by Jonathon Fowler (jf@jonof.id.au)
|
|
// by the EDuke32 team (development@voidpoint.com)
|
|
|
|
#pragma once
|
|
|
|
#ifndef build_h_
|
|
#define build_h_
|
|
|
|
#define TRANSPARENT_INDEX 0
|
|
|
|
static_assert('\xff' == 255, "Char must be unsigned!");
|
|
|
|
#include "printf.h"
|
|
#include "palette.h"
|
|
#include "buildtiles.h"
|
|
#include "c_cvars.h"
|
|
#include "cmdlib.h"
|
|
|
|
typedef int64_t coord_t;
|
|
|
|
enum
|
|
{
|
|
MAXWALLSB = 6144,
|
|
|
|
// Maximum number of component tiles in a multi-psky:
|
|
MAXUNIQHUDID = 256, //Extra slots so HUD models can store animation state without messing game sprites
|
|
|
|
TSPR_TEMP = 99,
|
|
|
|
CLIPMASK0 = (1 << 16) + 1,
|
|
CLIPMASK1 = (256 << 16) + 64
|
|
};
|
|
|
|
|
|
|
|
#define POINT2(i) (wall[wall[i].point2])
|
|
|
|
|
|
// rotatesprite 'orientation' (actually much more) bits
|
|
enum {
|
|
RS_TRANS1 = 1,
|
|
RS_AUTO = 2,
|
|
RS_YFLIP = 4,
|
|
RS_NOCLIP = 8,
|
|
RS_TOPLEFT = 16,
|
|
RS_TRANS2 = 32,
|
|
RS_NOMASK = 64,
|
|
RS_PERM = 128,
|
|
|
|
RS_ALIGN_L = 256,
|
|
RS_ALIGN_R = 512,
|
|
RS_ALIGN_MASK = 768,
|
|
RS_STRETCH = 1024,
|
|
|
|
RS_MODELSUBST= 4096,
|
|
// ROTATESPRITE_MAX-1 is the mask of all externally available orientation bits
|
|
ROTATESPRITE_MAX = 8192,
|
|
RS_XFLIPHUD = RS_YFLIP,
|
|
RS_YFLIPHUD = 16384, // this is for hud_drawsprite which uses RS_YFLIP for x-flipping but needs both flags
|
|
|
|
RS_CENTER = (1<<29), // proper center align.
|
|
RS_CENTERORIGIN = (1<<30),
|
|
};
|
|
|
|
#include "maptypes.h"
|
|
#include "clip.h"
|
|
|
|
int32_t getwalldist(vec2_t const in, int const wallnum, vec2_t * const out);
|
|
|
|
struct usermaphack_t
|
|
{
|
|
FString mhkfile;
|
|
FString title;
|
|
uint8_t md4[16]{};
|
|
};
|
|
|
|
enum {
|
|
PALETTE_MAIN = 1<<0,
|
|
PALETTE_SHADE = 1<<1,
|
|
PALETTE_TRANSLUC = 1<<2,
|
|
};
|
|
|
|
enum {
|
|
ENGINECOMPATIBILITY_NONE = 0,
|
|
ENGINECOMPATIBILITY_19950829, // Powerslave/Exhumed
|
|
ENGINECOMPATIBILITY_19960925, // Blood v1.21
|
|
ENGINECOMPATIBILITY_19961112, // Duke 3d v1.5, Redneck Rampage
|
|
};
|
|
|
|
inline int leveltimer;
|
|
inline int32_t Numsprites;
|
|
inline int32_t display_mirror;
|
|
inline int32_t randomseed;
|
|
inline uint8_t paletteloaded;
|
|
inline int32_t g_visibility = 512, g_relvisibility = 0;
|
|
inline int32_t enginecompatibility_mode;
|
|
|
|
|
|
void setVideoMode();
|
|
|
|
class F2DDrawer;
|
|
|
|
|
|
struct HitInfoBase;
|
|
|
|
inline int32_t krand(void)
|
|
{
|
|
randomseed = (randomseed * 27584621) + 1;
|
|
return ((uint32_t) randomseed)>>16;
|
|
}
|
|
|
|
inline double krandf(double span)
|
|
{
|
|
return (krand() & 0x7fff) * span / 32767;
|
|
}
|
|
|
|
inline int32_t ksqrt(uint64_t num)
|
|
{
|
|
return int(sqrt(double(num)));
|
|
}
|
|
|
|
inline constexpr uint32_t uhypsq(int32_t const dx, int32_t const dy)
|
|
{
|
|
return (uint32_t)dx*dx + (uint32_t)dy*dy;
|
|
}
|
|
|
|
EXTERN_CVAR(Bool, hw_hightile)
|
|
EXTERN_CVAR(Bool, hw_models)
|
|
EXTERN_CVAR(Float, gl_texture_filter_anisotropic)
|
|
EXTERN_CVAR(Int, gl_texture_filter)
|
|
extern bool hw_int_useindexedcolortextures;
|
|
EXTERN_CVAR(Bool, hw_useindexedcolortextures)
|
|
EXTERN_CVAR(Bool, r_voxels)
|
|
|
|
static inline int64_t compat_maybe_truncate_to_int32(int64_t val)
|
|
{
|
|
return enginecompatibility_mode != ENGINECOMPATIBILITY_NONE ? (int32_t)val : val;
|
|
}
|
|
|
|
#endif // build_h_
|