mirror of
https://github.com/dhewm/dhewm3-sdk.git
synced 2024-11-22 20:51:40 +00:00
Add Code of Fitz Packerton
It's a short experimental standalone game based on the Doom3 Engine. I got the source at http://blendogames.com/older.htm You can get the game at https://teddydief.itch.io/fitz
This commit is contained in:
parent
85a1020490
commit
114a99cf83
10 changed files with 165 additions and 49 deletions
|
@ -130,6 +130,13 @@ const idEventDef EV_MotionBlurOff( "motionBlurOff" );
|
||||||
const idEventDef EV_GuiNamedEvent ( "guiNamedEvent", "ds" );
|
const idEventDef EV_GuiNamedEvent ( "guiNamedEvent", "ds" );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//bc
|
||||||
|
const idEventDef EV_GetIndex( "getIndex", NULL, 'd' );
|
||||||
|
const idEventDef EV_SetSolid( "setSolid", "d" );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ABSTRACT_DECLARATION( idClass, idEntity )
|
ABSTRACT_DECLARATION( idClass, idEntity )
|
||||||
EVENT( EV_GetName, idEntity::Event_GetName )
|
EVENT( EV_GetName, idEntity::Event_GetName )
|
||||||
EVENT( EV_SetName, idEntity::Event_SetName )
|
EVENT( EV_SetName, idEntity::Event_SetName )
|
||||||
|
@ -201,6 +208,12 @@ ABSTRACT_DECLARATION( idClass, idEntity )
|
||||||
EVENT( EV_GetGuiParmFloat, idEntity::Event_GetGuiParmFloat )
|
EVENT( EV_GetGuiParmFloat, idEntity::Event_GetGuiParmFloat )
|
||||||
EVENT( EV_GuiNamedEvent, idEntity::Event_GuiNamedEvent )
|
EVENT( EV_GuiNamedEvent, idEntity::Event_GuiNamedEvent )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//bc
|
||||||
|
EVENT( EV_GetIndex, idEntity::Event_GetIndex)
|
||||||
|
EVENT( EV_SetSolid, idEntity::Event_SetSolid)
|
||||||
|
|
||||||
END_CLASS
|
END_CLASS
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5068,6 +5081,30 @@ bool idEntity::IsGrabbed() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//bc
|
||||||
|
void idEntity::Event_GetIndex( void )
|
||||||
|
{
|
||||||
|
idThread::ReturnInt( this->entityNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
void idEntity::Event_SetSolid( int enable )
|
||||||
|
{
|
||||||
|
if ( enable > 0 )
|
||||||
|
{
|
||||||
|
GetPhysics()->SetContents( CONTENTS_SOLID );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GetPhysics()->SetContents( 0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
|
||||||
|
@ -5613,3 +5650,4 @@ void idAnimatedEntity::Event_GetJointAngle( jointHandle_t jointnum ) {
|
||||||
idVec3 vec( ang[ 0 ], ang[ 1 ], ang[ 2 ] );
|
idVec3 vec( ang[ 0 ], ang[ 1 ], ang[ 2 ] );
|
||||||
idThread::ReturnVector( vec );
|
idThread::ReturnVector( vec );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -488,6 +488,11 @@ private:
|
||||||
void Event_GetGuiParmFloat(int guiNum, const char *key);
|
void Event_GetGuiParmFloat(int guiNum, const char *key);
|
||||||
void Event_GuiNamedEvent(int guiNum, const char *event);
|
void Event_GuiNamedEvent(int guiNum, const char *event);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//bc
|
||||||
|
void Event_GetIndex( void );
|
||||||
|
void Event_SetSolid( int enable );
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -88,8 +88,12 @@ void idCursor3D::Present( void ) {
|
||||||
|
|
||||||
const idVec3 &origin = GetPhysics()->GetOrigin();
|
const idVec3 &origin = GetPhysics()->GetOrigin();
|
||||||
const idMat3 &axis = GetPhysics()->GetAxis();
|
const idMat3 &axis = GetPhysics()->GetAxis();
|
||||||
gameRenderWorld->DebugArrow( colorYellow, origin + axis[1] * -5.0f + axis[2] * 5.0f, origin, 2 );
|
|
||||||
gameRenderWorld->DebugArrow( colorRed, origin, draggedPosition, 2 );
|
if (developer.GetBool())
|
||||||
|
{
|
||||||
|
gameRenderWorld->DebugArrow( colorYellow, origin + axis[1] * -5.0f + axis[2] * 5.0f, origin, 2 );
|
||||||
|
gameRenderWorld->DebugArrow( colorRed, origin, draggedPosition, 2 );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -113,7 +117,7 @@ void idCursor3D::Think( void ) {
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MAX_DRAG_TRACE_DISTANCE 2048.0f
|
#define MAX_DRAG_TRACE_DISTANCE 128.0f
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==============
|
==============
|
||||||
|
@ -277,10 +281,17 @@ void idDragEntity::Update( idPlayer *player ) {
|
||||||
if ( joint != INVALID_JOINT && renderEntity && dragAnimator ) {
|
if ( joint != INVALID_JOINT && renderEntity && dragAnimator ) {
|
||||||
dragAnimator->GetJointTransform( joint, gameLocal.time, cursor->draggedPosition, axis );
|
dragAnimator->GetJointTransform( joint, gameLocal.time, cursor->draggedPosition, axis );
|
||||||
cursor->draggedPosition = renderEntity->origin + cursor->draggedPosition * renderEntity->axis;
|
cursor->draggedPosition = renderEntity->origin + cursor->draggedPosition * renderEntity->axis;
|
||||||
gameRenderWorld->DrawText( va( "%s\n%s\n%s, %s", drag->GetName(), drag->GetType()->classname, dragAnimator->GetJointName( joint ), bodyName.c_str() ), cursor->GetPhysics()->GetOrigin(), 0.1f, colorWhite, viewAxis, 1 );
|
|
||||||
|
|
||||||
|
if (developer.GetBool())
|
||||||
|
gameRenderWorld->DrawText( va( "%s\n%s\n%s, %s", drag->GetName(), drag->GetType()->classname, dragAnimator->GetJointName( joint ), bodyName.c_str() ), cursor->GetPhysics()->GetOrigin(), 0.1f, colorWhite, viewAxis, 1 );
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
cursor->draggedPosition = cursor->GetPhysics()->GetOrigin();
|
cursor->draggedPosition = cursor->GetPhysics()->GetOrigin();
|
||||||
gameRenderWorld->DrawText( va( "%s\n%s\n%s", drag->GetName(), drag->GetType()->classname, bodyName.c_str() ), cursor->GetPhysics()->GetOrigin(), 0.1f, colorWhite, viewAxis, 1 );
|
|
||||||
|
|
||||||
|
if (developer.GetBool())
|
||||||
|
gameRenderWorld->DrawText( va( "%s\n%s\n%s", drag->GetName(), drag->GetType()->classname, bodyName.c_str() ), cursor->GetPhysics()->GetOrigin(), 0.1f, colorWhite, viewAxis, 1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,7 +300,10 @@ void idDragEntity::Update( idPlayer *player ) {
|
||||||
// draw the bbox of the selected entity
|
// draw the bbox of the selected entity
|
||||||
renderEntity_t *renderEntity = selected.GetEntity()->GetRenderEntity();
|
renderEntity_t *renderEntity = selected.GetEntity()->GetRenderEntity();
|
||||||
if ( renderEntity ) {
|
if ( renderEntity ) {
|
||||||
gameRenderWorld->DebugBox( colorYellow, idBox( renderEntity->bounds, renderEntity->origin, renderEntity->axis ) );
|
|
||||||
|
|
||||||
|
if (developer.GetBool())
|
||||||
|
gameRenderWorld->DebugBox( colorYellow, idBox( renderEntity->bounds, renderEntity->origin, renderEntity->axis ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2687,6 +2687,12 @@ void idGameLocal::CalcFov( float base_fov, float &fov_x, float &fov_y ) const {
|
||||||
ratio_x = 16.0f;
|
ratio_x = 16.0f;
|
||||||
ratio_y = 10.0f;
|
ratio_y = 10.0f;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 3 :
|
||||||
|
// 21:9
|
||||||
|
ratio_x = 21.0f;
|
||||||
|
ratio_y = 9.0f;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
y = ratio_y / tan( fov_y / 360.0f * idMath::PI );
|
y = ratio_y / tan( fov_y / 360.0f * idMath::PI );
|
||||||
|
|
|
@ -1494,10 +1494,7 @@ void idPlayer::Init( void ) {
|
||||||
weapon_pda = SlotForWeapon( "weapon_pda" );
|
weapon_pda = SlotForWeapon( "weapon_pda" );
|
||||||
weapon_fists = SlotForWeapon( "weapon_fists" );
|
weapon_fists = SlotForWeapon( "weapon_fists" );
|
||||||
#ifdef _D3XP
|
#ifdef _D3XP
|
||||||
weapon_bloodstone = SlotForWeapon( "weapon_bloodstone_passive" );
|
|
||||||
weapon_bloodstone_active1 = SlotForWeapon( "weapon_bloodstone_active1" );
|
|
||||||
weapon_bloodstone_active2 = SlotForWeapon( "weapon_bloodstone_active2" );
|
|
||||||
weapon_bloodstone_active3 = SlotForWeapon( "weapon_bloodstone_active3" );
|
|
||||||
harvest_lock = false;
|
harvest_lock = false;
|
||||||
#endif
|
#endif
|
||||||
showWeaponViewModel = GetUserInfo()->GetBool( "ui_showGun" );
|
showWeaponViewModel = GetUserInfo()->GetBool( "ui_showGun" );
|
||||||
|
@ -1645,19 +1642,19 @@ void idPlayer::Init( void ) {
|
||||||
value = spawnArgs.GetString( "bone_hips", "" );
|
value = spawnArgs.GetString( "bone_hips", "" );
|
||||||
hipJoint = animator.GetJointHandle( value );
|
hipJoint = animator.GetJointHandle( value );
|
||||||
if ( hipJoint == INVALID_JOINT ) {
|
if ( hipJoint == INVALID_JOINT ) {
|
||||||
gameLocal.Error( "Joint '%s' not found for 'bone_hips' on '%s'", value, name.c_str() );
|
gameLocal.Warning( "Joint '%s' not found for 'bone_hips' on '%s'", value, name.c_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
value = spawnArgs.GetString( "bone_chest", "" );
|
value = spawnArgs.GetString( "bone_chest", "" );
|
||||||
chestJoint = animator.GetJointHandle( value );
|
chestJoint = animator.GetJointHandle( value );
|
||||||
if ( chestJoint == INVALID_JOINT ) {
|
if ( chestJoint == INVALID_JOINT ) {
|
||||||
gameLocal.Error( "Joint '%s' not found for 'bone_chest' on '%s'", value, name.c_str() );
|
gameLocal.Warning( "Joint '%s' not found for 'bone_chest' on '%s'", value, name.c_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
value = spawnArgs.GetString( "bone_head", "" );
|
value = spawnArgs.GetString( "bone_head", "" );
|
||||||
headJoint = animator.GetJointHandle( value );
|
headJoint = animator.GetJointHandle( value );
|
||||||
if ( headJoint == INVALID_JOINT ) {
|
if ( headJoint == INVALID_JOINT ) {
|
||||||
gameLocal.Error( "Joint '%s' not found for 'bone_head' on '%s'", value, name.c_str() );
|
gameLocal.Warning( "Joint '%s' not found for 'bone_head' on '%s'", value, name.c_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// initialize the script variables
|
// initialize the script variables
|
||||||
|
@ -3031,14 +3028,7 @@ void idPlayer::UpdateHudAmmo( idUserInterface *_hud ) {
|
||||||
_hud->SetStateString( "player_ammo_count", va("%i", weapon.GetEntity()->AmmoCount()));
|
_hud->SetStateString( "player_ammo_count", va("%i", weapon.GetEntity()->AmmoCount()));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _D3XP
|
|
||||||
//Make sure the hud always knows how many bloodstone charges there are
|
|
||||||
int ammoRequired;
|
|
||||||
ammo_t ammo_i = inventory.AmmoIndexForWeaponClass( "weapon_bloodstone_passive", &ammoRequired );
|
|
||||||
int bloodstoneAmmo = inventory.HasAmmo( ammo_i, ammoRequired );
|
|
||||||
_hud->SetStateString("player_bloodstone_ammo", va("%i", bloodstoneAmmo));
|
|
||||||
_hud->HandleNamedEvent( "bloodstoneAmmoUpdate" );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_hud->HandleNamedEvent( "updateAmmo" );
|
_hud->HandleNamedEvent( "updateAmmo" );
|
||||||
}
|
}
|
||||||
|
@ -3186,7 +3176,9 @@ idPlayer::DrawHUD
|
||||||
*/
|
*/
|
||||||
void idPlayer::DrawHUD( idUserInterface *_hud ) {
|
void idPlayer::DrawHUD( idUserInterface *_hud ) {
|
||||||
|
|
||||||
if ( !weapon.GetEntity() || influenceActive != INFLUENCE_NONE || privateCameraView || gameLocal.GetCamera() || !_hud || !g_showHud.GetBool() ) {
|
|
||||||
|
|
||||||
|
if ( !weapon.GetEntity() || influenceActive != INFLUENCE_NONE || privateCameraView || /*bc gameLocal.GetCamera() ||*/ !_hud || !g_showHud.GetBool() ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3243,7 +3235,7 @@ void idPlayer::EnterCinematic( void ) {
|
||||||
|
|
||||||
physicsObj.SetLinearVelocity( vec3_origin );
|
physicsObj.SetLinearVelocity( vec3_origin );
|
||||||
|
|
||||||
SetState( "EnterCinematic" );
|
//bc SetState( "EnterCinematic" );
|
||||||
UpdateScript();
|
UpdateScript();
|
||||||
|
|
||||||
if ( weaponEnabled && weapon.GetEntity() ) {
|
if ( weaponEnabled && weapon.GetEntity() ) {
|
||||||
|
@ -3284,7 +3276,7 @@ void idPlayer::ExitCinematic( void ) {
|
||||||
weapon.GetEntity()->ExitCinematic();
|
weapon.GetEntity()->ExitCinematic();
|
||||||
}
|
}
|
||||||
|
|
||||||
SetState( "ExitCinematic" );
|
//bc SetState( "ExitCinematic" );
|
||||||
UpdateScript();
|
UpdateScript();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3507,23 +3499,7 @@ bool idPlayer::Give( const char *statname, const char *value ) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
bool ret = inventory.Give( this, spawnArgs, statname, value, &idealWeapon, true );
|
bool ret = inventory.Give( this, spawnArgs, statname, value, &idealWeapon, true );
|
||||||
if(!idStr::Icmp( statname, "ammo_bloodstone" ) ) {
|
|
||||||
//int i = inventory.AmmoIndexForAmmoClass( statname );
|
|
||||||
//int max = inventory.MaxAmmoForAmmoClass( this, statname );
|
|
||||||
//if(hud && inventory.ammo[ i ] >= max) {
|
|
||||||
if(hud) {
|
|
||||||
|
|
||||||
//Force an update of the bloodstone ammount
|
|
||||||
int ammoRequired;
|
|
||||||
ammo_t ammo_i = inventory.AmmoIndexForWeaponClass( "weapon_bloodstone_passive", &ammoRequired );
|
|
||||||
int bloodstoneAmmo = inventory.HasAmmo( ammo_i, ammoRequired );
|
|
||||||
hud->SetStateString("player_bloodstone_ammo", va("%i", bloodstoneAmmo));
|
|
||||||
|
|
||||||
hud->HandleNamedEvent("bloodstoneReady");
|
|
||||||
//Make sure we unlock the ability to harvest
|
|
||||||
harvest_lock = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
#else
|
#else
|
||||||
return inventory.Give( this, spawnArgs, statname, value, &idealWeapon, true );
|
return inventory.Give( this, spawnArgs, statname, value, &idealWeapon, true );
|
||||||
|
@ -5265,6 +5241,7 @@ Searches nearby locations
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
void idPlayer::UpdateLocation( void ) {
|
void idPlayer::UpdateLocation( void ) {
|
||||||
|
|
||||||
if ( hud ) {
|
if ( hud ) {
|
||||||
idLocationEntity *locationEntity = gameLocal.LocationForPoint( GetEyePosition() );
|
idLocationEntity *locationEntity = gameLocal.LocationForPoint( GetEyePosition() );
|
||||||
if ( locationEntity ) {
|
if ( locationEntity ) {
|
||||||
|
@ -7416,7 +7393,7 @@ void idPlayer::Think( void ) {
|
||||||
// update GUIs, Items, and character interactions
|
// update GUIs, Items, and character interactions
|
||||||
UpdateFocus();
|
UpdateFocus();
|
||||||
|
|
||||||
UpdateLocation();
|
//UpdateLocation();
|
||||||
|
|
||||||
// update player script
|
// update player script
|
||||||
UpdateScript();
|
UpdateScript();
|
||||||
|
|
|
@ -1154,7 +1154,7 @@ void idWeapon::GetWeaponDef( const char *objectname, int ammoinclip ) {
|
||||||
renderEntity.gui[ 0 ] = uiManager->FindGui( guiName, true, false, true );
|
renderEntity.gui[ 0 ] = uiManager->FindGui( guiName, true, false, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
zoomFov = weaponDef->dict.GetInt( "zoomFov", "70" );
|
zoomFov = weaponDef->dict.GetInt( "zoomFov", "10" );
|
||||||
berserk = weaponDef->dict.GetInt( "berserk", "2" );
|
berserk = weaponDef->dict.GetInt( "berserk", "2" );
|
||||||
|
|
||||||
weaponAngleOffsetAverages = weaponDef->dict.GetInt( "weaponAngleOffsetAverages", "10" );
|
weaponAngleOffsetAverages = weaponDef->dict.GetInt( "weaponAngleOffsetAverages", "10" );
|
||||||
|
@ -2360,7 +2360,7 @@ void idWeapon::EnterCinematic( void ) {
|
||||||
StopSound( SND_CHANNEL_ANY, false );
|
StopSound( SND_CHANNEL_ANY, false );
|
||||||
|
|
||||||
if ( isLinked ) {
|
if ( isLinked ) {
|
||||||
SetState( "EnterCinematic", 0 );
|
//bc SetState( "EnterCinematic", 0 );
|
||||||
thread->Execute();
|
thread->Execute();
|
||||||
|
|
||||||
WEAPON_ATTACK = false;
|
WEAPON_ATTACK = false;
|
||||||
|
@ -2390,7 +2390,7 @@ void idWeapon::ExitCinematic( void ) {
|
||||||
disabled = false;
|
disabled = false;
|
||||||
|
|
||||||
if ( isLinked ) {
|
if ( isLinked ) {
|
||||||
SetState( "ExitCinematic", 0 );
|
//bc SetState( "ExitCinematic", 0 );
|
||||||
thread->Execute();
|
thread->Execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2459,7 +2459,7 @@ ammo_t idWeapon::GetAmmoNumForName( const char *ammoname ) {
|
||||||
|
|
||||||
ammoDict = gameLocal.FindEntityDefDict( "ammo_types", false );
|
ammoDict = gameLocal.FindEntityDefDict( "ammo_types", false );
|
||||||
if ( !ammoDict ) {
|
if ( !ammoDict ) {
|
||||||
gameLocal.Error( "Could not find entity definition for 'ammo_types'\n" );
|
gameLocal.Warning( "Could not find entity definition for 'ammo_types'\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !ammoname[ 0 ] ) {
|
if ( !ammoname[ 0 ] ) {
|
||||||
|
@ -2513,7 +2513,7 @@ const char *idWeapon::GetAmmoNameForNum( ammo_t ammonum ) {
|
||||||
|
|
||||||
ammoDict = gameLocal.FindEntityDefDict( "ammo_types", false );
|
ammoDict = gameLocal.FindEntityDefDict( "ammo_types", false );
|
||||||
if ( !ammoDict ) {
|
if ( !ammoDict ) {
|
||||||
gameLocal.Error( "Could not find entity definition for 'ammo_types'\n" );
|
gameLocal.Warning( "Could not find entity definition for 'ammo_types'\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf( text, "%d", ammonum );
|
sprintf( text, "%d", ammonum );
|
||||||
|
|
|
@ -223,7 +223,7 @@ idCVar g_editEntityMode( "g_editEntityMode", "0", CVAR_GAME | CVAR_INTEGER
|
||||||
"5 = monsters\n"
|
"5 = monsters\n"
|
||||||
"6 = entity names\n"
|
"6 = entity names\n"
|
||||||
"7 = entity models", 0, 7, idCmdSystem::ArgCompletion_Integer<0,7> );
|
"7 = entity models", 0, 7, idCmdSystem::ArgCompletion_Integer<0,7> );
|
||||||
idCVar g_dragEntity( "g_dragEntity", "0", CVAR_GAME | CVAR_BOOL, "allows dragging physics objects around by placing the crosshair over them and holding the fire button" );
|
idCVar g_dragEntity( "g_dragEntity", "1", CVAR_GAME | CVAR_BOOL, "allows dragging physics objects around by placing the crosshair over them and holding the fire button" );
|
||||||
idCVar g_dragDamping( "g_dragDamping", "0.5", CVAR_GAME | CVAR_FLOAT, "" );
|
idCVar g_dragDamping( "g_dragDamping", "0.5", CVAR_GAME | CVAR_FLOAT, "" );
|
||||||
idCVar g_dragShowSelection( "g_dragShowSelection", "0", CVAR_GAME | CVAR_BOOL, "" );
|
idCVar g_dragShowSelection( "g_dragShowSelection", "0", CVAR_GAME | CVAR_BOOL, "" );
|
||||||
idCVar g_dropItemRotation( "g_dropItemRotation", "", CVAR_GAME, "" );
|
idCVar g_dropItemRotation( "g_dropItemRotation", "", CVAR_GAME, "" );
|
||||||
|
@ -314,7 +314,7 @@ idCVar pm_normalviewheight( "pm_normalviewheight", "68", CVAR_GAME | CVAR_N
|
||||||
idCVar pm_deadheight( "pm_deadheight", "20", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's bounding box while dead" );
|
idCVar pm_deadheight( "pm_deadheight", "20", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's bounding box while dead" );
|
||||||
idCVar pm_deadviewheight( "pm_deadviewheight", "10", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's view while dead" );
|
idCVar pm_deadviewheight( "pm_deadviewheight", "10", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's view while dead" );
|
||||||
idCVar pm_crouchrate( "pm_crouchrate", "0.87", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "time it takes for player's view to change from standing to crouching" );
|
idCVar pm_crouchrate( "pm_crouchrate", "0.87", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "time it takes for player's view to change from standing to crouching" );
|
||||||
idCVar pm_bboxwidth( "pm_bboxwidth", "32", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "x/y size of player's bounding box" );
|
idCVar pm_bboxwidth( "pm_bboxwidth", "16", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "x/y size of player's bounding box" );
|
||||||
idCVar pm_crouchbob( "pm_crouchbob", "0.5", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "bob much faster when crouched" );
|
idCVar pm_crouchbob( "pm_crouchbob", "0.5", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "bob much faster when crouched" );
|
||||||
idCVar pm_walkbob( "pm_walkbob", "0.3", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "bob slowly when walking" );
|
idCVar pm_walkbob( "pm_walkbob", "0.3", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "bob slowly when walking" );
|
||||||
idCVar pm_runbob( "pm_runbob", "0.4", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "bob faster when running" );
|
idCVar pm_runbob( "pm_runbob", "0.4", CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "bob faster when running" );
|
||||||
|
|
|
@ -233,12 +233,16 @@ idCompiler::idCompiler() {
|
||||||
|
|
||||||
memset( &immediate, 0, sizeof( immediate ) );
|
memset( &immediate, 0, sizeof( immediate ) );
|
||||||
memset( punctuationValid, 0, sizeof( punctuationValid ) );
|
memset( punctuationValid, 0, sizeof( punctuationValid ) );
|
||||||
|
|
||||||
|
|
||||||
|
//BC todo
|
||||||
for( ptr = punctuation; *ptr != NULL; ptr++ ) {
|
for( ptr = punctuation; *ptr != NULL; ptr++ ) {
|
||||||
id = parserPtr->GetPunctuationId( *ptr );
|
id = parserPtr->GetPunctuationId( *ptr );
|
||||||
if ( ( id >= 0 ) && ( id < 256 ) ) {
|
if ( ( id >= 0 ) && ( id < 256 ) ) {
|
||||||
punctuationValid[ id ] = true;
|
punctuationValid[ id ] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -125,6 +125,9 @@ const idEventDef EV_Thread_DebugBounds( "debugBounds", "vvvf" );
|
||||||
const idEventDef EV_Thread_DrawText( "drawText", "svfvdf" );
|
const idEventDef EV_Thread_DrawText( "drawText", "svfvdf" );
|
||||||
const idEventDef EV_Thread_InfluenceActive( "influenceActive", NULL, 'd' );
|
const idEventDef EV_Thread_InfluenceActive( "influenceActive", NULL, 'd' );
|
||||||
|
|
||||||
|
//bc
|
||||||
|
const idEventDef EV_Thread_getClassEntity( "getClassEntity", "sd", 'e' );
|
||||||
|
|
||||||
CLASS_DECLARATION( idClass, idThread )
|
CLASS_DECLARATION( idClass, idThread )
|
||||||
EVENT( EV_Thread_Execute, idThread::Event_Execute )
|
EVENT( EV_Thread_Execute, idThread::Event_Execute )
|
||||||
EVENT( EV_Thread_TerminateThread, idThread::Event_TerminateThread )
|
EVENT( EV_Thread_TerminateThread, idThread::Event_TerminateThread )
|
||||||
|
@ -215,6 +218,15 @@ CLASS_DECLARATION( idClass, idThread )
|
||||||
EVENT( EV_Thread_DebugBounds, idThread::Event_DebugBounds )
|
EVENT( EV_Thread_DebugBounds, idThread::Event_DebugBounds )
|
||||||
EVENT( EV_Thread_DrawText, idThread::Event_DrawText )
|
EVENT( EV_Thread_DrawText, idThread::Event_DrawText )
|
||||||
EVENT( EV_Thread_InfluenceActive, idThread::Event_InfluenceActive )
|
EVENT( EV_Thread_InfluenceActive, idThread::Event_InfluenceActive )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//bc
|
||||||
|
EVENT( EV_Thread_getClassEntity, idThread::Event_getClassEntity)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
END_CLASS
|
END_CLASS
|
||||||
|
|
||||||
idThread *idThread::currentThread = NULL;
|
idThread *idThread::currentThread = NULL;
|
||||||
|
@ -1921,3 +1933,52 @@ void idThread::Event_InfluenceActive( void ) {
|
||||||
idThread::ReturnInt( false );
|
idThread::ReturnInt( false );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//bc
|
||||||
|
void idThread::Event_getClassEntity( const char *classname, int lastFound )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
lastFound++;
|
||||||
|
|
||||||
|
if (lastFound >= gameLocal.num_entities || lastFound < 0)
|
||||||
|
{
|
||||||
|
idThread::ReturnEntity( NULL );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( i = lastFound; i < gameLocal.num_entities; i++ )
|
||||||
|
{
|
||||||
|
if ( !gameLocal.entities[ i ] )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
//check if the classname matches.
|
||||||
|
|
||||||
|
//BC 12-18-2013 wildcard support.
|
||||||
|
|
||||||
|
idStr strClassname = classname;
|
||||||
|
int subIndex = strClassname.Find("*", false, 0, -1);
|
||||||
|
|
||||||
|
if (subIndex >= 0)
|
||||||
|
{
|
||||||
|
//Has a wildcard.
|
||||||
|
idStr classnameChunk = strClassname.Mid(0, subIndex);
|
||||||
|
idStr entityClassname = gameLocal.entities[ i ]->spawnArgs.GetString( "classname" );
|
||||||
|
|
||||||
|
if (idStr::Icmpn(classnameChunk, entityClassname, subIndex) != 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (idStr::Icmp( classname, gameLocal.entities[ i ]->spawnArgs.GetString( "classname" )) != 0) //No wildcard. Do normal check.
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
idThread::ReturnEntity( gameLocal.entities[ i ] );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
idThread::ReturnEntity( NULL );
|
||||||
|
}
|
|
@ -78,6 +78,11 @@ extern const idEventDef EV_Thread_FadeOut;
|
||||||
extern const idEventDef EV_Thread_FadeTo;
|
extern const idEventDef EV_Thread_FadeTo;
|
||||||
extern const idEventDef EV_Thread_Restart;
|
extern const idEventDef EV_Thread_Restart;
|
||||||
|
|
||||||
|
|
||||||
|
//bc
|
||||||
|
extern const idEventDef EV_Thread_getClassEntity;
|
||||||
|
|
||||||
|
|
||||||
class idThread : public idClass {
|
class idThread : public idClass {
|
||||||
private:
|
private:
|
||||||
static idThread *currentThread;
|
static idThread *currentThread;
|
||||||
|
@ -108,6 +113,12 @@ private:
|
||||||
void Event_Execute( void );
|
void Event_Execute( void );
|
||||||
void Event_SetThreadName( const char *name );
|
void Event_SetThreadName( const char *name );
|
||||||
|
|
||||||
|
|
||||||
|
//bc
|
||||||
|
void Event_getClassEntity( const char *classname, int lastFound );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// script callable Events
|
// script callable Events
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue