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

◆ HandleADS()

void DayZPlayer::HandleADS ( )
inlineprotected

This is main command logic

artificial Auto-ADS delay

if !raised if sprinting

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

1839 {
1840 if (!IsAlive())
1841 {
1843 {
1844 ExitSights();
1845 }
1846 return;
1847 }
1848
1849 bool bADSToggle = false;
1850 bool exitSights = false;
1851 HumanInputController hic = GetInputController();
1852 HumanItemAccessor hia = GetItemAccessor();
1853 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
1854 PlayerBase playerPB = PlayerBase.Cast(this);
1855 GetMovementState(m_MovementState);
1856
1857 if (playerPB.IsRolling())
1858 {
1859 exitSights = true;
1860 }
1861
1862 if (m_ResetADS || (!hia.IsItemInHandsWeapon() && hic.WeaponADS()))
1863 {
1864 hic.ResetADS();
1865 m_ResetADS = false;
1866 }
1867
1868 if (!m_MovementState.IsRaised() || m_LiftWeapon_player)
1869 {
1871 exitSights = true;
1872 }
1873 else
1874 {
1875 if (m_bADS != hic.WeaponADS())
1876 {
1877 m_bADS = hic.WeaponADS();
1878 bADSToggle = true;
1879 }
1880
1882 {
1885 {
1886 bADSToggle = false;
1887 exitSights = true;
1888 }
1889 else
1890 {
1891 bADSToggle = true;
1892 }
1893 }
1894 }
1895
1896 if (bADSToggle && !GetCommand_Melee2() && !GetThrowing().IsThrowingModeEnabled())
1897 {
1898 if (hia.IsItemInHandsWeapon() && playerPB.GetItemInHands() && playerPB.GetItemInHands().IsWeapon() && playerPB.GetWeaponManager() && !playerPB.GetWeaponManager().IsRunning())
1899 {
1900 Weapon_Base weapon = Weapon_Base.Cast(GetHumanInventory().GetEntityInHands());
1901 ItemOptics optic = weapon.GetAttachedOptics();
1902 bool switchToADS = false;
1903 bool canUseIronsights = weapon.CanEnterIronsights();
1904 bool canUseOptics = optic != NULL;
1905
1906 if (canUseIronsights || canUseOptics)
1907 switchToADS = m_bADS;
1908
1909 // go to ironsights - disable ironsights when
1912 if (!m_MovementState.IsRaised() || m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_SPRINT)
1913 {
1914 switchToADS = false;
1915 }
1916
1917 // fixes camera switching during item transitions
1919 {
1920 exitSights = true;
1921 }
1922 else if (switchToADS) // enter ironsights or optics
1923 {
1924 // filter by usability
1925 if (weapon.GetWasIronSight() && !canUseIronsights)
1926 {
1927 weapon.SetWasIronSight(false);
1928 }
1929 else if (!weapon.GetWasIronSight() && !canUseOptics)
1930 {
1931 weapon.SetWasIronSight(true);
1932 }
1933
1934 if (weapon.GetWasIronSight())
1935 {
1936 SwitchOptics(optic,false);
1937 SetIronsights(true);
1938 }
1939 else if (!weapon.GetWasIronSight() || (!canUseIronsights && canUseOptics))
1940 {
1941 SetIronsights(false);
1942 SwitchOptics(optic,true);
1943 }
1944 else
1945 {
1946 exitSights = true;
1947 }
1948
1949 if (hcw && (m_CameraOptics/* || m_CameraIronsight*/))
1950 {
1951 hcw.SetADS(true);
1952 }
1953 }
1954 else
1955 {
1956 exitSights = true;
1957 }
1958 }
1959 }
1960
1961 // leave ironsight and/ or optics
1962 if (exitSights && !IsHandheldOpticsInUse() && (m_CameraIronsight || m_CameraOptics) || GetCommand_Melee2())
1963 {
1964 ExitSights();
1965 }
1966 }
bool IsProcessing()
returns true when FP is heating or cooling
Определения FireplaceBase.c:1645
StarlightOptic ItemOptics
void ResetWeaponRaiseProgress()
Определения DayZPlayerImplement.c:896
DayZPlayerImplementThrowing GetThrowing()
Определения DayZPlayerImplement.c:276
bool IsWeaponRaiseCompleted()
Определения DayZPlayerImplement.c:902
void SetIronsights(bool value)
Определения DayZPlayerImplement.c:382
bool IsLiftWeapon()
bool m_CameraIronsight
Определения DayZPlayerImplement.c:139
bool IsWeaponObstructionBlockingADS()
bool m_bADS
Определения DayZPlayerImplement.c:135
bool m_CameraOptics
Определения DayZPlayerImplement.c:140
bool IsFighting()
void ExitSights()
Определения DayZPlayerImplement.c:418
bool m_ResetADS
Определения DayZPlayerImplement.c:168
ref HumanMovementState m_MovementState
time step for gradual update of dead screen visibilibty up to full visbility [s]
Определения DayZPlayerImplement.c:116
bool IsHandheldOpticsInUse()
Определения DayZPlayerImplement.c:3869
bool m_LiftWeapon_player
Определения DayZPlayerImplement.c:158
DayZPlayerInventory GetDayZPlayerInventory()
Определения DayZPlayerImplement.c:907
void SwitchOptics(ItemOptics optic, bool state)
Определения DayZPlayerImplement.c:447
bool IsRaised()
Определения DayZPlayerImplement.c:3878
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:1126
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().