Пример #1
0
 public bool OverlapsWithExchange(IDiplomaticExchange exchange)
 {
     return(Type == exchange.Type && (
                (CityInput != null && CityInput == exchange.CityInput) ||
                (ResourceInput != null && ResourceInput == exchange.ResourceInput)
                ));
 }
        private bool HasOverlap(IDiplomaticExchange exchange)
        {
            foreach (var existingOffer in OfferedBySender)
            {
                if (existingOffer.OverlapsWithExchange(exchange))
                {
                    return(true);
                }
            }

            foreach (var existingDemand in DemandedOfReceiver)
            {
                if (existingDemand.OverlapsWithExchange(exchange))
                {
                    return(true);
                }
            }

            foreach (var existingBilateral in BilateralExchanges)
            {
                if (existingBilateral.OverlapsWithExchange(exchange))
                {
                    return(true);
                }
            }

            return(false);
        }
        public void AddAsDemand(IDiplomaticExchange exchange)
        {
            if (!CanAddAsDemand(exchange))
            {
                throw new InvalidOperationException("CanAddAsDemand must return true on the argued exchange");
            }

            demandedOfReceiver.Add(exchange);
        }
        public bool CanAddAsDemand(IDiplomaticExchange exchange)
        {
            if (exchange == null)
            {
                throw new ArgumentNullException("request");
            }

            return(!HasOverlap(exchange) && exchange.CanExecuteBetweenCivs(Receiver, Sender));
        }
        public void RemoveFromOffers(IDiplomaticExchange exchange)
        {
            if (exchange == null)
            {
                throw new ArgumentNullException("request");
            }

            offeredBySender.Remove(exchange);
        }
        public void AddAsOffer(IDiplomaticExchange exchange)
        {
            if (!CanAddAsOffer(exchange))
            {
                throw new InvalidOperationException("CanAddOffer must return true on the argued exchange");
            }

            offeredBySender.Add(exchange);
        }
        public void RemoveFromBilateralExchanges(IDiplomaticExchange exchange)
        {
            if (exchange == null)
            {
                throw new ArgumentNullException("exchange");
            }

            bilateralExchanges.Remove(exchange);
        }
        public void AddAsBilateralExchange(IDiplomaticExchange exchange)
        {
            if (!CanAddAsBilateralExchange(exchange))
            {
                throw new InvalidOperationException("CanAddAsBilateralExchange must return true on the argued exchange");
            }

            bilateralExchanges.Add(exchange);
        }
        public bool CanAddAsBilateralExchange(IDiplomaticExchange exchange)
        {
            if (exchange == null)
            {
                throw new ArgumentNullException("exchange");
            }

            return(!HasOverlap(exchange) && exchange.CanExecuteBetweenCivs(Sender, Receiver));
        }
        public void RemoveFromDemands(IDiplomaticExchange exchange)
        {
            if (exchange == null)
            {
                throw new ArgumentNullException("request");
            }

            demandedOfReceiver.Remove(exchange);
        }
Пример #11
0
        private void RemoveFromDemands(IDiplomaticExchange exchange)
        {
            ActiveProposal.RemoveFromDemands(exchange);

            var recordOfExchange = RecordOfExchange[exchange];

            recordOfExchange.ClickCallback = AddToDemands;
            recordOfExchange.ResetInput();

            recordOfExchange.transform.SetParent(AvailableDemandsContainer, false);
        }
Пример #12
0
        private void BuildExchangeRecord(IDiplomaticExchange exchange, RectTransform container)
        {
            var newRecord = Instantiate(ExchangeRecordPrefab);

            newRecord.ExchangeToRecord = exchange;
            newRecord.IsSelectable     = false;

            newRecord.transform.SetParent(container, false);
            newRecord.gameObject.SetActive(true);

            newRecord.Refresh();
        }
Пример #13
0
        private void AddToDemands(IDiplomaticExchange exchange)
        {
            if (ActiveProposal.CanAddAsDemand(exchange))
            {
                ActiveProposal.AddAsDemand(exchange);

                var recordOfExchange = RecordOfExchange[exchange];

                recordOfExchange.ClickCallback = RemoveFromDemands;
                recordOfExchange.ResetInput();

                recordOfExchange.transform.SetParent(DemandsInProposalContainer, false);
            }
        }
Пример #14
0
        private void BuildExchangeRecord(
            IDiplomaticExchange exchange, RectTransform container,
            Action <IDiplomaticExchange> clickCallback
            )
        {
            var newRecord = Instantiate(ExchangeRecordPrefab);

            newRecord.ExchangeToRecord = exchange;
            newRecord.ClickCallback    = clickCallback;

            newRecord.Refresh();

            newRecord.gameObject.SetActive(true);
            newRecord.transform.SetParent(container, false);

            RecordOfExchange[exchange] = newRecord;
        }
        public SerializableDiplomaticExchangeData ComposeExchange(IDiplomaticExchange exchange)
        {
            var retval = new SerializableDiplomaticExchangeData();

            retval.Type         = exchange.Type;
            retval.IntegerInput = exchange.IntegerInput;

            if (exchange.CityInput != null)
            {
                var cityLocation = CityLocationCanon.GetOwnerOfPossession(exchange.CityInput);
                retval.CityInputLocation = cityLocation.Coordinates;
            }

            if (exchange.ResourceInput != null)
            {
                retval.ResourceInput = exchange.ResourceInput.name;
            }

            return(retval);
        }
Пример #16
0
        private void BuildBilateralExchangeRecordPair(IDiplomaticExchange bilateralExchange)
        {
            var senderRecord   = Instantiate(ExchangeRecordPrefab);
            var receiverRecord = Instantiate(ExchangeRecordPrefab);

            senderRecord.ExchangeToRecord   = bilateralExchange;
            receiverRecord.ExchangeToRecord = bilateralExchange;

            var clickCallback = BuildBilateralClickCallback(senderRecord, receiverRecord);

            senderRecord.ClickCallback   += clickCallback;
            receiverRecord.ClickCallback += clickCallback;

            senderRecord.Refresh();
            receiverRecord.Refresh();

            senderRecord.gameObject.SetActive(true);
            receiverRecord.gameObject.SetActive(true);

            senderRecord.transform.SetParent(AvailableOffersContainer, false);
            receiverRecord.transform.SetParent(AvailableDemandsContainer, false);
        }