mirror of
https://github.com/YGGverse/hlsdk-portable.git
synced 2025-02-06 12:04:17 +00:00
Merge branch 'master' into thegate
This commit is contained in:
commit
c08417e484
@ -21,17 +21,25 @@
|
||||
#
|
||||
|
||||
cmake_minimum_required(VERSION 2.6.0)
|
||||
|
||||
# Install custom module path
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
|
||||
|
||||
include(VSForceXPToolchain) # Force XP toolchain for Visual Studio
|
||||
|
||||
project (HLSDK-XASH3D)
|
||||
|
||||
#--------------
|
||||
# USER DEFINES \
|
||||
################\
|
||||
option(64BIT "Allow 64 Bit builds" OFF)
|
||||
option(USE_VGUI "Enable VGUI1. UNDONE" OFF)
|
||||
option(USE_VGUI2 "Enable VGUI2. UNDONE" OFF)
|
||||
option(USE_VOICEMGR "Enable VOICE MANAGER." OFF)
|
||||
option(BUILD_CLIENT "Build client dll" ON)
|
||||
option(BUILD_SERVER "Build server dll" ON)
|
||||
option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" OFF)
|
||||
option(64BIT "Disable auto -m32 appending to compiler flags" OFF)
|
||||
set(GAMEDIR "valve" CACHE STRING "Gamedir path")
|
||||
set(SERVER_INSTALL_DIR "dlls" CACHE STRING "Where put server dll")
|
||||
set(CLIENT_INSTALL_DIR "cl_dlls" CACHE STRING "Where put client dll")
|
||||
@ -43,15 +51,35 @@ set(SERVER_LIBRARY_NAME "hl" CACHE STRING "Library name for Linux/MacOS/Windows"
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
|
||||
|
||||
# Build 32-bit Xash on 64-bit, because Xash3D not support this
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT 64BIT)
|
||||
if(MSVC)
|
||||
error("UNDONE: set 32 build flags")
|
||||
error("UNDONE: set 32 build flags")
|
||||
else()
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
|
||||
endif()
|
||||
set(CMAKE_SIZEOF_VOID_P 4)
|
||||
endif()
|
||||
|
||||
if(64BIT AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
message(FATAL_ERROR "You enabled XASH_64BIT, but compiler can't create 64 bit code!")
|
||||
endif()
|
||||
|
||||
if(64BIT)
|
||||
message(STATUS "Building for 64 Bit")
|
||||
else()
|
||||
message(STATUS "Building for 32 Bit")
|
||||
endif()
|
||||
|
||||
# add_compile_options for older cmake versions
|
||||
if(${CMAKE_VERSION} VERSION_LESS "3.0.2")
|
||||
macro(add_compile_options)
|
||||
set(list_var "${ARGV}")
|
||||
foreach(arg IN LISTS list_var)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${arg}")
|
||||
endforeach()
|
||||
endmacro()
|
||||
endif()
|
||||
|
||||
if(BUILD_CLIENT)
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Half-Life SDK for Xash3D [![Build Status](https://travis-ci.org/FWGS/hlsdk-xash3d.svg)](https://travis-ci.org/FWGS/hlsdk-xash3d)
|
||||
# Half-Life SDK for Xash3D [![Build Status](https://travis-ci.org/FWGS/hlsdk-xash3d.svg)](https://travis-ci.org/FWGS/hlsdk-xash3d) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/github/FWGS/hlsdk-xash3d?svg=true)](https://ci.appveyor.com/project/a1batross/hlsdk-xash3d)
|
||||
|
||||
Half-Life SDK for Xash3D & GoldSource with some fixes.
|
||||
|
||||
@ -31,7 +31,7 @@ These scripts also can be ran via wine:
|
||||
|
||||
The libraries built this way are always GoldSource compatible.
|
||||
|
||||
There're dsp projects for MVS 6 in `cl_dll` and `dlls` directories, but we don't keep them up-to-date. You're free to adapt them for yourself and try to import into the newer MVS versions.
|
||||
There're dsp projects for Visual Studio 6 in `cl_dll` and `dlls` directories, but we don't keep them up-to-date. You're free to adapt them for yourself and try to import into the newer Visual Studio versions.
|
||||
|
||||
#### Using mingw
|
||||
|
||||
@ -44,7 +44,7 @@ TODO
|
||||
|
||||
### OS X
|
||||
|
||||
TODO
|
||||
Nothing here.
|
||||
|
||||
### FreeBSD
|
||||
|
||||
|
28
appveyor.yml
Normal file
28
appveyor.yml
Normal file
@ -0,0 +1,28 @@
|
||||
version: 1.0.{build}
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- os: Visual Studio 2013
|
||||
GENERATOR_NAME: "Visual Studio 12 2013"
|
||||
- os: Visual Studio 2015
|
||||
GENERATOR_NAME: "Visual Studio 14 2015"
|
||||
# TODO: Uncomment when AppVeyor will provide XP toolchain for VS2017
|
||||
# - os: Visual Studio 2017
|
||||
# GENERATOR_NAME: "Visual Studio 15 2017"
|
||||
|
||||
clone_folder: c:\projects\xash\hlsdk-xash3d
|
||||
|
||||
build:
|
||||
project: INSTALL.vcxproj
|
||||
verbosity: normal
|
||||
|
||||
configuration:
|
||||
- Debug
|
||||
|
||||
before_build:
|
||||
- git submodule update --init --recursive
|
||||
- cmake -G "%GENERATOR_NAME%"
|
@ -93,7 +93,7 @@ SRCS+=./scoreboard.cpp
|
||||
SRCS+=./MOTD.cpp
|
||||
SRCS+=./TheGate/scope.cpp
|
||||
INCLUDES = -I../common -I. -I../game_shared -I../pm_shared -I../engine -I../dlls -I../utils/false_vgui/include
|
||||
DEFINES = -Wno-write-strings -DLINUX -D_LINUX -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -DCLIENT_WEAPONS -DCLIENT_DLL -w
|
||||
DEFINES = -Wno-write-strings -DLINUX -D_LINUX -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -DCLIENT_WEAPONS -DCLIENT_DLL -w -D_snprintf=snprintf
|
||||
|
||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/. \
|
||||
$(LOCAL_PATH)/../common \
|
||||
|
@ -25,11 +25,22 @@ project (CLDLL)
|
||||
|
||||
set (CLDLL_LIBRARY client)
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-write-strings -DLINUX -D_LINUX -Dstricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -DCLIENT_WEAPONS -DCLIENT_DLL -w")
|
||||
if (GOLDSOURCE_SUPPORT)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGOLDSOURCE_SUPPORT")
|
||||
|
||||
add_definitions(-DCLIENT_WEAPONS -DCLIENT_DLL)
|
||||
|
||||
if(NOT MSVC)
|
||||
add_compile_options(-fno-exceptions) # GCC/Clang flag
|
||||
add_compile_options(-Wno-write-strings) # GCC/Clang flag
|
||||
add_definitions(-D_LINUX -DLINUX) # It seems enough for all non-Win32 systems
|
||||
add_definitions(-Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf )
|
||||
else()
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
|
||||
|
||||
if (GOLDSOURCE_SUPPORT)
|
||||
add_definitions(-DGOLDSOURCE_SUPPORT)
|
||||
endif()
|
||||
|
||||
|
||||
set (CLDLL_SOURCES
|
||||
../dlls/crossbow.cpp
|
||||
@ -115,8 +126,13 @@ set_target_properties (${CLDLL_LIBRARY} PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE 1)
|
||||
|
||||
if(APPLE OR WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
set(CLDLL_NAME "client")
|
||||
if(64BIT)
|
||||
set(CLDLL_NAME "client64")
|
||||
endif()
|
||||
|
||||
set_target_properties(${CLDLL_LIBRARY} PROPERTIES
|
||||
OUTPUT_NAME "client"
|
||||
OUTPUT_NAME ${CLDLL_NAME}
|
||||
PREFIX "")
|
||||
endif()
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1426,6 +1426,17 @@ enum EGON_FIREMODE
|
||||
|
||||
BEAM *pBeam;
|
||||
BEAM *pBeam2;
|
||||
TEMPENTITY *pFlare; // Vit_amiN: egon's beam flare
|
||||
|
||||
void EV_EgonFlareCallback( struct tempent_s *ent, float frametime, float currenttime )
|
||||
{
|
||||
float delta = currenttime - ent->tentOffset.z; // time past since the last scale
|
||||
if( delta >= ent->tentOffset.y )
|
||||
{
|
||||
ent->entity.curstate.scale += ent->tentOffset.x * delta;
|
||||
ent->tentOffset.z = currenttime;
|
||||
}
|
||||
}
|
||||
|
||||
void EV_EgonFire( event_args_t *args )
|
||||
{
|
||||
@ -1463,7 +1474,7 @@ void EV_EgonFire( event_args_t *args )
|
||||
if( EV_IsLocal( idx ) )
|
||||
gEngfuncs.pEventAPI->EV_WeaponAnimation( g_fireAnims1[gEngfuncs.pfnRandomLong( 0, 3 )], 1 );
|
||||
|
||||
if( iStartup == 1 && EV_IsLocal( idx ) && !pBeam && !pBeam2 && cl_lw->value ) //Adrian: Added the cl_lw check for those lital people that hate weapon prediction.
|
||||
if( iStartup == 1 && EV_IsLocal( idx ) && !( pBeam || pBeam2 || pFlare ) && cl_lw->value ) //Adrian: Added the cl_lw check for those lital people that hate weapon prediction.
|
||||
{
|
||||
vec3_t vecSrc, vecEnd, angles, forward, right, up;
|
||||
pmtrace_t tr;
|
||||
@ -1511,8 +1522,16 @@ void EV_EgonFire( event_args_t *args )
|
||||
pBeam->flags |= ( FBEAM_SINENOISE );
|
||||
|
||||
pBeam2 = gEngfuncs.pEfxAPI->R_BeamEntPoint( idx | 0x1000, tr.endpos, iBeamModelIndex, 99999, 5.0, 0.08, 0.7, 25, 0, 0, r, g, b );
|
||||
|
||||
// Vit_amiN: egon beam flare
|
||||
pFlare = gEngfuncs.pEfxAPI->R_TempSprite( tr.endpos, vec3_origin, 1.0, gEngfuncs.pEventAPI->EV_FindModelIndex( EGON_FLARE_SPRITE ), kRenderGlow, kRenderFxNoDissipation, 1.0, 99999, FTENT_SPRCYCLE | FTENT_PERSIST );
|
||||
}
|
||||
}
|
||||
|
||||
if( pFlare ) // Vit_amiN: store the last mode for EV_EgonStop()
|
||||
{
|
||||
pFlare->tentOffset.x = ( iFireMode == FIRE_WIDE ) ? 1.0f : 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void EV_EgonStop( event_args_t *args )
|
||||
@ -1541,6 +1560,26 @@ void EV_EgonStop( event_args_t *args )
|
||||
pBeam2->die = 0.0;
|
||||
pBeam2 = NULL;
|
||||
}
|
||||
|
||||
if( pFlare ) // Vit_amiN: egon beam flare
|
||||
{
|
||||
pFlare->die = gEngfuncs.GetClientTime();
|
||||
|
||||
if( gEngfuncs.GetMaxClients() == 1 || !(pFlare->flags & FTENT_NOMODEL) )
|
||||
{
|
||||
if( pFlare->tentOffset.x != 0.0f ) // true for iFireMode == FIRE_WIDE
|
||||
{
|
||||
pFlare->callback = &EV_EgonFlareCallback;
|
||||
pFlare->fadeSpeed = 2.0; // fade out will take 0.5 sec
|
||||
pFlare->tentOffset.x = 10.0; // scaling speed per second
|
||||
pFlare->tentOffset.y = 0.1; // min time between two scales
|
||||
pFlare->tentOffset.z = pFlare->die; // the last callback run time
|
||||
pFlare->flags = FTENT_FADEOUT | FTENT_CLIENTCUSTOM;
|
||||
}
|
||||
}
|
||||
|
||||
pFlare = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
//======================
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -231,7 +231,8 @@ int CHudHealth::Draw( float flTime )
|
||||
|
||||
int iHeight = gHUD.m_iFontHeight;
|
||||
int iWidth = HealthWidth / 10;
|
||||
FillRGBA( x, y, iWidth, iHeight, 255, 160, 0, a );
|
||||
UnpackRGB( r, g, b, RGB_YELLOWISH );
|
||||
FillRGBA( x, y, iWidth, iHeight, r, g, b, a );
|
||||
}
|
||||
|
||||
DrawDamage( flTime );
|
||||
|
@ -29,6 +29,7 @@
|
||||
|
||||
extern BEAM *pBeam;
|
||||
extern BEAM *pBeam2;
|
||||
extern TEMPENTITY *pFlare; // Vit_amiN: egon's energy flare
|
||||
void HUD_GetLastOrg( float *org );
|
||||
|
||||
void UpdateBeams( void )
|
||||
@ -75,6 +76,28 @@ void UpdateBeams( void )
|
||||
pBeam2->target = tr.endpos;
|
||||
pBeam2->die = gEngfuncs.GetClientTime() + 0.1; // We keep it alive just a little bit forward in the future, just in case.
|
||||
}
|
||||
|
||||
if( pFlare ) // Vit_amiN: beam flare
|
||||
{
|
||||
pFlare->entity.origin = tr.endpos;
|
||||
pFlare->die = gEngfuncs.GetClientTime() + 0.1; // We keep it alive just a little bit forward in the future, just in case.
|
||||
|
||||
if( gEngfuncs.GetMaxClients() != 1 ) // Singleplayer always draws the egon's energy beam flare
|
||||
{
|
||||
pFlare->flags |= FTENT_NOMODEL;
|
||||
|
||||
if( !( tr.allsolid || tr.ent <= 0 || tr.fraction == 1.0 ) ) // Beam hit some non-world entity
|
||||
{
|
||||
physent_t *pEntity = gEngfuncs.pEventAPI->EV_GetPhysent( tr.ent );
|
||||
|
||||
// Not the world, let's assume that we hit something organic ( dog, cat, uncle joe, etc )
|
||||
if( pEntity && !( pEntity->solid == SOLID_BSP || pEntity->movetype == MOVETYPE_PUSHSTEP ) )
|
||||
{
|
||||
pFlare->flags &= ~FTENT_NOMODEL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -86,6 +109,6 @@ Add game specific, client-side objects here
|
||||
*/
|
||||
void Game_AddObjects( void )
|
||||
{
|
||||
if( pBeam && pBeam2 )
|
||||
if( pBeam || pBeam2 || pFlare ) // Vit_amiN: egon flare added
|
||||
UpdateBeams();
|
||||
}
|
||||
|
@ -34,6 +34,7 @@
|
||||
|
||||
extern globalvars_t *gpGlobals;
|
||||
extern int g_iUser1;
|
||||
extern bool g_hasPredictedFOV; // Vit_amiN: from HUD
|
||||
|
||||
// Pool of client side entities/entvars_t
|
||||
static entvars_t ev[32];
|
||||
@ -881,6 +882,7 @@ void HUD_WeaponsPostThink( local_state_s *from, local_state_s *to, usercmd_t *cm
|
||||
to->client.fuser2 = player.m_flNextAmmoBurn;
|
||||
to->client.fuser3 = player.m_flAmmoStartCharge;
|
||||
to->client.maxspeed = player.pev->maxspeed;
|
||||
g_hasPredictedFOV = true; // Vit_amiN: ready
|
||||
|
||||
//HL Weapons
|
||||
to->client.vuser1[0] = player.ammo_9mm;
|
||||
|
@ -415,6 +415,7 @@ int CHud::MsgFunc_Logo( const char *pszName, int iSize, void *pbuf )
|
||||
}
|
||||
|
||||
float g_lastFOV = 0.0;
|
||||
bool g_hasPredictedFOV = false; // Vit_amiN: it'll became true after the first prediction
|
||||
|
||||
/*
|
||||
============
|
||||
@ -516,7 +517,7 @@ int CHud::MsgFunc_SetFOV( const char *pszName, int iSize, void *pbuf )
|
||||
int def_fov = CVAR_GET_FLOAT( "default_fov" );
|
||||
|
||||
//Weapon prediction already takes care of changing the fog. ( g_lastFOV ).
|
||||
if( cl_lw && cl_lw->value )
|
||||
if( g_hasPredictedFOV )
|
||||
return 1;
|
||||
|
||||
g_lastFOV = newfov;
|
||||
|
@ -230,7 +230,7 @@ public:
|
||||
void InitHUDData( void );
|
||||
int VidInit( void );
|
||||
int Draw( float flTime );
|
||||
int DrawPlayers( int xoffset, float listslot, int nameoffset = 0, char *team = NULL ); // returns the ypos where it finishes drawing
|
||||
int DrawPlayers( int xoffset, float listslot, int nameoffset = 0, const char *team = NULL ); // returns the ypos where it finishes drawing
|
||||
void UserCmd_ShowScores( void );
|
||||
void UserCmd_HideScores( void );
|
||||
int MsgFunc_ScoreInfo( const char *pszName, int iSize, void *pbuf );
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -25,6 +25,10 @@
|
||||
|
||||
extern BEAM *pBeam;
|
||||
extern BEAM *pBeam2;
|
||||
extern TEMPENTITY *pFlare; // Vit_amiN
|
||||
|
||||
extern float g_lastFOV; // Vit_amiN
|
||||
extern bool g_hasPredictedFOV; // Vit_amiN
|
||||
|
||||
/// USER-DEFINED SERVER MESSAGE HANDLERS
|
||||
|
||||
@ -48,6 +52,11 @@ int CHud::MsgFunc_ResetHUD( const char *pszName, int iSize, void *pbuf )
|
||||
// reset concussion effect
|
||||
m_iConcussionEffect = 0;
|
||||
|
||||
// Vit_amiN: reset the FOV
|
||||
m_iFOV = 0; // default_fov
|
||||
g_lastFOV = 0.0f;
|
||||
g_hasPredictedFOV = false;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -72,6 +81,7 @@ void CHud::MsgFunc_InitHUD( const char *pszName, int iSize, void *pbuf )
|
||||
|
||||
//Probably not a good place to put this.
|
||||
pBeam = pBeam2 = NULL;
|
||||
pFlare = NULL; // Vit_amiN: clear egon's beam flare
|
||||
}
|
||||
|
||||
int CHud::MsgFunc_GameMode( const char *pszName, int iSize, void *pbuf )
|
||||
@ -107,10 +117,14 @@ int CHud::MsgFunc_Damage( const char *pszName, int iSize, void *pbuf )
|
||||
|
||||
int CHud::MsgFunc_Concuss( const char *pszName, int iSize, void *pbuf )
|
||||
{
|
||||
int r, g, b;
|
||||
BEGIN_READ( pbuf, iSize );
|
||||
m_iConcussionEffect = READ_BYTE();
|
||||
if( m_iConcussionEffect )
|
||||
this->m_StatusIcons.EnableIcon( "dmg_concuss", 255, 160, 0 );
|
||||
{
|
||||
UnpackRGB( r, g, b, RGB_YELLOWISH ); // Vit_amiN: fixed
|
||||
this->m_StatusIcons.EnableIcon( "dmg_concuss", r, g, b );
|
||||
}
|
||||
else
|
||||
this->m_StatusIcons.DisableIcon( "dmg_concuss" );
|
||||
return 1;
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
@ -1368,7 +1368,7 @@ void IN_JoyMove ( float frametime, usercmd_t *cmd )
|
||||
// y=ax^b; where a = 300 and b = 1.3
|
||||
// also x values are in increments of 800 (so this is factored out)
|
||||
// then bounds check result to level out excessively high spin rates
|
||||
fTemp = 300.0 * pow(abs(fAxisValue) / 800.0, 1.3);
|
||||
fTemp = 300.0 * pow(fabs(fAxisValue) / 800.0, 1.3);
|
||||
if (fTemp > 14000.0)
|
||||
fTemp = 14000.0;
|
||||
// restore direction information
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -92,17 +92,18 @@ We have a minimum width of 1-320 - we could have the field widths scale with it?
|
||||
|
||||
// X positions
|
||||
// relative to the side of the scoreboard
|
||||
#define NAME_RANGE_MIN -65
|
||||
#define NAME_RANGE_MAX 180
|
||||
#define KILLS_RANGE_MIN 165
|
||||
#define KILLS_RANGE_MAX 205
|
||||
#define DIVIDER_POS 215
|
||||
#define DEATHS_RANGE_MIN 220
|
||||
#define DEATHS_RANGE_MAX 245
|
||||
#define PING_RANGE_MIN 280
|
||||
#define PING_RANGE_MAX 330
|
||||
#define PL_RANGE_MIN 350
|
||||
#define PL_RANGE_MAX 410
|
||||
#define NAME_RANGE_MIN 20
|
||||
#define NAME_RANGE_MAX 145
|
||||
#define NAME_RANGE_MODIFIER 120
|
||||
#define KILLS_RANGE_MIN 130
|
||||
#define KILLS_RANGE_MAX 170
|
||||
#define DIVIDER_POS 180
|
||||
#define DEATHS_RANGE_MIN 185
|
||||
#define DEATHS_RANGE_MAX 210
|
||||
#define PING_RANGE_MIN 245
|
||||
#define PING_RANGE_MAX 295
|
||||
#define PL_RANGE_MIN 315
|
||||
#define PL_RANGE_MAX 375
|
||||
|
||||
int SCOREBOARD_WIDTH = 320;
|
||||
|
||||
@ -128,11 +129,11 @@ int CHudScoreboard::Draw( float fTime )
|
||||
if( cl_showpacketloss && cl_showpacketloss->value && ( ScreenWidth >= 400 ) )
|
||||
{
|
||||
can_show_packetloss = 1;
|
||||
SCOREBOARD_WIDTH = 400;
|
||||
SCOREBOARD_WIDTH = ( ScreenWidth >= 520 ) ? ( 400 - NAME_RANGE_MODIFIER ) : 400;
|
||||
}
|
||||
else
|
||||
{
|
||||
SCOREBOARD_WIDTH = 320;
|
||||
SCOREBOARD_WIDTH = ( ScreenWidth >= 440 ) ? ( 320 - NAME_RANGE_MODIFIER ) : 320;
|
||||
}
|
||||
|
||||
// just sort the list on the fly
|
||||
@ -145,7 +146,14 @@ int CHudScoreboard::Draw( float fTime )
|
||||
int xpos = NAME_RANGE_MIN + xpos_rel;
|
||||
|
||||
FAR_RIGHT = can_show_packetloss ? PL_RANGE_MAX : PING_RANGE_MAX;
|
||||
FAR_RIGHT += 125;
|
||||
FAR_RIGHT += 5;
|
||||
|
||||
if( ( ScreenWidth >= 440 && !can_show_packetloss ) || ( ScreenWidth >= 520 && can_show_packetloss ) )
|
||||
{
|
||||
xpos -= NAME_RANGE_MODIFIER;
|
||||
FAR_RIGHT += NAME_RANGE_MODIFIER;
|
||||
}
|
||||
|
||||
if( cl_scoreboard_bg && cl_scoreboard_bg->value )
|
||||
gHUD.DrawDarkRectangle( xpos - 5, ypos - 5, FAR_RIGHT, ROW_RANGE_MAX );
|
||||
if( !gHUD.m_Teamplay )
|
||||
@ -165,7 +173,7 @@ int CHudScoreboard::Draw( float fTime )
|
||||
|
||||
list_slot += 1.2;
|
||||
ypos = ROW_RANGE_MIN + ( list_slot * ROW_GAP );
|
||||
xpos = NAME_RANGE_MIN + xpos_rel;
|
||||
// xpos = NAME_RANGE_MIN + xpos_rel;
|
||||
FillRGBA( xpos - 4, ypos, FAR_RIGHT -2, 1, 255, 140, 0, 255 ); // draw the seperator line
|
||||
|
||||
list_slot += 0.8;
|
||||
@ -266,12 +274,18 @@ int CHudScoreboard::Draw( float fTime )
|
||||
break;
|
||||
|
||||
xpos = NAME_RANGE_MIN + xpos_rel;
|
||||
|
||||
if( ( ScreenWidth >= 440 && !can_show_packetloss ) || ( ScreenWidth >= 520 && can_show_packetloss ) )
|
||||
{
|
||||
xpos -= NAME_RANGE_MODIFIER;
|
||||
}
|
||||
|
||||
int r = 255, g = 225, b = 55; // draw the stuff kinda yellowish
|
||||
|
||||
if( team_info->ownteam ) // if it is their team, draw the background different color
|
||||
{
|
||||
// overlay the background in blue, then draw the score text over it
|
||||
FillRGBA( NAME_RANGE_MIN + xpos_rel - 5, ypos, FAR_RIGHT, ROW_GAP, 0, 0, 255, 70 );
|
||||
FillRGBA( xpos - 5, ypos, FAR_RIGHT, ROW_GAP, 0, 0, 255, 70 );
|
||||
}
|
||||
|
||||
// draw their name (left to right)
|
||||
@ -323,7 +337,7 @@ int CHudScoreboard::Draw( float fTime )
|
||||
extern float *GetClientColor( int client );
|
||||
|
||||
// returns the ypos where it finishes drawing
|
||||
int CHudScoreboard::DrawPlayers( int xpos_rel, float list_slot, int nameoffset, char *team )
|
||||
int CHudScoreboard::DrawPlayers( int xpos_rel, float list_slot, int nameoffset, const char *team )
|
||||
{
|
||||
int can_show_packetloss = 0;
|
||||
int FAR_RIGHT;
|
||||
@ -340,7 +354,12 @@ int CHudScoreboard::DrawPlayers( int xpos_rel, float list_slot, int nameoffset,
|
||||
}
|
||||
|
||||
FAR_RIGHT = can_show_packetloss ? PL_RANGE_MAX : PING_RANGE_MAX;
|
||||
FAR_RIGHT += 125;
|
||||
FAR_RIGHT += 5;
|
||||
|
||||
if( ( ScreenWidth >= 440 && !can_show_packetloss ) || ( ScreenWidth >= 520 && can_show_packetloss ) )
|
||||
{
|
||||
FAR_RIGHT += NAME_RANGE_MODIFIER;
|
||||
}
|
||||
|
||||
// draw the players, in order, and restricted to team if set
|
||||
while( 1 )
|
||||
@ -380,6 +399,12 @@ int CHudScoreboard::DrawPlayers( int xpos_rel, float list_slot, int nameoffset,
|
||||
break;
|
||||
|
||||
int xpos = NAME_RANGE_MIN + xpos_rel;
|
||||
|
||||
if( ( ScreenWidth >= 440 && !can_show_packetloss ) || ( ScreenWidth >= 520 && can_show_packetloss ) )
|
||||
{
|
||||
xpos -= NAME_RANGE_MODIFIER;
|
||||
}
|
||||
|
||||
int r = 255, g = 255, b = 255;
|
||||
float *colors = GetClientColor( best_player );
|
||||
r *= colors[0], g *= colors[1], b *= colors[2];
|
||||
@ -388,18 +413,18 @@ int CHudScoreboard::DrawPlayers( int xpos_rel, float list_slot, int nameoffset,
|
||||
if( pl_info->thisplayer )
|
||||
{
|
||||
// green is the suicide color? i wish this could do grey...
|
||||
FillRGBA( NAME_RANGE_MIN + xpos_rel - 5, ypos, FAR_RIGHT, ROW_GAP, 80, 155, 0, 70 );
|
||||
FillRGBA( xpos - 5, ypos, FAR_RIGHT, ROW_GAP, 80, 155, 0, 70 );
|
||||
}
|
||||
else
|
||||
{
|
||||
// Highlight the killers name - overlay the background in red, then draw the score text over it
|
||||
FillRGBA( NAME_RANGE_MIN + xpos_rel - 5, ypos, FAR_RIGHT, ROW_GAP, 255, 0, 0, ( (float)15 * (float)( m_fLastKillTime - gHUD.m_flTime ) ) );
|
||||
FillRGBA( xpos - 5, ypos, FAR_RIGHT, ROW_GAP, 255, 0, 0, ( (float)15 * (float)( m_fLastKillTime - gHUD.m_flTime ) ) );
|
||||
}
|
||||
}
|
||||
else if( pl_info->thisplayer ) // if it is their name, draw it a different color
|
||||
{
|
||||
// overlay the background in blue, then draw the score text over it
|
||||
FillRGBA( NAME_RANGE_MIN + xpos_rel - 5, ypos, FAR_RIGHT, ROW_GAP, 0, 0, 255, 70 );
|
||||
FillRGBA( xpos - 5, ypos, FAR_RIGHT, ROW_GAP, 0, 0, 255, 70 );
|
||||
}
|
||||
|
||||
// draw their name (left to right)
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -181,20 +181,20 @@ int CHudTextMessage::MsgFunc_TextMsg( const char *pszName, int iSize, void *pbuf
|
||||
switch( msg_dest )
|
||||
{
|
||||
case HUD_PRINTCENTER:
|
||||
snprintf( psz, MSG_BUF_SIZE, szBuf[0], szBuf[1], szBuf[2], szBuf[3], szBuf[4] );
|
||||
_snprintf( psz, MSG_BUF_SIZE, szBuf[0], szBuf[1], szBuf[2], szBuf[3], szBuf[4] );
|
||||
CenterPrint( ConvertCRtoNL( psz ) );
|
||||
break;
|
||||
case HUD_PRINTNOTIFY:
|
||||
psz[0] = 1; // mark this message to go into the notify buffer
|
||||
snprintf( psz + 1, MSG_BUF_SIZE - 1, szBuf[0], szBuf[1], szBuf[2], szBuf[3], szBuf[4] );
|
||||
_snprintf( psz + 1, MSG_BUF_SIZE - 1, szBuf[0], szBuf[1], szBuf[2], szBuf[3], szBuf[4] );
|
||||
ConsolePrint( ConvertCRtoNL( psz ) );
|
||||
break;
|
||||
case HUD_PRINTTALK:
|
||||
snprintf( psz, MSG_BUF_SIZE, szBuf[0], szBuf[1], szBuf[2], szBuf[3], szBuf[4] );
|
||||
_snprintf( psz, MSG_BUF_SIZE, szBuf[0], szBuf[1], szBuf[2], szBuf[3], szBuf[4] );
|
||||
gHUD.m_SayText.SayTextPrint( ConvertCRtoNL( psz ), MSG_BUF_SIZE );
|
||||
break;
|
||||
case HUD_PRINTCONSOLE:
|
||||
snprintf( psz, MSG_BUF_SIZE, szBuf[0], szBuf[1], szBuf[2], szBuf[3], szBuf[4] );
|
||||
_snprintf( psz, MSG_BUF_SIZE, szBuf[0], szBuf[1], szBuf[2], szBuf[3], szBuf[4] );
|
||||
ConsolePrint( ConvertCRtoNL( psz ) );
|
||||
break;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
29
cmake/VSForceXPToolchain.cmake
Normal file
29
cmake/VSForceXPToolchain.cmake
Normal file
@ -0,0 +1,29 @@
|
||||
if(WIN32)
|
||||
# Windows XP compatible platform toolset. Must be set before project(),
|
||||
# otherwise change of CMAKE_*_TOOLSET will take no effect.
|
||||
# We get VS version from the generator name because neither MSVC* nor other
|
||||
# variables that describe the compiler aren't available before project().
|
||||
if ("${CMAKE_GENERATOR}" MATCHES "Visual Studio ([0-9]+)")
|
||||
if(${CMAKE_MATCH_1} LESS 11)
|
||||
# Nothing. Older VS does support XP by default.
|
||||
elseif(${CMAKE_MATCH_1} EQUAL 11)
|
||||
# Visual Studio 11 2012
|
||||
set(CMAKE_GENERATOR_TOOLSET "v110_xp" CACHE STRING "CMAKE_GENERATOR_TOOLSET" FORCE)
|
||||
set(CMAK_VS_PLATFORM_TOOLSET "v110_xp" CACHE STRING "CMAKE_VS_PLATFORM_TOOLSET" FORCE)
|
||||
elseif (${CMAKE_MATCH_1} EQUAL 12)
|
||||
# Visual Studio 12 2013
|
||||
set(CMAKE_GENERATOR_TOOLSET "v120_xp" CACHE STRING "CMAKE_GENERATOR_TOOLSET" FORCE)
|
||||
set(CMAKE_VS_PLATFORM_TOOLSET "v120_xp" CACHE STRING "CMAKE_VS_PLATFORM_TOOLSET" FORCE)
|
||||
elseif (${CMAKE_MATCH_1} EQUAL 14)
|
||||
# Visual Studio 14 2015
|
||||
set(CMAKE_GENERATOR_TOOLSET "v140_xp" CACHE STRING "CMAKE_GENERATOR_TOOLSET" FORCE)
|
||||
set(CMAKE_VS_PLATFORM_TOOLSET "v140_xp" CACHE STRING "CMAKE_VS_PLATFORM_TOOLSET" FORCE)
|
||||
elseif (${CMAKE_MATCH_1} EQUAL 15)
|
||||
# Visual Studio 15 2017
|
||||
set(CMAKE_GENERATOR_TOOLSET "v141_xp" CACHE STRING "CMAKE_GENERATOR_TOOLSET" FORCE)
|
||||
set(CMAKE_VS_PLATFORM_TOOLSET "v141_xp" CACHE STRING "CMAKE_VS_PLATFORM_TOOLSET" FORCE)
|
||||
else()
|
||||
message(WARNING "WARNING: You maybe building without Windows XP compability. See which toolchain version Visual Studio provides, and say cmake to use it: cmake -G \"Visual Studio XX\" -T \"vXXX_xp\"")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
@ -25,8 +25,16 @@ project (SVDLL)
|
||||
|
||||
set (SVDLL_LIBRARY server)
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LINUX -DCLIENT_WEAPONS -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -fno-exceptions -w")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
|
||||
add_definitions(-DCLIENT_WEAPONS)
|
||||
|
||||
if(NOT MSVC)
|
||||
add_compile_options(-fno-exceptions) # GCC/Clang flag
|
||||
add_compile_options(-Wno-invalid-offsetof) # GCC/Clang flag
|
||||
add_definitions(-D_LINUX) # It seems enough for all non-Win32 systems
|
||||
add_definitions(-Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf )
|
||||
else()
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
|
||||
endif()
|
||||
|
||||
set (SVDLL_SOURCES
|
||||
TheGate/command.cpp
|
||||
@ -151,8 +159,13 @@ set_target_properties (${SVDLL_LIBRARY} PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE 1)
|
||||
|
||||
if(APPLE OR WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
set(SVDLL_NAME "${SERVER_LIBRARY_NAME}")
|
||||
if(64BIT)
|
||||
set(SVDLL_NAME "${SERVER_LIBRARY_NAME}64")
|
||||
endif()
|
||||
|
||||
set_target_properties(${SVDLL_LIBRARY} PROPERTIES
|
||||
OUTPUT_NAME ${SERVER_LIBRARY_NAME}
|
||||
OUTPUT_NAME ${SVDLL_NAME}
|
||||
PREFIX "")
|
||||
endif()
|
||||
|
||||
|
@ -283,7 +283,7 @@ public:
|
||||
#ifdef _DEBUG
|
||||
void FunctionCheck( void *pFunction, char *name )
|
||||
{
|
||||
if( pFunction && !NAME_FOR_FUNCTION( (size_t)( pFunction ) ) )
|
||||
if( pFunction && !NAME_FOR_FUNCTION( pFunction ) )
|
||||
ALERT( at_error, "No EXPORT: %s:%s (%08lx)\n", STRING( pev->classname ), name, (size_t)pFunction );
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,7 @@ void ClientDisconnect( edict_t *pEntity )
|
||||
|
||||
char text[256] = "";
|
||||
if( pEntity->v.netname )
|
||||
snprintf( text, sizeof(text), "- %s has left the game\n", STRING( pEntity->v.netname ) );
|
||||
_snprintf( text, sizeof(text), "- %s has left the game\n", STRING( pEntity->v.netname ) );
|
||||
MESSAGE_BEGIN( MSG_ALL, gmsgSayText, NULL );
|
||||
WRITE_BYTE( ENTINDEX( pEntity ) );
|
||||
WRITE_STRING( text );
|
||||
@ -660,7 +660,7 @@ void ClientUserInfoChanged( edict_t *pEntity, char *infobuffer )
|
||||
if( gpGlobals->maxClients > 1 )
|
||||
{
|
||||
char text[256];
|
||||
snprintf( text, 256, "* %s changed name to %s\n", STRING( pEntity->v.netname ), g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) );
|
||||
_snprintf( text, 256, "* %s changed name to %s\n", STRING( pEntity->v.netname ), g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) );
|
||||
MESSAGE_BEGIN( MSG_ALL, gmsgSayText, NULL );
|
||||
WRITE_BYTE( ENTINDEX( pEntity ) );
|
||||
WRITE_STRING( text );
|
||||
|
@ -2118,7 +2118,8 @@ void CBaseMonster::StartMonster( void )
|
||||
SetThink( &CBaseMonster::CallMonsterThink );
|
||||
pev->nextthink += RANDOM_FLOAT( 0.1, 0.4 ); // spread think times.
|
||||
|
||||
if( !FStringNull( pev->targetname ) )// wait until triggered
|
||||
// Vit_amiN: fixed -- now it doesn't touch any scripted_sequence target
|
||||
if( !FStringNull( pev->targetname ) && !m_pCine )// wait until triggered
|
||||
{
|
||||
SetState( MONSTERSTATE_IDLE );
|
||||
// UNDONE: Some scripted sequence monsters don't have an idle?
|
||||
|
@ -787,6 +787,9 @@ void CBasePlayer::PackDeadPlayerItems( void )
|
||||
|
||||
void CBasePlayer::RemoveAllItems( BOOL removeSuit )
|
||||
{
|
||||
int i;
|
||||
CBasePlayerItem *pPendingItem;
|
||||
|
||||
if( m_pActiveItem )
|
||||
{
|
||||
ResetAutoaim();
|
||||
@ -799,8 +802,8 @@ void CBasePlayer::RemoveAllItems( BOOL removeSuit )
|
||||
if( m_pTank != 0 )
|
||||
m_pTank->Use( this, this, USE_OFF, 0 );
|
||||
|
||||
int i;
|
||||
CBasePlayerItem *pPendingItem;
|
||||
m_iTrain = TRAIN_NEW; // turn off train
|
||||
|
||||
for( i = 0; i < MAX_ITEM_TYPES; i++ )
|
||||
{
|
||||
m_pActiveItem = m_rgpPlayerItems[i];
|
||||
@ -1862,6 +1865,7 @@ void CBasePlayer::PreThink( void )
|
||||
{
|
||||
CBaseEntity *pTrain = CBaseEntity::Instance( pev->groundentity );
|
||||
float vel;
|
||||
int iGearId; // Vit_amiN: keeps the train control HUD in sync
|
||||
|
||||
if( !pTrain )
|
||||
{
|
||||
@ -1902,10 +1906,12 @@ void CBasePlayer::PreThink( void )
|
||||
pTrain->Use( this, this, USE_SET, (float)vel );
|
||||
}
|
||||
|
||||
if( vel )
|
||||
iGearId = TrainSpeed( pTrain->pev->speed, pTrain->pev->impulse );
|
||||
|
||||
if( iGearId != ( m_iTrain & 0x0F ) ) // Vit_amiN: speed changed
|
||||
{
|
||||
m_iTrain = TrainSpeed( (int)pTrain->pev->speed, pTrain->pev->impulse );
|
||||
m_iTrain |= TRAIN_ACTIVE|TRAIN_NEW;
|
||||
m_iTrain = iGearId;
|
||||
m_iTrain |= TRAIN_ACTIVE | TRAIN_NEW;
|
||||
}
|
||||
}
|
||||
else if( m_iTrain & TRAIN_ACTIVE )
|
||||
@ -2929,6 +2935,8 @@ void CBasePlayer::Precache( void )
|
||||
|
||||
if( gInitHUD )
|
||||
m_fInitHUD = TRUE;
|
||||
|
||||
pev->fov = m_iFOV; // Vit_amiN: restore the FOV on level change or map/saved game load
|
||||
}
|
||||
|
||||
int CBasePlayer::Save( CSave &save )
|
||||
@ -3338,6 +3346,8 @@ void CBasePlayer::ForceClientDllUpdate( void )
|
||||
{
|
||||
m_iClientHealth = -1;
|
||||
m_iClientBattery = -1;
|
||||
m_iClientHideHUD = -1; // Vit_amiN: forcing to update
|
||||
m_iClientFOV = -1; // Vit_amiN: force client weapons to be sent
|
||||
m_iTrain |= TRAIN_NEW; // Force new train message.
|
||||
m_fWeapon = FALSE; // Force weapon send
|
||||
m_fKnownItem = FALSE; // Force weaponinit messages.
|
||||
@ -3902,6 +3912,11 @@ void CBasePlayer::UpdateClientData( void )
|
||||
WRITE_BYTE( m_iFlashBattery );
|
||||
MESSAGE_END();
|
||||
|
||||
// Vit_amiN: the geiger state could run out of sync, too
|
||||
MESSAGE_BEGIN( MSG_ONE, gmsgGeigerRange, NULL, pev );
|
||||
WRITE_BYTE( 0 );
|
||||
MESSAGE_END();
|
||||
|
||||
InitStatusBar();
|
||||
}
|
||||
|
||||
@ -3947,7 +3962,7 @@ void CBasePlayer::UpdateClientData( void )
|
||||
m_iClientHealth = (int)pev->health;
|
||||
}
|
||||
|
||||
if( pev->armorvalue != m_iClientBattery )
|
||||
if( (int)pev->armorvalue != m_iClientBattery )
|
||||
{
|
||||
m_iClientBattery = (int)pev->armorvalue;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose: New version of the slider bar
|
||||
//
|
||||
@ -82,7 +82,7 @@ void CPlayerMonster :: HandleAnimEvent( MonsterEvent_t *pEvent )
|
||||
//=========================================================
|
||||
int CPlayerMonster::ISoundMask( void )
|
||||
{
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose: New version of the slider bar
|
||||
//
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose: New version of the slider bar
|
||||
//
|
||||
|
@ -989,7 +989,7 @@ float UTIL_Approach( float target, float value, float speed )
|
||||
float UTIL_ApproachAngle( float target, float value, float speed )
|
||||
{
|
||||
target = UTIL_AngleMod( target );
|
||||
value = UTIL_AngleMod( target );
|
||||
value = UTIL_AngleMod( value );
|
||||
|
||||
float delta = target - value;
|
||||
|
||||
|
@ -40,7 +40,7 @@ extern globalvars_t *gpGlobals;
|
||||
#define STRING(offset) (const char *)(gpGlobals->pStringBase + (int)offset)
|
||||
|
||||
#if !defined XASH_64BIT || defined(CLIENT_DLL)
|
||||
#define MAKE_STRING(str) ((int)str - (int)STRING(0))
|
||||
#define MAKE_STRING(str) ((int)(long int)str - (int)(long int)STRING(0))
|
||||
#else
|
||||
static inline int MAKE_STRING(const char *szValue)
|
||||
{
|
||||
|
@ -1,4 +1,4 @@
|
||||
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
|
@ -3312,8 +3312,8 @@ void PM_Move( struct playermove_s *ppmove, int server )
|
||||
pmove->flags &= ~FL_ONGROUND;
|
||||
}
|
||||
|
||||
// In single player, reset friction after each movement to FrictionModifier Triggers work still.
|
||||
if( !pmove->multiplayer && ( pmove->movetype == MOVETYPE_WALK ) )
|
||||
// Reset friction after each movement to FrictionModifier Triggers work still.
|
||||
if( pmove->movetype == MOVETYPE_WALK )
|
||||
{
|
||||
pmove->friction = 1.0f;
|
||||
}
|
||||
|
@ -219,7 +219,6 @@ private:
|
||||
bool _paintBorderEnabled;
|
||||
bool _paintBackgroundEnabled;
|
||||
bool _paintEnabled;
|
||||
friend class Panel;
|
||||
friend class App;
|
||||
friend class SurfaceBase;
|
||||
friend class Image;
|
||||
|
845
utils/makefont/makefont.cpp
Normal file
845
utils/makefont/makefont.cpp
Normal file
@ -0,0 +1,845 @@
|
||||
/***
|
||||
*
|
||||
* Copyright (c) 1996-2002, Valve LLC. All rights reserved.
|
||||
*
|
||||
* This product contains software technology licensed from Id
|
||||
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Use, distribution, and modification of this source code and/or resulting
|
||||
* object code is restricted to non-commercial enhancements to products from
|
||||
* Valve LLC. All other use, distribution, or modification is prohibited
|
||||
* without written permission from Valve LLC.
|
||||
*
|
||||
****/
|
||||
|
||||
#define _NOENUMQBOOL
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include "cmdlib.h"
|
||||
#include "wadlib.h"
|
||||
}
|
||||
#include "qfont.h"
|
||||
|
||||
#define DEFAULT_FONT "Arial"
|
||||
|
||||
#define FONT_TAG 6 // Font's are the 6th tag after the TYP_LUMPY base ( 64 )...i.e., type == 70
|
||||
|
||||
BOOL bItalic = FALSE;
|
||||
BOOL bBold = FALSE;
|
||||
BOOL bUnderline = FALSE;
|
||||
|
||||
char fontname[ 256 ];
|
||||
int pointsize[3] = { 9, 11, 15 };
|
||||
|
||||
/*
|
||||
=================
|
||||
zeromalloc
|
||||
|
||||
Allocates and zeroes memory
|
||||
=================
|
||||
*/
|
||||
void *zeromalloc( size_t size )
|
||||
{
|
||||
unsigned char *pbuffer;
|
||||
pbuffer = ( unsigned char * )malloc( size );
|
||||
if ( !pbuffer )
|
||||
{
|
||||
printf( "Failed on allocation of %i bytes", size );
|
||||
exit( -1 );
|
||||
}
|
||||
|
||||
memset( pbuffer, 0, size );
|
||||
return ( void * )pbuffer;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
Draw_SetupConsolePalette
|
||||
|
||||
Set's the palette to full brightness ( 192 ) and
|
||||
set's up palette entry 0 -- black
|
||||
=================
|
||||
*/
|
||||
void Draw_SetupConsolePalette( unsigned char *pal )
|
||||
{
|
||||
unsigned char *pPalette;
|
||||
int i;
|
||||
|
||||
pPalette = pal;
|
||||
|
||||
*(short *)pPalette = 3 * 256;
|
||||
pPalette += sizeof( short );
|
||||
|
||||
for ( i = 0; i < 256; i++ )
|
||||
{
|
||||
pPalette[3 * i + 0 ] = i;
|
||||
pPalette[3 * i + 1 ] = i;
|
||||
pPalette[3 * i + 2 ] = i;
|
||||
}
|
||||
|
||||
// Set palette zero correctly
|
||||
pPalette[ 0 ] = 0;
|
||||
pPalette[ 1 ] = 0;
|
||||
pPalette[ 2 ] = 0;
|
||||
}
|
||||
|
||||
//DJXX added for debugging
|
||||
BOOL WriteDIB(LPTSTR szFile, HANDLE hDIB)
|
||||
{
|
||||
BITMAPFILEHEADER hdr;
|
||||
LPBITMAPINFOHEADER lpbi;
|
||||
|
||||
if (!hDIB)
|
||||
return FALSE;
|
||||
|
||||
FILE *file;
|
||||
file = SafeOpenWrite(szFile);
|
||||
|
||||
|
||||
lpbi = (LPBITMAPINFOHEADER)hDIB;
|
||||
|
||||
int nColors = 1 << lpbi->biBitCount;
|
||||
|
||||
// Fill in the fields of the file header
|
||||
hdr.bfType = ((WORD)('M' << 8) | 'B'); // is always "BM"
|
||||
hdr.bfSize = GlobalSize(hDIB) + sizeof(hdr);
|
||||
printf("WriteDIB. Error code = %i\n",GetLastError());
|
||||
hdr.bfReserved1 = 0;
|
||||
hdr.bfReserved2 = 0;
|
||||
hdr.bfOffBits = (DWORD)(sizeof(hdr)+lpbi->biSize +
|
||||
nColors * sizeof(RGBQUAD));
|
||||
|
||||
// Write the file header
|
||||
SafeWrite(file, &hdr, sizeof(hdr));
|
||||
|
||||
// Write the DIB header and the bits
|
||||
SafeWrite(file, lpbi, GlobalSize(hDIB));
|
||||
fclose(file);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
=================
|
||||
CreateProportionalConsoleFont
|
||||
|
||||
Renders TT font into memory dc and creates appropriate qfont_t structure
|
||||
=================
|
||||
*/
|
||||
//DJXX: New version, draws chararacters closely to each other without spaces
|
||||
|
||||
// YWB: Sigh, VC 6.0's global optimizer causes weird stack fixups in release builds. Disable the globabl optimizer for this function.
|
||||
#pragma optimize( "g", off )
|
||||
qfont_t *CreateProportionalConsoleFont(char *pszFont, int nPointSize, BOOL bItalic, BOOL bUnderline, BOOL bBold, int *outsize)
|
||||
{
|
||||
HDC hdc;
|
||||
HDC hmemDC;
|
||||
HBITMAP hbm, oldbm;
|
||||
RECT rc;
|
||||
HFONT fnt, oldfnt;
|
||||
TEXTMETRIC tm;
|
||||
int startchar = 32;
|
||||
int c;
|
||||
int i, j;
|
||||
int x, y;
|
||||
int nScans;
|
||||
unsigned char *bits;
|
||||
BITMAPINFO tempbmi;
|
||||
BITMAPINFO *pbmi;
|
||||
BITMAPINFOHEADER *pbmheader;
|
||||
unsigned char *pqdata;
|
||||
unsigned char *pCur;
|
||||
int x1, y1;
|
||||
unsigned char *pPalette;
|
||||
qfont_t *pqf = NULL;
|
||||
int fullsize;
|
||||
int w = 16;
|
||||
//int h = (128 - 32) / 16;
|
||||
int h = (256 - 32) / 16;
|
||||
int charheight = nPointSize + 5;
|
||||
int charwidth = 16;//now used only for calculating width of wad texture
|
||||
int fontcharwidth;
|
||||
int edge = 1;
|
||||
RECT rcChar;
|
||||
boolean lShadow = true;//draw shadow instead of outline
|
||||
|
||||
// Create the font
|
||||
fnt = CreateFont(-nPointSize, 0, 0, 0, bBold ? FW_HEAVY : FW_MEDIUM, bItalic, bUnderline, 0, /*ANSI_CHARSET*/DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH | FF_DONTCARE, pszFont);
|
||||
|
||||
bits = NULL;
|
||||
|
||||
fullsize = sizeof(qfont_t)-4 + (/*128*/256 * w * charwidth) + sizeof(short)+768 + 64;
|
||||
|
||||
// Store off final size
|
||||
*outsize = fullsize;
|
||||
|
||||
pqf = (qfont_t *)zeromalloc(fullsize);
|
||||
pqdata = (unsigned char *)pqf + sizeof(qfont_t)-4;
|
||||
|
||||
pPalette = pqdata + (/*128*/256 * w * charwidth);
|
||||
|
||||
// Configure palette
|
||||
Draw_SetupConsolePalette(pPalette);
|
||||
|
||||
hdc = GetDC(NULL);
|
||||
hmemDC = CreateCompatibleDC(hdc);
|
||||
|
||||
oldfnt = (HFONT)SelectObject(hmemDC, fnt);
|
||||
|
||||
if (GetTextMetrics(hmemDC, &tm))
|
||||
{
|
||||
fontcharwidth = tm.tmMaxCharWidth;
|
||||
if (fontcharwidth % 2)//hack: on odd values of fontcharwidth, bitmaps pixel check gives false triggering
|
||||
fontcharwidth++;
|
||||
}
|
||||
else {
|
||||
fontcharwidth = charwidth;
|
||||
}
|
||||
|
||||
if (lShadow)
|
||||
charheight += edge;//adding 1 pixel to bottom for shadowing
|
||||
|
||||
rc.top = 0;
|
||||
rc.left = 0;
|
||||
rc.right = fontcharwidth * w;
|
||||
rc.bottom = charheight * h;
|
||||
|
||||
hbm = CreateBitmap(fontcharwidth * w, charheight * h, 1, 1, NULL);
|
||||
oldbm = (HBITMAP)SelectObject(hmemDC, hbm);
|
||||
|
||||
SetTextColor(hmemDC, 0x00ffffff);
|
||||
SetBkMode(hmemDC, TRANSPARENT);
|
||||
|
||||
// Paint black background
|
||||
FillRect(hmemDC, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH));
|
||||
|
||||
// Draw character set into memory DC
|
||||
for (j = 0; j < h; j++)
|
||||
{
|
||||
for (i = 0; i < w; i++)
|
||||
{
|
||||
x = i * fontcharwidth;
|
||||
y = j * charheight;
|
||||
|
||||
c = (unsigned char)(startchar + j * w + i);
|
||||
|
||||
// Only draw printable characters, of course
|
||||
//if ( isprint( c ) && c <= 127 )
|
||||
{
|
||||
// Draw it.
|
||||
rcChar.left = x + 1;
|
||||
rcChar.top = y + 1;
|
||||
rcChar.right = x + fontcharwidth - 1;
|
||||
rcChar.bottom = y + charheight - 1;
|
||||
|
||||
DrawText(hmemDC, (char *)&c, 1, &rcChar, DT_NOPREFIX | DT_LEFT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Now turn the qfont into raw format
|
||||
memset(&tempbmi, 0, sizeof(BITMAPINFO));
|
||||
|
||||
pbmheader = (BITMAPINFOHEADER *)&tempbmi;
|
||||
|
||||
pbmheader->biSize = sizeof(BITMAPINFOHEADER);
|
||||
pbmheader->biWidth = w * fontcharwidth;
|
||||
pbmheader->biHeight = -h * charheight;
|
||||
pbmheader->biPlanes = 1;
|
||||
pbmheader->biBitCount = 1;
|
||||
pbmheader->biCompression = BI_RGB;
|
||||
|
||||
// Find out how big the bitmap is
|
||||
nScans = GetDIBits(hmemDC, hbm, 0, h * charheight, NULL, &tempbmi, DIB_RGB_COLORS);
|
||||
|
||||
// Allocate space for all bits
|
||||
pbmi = (BITMAPINFO *)zeromalloc(sizeof (BITMAPINFOHEADER)+2 * sizeof(RGBQUAD)+pbmheader->biSizeImage);
|
||||
|
||||
memcpy(pbmi, &tempbmi, sizeof(BITMAPINFO));
|
||||
|
||||
bits = (unsigned char *)pbmi + sizeof(BITMAPINFOHEADER)+2 * sizeof(RGBQUAD);
|
||||
|
||||
// Now read in bits
|
||||
nScans = GetDIBits(hmemDC, hbm, 0, h * charheight, bits, pbmi, DIB_RGB_COLORS);
|
||||
|
||||
if (nScans > 0)
|
||||
{
|
||||
#if 0 //for debugging
|
||||
char sz[128];//DJXX write dib to file
|
||||
sprintf(sz, "font_%s_%i.bmp", pszFont, nPointSize);
|
||||
WriteDIB(sz, pbmi);
|
||||
#endif
|
||||
// Now convert to proper raw format
|
||||
//
|
||||
// Now get results from dib
|
||||
pqf->height = /*128*/256; // Always set to 128
|
||||
pqf->width = charwidth;
|
||||
pqf->rowheight = charheight;
|
||||
pqf->rowcount = h;
|
||||
pCur = pqdata;
|
||||
|
||||
// Set everything to index 255 ( 0xff ) == transparent
|
||||
memset(pCur, 0xFF, w * charwidth * pqf->height);
|
||||
|
||||
int k = 0, dest_x = 0, dest_y = 0;
|
||||
|
||||
for (j = 0; j < h; j++)
|
||||
for (i = 0; i < w; i++)
|
||||
{
|
||||
int rightmost, leftmost, realcharwidth;
|
||||
|
||||
x = i * fontcharwidth;
|
||||
y = j * charheight;
|
||||
|
||||
//c = (char)( startchar + j * w + i ); here was memory bug
|
||||
c = (unsigned char)(startchar + j * w + i);
|
||||
|
||||
rightmost = 0;
|
||||
leftmost = fontcharwidth;
|
||||
|
||||
//Calculate real width of the character
|
||||
for (y1 = 0; y1 < charheight; y1++)
|
||||
for (x1 = 0; x1 < fontcharwidth; x1++)
|
||||
{
|
||||
int src_offset;
|
||||
|
||||
src_offset = (y + y1) * w * fontcharwidth + x + x1;
|
||||
|
||||
if (bits[src_offset >> 3] & (1 << (7 - src_offset & 7)))//on odd values of fontcharwidth this check gives false triggering
|
||||
{
|
||||
if (x1 > rightmost)
|
||||
rightmost = x1;
|
||||
|
||||
if (x1 < leftmost)
|
||||
leftmost = x1;
|
||||
}
|
||||
}
|
||||
if (leftmost > rightmost)//empty characters
|
||||
{
|
||||
leftmost = 0;
|
||||
rightmost = 7;
|
||||
} else {
|
||||
rightmost += edge;
|
||||
if (!lShadow)
|
||||
leftmost -= edge;
|
||||
}
|
||||
|
||||
realcharwidth = rightmost - leftmost + 1;
|
||||
pqf->fontinfo[c].charwidth = realcharwidth;
|
||||
|
||||
if (dest_x + realcharwidth >= w * charwidth)//if it not fits on current line then carry it to the next line
|
||||
{
|
||||
dest_x = 0;
|
||||
k++;
|
||||
}
|
||||
|
||||
dest_y = k * charheight;
|
||||
pqf->fontinfo[c].startoffset = dest_y * w * charwidth + dest_x;
|
||||
|
||||
if (lShadow)
|
||||
{
|
||||
int shift = edge;
|
||||
//Draw shadow by shifting character to 1 pixel right and down
|
||||
for (y1 = 0; y1 < charheight; y1++)
|
||||
for (x1 = 0; x1 < realcharwidth; x1++)
|
||||
{
|
||||
int src_offset, dest_offset;
|
||||
|
||||
src_offset = (y + y1) * w * fontcharwidth + x + x1 + leftmost;
|
||||
dest_offset = (dest_y + shift + y1) * w * charwidth + (dest_x + shift + x1);
|
||||
|
||||
// Dest
|
||||
pCur = pqdata + dest_offset;
|
||||
|
||||
if (bits[src_offset >> 3] & (1 << (7 - src_offset & 7)))
|
||||
{
|
||||
// Near Black
|
||||
//pCur[0] = 32;
|
||||
pCur[0] = 0;//full black so shadow remains black even it's coloured text
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Put black pixels below and to the right of each pixel(outline)
|
||||
for (y1 = edge; y1 < charheight - edge; y1++)
|
||||
for (x1 = 0; x1 < realcharwidth; x1++)
|
||||
{
|
||||
int src_offset, dest_offset;
|
||||
|
||||
int xx0, yy0;
|
||||
|
||||
dest_offset = (dest_y + y1) * w * charwidth + (dest_x + x1);
|
||||
|
||||
// Dest
|
||||
pCur = pqdata + dest_offset;
|
||||
|
||||
for (xx0 = -edge; xx0 <= edge; xx0++)
|
||||
for (yy0 = -edge; yy0 <= edge; yy0++)
|
||||
{
|
||||
src_offset = (y + y1 + yy0) * w * fontcharwidth + x + x1 + xx0 + leftmost;//adding shift
|
||||
|
||||
if (bits[src_offset >> 3] & (1 << (7 - src_offset & 7)))
|
||||
{
|
||||
// Near Black
|
||||
pCur[0] = 32;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Now copy in the actual font pixels
|
||||
for (y1 = 0; y1 < charheight; y1++)
|
||||
for (x1 = 0; x1 < realcharwidth; x1++)
|
||||
{
|
||||
int src_offset, dest_offset;
|
||||
|
||||
src_offset = (y + y1) * w * fontcharwidth + x + x1 + leftmost;
|
||||
dest_offset = (dest_y + y1) * w * charwidth + (dest_x + x1);
|
||||
|
||||
// Dest
|
||||
pCur = pqdata + dest_offset;
|
||||
|
||||
if (bits[src_offset >> 3] & (1 << (7 - src_offset & 7)))
|
||||
{
|
||||
pCur[0] = 192;
|
||||
}
|
||||
}
|
||||
dest_x += realcharwidth;
|
||||
}
|
||||
}
|
||||
// Free memory bits
|
||||
free(pbmi);
|
||||
SelectObject(hmemDC, oldfnt);
|
||||
DeleteObject(fnt);
|
||||
|
||||
SelectObject(hmemDC, oldbm);
|
||||
|
||||
DeleteObject(hbm);
|
||||
|
||||
DeleteDC(hmemDC);
|
||||
ReleaseDC(NULL, hdc);
|
||||
|
||||
return pqf;
|
||||
}
|
||||
#pragma optimize( "g", on )
|
||||
|
||||
|
||||
/*
|
||||
=================
|
||||
CreateConsoleFont
|
||||
|
||||
Renders TT font into memory dc and creates appropriate qfont_t structure
|
||||
=================
|
||||
*/
|
||||
//DJXX: original version, just added drawing of locale characters and fixed memory bug.
|
||||
// YWB: Sigh, VC 6.0's global optimizer causes weird stack fixups in release builds. Disable the globabl optimizer for this function.
|
||||
#pragma optimize( "g", off )
|
||||
qfont_t *CreateConsoleFont( char *pszFont, int nPointSize, BOOL bItalic, BOOL bUnderline, BOOL bBold, int *outsize )
|
||||
{
|
||||
HDC hdc;
|
||||
HDC hmemDC;
|
||||
HBITMAP hbm, oldbm;
|
||||
RECT rc;
|
||||
HFONT fnt, oldfnt;
|
||||
int startchar = 32;
|
||||
int c;
|
||||
int i, j;
|
||||
int x, y;
|
||||
int nScans;
|
||||
unsigned char *bits;
|
||||
BITMAPINFO tempbmi;
|
||||
BITMAPINFO *pbmi;
|
||||
BITMAPINFOHEADER *pbmheader;
|
||||
unsigned char *pqdata;
|
||||
unsigned char *pCur;
|
||||
int x1, y1;
|
||||
unsigned char *pPalette;
|
||||
qfont_t *pqf = NULL;
|
||||
int fullsize;
|
||||
int w = 16;
|
||||
//int h = (128-32)/16;
|
||||
int h = (256 - 32) / 16;
|
||||
int charheight = nPointSize + 5;
|
||||
int charwidth = 16;
|
||||
RECT rcChar;
|
||||
|
||||
// Create the font
|
||||
fnt = CreateFont( -nPointSize, 0, 0, 0, bBold ? FW_HEAVY : FW_MEDIUM, bItalic, bUnderline, 0, /*ANSI_CHARSET*/DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH | FF_DONTCARE, pszFont );
|
||||
|
||||
bits = NULL;
|
||||
|
||||
fullsize = sizeof( qfont_t ) - 4 + ( /*128*/256 * w * charwidth ) + sizeof(short) + 768 + 64;
|
||||
|
||||
// Store off final size
|
||||
*outsize = fullsize;
|
||||
|
||||
pqf = ( qfont_t * )zeromalloc( fullsize );
|
||||
pqdata = (unsigned char *)pqf + sizeof( qfont_t ) - 4;
|
||||
|
||||
pPalette = pqdata + ( /*128*/256 * w * charwidth);
|
||||
|
||||
// Configure palette
|
||||
Draw_SetupConsolePalette( pPalette );
|
||||
|
||||
hdc = GetDC( NULL );
|
||||
hmemDC = CreateCompatibleDC( hdc );
|
||||
|
||||
rc.top = 0;
|
||||
rc.left = 0;
|
||||
rc.right = charwidth * w;
|
||||
rc.bottom = charheight * h;
|
||||
|
||||
hbm = CreateBitmap( charwidth * w, charheight * h, 1, 1, NULL );
|
||||
oldbm = (HBITMAP)SelectObject( hmemDC, hbm );
|
||||
oldfnt = (HFONT)SelectObject( hmemDC, fnt );
|
||||
|
||||
SetTextColor( hmemDC, 0x00ffffff );
|
||||
SetBkMode( hmemDC, TRANSPARENT );
|
||||
|
||||
// Paint black background
|
||||
FillRect( hmemDC, &rc, (HBRUSH)GetStockObject( BLACK_BRUSH ) );
|
||||
|
||||
// Draw character set into memory DC
|
||||
for ( j = 0; j < h; j++ )
|
||||
{
|
||||
for ( i = 0; i < w; i++ )
|
||||
{
|
||||
x = i * charwidth;
|
||||
y = j * charheight;
|
||||
|
||||
c = (unsigned char)( startchar + j * w + i );
|
||||
|
||||
// Only draw printable characters, of course
|
||||
//if ( isprint( c ) && c <= 127 )
|
||||
{
|
||||
// Draw it.
|
||||
rcChar.left = x + 1;
|
||||
rcChar.top = y + 1;
|
||||
rcChar.right = x + charwidth - 1;
|
||||
rcChar.bottom = y + charheight - 1;
|
||||
|
||||
DrawText( hmemDC, (char *)&c, 1, &rcChar, DT_NOPREFIX | DT_LEFT );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Now turn the qfont into raw format
|
||||
memset( &tempbmi, 0, sizeof( BITMAPINFO ) );
|
||||
pbmheader = ( BITMAPINFOHEADER * )&tempbmi;
|
||||
|
||||
pbmheader->biSize = sizeof( BITMAPINFOHEADER );
|
||||
pbmheader->biWidth = w * charwidth;
|
||||
pbmheader->biHeight = -h * charheight;
|
||||
pbmheader->biPlanes = 1;
|
||||
pbmheader->biBitCount = 1;
|
||||
pbmheader->biCompression = BI_RGB;
|
||||
|
||||
// Find out how big the bitmap is
|
||||
nScans = GetDIBits( hmemDC, hbm, 0, h * charheight, NULL, &tempbmi, DIB_RGB_COLORS );
|
||||
|
||||
// Allocate space for all bits
|
||||
pbmi = ( BITMAPINFO * )zeromalloc( sizeof ( BITMAPINFOHEADER ) + 2 * sizeof( RGBQUAD ) + pbmheader->biSizeImage );
|
||||
|
||||
memcpy( pbmi, &tempbmi, sizeof( BITMAPINFO ) );
|
||||
|
||||
bits = ( unsigned char * )pbmi + sizeof( BITMAPINFOHEADER ) + 2 * sizeof( RGBQUAD );
|
||||
|
||||
// Now read in bits
|
||||
nScans = GetDIBits( hmemDC, hbm, 0, h * charheight, bits, pbmi, DIB_RGB_COLORS );
|
||||
|
||||
if ( nScans > 0 )
|
||||
{
|
||||
#if 0 //for debugging
|
||||
char sz[128];//DJXX write dib to file
|
||||
sprintf(sz, "font_%s_%i.bmp", pszFont, nPointSize);
|
||||
WriteDIB(sz, pbmi);
|
||||
#endif
|
||||
|
||||
// Now convert to proper raw format
|
||||
//
|
||||
// Now get results from dib
|
||||
pqf->height = /*128*/256; // Always set to 128
|
||||
pqf->width = charwidth;
|
||||
pqf->rowheight = charheight;
|
||||
pqf->rowcount = h;
|
||||
pCur = pqdata;
|
||||
|
||||
// Set everything to index 255 ( 0xff ) == transparent
|
||||
memset( pCur, 0xFF, w * charwidth * pqf->height );
|
||||
|
||||
for ( j = 0; j < h; j++ )
|
||||
{
|
||||
for ( i = 0; i < w; i++ )
|
||||
{
|
||||
int edge = 1;
|
||||
int bestwidth;
|
||||
x = i * charwidth;
|
||||
y = j * charheight;
|
||||
|
||||
|
||||
//c = (char)( startchar + j * w + i ); here was memory bug
|
||||
c = (unsigned char)(startchar + j * w + i);
|
||||
|
||||
pqf->fontinfo[ c ].charwidth = charwidth;
|
||||
pqf->fontinfo[ c ].startoffset = y * w * charwidth + x;
|
||||
|
||||
bestwidth = 0;
|
||||
|
||||
// In this first pass, place the black drop shadow so characters draw ok in the engine against
|
||||
// most backgrounds.
|
||||
// YWB: FIXME, apply a box filter and enable blending?
|
||||
#if 0//DJXX: we already did that for a whole image by memset
|
||||
// Make it all transparent for starters
|
||||
for ( y1 = 0; y1 < charheight; y1++ )
|
||||
{
|
||||
for ( x1 = 0; x1 < charwidth; x1++ )
|
||||
{
|
||||
int offset;
|
||||
offset = ( y + y1 ) * w * charwidth + x + x1 ;
|
||||
// Dest
|
||||
pCur = pqdata + offset;
|
||||
// Assume transparent
|
||||
pCur[0] = 255;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// Put black pixels below and to the right of each pixel
|
||||
for ( y1 = edge; y1 < charheight - edge; y1++ )
|
||||
{
|
||||
for ( x1 = 0; x1 < charwidth; x1++ )
|
||||
{
|
||||
int offset;
|
||||
int srcoffset;
|
||||
|
||||
int xx0, yy0;
|
||||
|
||||
offset = ( y + y1 ) * w * charwidth + x + x1 ;
|
||||
|
||||
// Dest
|
||||
pCur = pqdata + offset;
|
||||
|
||||
for ( xx0 = -edge; xx0 <= edge; xx0++ )
|
||||
{
|
||||
for ( yy0 = -edge; yy0 <= edge; yy0++ )
|
||||
{
|
||||
srcoffset = ( y + y1 + yy0 ) * w * charwidth + x + x1 + xx0;
|
||||
|
||||
if ( bits[ srcoffset >> 3 ] & ( 1 << ( 7 - srcoffset & 7 ) ) )
|
||||
{
|
||||
// Near Black
|
||||
pCur[0] = 32;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Now copy in the actual font pixels
|
||||
for ( y1 = 0; y1 < charheight; y1++ )
|
||||
{
|
||||
for ( x1 = 0; x1 < charwidth; x1++ )
|
||||
{
|
||||
int offset;
|
||||
|
||||
offset = ( y + y1 ) * w * charwidth + x + x1;
|
||||
|
||||
// Dest
|
||||
pCur = pqdata + offset;
|
||||
|
||||
if ( bits[ offset >> 3 ] & ( 1 << ( 7 - offset & 7 ) ) )
|
||||
{
|
||||
if ( x1 > bestwidth )
|
||||
{
|
||||
bestwidth = x1;
|
||||
}
|
||||
|
||||
// Full color
|
||||
// FIXME: Enable true palette support in engine?
|
||||
pCur[0] = 192;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// bestwidth += 1;
|
||||
/*
|
||||
// Now blend it
|
||||
for ( y1 = 0; y1 < charheight; y1++ )
|
||||
{
|
||||
for ( x1 = 0; x1 < charwidth; x1++ )
|
||||
{
|
||||
int offset;
|
||||
|
||||
offset = ( y + y1 ) * w * charwidth + x + x1;
|
||||
|
||||
// Dest
|
||||
pCur = pqdata + offset;
|
||||
|
||||
if ( bits[ offset >> 3 ] & ( 1 << ( 7 - offset & 7 ) ) )
|
||||
{
|
||||
if ( x1 > bestwidth )
|
||||
{
|
||||
bestwidth = x1;
|
||||
}
|
||||
|
||||
// Full color
|
||||
// FIXME: Enable true palette support in engine?
|
||||
pCur[0] = 192;
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// Space character width
|
||||
if ( c == 32 )
|
||||
{
|
||||
bestwidth = 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Small characters needs can be padded a bit so they don't run into each other
|
||||
if ( bestwidth <= 14 )
|
||||
{
|
||||
bestwidth += 2;
|
||||
}
|
||||
}
|
||||
|
||||
// Store off width
|
||||
pqf->fontinfo[ c ].charwidth = bestwidth;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Free memory bits
|
||||
free ( pbmi );
|
||||
|
||||
SelectObject( hmemDC, oldfnt );
|
||||
DeleteObject( fnt );
|
||||
|
||||
SelectObject( hmemDC, oldbm );
|
||||
|
||||
DeleteObject( hbm );
|
||||
|
||||
DeleteDC( hmemDC );
|
||||
ReleaseDC( NULL, hdc );
|
||||
|
||||
return pqf;
|
||||
}
|
||||
|
||||
#pragma optimize( "g", on )
|
||||
|
||||
/*
|
||||
=================
|
||||
main
|
||||
|
||||
=================
|
||||
*/
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
int i;
|
||||
DWORD start, end;
|
||||
char destfile[1024];
|
||||
char sz[ 32 ];
|
||||
int outsize[ 3 ];
|
||||
|
||||
qfont_t *fonts[ 3 ];
|
||||
|
||||
strcpy( fontname, DEFAULT_FONT );
|
||||
|
||||
printf("makefont.exe Version 2.0 by valve and DJXX (%s)\n", __DATE__ );
|
||||
|
||||
printf ("----- Creating Console Font ----\n");
|
||||
|
||||
for (i=1 ; i<argc ; i++)
|
||||
{
|
||||
if (!strcmp(argv[i],"-font"))
|
||||
{
|
||||
strcpy( fontname, argv[i+1] );
|
||||
i++;
|
||||
}
|
||||
else if (!strcmp(argv[i],"-pointsizes"))
|
||||
{
|
||||
if ( i + 3 >= argc )
|
||||
{
|
||||
Error( "Makefont: Insufficient point sizes specified\n" );
|
||||
}
|
||||
pointsize[0] = atoi( argv[i+1] );
|
||||
pointsize[1] = atoi( argv[i+2] );
|
||||
pointsize[2] = atoi( argv[i+3] );
|
||||
i += 3;
|
||||
}
|
||||
else if (!strcmp(argv[i],"-italic"))
|
||||
{
|
||||
bItalic = TRUE;
|
||||
printf ( "italic set\n");
|
||||
}
|
||||
else if (!strcmp(argv[i],"-bold"))
|
||||
{
|
||||
bBold = TRUE;
|
||||
printf ( "bold set\n");
|
||||
}
|
||||
else if (!strcmp(argv[i],"-underline"))
|
||||
{
|
||||
bUnderline = TRUE;
|
||||
printf ( "underline set\n");
|
||||
}
|
||||
else if ( argv[i][0] == '-' )
|
||||
{
|
||||
Error ("Unknown option \"%s\"", argv[i]);
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
if ( i != argc - 1 )
|
||||
{
|
||||
Error ("usage: makefont [-font \"fontname\"] [-italic] [-underline] [-bold] [-pointsizes sm med lg] outfile");
|
||||
}
|
||||
|
||||
printf( "Creating %i, %i, and %i point %s fonts\n", pointsize[0], pointsize[1], pointsize[2], fontname );
|
||||
|
||||
start = timeGetTime();
|
||||
|
||||
// Create the fonts
|
||||
for ( i = 0 ; i < 3; i++ )
|
||||
{
|
||||
fonts[ i ] = CreateProportionalConsoleFont( fontname, pointsize[i], bItalic, bUnderline, bBold, &outsize[ i ] );
|
||||
//fonts[i] = CreateConsoleFont(fontname, pointsize[i], bItalic, bUnderline, bBold, &outsize[i]);
|
||||
}
|
||||
|
||||
// Create wad file
|
||||
strcpy (destfile, argv[argc - 1]);
|
||||
StripExtension (destfile);
|
||||
DefaultExtension (destfile, ".wad");
|
||||
|
||||
NewWad( destfile, false );
|
||||
|
||||
// Add fonts as lumps
|
||||
for ( i = 0; i < 3; i++ )
|
||||
{
|
||||
sprintf( sz, "font%i", i );
|
||||
AddLump( sz, fonts[ i ], outsize[ i ], TYP_LUMPY + FONT_TAG, false );
|
||||
}
|
||||
|
||||
// Store results as a WAD3
|
||||
// NOTE: ( should be named fonts.wad in the valve\ subdirectory )
|
||||
WriteWad( 3 );
|
||||
|
||||
// Clean up memory
|
||||
for ( i = 0 ; i < 3; i++ )
|
||||
{
|
||||
free( fonts[ i ] );
|
||||
}
|
||||
|
||||
end = timeGetTime ();
|
||||
|
||||
printf ( "%5.5f seconds elapsed\n", (float)( end - start )/1000.0 );
|
||||
|
||||
// Display for a second since it might not be running from command prompt
|
||||
Sleep( 1000 );
|
||||
return 0;
|
||||
}
|
138
utils/makefont/makefont.dsp
Normal file
138
utils/makefont/makefont.dsp
Normal file
@ -0,0 +1,138 @@
|
||||
# Microsoft Developer Studio Project File - Name="makefont" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=makefont - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "makefont.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "makefont.mak" CFG="makefont - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "makefont - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "makefont - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "makefont - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /W3 /GX /Zi /O2 /I "../../common" /I "../common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX"qfont.h" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /debug /machine:I386
|
||||
# Begin Special Build Tool
|
||||
TargetPath=.\Release\makefont.exe
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Desc=Copyint to valve\
|
||||
PostBuild_Cmds=xcopy $(TargetPath) ..\..\..\valve /r /i
|
||||
# End Special Build Tool
|
||||
|
||||
!ELSEIF "$(CFG)" == "makefont - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../common" /I "../common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX"qfont.h" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# Begin Special Build Tool
|
||||
TargetPath=.\Debug\makefont.exe
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Desc=Copyint to valve\
|
||||
PostBuild_Cmds=xcopy $(TargetPath) ..\..\..\valve /r /i
|
||||
# End Special Build Tool
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "makefont - Win32 Release"
|
||||
# Name "makefont - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\common\cmdlib.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\makefont.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\common\wadlib.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\common\cmdlib.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAfx.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\common\wadlib.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ReadMe.txt
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
3
utils/makefont/winebuild.sh
Executable file
3
utils/makefont/winebuild.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
winegcc -g -m32 makefont.cpp ../common/wadlib.c ../common/cmdlib.c -I../common/ -I../../common/ -mwindows -mno-cygwin -lwinmm -fno-stack-protector
|
Loading…
x
Reference in New Issue
Block a user