Exemple #1
0
        /// <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();
            }
        }