DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ HandleADS()

void DayZPlayer::HandleADS ( )
inlineprotected

This is main command logic

artificial Auto-ADS delay

if !raised if sprinting

См. определение в файле DayZPlayerImplement.c строка 1886

1887 {
1888 if (!IsAlive())
1889 {
1891 {
1892 ExitSights();
1893 }
1894 return;
1895 }
1896
1897 bool bADSToggle = false;
1898 bool exitSights = false;
1899 HumanInputController hic = GetInputController();
1900 HumanItemAccessor hia = GetItemAccessor();
1901 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
1902 PlayerBase playerPB = PlayerBase.Cast(this);
1903 GetMovementState(m_MovementState);
1904
1905 if (playerPB.IsRolling())
1906 {
1907 exitSights = true;
1908 }
1909
1910 bool isItemInHandsWeapon = hia.IsItemInHandsWeapon();
1911 if (m_ResetADS || (!isItemInHandsWeapon && hic.WeaponADS()))
1912 {
1913 hic.ResetADS();
1914 m_ResetADS = false;
1915 }
1916
1917 if (!m_MovementState.IsRaised() || m_LiftWeapon_player)
1918 {
1920 exitSights = true;
1921 }
1922 else
1923 {
1924 bool isWeaponADS = hic.WeaponADS();
1925 if (m_bADS != isWeaponADS)
1926 {
1927 m_bADS = isWeaponADS;
1928 bADSToggle = true;
1929 }
1930
1932 {
1935 {
1936 bADSToggle = false;
1937 exitSights = true;
1938 }
1939 else
1940 {
1941 bADSToggle = true;
1942 }
1943 }
1944 }
1945
1946 if (bADSToggle && !GetCommand_Melee2() && !GetThrowing().IsThrowingModeEnabled())
1947 {
1948 if (hia.IsItemInHandsWeapon() && playerPB.GetWeaponManager() && !playerPB.GetWeaponManager().IsRunning())
1949 {
1950 Weapon_Base weapon = Weapon_Base.Cast(GetEntityInHands());
1951 ItemOptics optic = weapon.GetAttachedOptics();
1952 bool switchToADS = false;
1953 bool canUseIronsights = weapon.CanEnterIronsights();
1954 bool canUseOptics = optic != NULL;
1955
1956 if (canUseIronsights || canUseOptics)
1957 switchToADS = m_bADS;
1958
1959 // go to ironsights - disable ironsights when
1962 if (!m_MovementState.IsRaised() || m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_SPRINT)
1963 {
1964 switchToADS = false;
1965 }
1966
1967 // fixes camera switching during item transitions
1969 {
1970 exitSights = true;
1971 }
1972 else if (switchToADS) // enter ironsights or optics
1973 {
1974 // filter by usability
1975 if (weapon.GetWasIronSight() && !canUseIronsights)
1976 {
1977 weapon.SetWasIronSight(false);
1978 }
1979 else if (!weapon.GetWasIronSight() && !canUseOptics)
1980 {
1981 weapon.SetWasIronSight(true);
1982 }
1983
1984 if (weapon.GetWasIronSight())
1985 {
1986 SwitchOptics(optic,false);
1987 SetIronsights(true);
1988 }
1989 else if (!weapon.GetWasIronSight() || (!canUseIronsights && canUseOptics))
1990 {
1991 SetIronsights(false);
1992 SwitchOptics(optic,true);
1993 }
1994 else
1995 {
1996 exitSights = true;
1997 }
1998
1999 if (hcw && (m_CameraOptics/* || m_CameraIronsight*/))
2000 {
2001 hcw.SetADS(true);
2002 }
2003 }
2004 else
2005 {
2006 exitSights = true;
2007 }
2008 }
2009 }
2010
2011 // leave ironsight and/ or optics
2012 if (exitSights && !IsHandheldOpticsInUse() && (m_CameraIronsight || m_CameraOptics) || GetCommand_Melee2())
2013 {
2014 ExitSights();
2015 }
2016 }
bool IsProcessing()
returns true when FP is heating or cooling
Определения FireplaceBase.c:1663
StarlightOptic ItemOptics
void ResetWeaponRaiseProgress()
Определения DayZPlayerImplement.c:929
DayZPlayerImplementThrowing GetThrowing()
Определения DayZPlayerImplement.c:257
bool IsWeaponRaiseCompleted()
Определения DayZPlayerImplement.c:935
void SetIronsights(bool value)
Определения DayZPlayerImplement.c:363
bool IsLiftWeapon()
bool m_CameraIronsight
Определения DayZPlayerImplement.c:115
bool IsWeaponObstructionBlockingADS()
bool m_bADS
Определения DayZPlayerImplement.c:111
bool m_CameraOptics
Определения DayZPlayerImplement.c:116
bool IsFighting()
void ExitSights()
Определения DayZPlayerImplement.c:399
bool m_ResetADS
Определения DayZPlayerImplement.c:144
ref HumanMovementState m_MovementState
time step for gradual update of dead screen visibilibty up to full visbility [s]
Определения DayZPlayerImplement.c:92
bool IsHandheldOpticsInUse()
Определения DayZPlayerImplement.c:3996
bool m_LiftWeapon_player
Определения DayZPlayerImplement.c:134
DayZPlayerInventory GetDayZPlayerInventory()
Определения DayZPlayerImplement.c:940
void SwitchOptics(ItemOptics optic, bool state)
Определения DayZPlayerImplement.c:428
bool IsRaised()
Определения DayZPlayerImplement.c:4005
proto native void SetADS(bool pState)
sets head tilt to optics
proto native bool WeaponADS()
returns true if weapon ADS mode
proto native void ResetADS()
resets ADS mode to default
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
void HumanCommandWeapons()
Определения human.c:1155
void HumanItemAccessor()
Определения humanitems.c:147

Перекрестные ссылки ExitSights(), GetDayZPlayerInventory(), GetThrowing(), HumanItemAccessor(), IsFighting(), IsHandheldOpticsInUse(), IsLiftWeapon(), IsProcessing(), IsRaised(), IsWeaponObstructionBlockingADS(), IsWeaponRaiseCompleted(), m_bADS, m_CameraIronsight, m_CameraOptics, m_LiftWeapon_player, m_MovementState, m_ResetADS, HumanInputController::ResetADS(), ResetWeaponRaiseProgress(), HumanCommandWeapons::SetADS(), SetIronsights(), SwitchOptics() и HumanInputController::WeaponADS().

Используется в CommandHandler().