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

◆ HandleADS()

void DayZPlayer::HandleADS ( )
inlineprotected

This is main command logic

artificial Auto-ADS delay

if !raised if sprinting

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

1871 {
1872 if (!IsAlive())
1873 {
1875 {
1876 ExitSights();
1877 }
1878 return;
1879 }
1880
1881 bool bADSToggle = false;
1882 bool exitSights = false;
1883 HumanInputController hic = GetInputController();
1884 HumanItemAccessor hia = GetItemAccessor();
1885 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
1886 PlayerBase playerPB = PlayerBase.Cast(this);
1887 GetMovementState(m_MovementState);
1888
1889 if (playerPB.IsRolling())
1890 {
1891 exitSights = true;
1892 }
1893
1894 bool isItemInHandsWeapon = hia.IsItemInHandsWeapon();
1895 if (m_ResetADS || (!isItemInHandsWeapon && hic.WeaponADS()))
1896 {
1897 hic.ResetADS();
1898 m_ResetADS = false;
1899 }
1900
1901 if (!m_MovementState.IsRaised() || m_LiftWeapon_player)
1902 {
1904 exitSights = true;
1905 }
1906 else
1907 {
1908 bool isWeaponADS = hic.WeaponADS();
1909 if (m_bADS != isWeaponADS)
1910 {
1911 m_bADS = isWeaponADS;
1912 bADSToggle = true;
1913 }
1914
1916 {
1919 {
1920 bADSToggle = false;
1921 exitSights = true;
1922 }
1923 else
1924 {
1925 bADSToggle = true;
1926 }
1927 }
1928 }
1929
1930 if (bADSToggle && !GetCommand_Melee2() && !GetThrowing().IsThrowingModeEnabled())
1931 {
1932 if (hia.IsItemInHandsWeapon() && playerPB.GetWeaponManager() && !playerPB.GetWeaponManager().IsRunning())
1933 {
1934 Weapon_Base weapon = Weapon_Base.Cast(GetEntityInHands());
1935 ItemOptics optic = weapon.GetAttachedOptics();
1936 bool switchToADS = false;
1937 bool canUseIronsights = weapon.CanEnterIronsights();
1938 bool canUseOptics = optic != NULL;
1939
1940 if (canUseIronsights || canUseOptics)
1941 switchToADS = m_bADS;
1942
1943 // go to ironsights - disable ironsights when
1946 if (!m_MovementState.IsRaised() || m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_SPRINT)
1947 {
1948 switchToADS = false;
1949 }
1950
1951 // fixes camera switching during item transitions
1953 {
1954 exitSights = true;
1955 }
1956 else if (switchToADS) // enter ironsights or optics
1957 {
1958 // filter by usability
1959 if (weapon.GetWasIronSight() && !canUseIronsights)
1960 {
1961 weapon.SetWasIronSight(false);
1962 }
1963 else if (!weapon.GetWasIronSight() && !canUseOptics)
1964 {
1965 weapon.SetWasIronSight(true);
1966 }
1967
1968 if (weapon.GetWasIronSight())
1969 {
1970 SwitchOptics(optic,false);
1971 SetIronsights(true);
1972 }
1973 else if (!weapon.GetWasIronSight() || (!canUseIronsights && canUseOptics))
1974 {
1975 SetIronsights(false);
1976 SwitchOptics(optic,true);
1977 }
1978 else
1979 {
1980 exitSights = true;
1981 }
1982
1983 if (hcw && (m_CameraOptics/* || m_CameraIronsight*/))
1984 {
1985 hcw.SetADS(true);
1986 }
1987 }
1988 else
1989 {
1990 exitSights = true;
1991 }
1992 }
1993 }
1994
1995 // leave ironsight and/ or optics
1996 if (exitSights && !IsHandheldOpticsInUse() && (m_CameraIronsight || m_CameraOptics) || GetCommand_Melee2())
1997 {
1998 ExitSights();
1999 }
2000 }
bool IsProcessing()
returns true when FP is heating or cooling
Определения FireplaceBase.c:1647
StarlightOptic ItemOptics
void ResetWeaponRaiseProgress()
Определения DayZPlayerImplement.c:920
DayZPlayerImplementThrowing GetThrowing()
Определения DayZPlayerImplement.c:254
bool IsWeaponRaiseCompleted()
Определения DayZPlayerImplement.c:926
void SetIronsights(bool value)
Определения DayZPlayerImplement.c:360
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:396
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:3852
bool m_LiftWeapon_player
Определения DayZPlayerImplement.c:134
DayZPlayerInventory GetDayZPlayerInventory()
Определения DayZPlayerImplement.c:931
void SwitchOptics(ItemOptics optic, bool state)
Определения DayZPlayerImplement.c:425
bool IsRaised()
Определения DayZPlayerImplement.c:3861
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:1128
void HumanItemAccessor()
Определения humanitems.c:141

Перекрестные ссылки 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().