Small change to allow adjustment of individual haptic intensity

This commit is contained in:
Simon 2021-06-11 19:25:11 +01:00
parent f8ab514d5c
commit 8bd954828a
14 changed files with 50 additions and 21 deletions

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.drbeef.questzdoom"
android:versionCode="25"
android:versionName="1.2.0" android:installLocation="auto" >
android:versionCode="26"
android:versionName="1.2.1" android:installLocation="auto" >
<!-- Tell the system this app requires OpenGL ES 3.1. -->
<uses-feature android:glEsVersion="0x00030001" android:required="true"/>

View file

@ -1677,6 +1677,19 @@ FBaseCVar *FindCVarSub (const char *var_name, int namelen)
return var;
}
float C_GetExternalHapticLevelValue(const char *haptic_name)
{
char buffer[256];
sprintf(buffer, "ext_haptic_level_%s", haptic_name);
FBaseCVar *pCVar = FindCVar(buffer, NULL);
if (pCVar != NULL)
{
return pCVar->GetGenericRep(CVAR_Float).Float;
}
return 1.0;
}
FBaseCVar *GetCVar(int playernum, const char *cvarname)
{
FBaseCVar *cvar = FindCVar(cvarname, nullptr);

View file

@ -181,7 +181,8 @@ private:
friend void C_BackupCVars (void);
friend FBaseCVar *FindCVar (const char *var_name, FBaseCVar **prev);
friend FBaseCVar *FindCVarSub (const char *var_name, int namelen);
friend void UnlatchCVars (void);
friend float C_GetExternalHapticLevelValue(const char *haptic_name);
friend void UnlatchCVars (void);
friend void DestroyCVarsFlagged (uint32_t flags);
friend void C_ArchiveCVars (FConfigFile *f, uint32_t filter);
friend void C_SetCVarsToDefaults (void);
@ -210,6 +211,10 @@ void C_BackupCVars (void);
FBaseCVar *FindCVar (const char *var_name, FBaseCVar **prev);
FBaseCVar *FindCVarSub (const char *var_name, int namelen);
//Returns the configured level (0-1.0, 1.0 if not defined) for any given haptic
//to use set a value in the config file like: haptic_level_shotgun
float C_GetExternalHapticLevelValue(const char *haptic_name);
// Used for ACS and DECORATE.
FBaseCVar *GetCVar(int playernum, const char *cvarname);
FBaseCVar *GetUserCVar(int playernum, const char *cvarname);

View file

@ -2081,7 +2081,7 @@ void FParser::SF_CloseDoor(void)
else speed = 1; // 1= normal speed
EV_DoDoor(DDoor::doorClose, NULL, NULL, sectag, 2.*clamp(speed, 1, 127), 0, 0, 0);
QzDoom_HapticEvent("doorclose", 0, 100, 0, 0);
QzDoom_HapticEvent("doorclose", 0, 100 * C_GetExternalHapticLevelValue("doorclose"), 0, 0);
}
}

View file

@ -109,7 +109,7 @@ bool FWeaponSlot::AddWeapon(PClassActor *type)
WeaponInfo info = { type, -1 };
Weapons.Push(info);
QzDoom_HapticEvent("pickup_weapon", 0, 100, 0, 0);
QzDoom_HapticEvent("pickup_weapon", 0, 100 * C_GetExternalHapticLevelValue("pickup_weapon"), 0, 0);
return true;
}

View file

@ -357,7 +357,7 @@ int FMugShot::UpdateState(player_t *player, StateFlags stateflags)
QzDoom_Vibrate(80, 0, vr_pickup_haptic_level); // left
QzDoom_Vibrate(80, 1, vr_pickup_haptic_level); // right
QzDoom_HapticEvent("pickup", 0, 100, 0, 0);
QzDoom_HapticEvent("pickup", 0, 100 * C_GetExternalHapticLevelValue("pickup"), 0, 0);
}
SetState("grin", false);

View file

