using UnityEngine; namespace BrewMonster.Scripts { public class CECObjectWork { // Attributes protected int m_iWorkID; // Work ID protected bool m_bFinished; // true, Work is finished protected uint m_dwMask; // Mask of this work protected uint m_dwTransMask; // Work transfer masks protected bool m_bFirstTick; // Constructor public CECObjectWork(int iWorkID) { m_iWorkID = iWorkID; m_bFinished = false; m_dwMask = 0; m_dwTransMask = 0; m_bFinished = true; } public virtual bool Tick(float dwDeltaTime) { if (m_bFirstTick) { m_bFirstTick = false; OnFirstTick(); } return true; } // Reset work public virtual void Reset() { m_bFinished = false; m_bFirstTick = true; } // Work is cancel public virtual void Cancel() { } // Can work transfer to another work with specified mask public virtual bool CanTransferTo(uint dwMask) { return (m_dwTransMask & dwMask) != 0; } // On work shift to public virtual void OnWorkShift() { } // Get work ID public int GetWorkID() => m_iWorkID; // Is work finished? public bool IsFinished() => m_bFinished; // Get work mask public uint GetWorkMask() => m_dwMask; // Get work transfer works public uint GetTransferMask() => m_dwTransMask; // On first tick public virtual void OnFirstTick() { } } }