diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt index cde35d14..b7c98330 100644 --- a/cl_dll/CMakeLists.txt +++ b/cl_dll/CMakeLists.txt @@ -132,6 +132,9 @@ endif() if(WIN32) target_link_libraries( ${CLDLL_LIBRARY} user32.lib ) + if (GOLDSOURCE_SUPPORT) + target_link_libraries( ${CLDLL_LIBRARY} winmm.lib ) + endif() endif() set_target_properties (${CLDLL_LIBRARY} PROPERTIES diff --git a/cl_dll/wscript b/cl_dll/wscript index b7bf76e9..07dabf08 100644 --- a/cl_dll/wscript +++ b/cl_dll/wscript @@ -10,12 +10,15 @@ def options(opt): return def configure(conf): - if conf.env.GOLDSRC and conf.env.DEST_OS != 'win32': - conf.check_cc(lib='dl') - if conf.env.DEST_OS == 'win32': conf.check_cxx(lib='user32') + if conf.env.GOLDSRC: + if conf.env.DEST_OS == 'win32': + conf.check_cxx(lib='winmm') + else: + conf.check_cc(lib='dl') + def build(bld): source = bld.path.parent.ant_glob([ 'pm_shared/*.c' @@ -88,7 +91,6 @@ def build(bld): '.', 'hl/', '../dlls', - '../dlls/wpn_shared', '../common', '../engine', '../pm_shared', @@ -102,12 +104,15 @@ def build(bld): defines += ['GOLDSOURCE_SUPPORT'] libs = [] - if bld.env.GOLDSRC and bld.env.DEST_OS != 'win32': - libs += ['DL'] - if bld.env.DEST_OS == 'win32': libs += ["USER32"] + if bld.env.GOLDSRC: + if bld.env.DEST_OS == 'win32': + libs += ["WINMM"] + else: + libs += ['DL'] + if bld.env.DEST_OS not in ['android', 'dos']: install_path = os.path.join(bld.env.GAMEDIR, bld.env.CLIENT_DIR) else: @@ -125,3 +130,4 @@ def build(bld): subsystem = bld.env.MSVC_SUBSYSTEM, idx = bld.get_taskgen_count() ) + diff --git a/cmake/LibraryNaming.cmake b/cmake/LibraryNaming.cmake index 22581078..f4e3d4b0 100644 --- a/cmake/LibraryNaming.cmake +++ b/cmake/LibraryNaming.cmake @@ -7,13 +7,13 @@ check_symbol_exists(XASH_AMD64 "build.h" XASH_AMD64) check_symbol_exists(XASH_ANDROID "build.h" XASH_ANDROID) check_symbol_exists(XASH_APPLE "build.h" XASH_APPLE) check_symbol_exists(XASH_ARM "build.h" XASH_ARM) -check_symbol_exists(XASH_ARM64 "build.h" XASH_ARM64) check_symbol_exists(XASH_ARM_HARDFP "build.h" XASH_ARM_HARDFP) check_symbol_exists(XASH_ARM_SOFTFP "build.h" XASH_ARM_SOFTFP) check_symbol_exists(XASH_ARMv4 "build.h" XASH_ARMv4) check_symbol_exists(XASH_ARMv5 "build.h" XASH_ARMv5) check_symbol_exists(XASH_ARMv6 "build.h" XASH_ARMv6) check_symbol_exists(XASH_ARMv7 "build.h" XASH_ARMv7) +check_symbol_exists(XASH_ARMv8 "build.h" XASH_ARMv8) check_symbol_exists(XASH_BIG_ENDIAN "build.h" XASH_BIG_ENDIAN) check_symbol_exists(XASH_BSD "build.h" XASH_BSD) check_symbol_exists(XASH_E2K "build.h" XASH_E2K) @@ -55,11 +55,13 @@ if(XASH_AMD64) set(BUILDARCH "amd64") elseif(XASH_X86) set(BUILDARCH "") -elseif(XASH_ARM64) +elseif(XASH_ARM AND XASH_64BIT) set(BUILDARCH "arm64") elseif(XASH_ARM) set(BUILDARCH "armv") - if(XASH_ARMv7) + if(XASH_ARMv8) + set(BUILDARCH "${BUILDARCH}8_32") + elseif(XASH_ARMv7) set(BUILDARCH "${BUILDARCH}7") elseif(XASH_ARMv6) set(BUILDARCH "${BUILDARCH}6") diff --git a/dlls/basemonster.h b/dlls/basemonster.h index 2234aaf9..a5f7f459 100644 --- a/dlls/basemonster.h +++ b/dlls/basemonster.h @@ -328,5 +328,7 @@ public: BOOL CineCleanup(); CBaseEntity* DropItem( const char *pszItemName, const Vector &vecPos, const Vector &vecAng );// drop an item. + + float m_flLastYawTime; }; #endif // BASEMONSTER_H diff --git a/dlls/game.cpp b/dlls/game.cpp index c48b44b3..72d0b75f 100644 --- a/dlls/game.cpp +++ b/dlls/game.cpp @@ -32,9 +32,10 @@ cvar_t timelimit = { "mp_timelimit","0", FCVAR_SERVER }; cvar_t friendlyfire = { "mp_friendlyfire","0", FCVAR_SERVER }; cvar_t falldamage = { "mp_falldamage","0", FCVAR_SERVER }; cvar_t weaponstay = { "mp_weaponstay","0", FCVAR_SERVER }; -cvar_t selfgauss = { "mp_selfgauss", "1", FCVAR_SERVER }; -cvar_t chargerfix = { "mp_chargerfix", "0", FCVAR_SERVER }; -cvar_t satchelfix = { "mp_satchelfix", "0", FCVAR_SERVER }; +cvar_t selfgauss = { "selfgauss", "1", FCVAR_SERVER }; +cvar_t chargerfix = { "chargerfix", "0", FCVAR_SERVER }; +cvar_t satchelfix = { "satchelfix", "0", FCVAR_SERVER }; +cvar_t monsteryawspeedfix = { "monsteryawspeedfix", "0", FCVAR_SERVER }; cvar_t forcerespawn = { "mp_forcerespawn","1", FCVAR_SERVER }; cvar_t flashlight = { "mp_flashlight","0", FCVAR_SERVER }; cvar_t aimcrosshair = { "mp_autocrosshair","1", FCVAR_SERVER }; @@ -482,6 +483,7 @@ void GameDLLInit( void ) CVAR_REGISTER( &selfgauss ); CVAR_REGISTER( &chargerfix ); CVAR_REGISTER( &satchelfix ); + CVAR_REGISTER( &monsteryawspeedfix ); CVAR_REGISTER( &forcerespawn ); CVAR_REGISTER( &flashlight ); CVAR_REGISTER( &aimcrosshair ); diff --git a/dlls/game.h b/dlls/game.h index 026070ff..e60cb4da 100644 --- a/dlls/game.h +++ b/dlls/game.h @@ -30,6 +30,7 @@ extern cvar_t weaponstay; extern cvar_t selfgauss; extern cvar_t chargerfix; extern cvar_t satchelfix; +extern cvar_t monsteryawspeedfix; extern cvar_t forcerespawn; extern cvar_t flashlight; extern cvar_t aimcrosshair; diff --git a/dlls/monsters.cpp b/dlls/monsters.cpp index 57de767d..ab82cca5 100644 --- a/dlls/monsters.cpp +++ b/dlls/monsters.cpp @@ -2022,6 +2022,8 @@ void CBaseMonster::MonsterInit( void ) SetThink( &CBaseMonster::MonsterInitThink ); pev->nextthink = gpGlobals->time + 0.1f; SetUse( &CBaseMonster::MonsterUse ); + + m_flLastYawTime = gpGlobals->time; } //========================================================= @@ -2504,7 +2506,17 @@ float CBaseMonster::ChangeYaw( int yawSpeed ) ideal = pev->ideal_yaw; if( current != ideal ) { - speed = (float)yawSpeed * gpGlobals->frametime * 10; + if( monsteryawspeedfix.value ) + { + float delta; + + delta = Q_min( gpGlobals->time - m_flLastYawTime, 0.25f ); + + speed = (float)yawSpeed * delta * 2; + } + else + speed = (float)yawSpeed * gpGlobals->frametime * 10; + move = ideal - current; if( ideal > current ) @@ -2548,6 +2560,8 @@ float CBaseMonster::ChangeYaw( int yawSpeed ) else move = 0; + m_flLastYawTime = gpGlobals->time; + return move; } diff --git a/dlls/multiplay_gamerules.cpp b/dlls/multiplay_gamerules.cpp index 90dc4f3b..5a4b14e0 100644 --- a/dlls/multiplay_gamerules.cpp +++ b/dlls/multiplay_gamerules.cpp @@ -324,6 +324,12 @@ BOOL CHalfLifeMultiplay::FShouldSwitchWeapon( CBasePlayer *pPlayer, CBasePlayerI return FALSE; } + if( pPlayer->m_iAutoWepSwitch == 2 + && pPlayer->m_afButtonLast & ( IN_ATTACK | IN_ATTACK2 ) ) + { + return FALSE; + } + if( !pPlayer->m_pActiveItem->CanHolster() ) { // can't put away the active item. @@ -573,7 +579,11 @@ void CHalfLifeMultiplay::PlayerSpawn( CBasePlayer *pPlayer ) { BOOL addDefault; CBaseEntity *pWeaponEntity = NULL; + int iOldAutoWepSwitch; + + iOldAutoWepSwitch = pPlayer->m_iAutoWepSwitch; + pPlayer->m_iAutoWepSwitch = 1; pPlayer->pev->weapons |= ( 1 << WEAPON_SUIT ); addDefault = TRUE; @@ -590,6 +600,8 @@ void CHalfLifeMultiplay::PlayerSpawn( CBasePlayer *pPlayer ) pPlayer->GiveNamedItem( "weapon_9mmhandgun" ); pPlayer->GiveAmmo( 68, "9mm", _9MM_MAX_CARRY );// 4 full reloads } + + pPlayer->m_iAutoWepSwitch = iOldAutoWepSwitch; } //========================================================= diff --git a/dlls/player.cpp b/dlls/player.cpp index 0a51dcbc..86ba38a6 100644 --- a/dlls/player.cpp +++ b/dlls/player.cpp @@ -2876,8 +2876,6 @@ void CBasePlayer::Spawn( void ) m_flNextChatTime = gpGlobals->time; - m_iAutoWepSwitch = 1; - g_pGameRules->PlayerSpawn( this ); } diff --git a/dlls/singleplay_gamerules.cpp b/dlls/singleplay_gamerules.cpp index 7f722e30..ba73747b 100644 --- a/dlls/singleplay_gamerules.cpp +++ b/dlls/singleplay_gamerules.cpp @@ -80,6 +80,12 @@ BOOL CHalfLifeRules::FShouldSwitchWeapon( CBasePlayer *pPlayer, CBasePlayerItem return FALSE; } + if( pPlayer->m_iAutoWepSwitch == 2 + && pPlayer->m_afButtonLast & ( IN_ATTACK | IN_ATTACK2 ) ) + { + return FALSE; + } + if( !pPlayer->m_pActiveItem->CanHolster() ) { return FALSE; diff --git a/dlls/wscript b/dlls/wscript index 5f17aefc..33d37185 100644 --- a/dlls/wscript +++ b/dlls/wscript @@ -21,7 +21,6 @@ def configure(conf): conf.fatal("Could not find hl.def") def build(bld): - defines = [] source = bld.path.parent.ant_glob([ 'pm_shared/*.c', ]) @@ -128,16 +127,8 @@ def build(bld): 'zombie.cpp' ] - if bld.env.VOICEMGR: - source += bld.path.parent.ant_glob([ - 'game_shared/voice_gamemgr.cpp', - ]) - else: - defines += ['NO_VOICEGAMEMGR'] - includes = [ '.', - 'wpn_shared', '../common', '../engine', '../pm_shared', @@ -145,6 +136,15 @@ def build(bld): '../public' ] + defines = [] + + if bld.env.VOICEMGR: + source += bld.path.parent.ant_glob([ + 'game_shared/voice_gamemgr.cpp', + ]) + else: + defines += ['NO_VOICEGAMEMGR'] + libs = [] if bld.env.DEST_OS not in ['android', 'dos']: @@ -164,3 +164,4 @@ def build(bld): subsystem = bld.env.MSVC_SUBSYSTEM, idx = bld.get_taskgen_count() ) + diff --git a/public/build.h b/public/build.h index a087c22c..043a11cd 100644 --- a/public/build.h +++ b/public/build.h @@ -45,13 +45,13 @@ For more information, please refer to #undef XASH_ANDROID #undef XASH_APPLE #undef XASH_ARM -#undef XASH_ARM64 #undef XASH_ARM_HARDFP #undef XASH_ARM_SOFTFP #undef XASH_ARMv4 #undef XASH_ARMv5 #undef XASH_ARMv6 #undef XASH_ARMv7 +#undef XASH_ARMv8 //#undef XASH_BIG_ENDIAN #undef XASH_BSD #undef XASH_E2K @@ -169,14 +169,13 @@ For more information, please refer to #define XASH_AMD64 1 #elif defined(__i386__) || defined(_X86_) || defined(_M_IX86) #define XASH_X86 1 -#elif defined __aarch64__ +#elif defined __aarch64__ || defined _M_ARM64 #define XASH_64BIT 1 - #define XASH_ARM64 1 + #define XASH_ARM 8 #elif defined __arm__ || defined _M_ARM - #if defined _M_ARM - // msvc can only armv7 ? - #define XASH_ARM 7 - #elif __ARM_ARCH == 7 || __ARM_ARCH_7__ + #if __ARM_ARCH == 8 || __ARM_ARCH_8__ + #define XASH_ARM 8 + #elif __ARM_ARCH == 7 || __ARM_ARCH_7__ || defined _M_ARM // msvc can only armv7 in 32 bit #define XASH_ARM 7 #elif __ARM_ARCH == 6 || __ARM_ARCH_6__ || __ARM_ARCH_6J__ #define XASH_ARM 6 @@ -212,7 +211,9 @@ For more information, please refer to #define XASH_64BIT 1 #endif -#if XASH_ARM == 7 +#if XASH_ARM == 8 + #define XASH_ARMv8 1 +#elif XASH_ARM == 7 #define XASH_ARMv7 1 #elif XASH_ARM == 6 #define XASH_ARMv6 1 diff --git a/scripts/waifulib/library_naming.py b/scripts/waifulib/library_naming.py index 827ef76c..6ee9a725 100644 --- a/scripts/waifulib/library_naming.py +++ b/scripts/waifulib/library_naming.py @@ -25,13 +25,13 @@ DEFINES = [ 'XASH_ANDROID', 'XASH_APPLE', 'XASH_ARM', -'XASH_ARM64', 'XASH_ARM_HARDFP', 'XASH_ARM_SOFTFP', 'XASH_ARMv4', 'XASH_ARMv5', 'XASH_ARMv6', 'XASH_ARMv7', +'XASH_ARMv8', 'XASH_BIG_ENDIAN', 'XASH_BSD', 'XASH_E2K', @@ -61,9 +61,9 @@ def configure(conf): 'fragment': CHECK_SYMBOL_EXISTS_FRAGMENT % (x, x), 'includes': [conf.path.find_node('public/').abspath()], 'define_name': x }, DEFINES ) - + conf.multicheck(*tests, msg = '', mandatory = False, quiet = True) - + # engine/common/build.c if conf.env.XASH_ANDROID: buildos = "android" @@ -87,11 +87,13 @@ def configure(conf): buildarch = "amd64" elif conf.env.XASH_X86: buildarch = "" - elif conf.env.XASH_ARM64: + elif conf.env.XASH_ARM and conf.env.XASH_64BIT: buildarch = "arm64" elif conf.env.XASH_ARM: buildarch = "armv" - if conf.env.XASH_ARMv7: + if conf.env.XASH_ARMv8: + buildarch += "8_32" + elif conf.env.XASH_ARMv7: buildarch += "7" elif conf.env.XASH_ARMv6: buildarch += "6" diff --git a/wscript b/wscript index b01647df..b08bd906 100644 --- a/wscript +++ b/wscript @@ -271,6 +271,10 @@ def configure(conf): conf.env.cxxshlib_PATTERN = conf.env.cxxshlib_PATTERN[3:] conf.define('CLIENT_WEAPONS', '1') + conf.define('CROWBAR_IDLE_ANIM', False) + conf.define('CROWBAR_DELAY_FIX', False) + conf.define('CROWBAR_FIX_RAPID_CROWBAR', False) + conf.define('GAUSS_OVERCHARGE_FIX', False) if conf.env.DEST_OS == 'android' or conf.options.ENABLE_MOD_HACKS: conf.define('MOBILE_HACKS', '1')