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

◆ HandleADS()

void DayZPlayer::HandleADS ( )
inlineprotected

This is main command logic

artificial Auto-ADS delay

if !raised if sprinting

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

1776 {
1777 if (!IsAlive())
1778 {
1780 {
1781 ExitSights();
1782 }
1783 return;
1784 }
1785
1786 bool bADSToggle = false;
1787 bool exitSights = false;
1788 HumanInputController hic = GetInputController();
1789 HumanItemAccessor hia = GetItemAccessor();
1790 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
1791 PlayerBase playerPB = PlayerBase.Cast(this);
1792 GetMovementState(m_MovementState);
1793
1794 if (playerPB.IsRolling())
1795 {
1796 exitSights = true;
1797 }
1798
1799 if (m_ResetADS || (!hia.IsItemInHandsWeapon() && hic.WeaponADS()))
1800 {
1801 hic.ResetADS();
1802 m_ResetADS = false;
1803 }
1804
1805 if (!m_MovementState.IsRaised() || m_LiftWeapon_player)
1806 {
1808 exitSights = true;
1809 }
1810 else
1811 {
1812 if (m_bADS != hic.WeaponADS())
1813 {
1814 m_bADS = hic.WeaponADS();
1815 bADSToggle = true;
1816 }
1817
1819 {
1822 {
1823 bADSToggle = false;
1824 exitSights = true;
1825 }
1826 else
1827 {
1828 bADSToggle = true;
1829 }
1830 }
1831 }
1832
1833 if (bADSToggle && !GetCommand_Melee2() && !GetThrowing().IsThrowingModeEnabled())
1834 {
1835 if (hia.IsItemInHandsWeapon() && playerPB.GetItemInHands() && playerPB.GetItemInHands().IsWeapon() && playerPB.GetWeaponManager() && !playerPB.GetWeaponManager().IsRunning())
1836 {
1837 Weapon_Base weapon = Weapon_Base.Cast(GetHumanInventory().GetEntityInHands());
1838 ItemOptics optic = weapon.GetAttachedOptics();
1839 bool switchToADS = false;
1840 bool canUseIronsights = weapon.CanEnterIronsights();
1841 bool canUseOptics = optic != NULL;
1842
1843 if (canUseIronsights || canUseOptics)
1844 switchToADS = m_bADS;
1845
1846 // go to ironsights - disable ironsights when
1849 if (!m_MovementState.IsRaised() || m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_SPRINT)
1850 {
1851 switchToADS = false;
1852 }
1853
1854 // fixes camera switching during item transitions
1856 {
1857 exitSights = true;
1858 }
1859 else if (switchToADS) // enter ironsights or optics
1860 {
1861 // filter by usability
1862 if (weapon.GetWasIronSight() && !canUseIronsights)
1863 {
1864 weapon.SetWasIronSight(false);
1865 }
1866 else if (!weapon.GetWasIronSight() && !canUseOptics)
1867 {
1868 weapon.SetWasIronSight(true);
1869 }
1870
1871 if (weapon.GetWasIronSight())
1872 {
1873 SwitchOptics(optic,false);
1874 SetIronsights(true);
1875 }
1876 else if (!weapon.GetWasIronSight() || (!canUseIronsights && canUseOptics))
1877 {
1878 SetIronsights(false);
1879 SwitchOptics(optic,true);
1880 }
1881 else
1882 {
1883 exitSights = true;
1884 }
1885
1886 if (hcw && (m_CameraOptics/* || m_CameraIronsight*/))
1887 {
1888 hcw.SetADS(true);
1889 }
1890 }
1891 else
1892 {
1893 exitSights = true;
1894 }
1895 }
1896 }
1897
1898 // leave ironsight and/ or optics
1899 if (exitSights && !IsHandheldOpticsInUse() && (m_CameraIronsight || m_CameraOptics) || GetCommand_Melee2())
1900 {
1901 ExitSights();
1902 }
1903 }
bool IsProcessing()
Определения DayZPlayerInventory.c:2461
void ResetWeaponRaiseProgress()
Определения DayZPlayerImplement.c:888
DayZPlayerImplementThrowing GetThrowing()
Определения DayZPlayerImplement.c:269
bool IsWeaponRaiseCompleted()
Определения DayZPlayerImplement.c:894
void SetIronsights(bool value)
Определения DayZPlayerImplement.c:375
bool IsLiftWeapon()
bool m_CameraIronsight
Определения DayZPlayerImplement.c:139
bool m_bADS
Определения DayZPlayerImplement.c:135
bool m_CameraOptics
Определения DayZPlayerImplement.c:140
bool IsFighting()
void ExitSights()
Определения DayZPlayerImplement.c:411
bool m_ResetADS
Определения DayZPlayerImplement.c:166
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:3803
bool m_LiftWeapon_player
Определения DayZPlayerImplement.c:158
DayZPlayerInventory GetDayZPlayerInventory()
Определения DayZPlayerImplement.c:899
void SwitchOptics(ItemOptics optic, bool state)
Определения DayZPlayerImplement.c:440
bool IsRaised()
Определения DayZPlayerImplement.c:3809
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:1113
void HumanItemAccessor()
Определения humanitems.c:141

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

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