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

◆ DeviceUpdate()

void ComponentEnergyManager::DeviceUpdate ( )
inlineprotected

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

1748 {
1749 /*
1750 vector pos = m_ThisEntityAI.GetPosition();
1751 string debug_message = "Object " + m_ThisEntityAI.GetType() + " | Energy: " + GetEnergy() + " | IsAtReach: " + (IsEnergySourceAtReach(pos)).ToString();
1752 Print(debug_message);
1753 */
1754
1755 if ( !m_IsPassiveDevice )
1756 {
1757 // 'm_ThisEntityAI' and 'this' must be checked because this method is caled from a timer
1758 if ( m_ThisEntityAI && this && IsSwitchedOn() && !m_ThisEntityAI.IsRuined() && CheckWetness() && m_CanWork && !GetGame().IsMissionMainMenu() )
1759 {
1760 bool was_powered = IsWorking();
1761 float consumed_energy_coef;
1762 // Make sure to use only as much % of energy as needed since this function can be called at random.
1763
1764 if ( m_LastUpdateTime == 0 )
1765 {
1767 consumed_energy_coef = 1.0;
1768 }
1769 else
1770 {
1771 float updatetime = GetCurrentUpdateTime();
1772 float time = updatetime - m_LastUpdateTime;
1773 consumed_energy_coef = time / 1000;
1774 }
1775
1776 if (consumed_energy_coef > 0) // Prevents calling of OnWork events when no energy is consumed
1777 {
1779 float consume_energy = GetEnergyUsage() * consumed_energy_coef;
1780 bool has_consumed_enough = true;
1781
1782 if (GetGame().IsServer() || !GetGame().IsMultiplayer()) // single player or server side multiplayer
1783 has_consumed_enough = ConsumeEnergy( consume_energy );
1784
1785 SetPowered( has_consumed_enough );
1786
1787 if ( has_consumed_enough )
1788 {
1789 if ( !was_powered )
1790 {
1791 m_CanStopWork = true;
1793 GetGame().GameScript.CallFunction(m_ThisEntityAI, "OnWorkStart", NULL, 0);
1794 UpdateCanWork();
1795 }
1796
1797 OnWork( consume_energy );
1798 }
1799 else
1800 {
1801 if ( was_powered )
1802 {
1803 if (m_CanStopWork)
1804 {
1805 m_CanStopWork = false;
1807 GetGame().GameScript.CallFunction(m_ThisEntityAI, "OnWorkStop", NULL, 0); // This event is called only once when the device STOPS being powered
1808 UpdateCanWork();
1809
1810 if (m_AutoSwitchOff)
1811 {
1812 SwitchOff();
1813 }
1814 }
1815 }
1816
1817 StopUpdates();
1818 }
1819 }
1820 else
1821 {
1823 }
1824 }
1825 else if (this && m_ThisEntityAI)
1826 {
1827 SetPowered( false );
1828 StopUpdates();
1829
1830 if (m_CanStopWork)
1831 {
1832 m_CanStopWork = false;
1834 GetGame().GameScript.CallFunction(m_ThisEntityAI, "OnWorkStop", NULL, 0); // This event is called only once when the device STOPS being powered
1835 UpdateCanWork();
1836
1837 if (m_AutoSwitchOff)
1838 {
1839 SwitchOff();
1840 }
1841 }
1842 }
1843 }
1844 }
ScriptModule GameScript
Определения Game.c:12
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:1208
bool IsWorking()
Energy manager: Returns true if this device is working right now.
Определения ComponentEnergyManager.c:900
void WakeUpWholeBranch(EntityAI original_caller)
Определения ComponentEnergyManager.c:1527
bool CheckWetness()
Energy manager: Checks if this device is being stopped from working by its wetness level....
Определения ComponentEnergyManager.c:843
float GetCurrentUpdateTime()
Определения ComponentEnergyManager.c:1741
void ClearLastUpdateTime()
Определения ComponentEnergyManager.c:1731
void OnWork(float consumed_energy)
Определения ComponentEnergyManager.c:1360
void SetPowered(bool state)
Определения ComponentEnergyManager.c:1678
void SwitchOff()
Energy manager: Switches OFF the device.
Определения ComponentEnergyManager.c:406
bool ConsumeEnergy(float amount)
Energy manager: Consumes the given amount of energy. If there is not enough of stored energy in this ...
Определения ComponentEnergyManager.c:894
void RememberLastUpdateTime()
Определения ComponentEnergyManager.c:1736
bool IsSwitchedOn()
Energy manager: Returns state of the switch. Whenever the device is working or not does not matter....
Определения ComponentEnergyManager.c:866
proto native CGame GetGame()
proto volatile int CallFunction(Class inst, string function, out void returnVal, void parm)

Перекрестные ссылки ScriptModule::CallFunction(), CheckWetness(), ClearLastUpdateTime(), ConsumeEnergy(), CGame::GameScript, GetCurrentUpdateTime(), GetEnergyUsage(), GetGame(), 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().