/
SN1054NGC
/
DayZ_Projects_cpp
Обзор
Документация
Войти
/
SN1054NGC
/
DayZ_Projects_cpp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
scripts/4_world/classes/rainprocurementcomponent.c
89 строк
2 KB
SN1054NGC
Initial DayZ mod project commit
26 ноя 2025, 01:03
26 ноя 2025, 01:03
fddb039
Код
Авторство
О чём код?
class RainProcurementComponentBase : Managed { protected ItemBase m_ProcuringItem; protected RainProcurementHandler m_Handler; protected bool m_IsUnderRoof; protected bool m_IsActive; protected int m_UpdateCounter; protected const int UPDATE_ROOFCHECK_COUNT = 3; //do roofcheck every n updates void RainProcurementComponentBase(ItemBase procuringItem) { m_ProcuringItem = procuringItem; Reset(); m_Handler = MissionBaseWorld.Cast(GetGame().GetMission()).GetRainProcurementHandler(); } //! Called on server to queue rain procurement (on next cycle end) void StartRainProcurement() { #ifdef SERVER Reset(); SetActive(true); m_Handler.QueueStart(this); #endif } //! Called on server to queue rain procurement removal (on next cycle end) void StopRainProcurement() { #ifdef SERVER if (IsActive()) { SetActive(false); m_Handler.QueueStop(this); } #endif } void OnUpdate(float deltaTime, float amount) { m_UpdateCounter++; if (m_UpdateCounter == 0 || m_UpdateCounter == UPDATE_ROOFCHECK_COUNT) { m_UpdateCounter = 0; UpdateIsUnderRoof(); } ProcureLiquid(amount); } protected void Reset() { m_UpdateCounter = -1; } protected void ProcureLiquid(float amountBase, int liquidType = LIQUID_CLEANWATER) { if (!m_IsUnderRoof) { float actualAmount = amountBase * GetBaseLiquidAmount(); Liquid.FillContainerEnviro(m_ProcuringItem, liquidType, actualAmount); } } protected void UpdateIsUnderRoof() { m_IsUnderRoof = MiscGameplayFunctions.IsUnderRoof(m_ProcuringItem); } //! override this to get different amount per ProcureLiquid cycle float GetBaseLiquidAmount() { return GameConstants.LIQUID_RAIN_AMOUNT_COEF_BASE; } bool IsActive() { return m_IsActive; } void SetActive(bool run) { //resets times on start if (run) Reset(); m_IsActive = run; } }; class RainProcurementComponentBarrel : RainProcurementComponentBase {};