/// <summary> /// Fills the given reservation and removes it from the list of unfilled resource requirements /// </summary> /// <param name="res"></param> public void FillReservation(ConstructionReservation res) { if (!reservations.Contains(res)) { throw new ArgumentException("Reservation does not belong to this construction object"); } var requirement = unfilledResourceReqs.Single(r => r.name == res.resourceResourceKind.ToString()); res.Released = true; requirement.amount -= res.amount; reservations.Remove(res); //foreach (var requirement in unfilledResourceReqs) { // if (requirement.name == res.resourceType.ToString()) { // res.Released = true; // requirement.amount -= res.amount; // reservations.Remove(res); // break; // } //} if (ConstructionFinished()) { FinishContruction(); } }
public override void DoStep(ActorController actor) { if (actor.MoveTowards(manager.transform.position)) { ConstructionReservation res = actor.GetComponent <ConstructionReservation>(); UnityEngine.Object.Destroy(actor.GetCarriedResource(res.resourceResourceKind).gameObject); manager.FillReservation(res); Completed = true; } }
/// <summary> /// Fills the given reservation and removes it from the list of unfilled resource requirements /// </summary> /// <param name="res"></param> public void FillReservation(ConstructionReservation res) { if (!reservations.Contains(res)) { throw new ArgumentException("Reservation does not belong to this construction object", nameof(res)); } BuildingRequirement requirement = unfilledResourceReqs.Single(r => r.name == res.resourceKind.ToString()); res.Released = true; requirement.amount -= res.amount; reservations.Remove(res); if (ConstructionFinished()) { FinishContruction(); } }