Beispiel #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);
            }
        }
        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;
            }
        }
Beispiel #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);
        }