@ -104,6 +104,17 @@ FRandom pr_cajump("CustomJump");
CVAR(Bool, vr_recoil, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
//External Haptics Level CVARs
CVAR(Float, ext_haptic_level_damage_projectile, 1.0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
CVAR(Float, ext_haptic_level_pickup_weapon, 1.0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
CVAR(Float, ext_haptic_level_pickup, 1.0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
CVAR(Float, ext_haptic_level_fire_weapon, 1.0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
CVAR(Float, ext_haptic_level_poison, 1.0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
CVAR(Float, ext_haptic_level_healstation, 1.0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
CVAR(Float, ext_haptic_level_heartbeat, 1.0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
CVAR(Float, ext_haptic_level_rumble, 1.0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
//==========================================================================
//
// ACustomInventory :: CallStateChain

View file

@ -1362,13 +1362,13 @@ static int DamageMobj (AActor *target, AActor *inflictor, AActor *source, int da
if (mod == NAME_None)
{
if (damage >= 15) {
QzDoom_HapticEvent("shotgun", 0, 100, attackAngle.Normalized360().Degrees, 0);
QzDoom_HapticEvent("shotgun", 0, 100 * C_GetExternalHapticLevelValue("damage_projectile"), attackAngle.Normalized360().Degrees, 0);
}
else {
QzDoom_HapticEvent("bullet", 0, 100, attackAngle.Normalized360().Degrees, 0);
QzDoom_HapticEvent("bullet", 0, 100 * C_GetExternalHapticLevelValue("damage_projectile"), attackAngle.Normalized360().Degrees, 0);
}
} else {
QzDoom_HapticEvent(mod, 0, 100, attackAngle.Normalized360().Degrees, 0);
QzDoom_HapticEvent(mod, 0, 100 * C_GetExternalHapticLevelValue("damage_projectile"), attackAngle.Normalized360().Degrees, 0);
}
}
}
@ -1786,7 +1786,7 @@ void P_PoisonDamage (player_t *player, AActor *source, int damage, bool playPain
QzDoom_Vibrate(500, 0, level); // left
QzDoom_Vibrate(500, 1, level); // right
QzDoom_HapticEvent(player->poisontype, 0, 100, 0, 0);
QzDoom_HapticEvent(player->poisontype, 0, 100 * C_GetExternalHapticLevelValue("poison"), 0, 0);
}
if (player->health < 50 && !deathmatch)

View file

@ -4491,11 +4491,11 @@ AActor *P_LineAttack(AActor *t1, DAngle angle, double distance,
//Haptics
long rightHanded = vr_control_scheme < 10;
QzDoom_Vibrate(150, rightHanded ? 1 : 0, 0.8);
QzDoom_HapticEvent("fire_weapon", rightHanded ? 2 : 1, 100, 0, 0);
QzDoom_HapticEvent("fire_weapon", rightHanded ? 2 : 1, 100 * C_GetExternalHapticLevelValue("fire_weapon"), 0, 0);
if (weaponStabilised) {
QzDoom_Vibrate(150, rightHanded ? 0 : 1, 0.6);
QzDoom_HapticEvent("fire_weapon", rightHanded ? 1 : 2, 100, 0, 0);
QzDoom_HapticEvent("fire_weapon", rightHanded ? 1 : 2, 100 * C_GetExternalHapticLevelValue("fire_weapon"), 0, 0);
}
}
}

View file

@ -924,7 +924,7 @@ bool P_GiveBody(AActor *actor, int num, int max)
QzDoom_Vibrate(100, 0, level); // left
QzDoom_Vibrate(100, 1, level); // right
QzDoom_HapticEvent("healstation", 0, 100 * level, 0, 0);
QzDoom_HapticEvent("healstation", 0, 100 * level * C_GetExternalHapticLevelValue("healstation"), 0, 0);
}
actor->health = player->health;
@ -6859,11 +6859,11 @@ AActor *P_SpawnPlayerMissile (AActor *source, double x, double y, double z,
//Haptics
long rightHanded = vr_control_scheme < 10;
QzDoom_Vibrate(150, rightHanded ? 1 : 0, 0.8);
QzDoom_HapticEvent("fire_weapon", rightHanded ? 2 : 1, 100, 0, 0);
QzDoom_HapticEvent("fire_weapon", rightHanded ? 2 : 1, 100 * C_GetExternalHapticLevelValue("fire_weapon"), 0, 0);
if (weaponStabilised)
{
QzDoom_Vibrate(150, rightHanded ? 0 : 1, 0.6);
QzDoom_HapticEvent("fire_weapon", rightHanded ? 1 : 2, 100, 0, 0);
QzDoom_HapticEvent("fire_weapon", rightHanded ? 1 : 2, 100 * C_GetExternalHapticLevelValue("fire_weapon"), 0, 0);
}
}

View file

@ -1266,13 +1266,13 @@ void P_PlayerThink (player_t *player)
{
if (player->health > previous_health)
{
QzDoom_HapticEvent("healstation", 0, 100, 0, 0);
QzDoom_HapticEvent("healstation", 0, 100 * C_GetExternalHapticLevelValue("healstation"), 0, 0);
}
}
else if (player->health > 0 && player->health <= 25)
{
//heartbeat is a special case that uses intensity for a different purpose
QzDoom_HapticEvent("heartbeat", 0, player->health, 0, 0);
QzDoom_HapticEvent("heartbeat", 0, player->health * C_GetExternalHapticLevelValue("heartbeat"), 0, 0);
}

View file

@ -929,8 +929,8 @@ void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor
QzDoom_Vibrate(10, 0, (float)left); // left
QzDoom_Vibrate(10, 1, (float)right); // right
QzDoom_HapticEvent("rumble_front", 0, 100 * left, 120, 0);
QzDoom_HapticEvent("rumble_back", 0, 100 * right, 120, 0);
QzDoom_HapticEvent("rumble_front", 0, 100 * left * C_GetExternalHapticLevelValue("rumble"), 120, 0);
QzDoom_HapticEvent("rumble_back", 0, 100 * right * C_GetExternalHapticLevelValue("rumble"), 120, 0);
}
}
}

View file

@ -135,7 +135,7 @@ void V_AddPlayerBlend (player_t *CPlayer, float blend[4], float maxinvalpha, int
QzDoom_Vibrate(50, 0, vr_pickup_haptic_level); // left
QzDoom_Vibrate(50, 1, vr_pickup_haptic_level); // right
QzDoom_HapticEvent("pickup", 0, 100, 0, 0);
QzDoom_HapticEvent("pickup", 0, 100 * C_GetExternalHapticLevelValue("pickup"), 0, 0);
}
// [SP] Allow player to tone down intensity of pickup flash.

View file

@ -41,7 +41,7 @@ const char *GetVersionString();
/** Lots of different version numbers **/
#define VERSIONSTR "DrBeef's QuestZDoom-1.2.0 (LZDoom 3.86)"
#define VERSIONSTR "DrBeef's QuestZDoom-1.2.1 (LZDoom 3.86)"
// The version as seen in the Windows resource
#define RC_FILEVERSION 3,86,0