68 lines
1.7 KiB
C#
68 lines
1.7 KiB
C#
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() { }
|
|
}
|
|
}
|