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

◆ DeviceUpdate()

void ComponentEnergyManager::DeviceUpdate ( )
inlineprotected

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

1782 {
1783 /*
1784 vector pos = m_ThisEntityAI.GetPosition();
1785 string debug_message = "Object " + m_ThisEntityAI.GetType() + " | Energy: " + GetEnergy() + " | IsAtReach: " + (IsEnergySourceAtReach(pos)).ToString();
1786 Print(debug_message);
1787 */
1788
1789 if ( !m_IsPassiveDevice )
1790 {
1791 // 'm_ThisEntityAI' and 'this' must be checked because this method is caled from a timer
1792 if (m_ThisEntityAI && this && IsSwitchedOn() && !m_ThisEntityAI.IsRuined() && CheckWetness() && m_CanWork && !g_Game.IsMissionMainMenu())
1793 {
1794 bool was_powered = IsWorking();
1795 float consumed_energy_coef;
1796 // Make sure to use only as much % of energy as needed since this function can be called at random.
1797
1798 if ( m_LastUpdateTime == 0 )
1799 {
1801 consumed_energy_coef = 1.0;
1802 }
1803 else
1804 {
1805 float updatetime = GetCurrentUpdateTime();
1806 float time = updatetime - m_LastUpdateTime;
1807 consumed_energy_coef = time / 1000;
1808 }
1809
1810 if (consumed_energy_coef > 0) // Prevents calling of OnWork events when no energy is consumed
1811 {
1813 float consume_energy = GetEnergyUsage() * consumed_energy_coef;
1814 bool has_consumed_enough = true;
1815
1816 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1817 has_consumed_enough = ConsumeEnergy( consume_energy );
1818
1819 SetPowered( has_consumed_enough );
1820
1821 if ( has_consumed_enough )
1822 {
1823 if ( !was_powered )
1824 {
1825 m_CanStopWork = true;
1827 g_Game.GameScript.CallFunction(m_ThisEntityAI, "OnWorkStart", NULL, 0);
1828 UpdateCanWork();
1829 }
1830
1831 OnWork( consume_energy );
1832 }
1833 else
1834 {
1835 if ( was_powered )
1836 {
1837 if (m_CanStopWork)
1838 {
1839 m_CanStopWork = false;
1841 g_Game.GameScript.CallFunction(m_ThisEntityAI, "OnWorkStop", NULL, 0); // This event is called only once when the device STOPS being powered
1842 UpdateCanWork();
1843
1844 if (m_AutoSwitchOff)
1845 {
1846 SwitchOff();
1847 }
1848 }
1849 }
1850
1851 StopUpdates();
1852 }
1853 }
1854 else
1855 {
1857 }
1858 }
1859 else if (this && m_ThisEntityAI)
1860 {
1861 SetPowered( false );
1862 StopUpdates();
1863
1864 if (m_CanStopWork)
1865 {
1866 m_CanStopWork = false;
1868 g_Game.GameScript.CallFunction(m_ThisEntityAI, "OnWorkStop", NULL, 0); // This event is called only once when the device STOPS being powered
1869 UpdateCanWork();
1870
1871 if (m_AutoSwitchOff)
1872 {
1873 SwitchOff();
1874 }
1875 }
1876 }
1877 }
1878 }
DayZGame g_Game
Определения DayZGame.c:4074
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:1240
bool IsWorking()
Energy manager: Returns true if this device is working right now.
Определения ComponentEnergyManager.c:925
void WakeUpWholeBranch(EntityAI original_caller)
Определения ComponentEnergyManager.c:1557
bool CheckWetness()
Energy manager: Checks if this device is being stopped from working by its wetness level....
Определения ComponentEnergyManager.c:854
float GetCurrentUpdateTime()
Определения ComponentEnergyManager.c:1775
void ClearLastUpdateTime()
Определения ComponentEnergyManager.c:1765
void OnWork(float consumed_energy)
Определения ComponentEnergyManager.c:1392
void SetPowered(bool state)
Определения ComponentEnergyManager.c:1711
void SwitchOff()
Energy manager: Switches OFF the device.
Определения ComponentEnergyManager.c:402
bool ConsumeEnergy(float amount)
Energy manager: Consumes the given amount of energy. If there is not enough of stored energy in this ...
Определения ComponentEnergyManager.c:912
void RememberLastUpdateTime()
Определения ComponentEnergyManager.c:1770
bool IsSwitchedOn()
Energy manager: Returns state of the switch. Whenever the device is working or not does not matter....
Определения ComponentEnergyManager.c:884

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