IEnumerator Harvest() { if (_harvesting) { yield break; } _harvesting = true; HarvestActivity activitie = null; while (HarvestStorage < activitie.HarvestStorage) { yield return(new WaitForSeconds(activitie.HarvestTime)); if (!_harvesting) { break; } HarvestStorage += activitie.HarvestRate; } if (HarvestStorage > activitie.HarvestStorage) { HarvestStorage = activitie.HarvestStorage; } _harvesting = false; }
IEnumerator Unload() { if (_harvesting) { yield break; } _harvesting = true; HarvestActivity activitie = null; //_monster.Parent.Activitie<HarvestActivity>(); while (HarvestStorage > 0) { yield return(new WaitForSeconds(activitie.HarvestTime)); if (!_harvesting) { break; } HarvestStorage -= activitie.HarvestRate; GameLogic.Sula += activitie.HarvestRate; } if (HarvestStorage < 0) { HarvestStorage = 0; } _harvesting = false; }
protected override void Update() { if (!Actor && HarvestStorage <= 0) { _monster.MoveToPosition(_monster.Parent); Destroy(this); return; } if (!_monster.Parent) { return; } HarvestActivity activitie = null; if (!activitie) { return; } if (Status == HarvesKind.Unload) { if (HarvestStorage <= 0) { Status = HarvesKind.None; _harvesting = false; return; } if (_monster.Distance(_monster.Parent) > activitie.HarvestRange) { _monster.MoveToPosition(_monster.Parent); return; } _monster.Stop(); if (!_harvesting) { StartCoroutine(Unload()); } return; } if (Status == HarvesKind.Harvest) { if (HarvestStorage >= activitie.HarvestStorage || !Actor) { Status = HarvesKind.Unload; _harvesting = false; return; } if (_monster.Distance(Actor) > activitie.HarvestRange) { _monster.MoveToPosition(Actor); return; } _monster.Stop(); if (!_harvesting) { StartCoroutine(Harvest()); } return; } if (_monster.Distance(Actor) > activitie.HarvestRange) { Status = HarvesKind.Harvest; _monster.MoveToPosition(Actor); } }
public static Activity GetHarvest() { return(HarvestActivity.GetInstance()); }