public NPCWeaponSlot(Unit unit, WeaponData data, int totalAmmo) : base(unit, data, totalAmmo) { Data = data; CurrentClip = data.ClipSize; TotalAmmo = totalAmmo; _weaponState = new ActiveWeaponState(); }
public Weapon(Unit unit, WeaponData data, int totalAmmo) { _unit = unit; Data = data; CurrentClip = data.ClipSize; TotalAmmo = totalAmmo; _weaponState = new ActiveWeaponState(); }
public virtual bool TryActivate(ActivateTime time, Unit unit, ActiveWeaponState state) { if ((time & _weaponActivateTime) == 0) { return(false); } // do weapon thing return(PerformAction(unit, state)); }
protected override bool PerformAction(Unit unit, ActiveWeaponState state) { if (!HasWeaponCooledDown(state.LastActivateTime)) { // fail to fire return(false); } // start firing the shot InitiateShot(unit); // update weapon state state.LastActivateTime = Time.time; return(true); }
protected abstract bool PerformAction(Unit unit, ActiveWeaponState state);