mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Fix lots of code for clang-cl compatibility
This commit is contained in:
parent
e22d14bd9d
commit
0dc337c9a5
45 changed files with 271 additions and 221 deletions
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
#include "acsvm.hpp"
|
||||
|
||||
extern "C" {
|
||||
#include "../doomtype.h"
|
||||
#include "../doomdef.h"
|
||||
#include "../doomstat.h"
|
||||
|
|
@ -24,7 +23,6 @@ extern "C" {
|
|||
#include "../r_defs.h"
|
||||
#include "../r_state.h"
|
||||
#include "../p_spec.h"
|
||||
}
|
||||
|
||||
namespace srb2::acs {
|
||||
|
||||
|
|
|
|||
|
|
@ -10,13 +10,7 @@
|
|||
|
||||
#include <limits.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define INT32 __int32
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#define INT32 int32_t
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -147,7 +141,7 @@
|
|||
** CHANGE that if ptrdiff_t is not adequate on your machine. (On most
|
||||
** machines, ptrdiff_t gives a good choice between int or long.)
|
||||
*/
|
||||
#define LUA_INTEGER INT32
|
||||
#define LUA_INTEGER int32_t
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -418,9 +412,9 @@
|
|||
** longs.) Probably you do not need to change this.
|
||||
*/
|
||||
#if LUAI_BITSINT >= 32
|
||||
#define LUAI_UINT32 unsigned int
|
||||
#define LUAI_INT32 int
|
||||
#define LUAI_MAXINT32 INT_MAX
|
||||
#define LUAI_UINT32 uint32_t
|
||||
#define LUAI_INT32 int32_t
|
||||
#define LUAI_MAXINT32 INT32_MAX
|
||||
#define LUAI_UMEM size_t
|
||||
#define LUAI_MEM ptrdiff_t
|
||||
#else
|
||||
|
|
@ -509,13 +503,13 @@
|
|||
*/
|
||||
|
||||
//#define LUA_NUMBER_DOUBLE
|
||||
#define LUA_NUMBER INT32
|
||||
#define LUA_NUMBER int32_t
|
||||
|
||||
/*
|
||||
@@ LUAI_UACNUMBER is the result of an 'usual argument conversion'
|
||||
@* over a number.
|
||||
*/
|
||||
#define LUAI_UACNUMBER INT32
|
||||
#define LUAI_UACNUMBER int32_t
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1238,90 +1238,93 @@ static JsonValue parse_number(const Token& token)
|
|||
throw JsonParseError("only sign present on number");
|
||||
}
|
||||
|
||||
const char* integral_start = s.begin();
|
||||
const char* integral_end;
|
||||
const char* decimal = nullptr;
|
||||
while (!s.empty())
|
||||
std::string_view::const_iterator integral_start = s.begin();
|
||||
std::string_view::const_iterator integral_end;
|
||||
bool decimal_found = false;
|
||||
std::string_view::const_iterator decimal;
|
||||
size_t pos = 0;
|
||||
while (pos < s.size())
|
||||
{
|
||||
if (s[0] == '.')
|
||||
if (s[pos] == '.')
|
||||
{
|
||||
decimal = s.begin();
|
||||
integral_end = s.begin();
|
||||
s.remove_prefix(1);
|
||||
decimal_found = true;
|
||||
decimal = std::next(s.begin(), pos);
|
||||
integral_end = std::next(s.begin(), pos);
|
||||
pos += 1;
|
||||
break;
|
||||
}
|
||||
else if (s[0] < '0' || s[0] > '9')
|
||||
else if (s[pos] < '0' || s[pos] > '9')
|
||||
{
|
||||
integral_end = s.begin() - 1;
|
||||
integral_end = std::next(s.begin(), pos - 1);
|
||||
break;
|
||||
}
|
||||
integral_end = s.begin() + 1;
|
||||
s.remove_prefix(1);
|
||||
integral_end = std::next(s.begin(), pos + 1);
|
||||
pos += 1;
|
||||
}
|
||||
|
||||
const char* decimal_start = s.end();
|
||||
const char* decimal_end = s.end();
|
||||
const char* exponent_start = s.end();
|
||||
const char* exponent_end = s.end();
|
||||
std::string_view::const_iterator decimal_start = s.end();
|
||||
std::string_view::const_iterator decimal_end = s.end();
|
||||
std::string_view::const_iterator exponent_start = s.end();
|
||||
std::string_view::const_iterator exponent_end = s.end();
|
||||
bool should_have_exponent = false;
|
||||
if (decimal != nullptr && (decimal + 1) < s.end())
|
||||
if (decimal_found && (decimal + 1) < s.end())
|
||||
{
|
||||
decimal_start = decimal + 1;
|
||||
}
|
||||
while (!s.empty())
|
||||
while (pos < s.size())
|
||||
{
|
||||
// ingest decimal
|
||||
if (s[0] == 'E' || s[0] == 'e')
|
||||
if (s[pos] == 'E' || s[pos] == 'e')
|
||||
{
|
||||
if (decimal_start != s.end()) decimal_end = s.begin();
|
||||
exponent_start = s.begin() + 1;
|
||||
exponent_start = std::next(s.begin(), pos + 1);
|
||||
should_have_exponent = true;
|
||||
s.remove_prefix(1);
|
||||
pos += 1;
|
||||
break;
|
||||
}
|
||||
else if ((s[0] < '0' || s[0] > '9') && s[0] != '+' && s[0] != '-')
|
||||
else if ((s[pos] < '0' || s[pos] > '9') && s[pos] != '+' && s[pos] != '-')
|
||||
{
|
||||
throw JsonParseError("invalid character after decimal");
|
||||
}
|
||||
decimal_end = s.begin() + 1;
|
||||
s.remove_prefix(1);
|
||||
decimal_end = std::next(s.begin(), pos + 1);
|
||||
pos += 1;
|
||||
}
|
||||
|
||||
bool exponent_negative = false;
|
||||
|
||||
if (should_have_exponent)
|
||||
{
|
||||
if (s.empty())
|
||||
if (pos >= s.size())
|
||||
{
|
||||
throw JsonParseError("exponent started but not specified");
|
||||
}
|
||||
bool exponent_was_signed = false;
|
||||
while (!s.empty())
|
||||
{
|
||||
if (s[0] == '-')
|
||||
if (s[pos] == '-')
|
||||
{
|
||||
if (exponent_was_signed) throw JsonParseError("multiple signs on exponent");
|
||||
exponent_negative = true;
|
||||
exponent_start++;
|
||||
exponent_was_signed = true;
|
||||
s.remove_prefix(1);
|
||||
pos += 1;
|
||||
continue;
|
||||
}
|
||||
else if (s[0] == '+')
|
||||
else if (s[pos] == '+')
|
||||
{
|
||||
if (exponent_was_signed) throw JsonParseError("multiple signs on exponent");
|
||||
exponent_start++;
|
||||
exponent_was_signed = true;
|
||||
s.remove_prefix(1);
|
||||
pos += 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (s[0] < '0' || s[0] > '9')
|
||||
if (s[pos] < '0' || s[pos] > '9')
|
||||
{
|
||||
throw JsonParseError("invalid character after exponent");
|
||||
}
|
||||
exponent_end = s.begin() + 1;
|
||||
s.remove_prefix(1);
|
||||
exponent_end = std::next(s.begin(), pos + 1);
|
||||
pos += 1;
|
||||
}
|
||||
if ((exponent_end - exponent_start) == 0)
|
||||
{
|
||||
|
|
@ -1329,9 +1332,21 @@ static JsonValue parse_number(const Token& token)
|
|||
}
|
||||
}
|
||||
|
||||
std::string_view integral_view { integral_start, (size_t)(integral_end - integral_start) };
|
||||
std::string_view decimal_view { decimal_start, (size_t)(decimal_end - decimal_start) };
|
||||
std::string_view exponent_view { exponent_start, (size_t)(exponent_end - exponent_start) };
|
||||
std::string_view integral_view = "";
|
||||
if (integral_start != s.end())
|
||||
{
|
||||
integral_view = std::string_view { &*integral_start, (size_t)(integral_end - integral_start) };
|
||||
}
|
||||
std::string_view decimal_view = "";
|
||||
if (decimal_start != s.end())
|
||||
{
|
||||
decimal_view = std::string_view { &*decimal_start, (size_t)(decimal_end - decimal_start) };
|
||||
}
|
||||
std::string_view exponent_view = "";
|
||||
if (exponent_start != s.end())
|
||||
{
|
||||
std::string_view { &*exponent_start, (size_t)(exponent_end - exponent_start) };
|
||||
}
|
||||
|
||||
if (should_have_exponent && decimal_start != s.end() && decimal_view.empty())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -171,11 +171,13 @@ String& String::insert(size_type index, const char* s, size_type count)
|
|||
|
||||
String& String::insert(size_type index, std::string_view str)
|
||||
{
|
||||
return insert(index, str.begin(), (size_type)str.size());
|
||||
if (str.empty()) return *this;
|
||||
return insert(index, &*str.begin(), (size_type)str.size());
|
||||
}
|
||||
|
||||
String& String::insert(size_type index, std::string_view str, size_t s_index, size_t count)
|
||||
{
|
||||
if (str.empty()) return *this;
|
||||
if (s_index > str.size())
|
||||
{
|
||||
throw std::out_of_range("s_index > str.size()");
|
||||
|
|
@ -343,7 +345,7 @@ String& String::replace(const_iterator first, const_iterator last, std::string_v
|
|||
{
|
||||
throw std::out_of_range("string replacement range out of bounds");
|
||||
}
|
||||
size_type index = first - data_.data();
|
||||
size_type index = &*first - data_.data();
|
||||
size_type count = last - first;
|
||||
|
||||
return replace(index, count, str);
|
||||
|
|
|
|||
|
|
@ -230,7 +230,10 @@ public:
|
|||
size_t count_destroyed = 0;
|
||||
for (auto itr = itr_begin; itr != itr_end; itr++)
|
||||
{
|
||||
itr->~T();
|
||||
if constexpr (std::is_destructible_v<T>)
|
||||
{
|
||||
(*itr).~T();
|
||||
}
|
||||
count_destroyed++;
|
||||
}
|
||||
size_ = s;
|
||||
|
|
|
|||
|
|
@ -292,7 +292,8 @@ const auto GraphicsDriver = consvar_t::Builder(cvlist_graphics_driver).save();
|
|||
// Player local, not available on dedicated servers.
|
||||
// These usually save...
|
||||
//
|
||||
|
||||
extern "C"
|
||||
{
|
||||
consvar_t cv_addons_md5 = Player("addons_md5", "Name").values({{0, "Name"}, {1, "Contents"}});
|
||||
consvar_t cv_addons_search_case = Player("addons_search_case", "No").yes_no();
|
||||
consvar_t cv_addons_search_type = Player("addons_search_type", "Anywhere").values({{0, "Start"}, {1, "Anywhere"}});
|
||||
|
|
@ -1543,7 +1544,7 @@ consvar_t cv_globalsaturation;
|
|||
consvar_t cv_rgamma, cv_ygamma, cv_ggamma, cv_cgamma, cv_bgamma, cv_mgamma;
|
||||
consvar_t cv_rhue, cv_yhue, cv_ghue, cv_chue, cv_bhue, cv_mhue;
|
||||
consvar_t cv_rsaturation, cv_ysaturation, cv_gsaturation, cv_csaturation, cv_bsaturation, cv_msaturation;
|
||||
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
// This function can be used for more advanced cvar
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
#ifndef __D_PLAYER__
|
||||
#define __D_PLAYER__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// The player data structure depends on a number
|
||||
// of other structs: items (internal inventory),
|
||||
// animation states (closely tied to the sprites
|
||||
|
|
|
|||
|
|
@ -66,10 +66,16 @@ extern "C" {
|
|||
|
||||
// If you don't disable ALL debug first, you get ALL debug enabled
|
||||
#if !defined (NDEBUG)
|
||||
#ifndef PACKETDROP
|
||||
#define PACKETDROP
|
||||
#endif
|
||||
#ifndef PARANOIA
|
||||
#define PARANOIA
|
||||
#endif
|
||||
#ifndef ZDEBUG
|
||||
#define ZDEBUG
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Uncheck this to compile debugging code
|
||||
//#ifndef PARANOIA
|
||||
|
|
@ -90,7 +96,9 @@ extern char logfilename[1024];
|
|||
|
||||
//#define DEVELOP // Disable this for release builds to remove excessive cheat commands and enable MD5 checking and stuff, all in one go. :3
|
||||
#ifdef DEVELOP
|
||||
#ifndef PARANOIA
|
||||
#define PARANOIA // On by default for DEVELOP builds
|
||||
#endif
|
||||
#define VERSIONSTRING "Development EXE"
|
||||
#define VERSIONSTRING_RC "Development EXE" "\0"
|
||||
// most interface strings are ignored in development mode.
|
||||
|
|
|
|||
|
|
@ -23,48 +23,20 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
//#define WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define RPC_NO_WINDOWS_H
|
||||
#include <windows.h>
|
||||
// win32 sucks
|
||||
#undef min
|
||||
#undef max
|
||||
#endif
|
||||
|
||||
/* 7.18.1.1 Exact-width integer types */
|
||||
#ifdef _MSC_VER
|
||||
// libopenmpt.h will include stdint.h later;
|
||||
// include it now so that INT8_MAX etc. don't get redefined
|
||||
#ifdef HAVE_OPENMPT
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#define UINT8 unsigned __int8
|
||||
#define SINT8 signed __int8
|
||||
|
||||
#define UINT16 unsigned __int16
|
||||
#define INT16 __int16
|
||||
|
||||
#define INT32 __int32
|
||||
#define UINT32 unsigned __int32
|
||||
|
||||
#define INT64 __int64
|
||||
#define UINT64 unsigned __int64
|
||||
|
||||
typedef long ssize_t;
|
||||
|
||||
/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
|
||||
#if (_MSC_VER <= 1200)
|
||||
#ifndef DWORD_PTR
|
||||
#define DWORD_PTR DWORD
|
||||
#endif
|
||||
#ifndef PDWORD_PTR
|
||||
#define PDWORD_PTR PDWORD
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#define __STDC_LIMIT_MACROS
|
||||
#include <stdint.h>
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#define UINT8 uint8_t
|
||||
#define SINT8 int8_t
|
||||
|
||||
#define UINT16 uint16_t
|
||||
#define INT16 int16_t
|
||||
|
|
@ -75,6 +47,8 @@ typedef long ssize_t;
|
|||
#define UINT64 uint64_t
|
||||
#endif
|
||||
|
||||
#define SINT8 int8_t
|
||||
|
||||
#ifdef __APPLE_CC__
|
||||
#define DIRECTFULLSCREEN 1
|
||||
#define DEBUG_LOG
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#include <dirent.h>
|
||||
#endif
|
||||
#if defined (_WIN32) && !defined (_XBOX)
|
||||
//#define WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define RPC_NO_WINDOWS_H
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
|
@ -147,7 +147,7 @@ opendir (const CHAR *szPath)
|
|||
|
||||
/* Allocate enough space to store DIR structure and the complete
|
||||
* directory path given. */
|
||||
nd = (DIR *) malloc (sizeof (DIR) + (strlen(szFullPath) + strlen (SLASH) +
|
||||
nd = (DIR *) malloc (sizeof (DIR) + (strlen(szFullPath) +
|
||||
strlen(PATHSEP) + 1) * sizeof (CHAR));
|
||||
|
||||
if (!nd)
|
||||
|
|
|
|||
|
|
@ -123,6 +123,7 @@ static char demoname[MAX_WADPATH];
|
|||
static savebuffer_t demobuf = {0};
|
||||
static UINT8 *demotime_p, *demoinfo_p, *demoattack_p, *demosplits_p;
|
||||
static UINT16 demoflags;
|
||||
extern "C" boolean demosynced;
|
||||
boolean demosynced = true; // console warning message
|
||||
|
||||
struct demovars_s demo;
|
||||
|
|
@ -1683,6 +1684,11 @@ skippedghosttic:
|
|||
}
|
||||
}
|
||||
|
||||
extern "C"
|
||||
{
|
||||
extern consvar_t cv_netdemosize;
|
||||
}
|
||||
|
||||
//
|
||||
// G_RecordDemo
|
||||
//
|
||||
|
|
@ -1691,8 +1697,6 @@ void G_RecordDemo(const char *name)
|
|||
if (demo.recording)
|
||||
G_CheckDemoStatus();
|
||||
|
||||
extern consvar_t cv_netdemosize;
|
||||
|
||||
INT32 maxsize;
|
||||
|
||||
strcpy(demoname, name);
|
||||
|
|
|
|||
|
|
@ -1867,6 +1867,8 @@ void G_UpdateAllPlayerPreferences(void)
|
|||
}
|
||||
}
|
||||
|
||||
extern boolean demosynced;
|
||||
|
||||
//
|
||||
// G_Ticker
|
||||
// Make ticcmd_ts for the players.
|
||||
|
|
@ -1883,7 +1885,6 @@ void G_Ticker(boolean run)
|
|||
|
||||
P_MapStart();
|
||||
|
||||
extern boolean demosynced;
|
||||
if (demo.playback && staffsync && !demosynced)
|
||||
{
|
||||
G_ClearRetryFlag();
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
/// \brief OpenGL API for Sonic Robo Blast 2
|
||||
|
||||
#if defined (_WIN32)
|
||||
//#define WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define RPC_NO_WINDOWS_H
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ void PatchAtlasCache::pack(Rhi& rhi)
|
|||
atlas.entries_.insert_or_assign(patch, std::move(entry));
|
||||
patch_lookup_.insert_or_assign(patch, atlas_index);
|
||||
patches_to_upload_.insert(patch);
|
||||
rects.erase(itr);
|
||||
itr = rects.erase(itr);
|
||||
continue;
|
||||
}
|
||||
++itr;
|
||||
|
|
|
|||
10
src/i_tcp.c
10
src/i_tcp.c
|
|
@ -399,7 +399,7 @@ void Command_Numnodes(void)
|
|||
connected, ingame);
|
||||
}
|
||||
|
||||
static boolean hole_punch(ssize_t c)
|
||||
static boolean hole_punch(ptrdiff_t c)
|
||||
{
|
||||
if (c == 10 && holepunchpacket->magic == hole_punch_magic)
|
||||
{
|
||||
|
|
@ -425,7 +425,7 @@ static boolean SOCK_Get(void)
|
|||
{
|
||||
size_t n;
|
||||
int j;
|
||||
ssize_t c;
|
||||
ptrdiff_t c;
|
||||
mysockaddr_t fromaddress;
|
||||
socklen_t fromlen;
|
||||
|
||||
|
|
@ -534,7 +534,7 @@ static boolean SOCK_CanGet(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
static inline ssize_t SOCK_SendToAddr(SOCKET_TYPE socket, mysockaddr_t *sockaddr)
|
||||
static inline ptrdiff_t SOCK_SendToAddr(SOCKET_TYPE socket, mysockaddr_t* sockaddr)
|
||||
{
|
||||
socklen_t d4 = (socklen_t)sizeof(struct sockaddr_in);
|
||||
#ifdef HAVE_IPV6
|
||||
|
|
@ -556,8 +556,8 @@ static inline ssize_t SOCK_SendToAddr(SOCKET_TYPE socket, mysockaddr_t *sockaddr
|
|||
|
||||
static void SOCK_Send(void)
|
||||
{
|
||||
ssize_t c = ERRSOCKET;
|
||||
size_t i, j;
|
||||
ptrdiff_t c = ERRSOCKET;
|
||||
ptrdiff_t i, j;
|
||||
|
||||
if (!nodeconnected[doomcom->remotenode])
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
#ifndef __SRB2_IO_STREAMS_HPP__
|
||||
#define __SRB2_IO_STREAMS_HPP__
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstddef>
|
||||
#include <stdexcept>
|
||||
#include <type_traits>
|
||||
|
|
@ -408,9 +409,9 @@ public:
|
|||
if (head_ >= span_.size())
|
||||
return 0;
|
||||
|
||||
const auto begin = buffer.begin();
|
||||
const auto end = std::copy(
|
||||
span_.begin() + head_, span_.begin() + head_ + std::min(buffer.size(), span_.size() - head_), begin);
|
||||
auto begin = buffer.begin();
|
||||
auto end = std::copy(
|
||||
span_.begin() + head_, span_.begin() + head_ + std::min<size_t>(buffer.size(), span_.size() - head_), begin);
|
||||
head_ += std::distance(begin, end);
|
||||
return std::distance(begin, end);
|
||||
}
|
||||
|
|
@ -419,9 +420,9 @@ public:
|
|||
if (head_ >= span_.size())
|
||||
return 0;
|
||||
|
||||
const auto begin = span_.begin() + head_;
|
||||
const auto end =
|
||||
std::copy(buffer.begin(), buffer.begin() + std::min(span_.size() - head_, buffer.size()), begin);
|
||||
auto begin = span_.begin() + head_;
|
||||
auto end =
|
||||
std::copy(buffer.begin(), buffer.begin() + std::min<size_t>(span_.size() - head_, buffer.size()), begin);
|
||||
head_ += std::distance(begin, end);
|
||||
return std::distance(begin, end);
|
||||
}
|
||||
|
|
@ -501,9 +502,9 @@ public:
|
|||
if (head_ >= vec_.size())
|
||||
return 0;
|
||||
|
||||
const auto begin = buffer.begin();
|
||||
const auto end =
|
||||
std::copy(vec_.begin() + head_, vec_.begin() + head_ + std::min(buffer.size(), vec_.size() - head_), begin);
|
||||
auto begin = buffer.begin();
|
||||
auto end =
|
||||
std::copy(vec_.begin() + head_, vec_.begin() + head_ + std::min<size_t>(buffer.size(), vec_.size() - head_), begin);
|
||||
head_ += std::distance(begin, end);
|
||||
return std::distance(begin, end);
|
||||
}
|
||||
|
|
@ -514,9 +515,9 @@ public:
|
|||
vec_.resize(head_ + buffer_size);
|
||||
}
|
||||
|
||||
const auto begin = vec_.begin() + head_;
|
||||
const auto end =
|
||||
std::copy(buffer.begin(), buffer.begin() + std::min(vec_.size() - head_, buffer.size()), begin);
|
||||
auto begin = vec_.begin() + head_;
|
||||
auto end =
|
||||
std::copy(buffer.begin(), buffer.begin() + std::min<size_t>(vec_.size() - head_, buffer.size()), begin);
|
||||
head_ += std::distance(begin, end);
|
||||
return std::distance(begin, end);
|
||||
}
|
||||
|
|
@ -901,7 +902,7 @@ public:
|
|||
StreamSize bytesread = inner_.read(readspan);
|
||||
buf_.resize(prereadsize + bytesread);
|
||||
|
||||
StreamSize tocopyfrombuf = std::min(buffer.size(), buf_.size());
|
||||
StreamSize tocopyfrombuf = std::min<StreamSize>(buffer.size(), buf_.size());
|
||||
std::copy(buf_.begin(), std::next(buf_.begin(), tocopyfrombuf), buffer.begin());
|
||||
buffer = buffer.subspan(tocopyfrombuf);
|
||||
totalread += tocopyfrombuf;
|
||||
|
|
|
|||
|
|
@ -55,6 +55,8 @@ angle_t K_GetCollideAngle(mobj_t *t1, mobj_t *t2)
|
|||
return R_PointToAngle2(0, 0, momux, momuy);
|
||||
}
|
||||
|
||||
extern "C" consvar_t cv_debugpickmeup;
|
||||
|
||||
boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2)
|
||||
{
|
||||
boolean damageitem = false;
|
||||
|
|
@ -75,7 +77,6 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2)
|
|||
if (t1->type == MT_BALLHOGBOOM && t2->type == MT_BALLHOGBOOM)
|
||||
return true; // Ballhogs don't collide with eachother
|
||||
|
||||
extern consvar_t cv_debugpickmeup;
|
||||
if (t1->type == MT_BALLHOGBOOM && t2->type == MT_PLAYER && t1->target == t2 && !cv_debugpickmeup.value)
|
||||
return true; // Allied hog explosion, not snatchable but shouldn't damage
|
||||
|
||||
|
|
@ -258,6 +259,8 @@ static inline boolean PIT_SSMineChecks(mobj_t *thing)
|
|||
return false;
|
||||
}
|
||||
|
||||
extern "C" consvar_t cv_debugpickmeup;
|
||||
|
||||
static inline BlockItReturn_t PIT_SSMineSearch(mobj_t *thing)
|
||||
{
|
||||
if (grenade == NULL || P_MobjWasRemoved(grenade))
|
||||
|
|
@ -276,8 +279,6 @@ static inline BlockItReturn_t PIT_SSMineSearch(mobj_t *thing)
|
|||
return BMIT_CONTINUE;
|
||||
}
|
||||
|
||||
extern consvar_t cv_debugpickmeup;
|
||||
|
||||
if (!cv_debugpickmeup.value)
|
||||
{
|
||||
if (grenade->target && !P_MobjWasRemoved(grenade->target))
|
||||
|
|
|
|||
|
|
@ -1149,6 +1149,8 @@ boolean K_CanChangeRules(boolean allowdemos)
|
|||
return true;
|
||||
}
|
||||
|
||||
extern "C" consvar_t cv_forcebots;
|
||||
|
||||
/*--------------------------------------------------
|
||||
boolean K_BotDefaultSpectator(player_t *player);
|
||||
|
||||
|
|
@ -1156,8 +1158,6 @@ boolean K_CanChangeRules(boolean allowdemos)
|
|||
--------------------------------------------------*/
|
||||
boolean K_BotDefaultSpectator(void)
|
||||
{
|
||||
extern consvar_t cv_forcebots;
|
||||
|
||||
if (cv_forcebots.value)
|
||||
{
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -5834,7 +5834,7 @@ position_t K_GetKartObjectPosToMinimapPos(fixed_t objx, fixed_t objy)
|
|||
if (encoremode)
|
||||
amnumxpos = -amnumxpos;
|
||||
|
||||
return (position_t){amnumxpos, amnumypos};
|
||||
return position_t{amnumxpos, amnumypos};
|
||||
}
|
||||
|
||||
static void K_drawKartMinimapIcon(fixed_t objx, fixed_t objy, INT32 hudx, INT32 hudy, INT32 flags, patch_t *icon, UINT8 *colormap)
|
||||
|
|
|
|||
24
src/k_menu.h
24
src/k_menu.h
|
|
@ -1631,4 +1631,28 @@ const char *M_GetDiscordName(discordRequest_t *r);
|
|||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace srb2
|
||||
{
|
||||
constexpr inline itemaction_t itemaction(menu_t* menu)
|
||||
{
|
||||
itemaction_t ret {};
|
||||
ret.submenu = menu;
|
||||
return ret;
|
||||
}
|
||||
constexpr inline itemaction_t itemaction(consvar_t* consvar)
|
||||
{
|
||||
itemaction_t ret {};
|
||||
ret.cvar = consvar;
|
||||
return ret;
|
||||
}
|
||||
constexpr inline itemaction_t itemaction(void (*routine)(INT32 choice))
|
||||
{
|
||||
itemaction_t ret {};
|
||||
ret.routine = routine;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //__K_MENU__
|
||||
|
|
|
|||
|
|
@ -6712,7 +6712,7 @@ static void M_CacheAddonPatches(void)
|
|||
void M_DrawAddons(void)
|
||||
{
|
||||
INT32 x, y;
|
||||
ssize_t i, m;
|
||||
ptrdiff_t i, m;
|
||||
const UINT8 *flashcol = NULL;
|
||||
UINT8 hilicol;
|
||||
|
||||
|
|
@ -6763,7 +6763,7 @@ void M_DrawAddons(void)
|
|||
i = 0;
|
||||
else
|
||||
{
|
||||
ssize_t q = m;
|
||||
ptrdiff_t q = m;
|
||||
m = ((2*numaddonsshown + 1) * m)/sizedirmenu;
|
||||
if (dir_on[menudepthleft] <= numaddonsshown) // all the way up
|
||||
i = 0;
|
||||
|
|
@ -6777,7 +6777,7 @@ void M_DrawAddons(void)
|
|||
|
||||
// get bottom...
|
||||
m = dir_on[menudepthleft] + numaddonsshown + 1;
|
||||
if (m > (ssize_t)sizedirmenu)
|
||||
if (m > (ptrdiff_t) sizedirmenu)
|
||||
m = sizedirmenu;
|
||||
|
||||
// then compute top and adjust bottom if needed!
|
||||
|
|
@ -6830,7 +6830,7 @@ void M_DrawAddons(void)
|
|||
y += addonsseperation;
|
||||
}
|
||||
|
||||
if (m != (ssize_t)sizedirmenu)
|
||||
if (m != (ptrdiff_t) sizedirmenu)
|
||||
V_DrawMenuString(19, y-12 + (skullAnimCounter/5), highlightflags, "\x1B");
|
||||
|
||||
if (m < (2*numaddonsshown + 1))
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
extern "C" consvar_t cv_dummyprofilefov, cv_fov[MAXSPLITSCREENPLAYERS];
|
||||
|
||||
CV_PossibleValue_t lastprofile_cons_t[] = {{-1, "MIN"}, {MAXPROFILES, "MAX"}, {0, NULL}};
|
||||
extern "C" CV_PossibleValue_t lastprofile_cons_t[] = {{-1, "MIN"}, {MAXPROFILES, "MAX"}, {0, NULL}};
|
||||
|
||||
// List of all the profiles.
|
||||
static profile_t *profilesList[MAXPROFILES+1]; // +1 because we're gonna add a default "GUEST' profile.
|
||||
|
|
|
|||
|
|
@ -17,9 +17,7 @@
|
|||
#define __M_FIXED__
|
||||
|
||||
#include "doomtype.h"
|
||||
#ifdef __GNUC__
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@
|
|||
#pragma GCC diagnostic ignored "-Wclobbered"
|
||||
#endif
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include <algorithm>
|
||||
#include <filesystem>
|
||||
#include <errno.h>
|
||||
|
||||
// Extended map support.
|
||||
|
|
@ -115,14 +115,17 @@ typedef off_t off64_t;
|
|||
#endif
|
||||
#endif
|
||||
|
||||
extern "C" CV_PossibleValue_t lossless_recorder_cons_t[];
|
||||
CV_PossibleValue_t lossless_recorder_cons_t[] = {{MM_GIF, "GIF"}, {MM_APNG, "aPNG"}, {MM_SCREENSHOT, "Screenshots"}, {0, NULL}};
|
||||
|
||||
extern "C" CV_PossibleValue_t zlib_mem_level_t[];
|
||||
CV_PossibleValue_t zlib_mem_level_t[] = {
|
||||
{1, "(Min Memory) 1"},
|
||||
{2, "2"}, {3, "3"}, {4, "4"}, {5, "5"}, {6, "6"}, {7, "7"},
|
||||
{8, "(Optimal) 8"}, //libpng Default
|
||||
{9, "(Max Memory) 9"}, {0, NULL}};
|
||||
|
||||
extern "C" CV_PossibleValue_t zlib_level_t[];
|
||||
CV_PossibleValue_t zlib_level_t[] = {
|
||||
{0, "No Compression"}, //Z_NO_COMPRESSION
|
||||
{1, "(Fastest) 1"}, //Z_BEST_SPEED
|
||||
|
|
@ -132,6 +135,7 @@ CV_PossibleValue_t zlib_level_t[] = {
|
|||
{9, "(Maximum) 9"}, //Z_BEST_COMPRESSION
|
||||
{0, NULL}};
|
||||
|
||||
extern "C" CV_PossibleValue_t zlib_strategy_t[];
|
||||
CV_PossibleValue_t zlib_strategy_t[] = {
|
||||
{0, "Normal"}, //Z_DEFAULT_STRATEGY
|
||||
{1, "Filtered"}, //Z_FILTERED
|
||||
|
|
@ -140,6 +144,7 @@ CV_PossibleValue_t zlib_strategy_t[] = {
|
|||
{4, "Fixed"}, //Z_FIXED
|
||||
{0, NULL}};
|
||||
|
||||
extern "C" CV_PossibleValue_t zlib_window_bits_t[];
|
||||
CV_PossibleValue_t zlib_window_bits_t[] = {
|
||||
#ifdef WBITS_8_OK
|
||||
{8, "256"},
|
||||
|
|
@ -618,6 +623,8 @@ void Command_ChangeConfig_f(void)
|
|||
COM_BufAddText(va("loadconfig \"%s\"\n", COM_Argv(1)));
|
||||
}
|
||||
|
||||
extern "C" struct CVarList* cvlist_execversion;
|
||||
|
||||
/** Loads the default config file.
|
||||
*
|
||||
* \sa Command_LoadConfig_f
|
||||
|
|
@ -645,7 +652,6 @@ void M_FirstLoadConfig(void)
|
|||
|
||||
// register execversion here before we load any configs
|
||||
{
|
||||
extern struct CVarList *cvlist_execversion;
|
||||
CV_RegisterList(cvlist_execversion);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ typedef u_int32_t md5_uint32;
|
|||
#endif
|
||||
|
||||
#undef __P
|
||||
#if defined (__STDC__) && __STDC__
|
||||
#if (defined (__STDC__) && __STDC__) || _MSC_VER
|
||||
#define __P(x) x
|
||||
#else
|
||||
#define __P(x) ()
|
||||
|
|
|
|||
|
|
@ -53,14 +53,12 @@ float Options::get<float>(const char* option) const
|
|||
template <typename T>
|
||||
consvar_t Options::values(const char* default_value, const Range<T> range, std::map<std::string_view, T> list)
|
||||
{
|
||||
constexpr bool is_float = std::is_floating_point_v<T>;
|
||||
|
||||
const std::size_t min_max_size = (range.min || range.max) ? 2 : 0;
|
||||
auto* arr = new CV_PossibleValue_t[list.size() + min_max_size + 1];
|
||||
|
||||
auto cast = [](T n)
|
||||
{
|
||||
if constexpr (is_float)
|
||||
if constexpr (std::is_floating_point_v<T>)
|
||||
{
|
||||
return FloatToFixed(n);
|
||||
}
|
||||
|
|
@ -94,7 +92,7 @@ consvar_t Options::values(const char* default_value, const Range<T> range, std::
|
|||
|
||||
int32_t flags = CV_SAVE;
|
||||
|
||||
if constexpr (is_float)
|
||||
if constexpr (std::is_floating_point_v<T>)
|
||||
{
|
||||
flags |= CV_FLOAT;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,17 +98,17 @@ void M_FavoriteReplay(INT32 c)
|
|||
// extras menu: replay hut
|
||||
menuitem_t EXTRAS_EggTV[] =
|
||||
{
|
||||
{IT_STRING | IT_CALL, "WATCH REPLAY", NULL, NULL, {.routine = [](auto) { g_egg_tv->watch(); }}, 0, 0},
|
||||
{IT_STRING | IT_CALL, "STANDINGS", NULL, NULL, {.routine = [](auto) { g_egg_tv->standings(); }}, 0, 0},
|
||||
{IT_STRING | IT_CALL, "FAVORITE", NULL, NULL, {.routine = M_FavoriteReplay}, 0, 0},
|
||||
{IT_STRING | IT_CALL, "WATCH REPLAY", NULL, NULL, srb2::itemaction([](auto) -> void { g_egg_tv->watch(); }), 0, 0 },
|
||||
{IT_STRING | IT_CALL, "STANDINGS", NULL, NULL, srb2::itemaction([](auto) { g_egg_tv->standings(); }), 0, 0},
|
||||
{IT_STRING | IT_CALL, "FAVORITE", NULL, NULL, srb2::itemaction(M_FavoriteReplay), 0, 0},
|
||||
|
||||
{IT_SPACE},
|
||||
|
||||
{IT_STRING | IT_CALL, "DELETE REPLAY", NULL, NULL, {.routine = M_DeleteReplay}, 0, 0},
|
||||
{IT_STRING | IT_CALL, "DELETE REPLAY", NULL, NULL, srb2::itemaction(M_DeleteReplay), 0, 0},
|
||||
|
||||
{IT_SPACE},
|
||||
|
||||
{IT_STRING | IT_CALL, "GO BACK", NULL, NULL, {.routine = [](auto) { g_egg_tv->back(); }}, 0, 0},
|
||||
{IT_STRING | IT_CALL, "GO BACK", NULL, NULL, srb2::itemaction([](auto) { g_egg_tv->back(); }), 0, 0},
|
||||
};
|
||||
|
||||
menu_t EXTRAS_EggTVDef =
|
||||
|
|
|
|||
|
|
@ -129,31 +129,31 @@ static menuitem_t MAIN_Goner[] =
|
|||
{
|
||||
{IT_STRING | IT_CVAR | IT_CV_STRING, "PASSWORD",
|
||||
"ATTEMPT ADMINISTRATOR ACCESS.", NULL,
|
||||
{.cvar = &cv_dummyextraspassword}, 0, 0},
|
||||
srb2::itemaction(& cv_dummyextraspassword), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CALL, "EXIT PROGRAM",
|
||||
"CONCLUDE OBSERVATIONS NOW.", NULL,
|
||||
{.routine = M_QuitSRB2}, 0, 0},
|
||||
srb2::itemaction(M_QuitSRB2), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CALL, "VIDEO OPTIONS",
|
||||
"CONFIGURE OCULAR PATHWAYS.", NULL,
|
||||
{.routine = M_VideoOptions}, 0, 0},
|
||||
srb2::itemaction(M_VideoOptions), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CALL, "SOUND OPTIONS",
|
||||
"CALIBRATE AURAL DATASTREAM.", NULL,
|
||||
{.routine = M_SoundOptions}, 0, 0},
|
||||
srb2::itemaction(M_SoundOptions), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CALL, "PROFILE SETUP",
|
||||
"ASSIGN VEHICLE INPUTS.", NULL,
|
||||
{.routine = M_GonerProfile}, 0, 0},
|
||||
srb2::itemaction(M_GonerProfile), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CALL, "MAKE CHOICE",
|
||||
"PREPARE FOR INTEGRATION?", NULL,
|
||||
{.routine = M_GonerChoice}, 0, 0},
|
||||
srb2::itemaction(M_GonerChoice), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CALL, "START GAME",
|
||||
"I WILL SUCCEED.", NULL,
|
||||
{.routine = M_GonerConclude}, 0, 0},
|
||||
srb2::itemaction(M_GonerConclude), 0, 0},
|
||||
};
|
||||
|
||||
menu_t MAIN_GonerDef = {
|
||||
|
|
@ -183,7 +183,7 @@ static menuitem_t MAIN_GonerChoice[] =
|
|||
"\n"
|
||||
"This is a structured, back-to-basics tutorial\n"
|
||||
"that will likely take ""\x88""10-20 minutes""\x80"" of your time.",
|
||||
NULL, {.routine = M_GonerTutorial}, 0, 0},
|
||||
NULL, srb2::itemaction(M_GonerTutorial), 0, 0},
|
||||
|
||||
//{IT_STRING, NULL, NULL, NULL, {.routine = M_QuitSRB2}, 0, 0}, // will be replaced
|
||||
|
||||
|
|
@ -194,7 +194,7 @@ static menuitem_t MAIN_GonerChoice[] =
|
|||
"\n"
|
||||
"You can ""\x88""exit immediately""\x80"" and get to racing...\n"
|
||||
"or spend ""\x88""as long as you want""\x80"" in the playground!",
|
||||
NULL, {.routine = M_GonerPlayground}, 0, 0},
|
||||
NULL, srb2::itemaction(M_GonerPlayground), 0, 0},
|
||||
};
|
||||
|
||||
static menu_t MAIN_GonerChoiceDef = {
|
||||
|
|
|
|||
|
|
@ -100,25 +100,25 @@ menuitem_t OPTIONS_ProfileAccessibility[] = {
|
|||
NULL, {NULL}, 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Rumble", "For gamepad users - should your device rumble?",
|
||||
NULL, {.cvar = &cv_dummyprofilerumble}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_dummyprofilerumble), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Auto Roulette", "Item roulette auto-stops on a random result.",
|
||||
NULL, {.cvar = &cv_dummyprofileautoroulette}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_dummyprofileautoroulette), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Auto Ring", "Auto-use rings to maintain momentum.",
|
||||
NULL, {.cvar = &cv_dummyprofileautoring}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_dummyprofileautoring), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Kickstart Accel", "Hold A to auto-accel. Tap it to cancel.",
|
||||
NULL, {.cvar = &cv_dummyprofilekickstart}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_dummyprofilekickstart), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Lite Steer", "Hold DOWN on d-pad/keyboard for shallow turns.",
|
||||
NULL, {.cvar = &cv_dummyprofilelitesteer}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_dummyprofilelitesteer), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Strict Fastfall", "Fastfall only with the Spindash button.",
|
||||
NULL, {.cvar = &cv_dummyprofilestrictfastfall}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_dummyprofilestrictfastfall), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Field of View", "Higher FOV lets you see more.",
|
||||
NULL, {.cvar = &cv_dummyprofilefov}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_dummyprofilefov), 0, 0},
|
||||
|
||||
{IT_SPACE | IT_NOTHING, NULL, NULL,
|
||||
NULL, {NULL}, 0, 0},
|
||||
|
|
@ -127,19 +127,19 @@ menuitem_t OPTIONS_ProfileAccessibility[] = {
|
|||
NULL, {NULL}, 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Minimum Input Delay", "Practice for online play! 0 = instant response.",
|
||||
NULL, {.cvar = &cv_mindelay}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_mindelay), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Screen Tilting", "View rotation on inclines.",
|
||||
NULL, {.cvar = &cv_tilting}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_tilting), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Reduce Effects", "If overwhelmed, hide less-important particle cues.",
|
||||
NULL, {.cvar = &cv_reducevfx}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_reducevfx), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Screenshake", "Adjust shake intensity from hazards and offroad.",
|
||||
NULL, {.cvar = &cv_screenshake}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_screenshake), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Input Display", "Show virtual controller on the HUD.",
|
||||
NULL, {.cvar = &cv_drawinput}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_drawinput), 0, 0},
|
||||
};
|
||||
|
||||
menu_t OPTIONS_ProfileAccessibilityDef = {
|
||||
|
|
|
|||
|
|
@ -285,16 +285,16 @@ menuitem_t OPTIONS_Sound[] =
|
|||
{
|
||||
|
||||
{IT_STRING | IT_ARROWS | IT_CV_SLIDER, "Volume", "Loudness of all game audio.",
|
||||
NULL, {.routine = slider_routine}, 0, Slider::kMasterVolume},
|
||||
NULL, srb2::itemaction(slider_routine), 0, Slider::kMasterVolume},
|
||||
|
||||
{IT_STRING | IT_ARROWS | IT_CV_SLIDER, "SFX Volume", "Loudness of sound effects.",
|
||||
NULL, {.routine = slider_routine}, 0, Slider::kSfxVolume},
|
||||
NULL, srb2::itemaction(slider_routine), 0, Slider::kSfxVolume},
|
||||
|
||||
{IT_STRING | IT_ARROWS | IT_CV_SLIDER, "Music Volume", "Loudness of music.",
|
||||
NULL, {.routine = slider_routine}, 0, Slider::kMusicVolume},
|
||||
NULL, srb2::itemaction(slider_routine), 0, Slider::kMusicVolume},
|
||||
|
||||
{IT_STRING | IT_ARROWS | IT_CV_SLIDER, "Voice Volume", "Loudness of voice chat.",
|
||||
NULL, {.routine = slider_routine}, 0, Slider::kVoiceVolume},
|
||||
NULL, srb2::itemaction(slider_routine), 0, Slider::kVoiceVolume},
|
||||
|
||||
{IT_SPACE | IT_NOTHING, NULL, NULL,
|
||||
NULL, {NULL}, 0, 0},
|
||||
|
|
@ -303,19 +303,19 @@ menuitem_t OPTIONS_Sound[] =
|
|||
NULL, {NULL}, 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Chat Notifications", "Play a sound effect when chat messages appear.",
|
||||
NULL, {.cvar = &cv_chatnotifications}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_chatnotifications), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Character Voices", "Characters speak when interacting on the course.",
|
||||
NULL, {.cvar = &cv_kartvoices}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_kartvoices), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Follower Horns", NULL, // set in init_routine
|
||||
NULL, {.cvar = &cv_karthorns}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_karthorns), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Continuous Attack Music", "Keep music playing seamlessly when retrying in Attack modes.",
|
||||
NULL, {.cvar = &cv_continuousmusic}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_continuousmusic), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Streamer-Safe Music", "Only play music safe for video platforms.",
|
||||
NULL, {.cvar = &cv_streamersafemusic}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_streamersafemusic), 0, 0},
|
||||
|
||||
{IT_SPACE | IT_DYBIGSPACE, NULL, NULL,
|
||||
NULL, {NULL}, 0, 0},
|
||||
|
|
@ -324,16 +324,16 @@ menuitem_t OPTIONS_Sound[] =
|
|||
NULL, {NULL}, 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Hear Tabbed-out", "Keep playing game audio when the window is out of focus (FOCUS LOST).",
|
||||
NULL, {.cvar = &cv_bgaudio}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_bgaudio), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Mixing Buffer Size", "Audio buffer size. Higher is faster but more delay.",
|
||||
NULL, {.cvar = &cv_soundmixingbuffersize}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_soundmixingbuffersize), 0, 0},
|
||||
|
||||
{IT_SPACE | IT_NOTHING, NULL, NULL,
|
||||
NULL, {NULL}, 0, 0},
|
||||
|
||||
{IT_STRING | IT_CALL, "\x85" "Restart Audio", "Reboot the game's audio system.",
|
||||
NULL, {.routine = restartaudio_routine}, 0, 0},
|
||||
NULL, srb2::itemaction(restartaudio_routine), 0, 0},
|
||||
};
|
||||
|
||||
menu_t OPTIONS_SoundDef = {
|
||||
|
|
|
|||
|
|
@ -17,25 +17,25 @@
|
|||
menuitem_t OPTIONS_Voice[] =
|
||||
{
|
||||
{IT_STRING | IT_CVAR, "Mute Self", "Whether your voice is transmitted or not.",
|
||||
NULL, {.cvar = &cv_voice_selfmute}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_voice_selfmute), 0, 0 },
|
||||
|
||||
{IT_STRING | IT_CVAR, "Deafen Self", "Choose to opt-in to voice chat at all, for yourself.",
|
||||
NULL, {.cvar = &cv_voice_selfdeafen}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_voice_selfdeafen), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Input Mode", "When to transmit your own voice.",
|
||||
NULL, {.cvar = &cv_voice_mode}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_voice_mode), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Input Amplifier", "Amplify your voice, in decibels. Negative values are quieter.",
|
||||
NULL, {.cvar = &cv_voice_inputamp}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_voice_inputamp), 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Input Noise Suppression", "Suppress background noise from your voice.",
|
||||
NULL, {.cvar = &cv_voice_denoise}, 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Input Sensitivity", "Voice higher than this threshold will transmit, in decibels.",
|
||||
NULL, {.cvar = &cv_voice_activationthreshold}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_voice_activationthreshold), 0, 0 },
|
||||
|
||||
{IT_STRING | IT_CVAR, "Voice Loopback", "Play your own voice back simultaneously.",
|
||||
NULL, {.cvar = &cv_voice_loopback}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_voice_loopback), 0, 0 },
|
||||
|
||||
{IT_SPACE | IT_NOTHING, NULL, NULL,
|
||||
NULL, {NULL}, 0, 0},
|
||||
|
|
@ -44,10 +44,10 @@ menuitem_t OPTIONS_Voice[] =
|
|||
NULL, {NULL}, 0, 0},
|
||||
|
||||
{IT_STRING | IT_CVAR, "Server Voice Chat", "All voice chat will be enabled on your server.",
|
||||
NULL, {.cvar = &cv_voice_allowservervoice}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_voice_allowservervoice), 0, 0 },
|
||||
|
||||
{IT_STRING | IT_CVAR, "Proximity Effects", "Player voices will be adjusted relative to you.",
|
||||
NULL, {.cvar = &cv_voice_proximity}, 0, 0},
|
||||
NULL, srb2::itemaction(&cv_voice_proximity), 0, 0 },
|
||||
};
|
||||
|
||||
static void draw_routine()
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ void list_cvars()
|
|||
height += 16;
|
||||
}
|
||||
|
||||
g_menu.push_back(menuitem_t {status, var->name, var->description, nullptr, {.cvar = var}, 0, height});
|
||||
g_menu.push_back(menuitem_t{ status, var->name, var->description, nullptr, srb2::itemaction(var), 0, height });
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -146,7 +146,7 @@ void list_commands()
|
|||
if (flags & COM_NOSHOWHELP)
|
||||
continue;
|
||||
|
||||
g_menu.push_back(menuitem_t {IT_STRING | IT_CALL, cmd->name, "No information available for commands. Press to execute.", nullptr, {.routine = call}, 0, 8});
|
||||
g_menu.push_back(menuitem_t{ IT_STRING | IT_CALL, cmd->name, "No information available for commands. Press to execute.", nullptr, srb2::itemaction(call), 0, 8 });
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ void list_cvars()
|
|||
height += 16;
|
||||
}
|
||||
|
||||
g_menu.push_back(menuitem_t {status, var->name, var->description, nullptr, {.cvar = var}, 0, height});
|
||||
g_menu.push_back(menuitem_t {status, var->name, var->description, nullptr, srb2::itemaction(var), 0, height});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -94,7 +94,7 @@ void list_commands()
|
|||
continue;
|
||||
}
|
||||
|
||||
g_menu.push_back(menuitem_t {IT_STRING | IT_CALL, cmd->name, nullptr, nullptr, {.routine = call}, 0, 8});
|
||||
g_menu.push_back(menuitem_t {IT_STRING | IT_CALL, cmd->name, nullptr, nullptr, srb2::itemaction(call), 0, 8});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ using srb2::math::Fixed;
|
|||
using srb2::Mobj;
|
||||
using srb2::MobjList;
|
||||
|
||||
extern consvar_t cv_battleufotest;
|
||||
extern "C" consvar_t cv_battleufotest;
|
||||
|
||||
extern mobj_t* svg_battleUfoSpawners;
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ public:
|
|||
|
||||
Spawner* spawner = next(g_battleufo.previousId);
|
||||
UFO* ufo = static_cast<UFO*>(P_SpawnMobjFromMobj(spawner, 0, 0, 250*FRACUNIT - ofs, MT_BATTLEUFO));
|
||||
|
||||
|
||||
K_AddMessage("Crack the Combat UFO!", true, false);
|
||||
S_StartSound(NULL, sfx_mbs54);
|
||||
|
||||
|
|
@ -291,4 +291,4 @@ INT32 Obj_BattleUFOSpawnerID(const mobj_t *spawner)
|
|||
mobj_t *Obj_GetNextUFOSpawner(void)
|
||||
{
|
||||
return g_spawners.next(g_battleufo.previousId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,18 +59,24 @@ namespace
|
|||
|
||||
struct LineOnDemand : line_t
|
||||
{
|
||||
private:
|
||||
vertex_t v1_data_;
|
||||
|
||||
public:
|
||||
LineOnDemand(const line_t* line) {}
|
||||
|
||||
LineOnDemand(fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2) :
|
||||
line_t {
|
||||
.v1 = &v1_data_,
|
||||
.dx = x2 - x1,
|
||||
.dy = y2 - y1,
|
||||
.bbox = {max(y1, y2), min(y1, y2), min(x1, x2), max(x1, x2)},
|
||||
},
|
||||
v1_data_ {.x = x1, .y = y1}
|
||||
line_t {},
|
||||
v1_data_{ x1, y1 }
|
||||
{
|
||||
}
|
||||
v1 = &v1_data_;
|
||||
dx = x2 - x1;
|
||||
dy = y2 - y1;
|
||||
bbox[0] = max(y1, y2);
|
||||
bbox[1] = min(y1, y2);
|
||||
bbox[2] = min(x1, x2);
|
||||
bbox[3] = max(x1, x2);
|
||||
};
|
||||
|
||||
LineOnDemand(fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2, fixed_t r) : LineOnDemand(x1, y1, x2, y2)
|
||||
{
|
||||
|
|
@ -91,9 +97,6 @@ struct LineOnDemand : line_t
|
|||
return bbox[BOXTOP] >= other.bbox[BOXBOTTOM] && bbox[BOXBOTTOM] <= other.bbox[BOXTOP] &&
|
||||
bbox[BOXLEFT] <= other.bbox[BOXRIGHT] && bbox[BOXRIGHT] >= other.bbox[BOXLEFT];
|
||||
}
|
||||
|
||||
private:
|
||||
vertex_t v1_data_;
|
||||
};
|
||||
|
||||
struct Checkpoint : mobj_t
|
||||
|
|
|
|||
|
|
@ -7606,6 +7606,8 @@ void P_SetupLevelSky(const char *skytexname, boolean global)
|
|||
static const char *maplumpname;
|
||||
lumpnum_t lastloadedmaplumpnum; // for comparative savegame
|
||||
|
||||
extern "C" boolean blockreset;
|
||||
|
||||
//
|
||||
// P_LevelInitStuff
|
||||
//
|
||||
|
|
@ -7618,7 +7620,6 @@ static void P_InitLevelSettings(void)
|
|||
|
||||
leveltime = 0;
|
||||
modulothing = 0;
|
||||
extern boolean blockreset;
|
||||
blockreset = 0;
|
||||
|
||||
P_SetFreezeLevel(false);
|
||||
|
|
|
|||
|
|
@ -1686,7 +1686,7 @@ static void R_ProjectBoundingBox(mobj_t *thing, vissprite_t *vis)
|
|||
fixed_t R_GetSpriteDirectionalLighting(angle_t angle)
|
||||
{
|
||||
// Copied from P_UpdateSegLightOffset
|
||||
const UINT8 contrast = std::min(std::max(0, maplighting.contrast - maplighting.backlight), UINT8_MAX);
|
||||
const UINT8 contrast = std::min<UINT8>(std::max(0, maplighting.contrast - maplighting.backlight), UINT8_MAX);
|
||||
const fixed_t contrastFixed = ((fixed_t)contrast) * FRACUNIT;
|
||||
|
||||
fixed_t light = FRACUNIT;
|
||||
|
|
|
|||
|
|
@ -83,9 +83,9 @@ if("${CMAKE_SYSTEM_NAME}" MATCHES Windows)
|
|||
target_link_libraries(SRB2SDL2 PRIVATE
|
||||
ws2_32
|
||||
)
|
||||
target_compile_options(SRB2SDL2 PRIVATE
|
||||
-U_WINDOWS
|
||||
)
|
||||
# target_compile_options(SRB2SDL2 PRIVATE
|
||||
# -U_WINDOWS
|
||||
# )
|
||||
endif()
|
||||
|
||||
target_compile_definitions(SRB2SDL2 PRIVATE -DHAVE_MIXER -DSOUND=SOUND_MIXER)
|
||||
|
|
|
|||
|
|
@ -195,7 +195,7 @@ static void InitLogging(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#if defined(_WIN32) && !defined(_MSC_VER)
|
||||
static void init_exchndl()
|
||||
{
|
||||
HMODULE exchndl_module = LoadLibraryA("exchndl.dll");
|
||||
|
|
@ -212,6 +212,10 @@ static void init_exchndl()
|
|||
if (pfnExcHndlInit != NULL)
|
||||
(pfnExcHndlInit)();
|
||||
}
|
||||
#else
|
||||
static void init_exchndl()
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
|
|
@ -351,6 +355,13 @@ int main(int argc, char **argv)
|
|||
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
int WINAPI WinMain(HINSTANCE pInstance, HINSTANCE pPrevInstance, LPSTR lpCmdLine, int nShowCmd)
|
||||
{
|
||||
return main(__argc, __argv);
|
||||
}
|
||||
#endif
|
||||
|
||||
void* operator new(size_t count)
|
||||
{
|
||||
auto p = malloc(count);
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include <signal.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define RPC_NO_WINDOWS_H
|
||||
#include <windows.h>
|
||||
#include "../doomtype.h"
|
||||
|
|
@ -1729,6 +1730,8 @@ static INT32 errorcount = 0;
|
|||
*/
|
||||
static boolean shutdowning = false;
|
||||
|
||||
extern "C" consvar_t cv_fuzz;
|
||||
|
||||
void I_Error(const char *error, ...)
|
||||
{
|
||||
va_list argptr;
|
||||
|
|
@ -1813,7 +1816,6 @@ void I_Error(const char *error, ...)
|
|||
I_ShutdownGraphics();
|
||||
I_ShutdownInput();
|
||||
|
||||
extern consvar_t cv_fuzz;
|
||||
if (!cv_fuzz.value)
|
||||
I_ShowErrorMessageBox(buffer, false);
|
||||
|
||||
|
|
@ -1974,7 +1976,7 @@ void I_GetDiskFreeSpace(INT64 *freespace)
|
|||
|
||||
if (!testwin95)
|
||||
{
|
||||
*(void**)&pfnGetDiskFreeSpaceEx = FUNCPTRCAST(GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetDiskFreeSpaceExA"));
|
||||
pfnGetDiskFreeSpaceEx = reinterpret_cast<decltype(pfnGetDiskFreeSpaceEx)>(GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetDiskFreeSpaceExA"));
|
||||
testwin95 = true;
|
||||
}
|
||||
if (pfnGetDiskFreeSpaceEx)
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#include "SDL.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define RPC_NO_WINDOWS_H
|
||||
#include <windows.h>
|
||||
#pragma warning(default : 4214 4244)
|
||||
#endif
|
||||
|
|
@ -348,9 +350,10 @@ static INT32 Impl_SDL_Scancode_To_Keycode(SDL_Scancode code)
|
|||
return 0;
|
||||
}
|
||||
|
||||
extern "C" consvar_t cv_alwaysgrabmouse;
|
||||
|
||||
static boolean IgnoreMouse(void)
|
||||
{
|
||||
extern consvar_t cv_alwaysgrabmouse;
|
||||
if (cv_alwaysgrabmouse.value)
|
||||
return false;
|
||||
if (menuactive)
|
||||
|
|
@ -1517,6 +1520,8 @@ static void Impl_VideoSetupBuffer(void)
|
|||
}
|
||||
}
|
||||
|
||||
extern "C" CVarList* cvlist_graphics_driver;
|
||||
|
||||
void I_StartupGraphics(void)
|
||||
{
|
||||
if (dedicated)
|
||||
|
|
@ -1531,10 +1536,7 @@ void I_StartupGraphics(void)
|
|||
COM_AddCommand ("vid_info", VID_Command_Info_f);
|
||||
COM_AddCommand ("vid_modelist", VID_Command_ModeList_f);
|
||||
COM_AddCommand ("vid_mode", VID_Command_Mode_f);
|
||||
{
|
||||
extern CVarList *cvlist_graphics_driver;
|
||||
CV_RegisterList(cvlist_graphics_driver);
|
||||
}
|
||||
CV_RegisterList(cvlist_graphics_driver);
|
||||
disable_mouse = static_cast<SDL_bool>(M_CheckParm("-nomouse"));
|
||||
disable_fullscreen = M_CheckParm("-win") ? SDL_TRUE : SDL_FALSE;
|
||||
|
||||
|
|
|
|||
|
|
@ -1380,11 +1380,11 @@ static INT32 ST_ServerSplash_OpacityFlag(INT32 opacity)
|
|||
return (NUMTRANSMAPS - opacity) << V_ALPHASHIFT;
|
||||
}
|
||||
|
||||
#define SPLASH_LEN ((FRACUNIT * TICRATE) * 3)
|
||||
#define SPLASH_WAIT ((FRACUNIT * TICRATE) / 2)
|
||||
|
||||
void ST_DrawServerSplash(boolean timelimited)
|
||||
{
|
||||
static const fixed_t SPLASH_LEN = (FRACUNIT * TICRATE) * 3;
|
||||
static const fixed_t SPLASH_WAIT = (FRACUNIT * TICRATE) / 2;
|
||||
|
||||
static fixed_t splashTime = -SPLASH_WAIT;
|
||||
static char prevContext[8] = {0};
|
||||
|
||||
|
|
|
|||
|
|
@ -61,8 +61,10 @@ UINT8 *screens[5];
|
|||
|
||||
#define huecoloursteps 4
|
||||
|
||||
extern "C" CV_PossibleValue_t hue_cons_t[];
|
||||
CV_PossibleValue_t hue_cons_t[] = {{0, "MIN"}, {(huecoloursteps*6)-1, "MAX"}, {0, NULL}};
|
||||
|
||||
extern "C" CV_PossibleValue_t constextsize_cons_t[];
|
||||
CV_PossibleValue_t constextsize_cons_t[] = {
|
||||
{V_NOSCALEPATCH, "Small"}, {V_SMALLSCALEPATCH, "Medium"}, {V_MEDSCALEPATCH, "Large"}, {0, "Huge"},
|
||||
{0, NULL}};
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#include <winuser.h>
|
||||
#include <winres.h>
|
||||
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
|
|
@ -75,11 +75,9 @@ END
|
|||
// Version
|
||||
//
|
||||
|
||||
#include "../doomdef.h" // Needed for version string
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 2,2,0,0
|
||||
PRODUCTVERSION 2,2,0,0
|
||||
FILEVERSION 2,4,0,0
|
||||
PRODUCTVERSION 2,4,0,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
|
@ -97,14 +95,14 @@ BEGIN
|
|||
VALUE "Comments", "Go go-karting with Dr. Robotnik!\0"
|
||||
VALUE "CompanyName", "Kart Krew Dev\0"
|
||||
VALUE "FileDescription", "Dr. Robotnik's Ring Racers\0"
|
||||
VALUE "FileVersion", VERSIONSTRING_RC
|
||||
VALUE "FileVersion", "2.4"
|
||||
VALUE "InternalName", "ringracers\0"
|
||||
VALUE "LegalCopyright", "Copyright 2018-2024 Kart Krew Dev\0"
|
||||
VALUE "LegalTrademarks", "Dr. Robotnik and related characters are trademarks of Sega.\0"
|
||||
VALUE "OriginalFilename", "ringracers.exe\0"
|
||||
VALUE "PrivateBuild", "\0"
|
||||
VALUE "ProductName", "Dr. Robotnik's Ring Racers\0"
|
||||
VALUE "ProductVersion", VERSIONSTRING_RC
|
||||
VALUE "ProductVersion", "2.4"
|
||||
VALUE "SpecialBuild", "\0"
|
||||
END
|
||||
END
|
||||
|
|
|
|||
|
|
@ -2516,6 +2516,8 @@ void Y_PlayIntermissionMusic(void)
|
|||
Music_Play("intermission");
|
||||
}
|
||||
|
||||
extern "C" boolean blockreset;
|
||||
|
||||
//
|
||||
// Y_StartIntermission
|
||||
//
|
||||
|
|
@ -2538,7 +2540,6 @@ void Y_StartIntermission(void)
|
|||
I_Error("endtic is dirty");
|
||||
#endif
|
||||
|
||||
extern boolean blockreset;
|
||||
blockreset = false;
|
||||
|
||||
// set player Power Level type
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue