Exemplo n.º 1
0
        internal bool ReceiveResourceRequest(MessageRequestResources msg)
        {
            Store s = getStoreForOwner(msg.Owner);
            if (s == null) return false; // does not have resources
                                         // check that we have the resources in store
            bool hasResources = checkResourcesAvailable(msg, s);

            if (hasResources)
            {
                // remove resources
                foreach (ResourceQuantity resQ in msg.ResourcesRequested)
                {
                    s.StoredResources[resQ.Type] -= resQ.Quantity;
                    //_actorTextOutput.Tell("Store removed " + resQ.Type + " " + resQ.Quantity);
                }
                return true;
            }
            else
            {
                return false;
            }
        }
Exemplo n.º 2
0
 private void requestResources(MessageTick tick)
 {
     MessageRequestResources msg = new MessageRequestResources(_bp.Consumes, _model.Owner, tick.Tick);
     if (_planetC.ReceiveResourceRequest(msg))
     {
         _model.TickForNextProduction = msg.TickSent + _bp.BaseTicks;
         _model.Producing = true;
         _model.ProduceNThenStop--;
     }
     else
     {
         _model.Producing = false;
     }
 }
Exemplo n.º 3
0
        private bool checkResourcesAvailable(MessageRequestResources msg, Store s)
        {
            bool hasResources = true;
            foreach (ResourceQuantity resQ in msg.ResourcesRequested)
            {
                if (s.StoredResources.ContainsKey(resQ.Type))
                {
                    UInt64 storedResQ = getStoredResourceQtyFromStore(s, resQ.Type);
                    if (storedResQ < resQ.Quantity)
                    {
                        hasResources = false;
                        break;
                    }
                }
                else
                {
                    hasResources = false;
                    break;
                }
            }

            return hasResources;
        }