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); }
private void RemoveFromDemands(IDiplomaticExchange exchange) { ActiveProposal.RemoveFromDemands(exchange); var recordOfExchange = RecordOfExchange[exchange]; recordOfExchange.ClickCallback = AddToDemands; recordOfExchange.ResetInput(); recordOfExchange.transform.SetParent(AvailableDemandsContainer, false); }
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(); }
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); } }
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); }
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); }