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

◆ DeviceUpdate()

void ComponentEnergyManager::DeviceUpdate ( )
inlineprotected

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

1812 {
1813 /*
1814 vector pos = m_ThisEntityAI.GetPosition();
1815 string debug_message = "Object " + m_ThisEntityAI.GetType() + " | Energy: " + GetEnergy() + " | IsAtReach: " + (IsEnergySourceAtReach(pos)).ToString();
1816 Print(debug_message);
1817 */
1818
1819 if ( !m_IsPassiveDevice )
1820 {
1821 // 'm_ThisEntityAI' and 'this' must be checked because this method is caled from a timer
1822 if (m_ThisEntityAI && this && IsSwitchedOn() && !m_ThisEntityAI.IsRuined() && CheckWetness() && m_CanWork && !g_Game.IsMissionMainMenu())
1823 {
1824 bool was_powered = IsWorking();
1825 float consumed_energy_coef;
1826 // Make sure to use only as much % of energy as needed since this function can be called at random.
1827
1828 if ( m_LastUpdateTime == 0 )
1829 {
1831 consumed_energy_coef = 1.0;
1832 }
1833 else
1834 {
1835 float updatetime = GetCurrentUpdateTime();
1836 float time = updatetime - m_LastUpdateTime;
1837 consumed_energy_coef = time / 1000;
1838 }
1839
1840 if (consumed_energy_coef > 0) // Prevents calling of OnWork events when no energy is consumed
1841 {
1843 float consume_energy = GetEnergyUsage() * consumed_energy_coef;
1844 bool has_consumed_enough = true;
1845
1846 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1847 has_consumed_enough = ConsumeEnergy( consume_energy );
1848
1849 SetPowered( has_consumed_enough );
1850
1851 if ( has_consumed_enough )
1852 {
1853 if ( !was_powered )
1854 {
1855 m_CanStopWork = true;
1857 g_Game.GameScript.CallFunction(m_ThisEntityAI, "OnWorkStart", NULL, 0);
1858 UpdateCanWork();
1859 }
1860
1861 OnWork( consume_energy );
1862 }
1863 else
1864 {
1865 if ( was_powered )
1866 {
1867 if (m_CanStopWork)
1868 {
1869 m_CanStopWork = false;
1871 g_Game.GameScript.CallFunction(m_ThisEntityAI, "OnWorkStop", NULL, 0); // This event is called only once when the device STOPS being powered
1872 UpdateCanWork();
1873
1874 if (m_AutoSwitchOff)
1875 {
1876 SwitchOff();
1877 }
1878 }
1879 }
1880
1881 StopUpdates();
1882 }
1883 }
1884 else
1885 {
1887 }
1888 }
1889 else if (this && m_ThisEntityAI)
1890 {
1891 SetPowered( false );
1892 StopUpdates();
1893
1894 if (m_CanStopWork)
1895 {
1896 m_CanStopWork = false;
1898 g_Game.GameScript.CallFunction(m_ThisEntityAI, "OnWorkStop", NULL, 0); // This event is called only once when the device STOPS being powered
1899 UpdateCanWork();
1900
1901 if (m_AutoSwitchOff)
1902 {
1903 SwitchOff();
1904 }
1905 }
1906 }
1907 }
1908 }
DayZGame g_Game
Определения DayZGame.c:3942
EntityAI m_ThisEntityAI
Определения Component.c:24
float m_LastUpdateTime
Определения ComponentEnergyManager.c:55
float GetEnergyUsage()
Energy manager: Returns the number of energy this device needs to run itself (See its config >> energ...
Определения ComponentEnergyManager.c:1253
bool IsWorking()
Energy manager: Returns true if this device is working right now.
Определения ComponentEnergyManager.c:938
void WakeUpWholeBranch(EntityAI original_caller)
Определения ComponentEnergyManager.c:1587
bool CheckWetness()
Energy manager: Checks if this device is being stopped from working by its wetness level....
Определения ComponentEnergyManager.c:867
float GetCurrentUpdateTime()
Определения ComponentEnergyManager.c:1805
void ClearLastUpdateTime()
Определения ComponentEnergyManager.c:1795
void OnWork(float consumed_energy)
Определения ComponentEnergyManager.c:1405
void SetPowered(bool state)
Определения ComponentEnergyManager.c:1741
void SwitchOff()
Energy manager: Switches OFF the device.
Определения ComponentEnergyManager.c:415
bool ConsumeEnergy(float amount)
Energy manager: Consumes the given amount of energy. If there is not enough of stored energy in this ...
Определения ComponentEnergyManager.c:925
void RememberLastUpdateTime()
Определения ComponentEnergyManager.c:1800
bool IsSwitchedOn()
Energy manager: Returns state of the switch. Whenever the device is working or not does not matter....
Определения ComponentEnergyManager.c:897

Перекрестные ссылки CheckWetness(), ClearLastUpdateTime(), ConsumeEnergy(), g_Game, GetCurrentUpdateTime(), GetEnergyUsage(), IsSwitchedOn(), IsWorking(), m_AutoSwitchOff, m_CanStopWork, m_CanWork, m_IsPassiveDevice, m_LastUpdateTime, Component::m_ThisEntityAI, OnWork(), RememberLastUpdateTime(), SetPowered(), StopUpdates(), SwitchOff(), UpdateCanWork() и WakeUpWholeBranch().

Используется в SetPassiveState(), SwitchOff() и SwitchOn().