public SerializableOngoingDealData ComposeOngoingDeal(IOngoingDeal ongoingDeal) { var retval = new SerializableOngoingDealData(); retval.Sender = ongoingDeal.Sender.Template.Name; retval.Receiver = ongoingDeal.Receiver.Template.Name; retval.TurnsLeft = ongoingDeal.TurnsLeft; foreach (var offer in ongoingDeal.ExchangesFromSender) { retval.ExchangesFromSender.Add(OngoingExchangeComposer.ComposeOngoingExchange(offer)); } foreach (var demand in ongoingDeal.ExchangesFromReceiver) { retval.ExchangesFromReceiver.Add(OngoingExchangeComposer.ComposeOngoingExchange(demand)); } foreach (var bilateral in ongoingDeal.BilateralExchanges) { retval.BilateralExchanges.Add(OngoingExchangeComposer.ComposeOngoingExchange(bilateral)); } return(retval); }
public IOngoingDeal DecomposeOngoingDeal(SerializableOngoingDealData ongoingDealData) { var sender = CivFactory.AllCivilizations.Where(civ => civ.Template.Name.Equals(ongoingDealData.Sender)).FirstOrDefault(); var receiver = CivFactory.AllCivilizations.Where(civ => civ.Template.Name.Equals(ongoingDealData.Receiver)).FirstOrDefault(); if (sender == null) { throw new InvalidOperationException("Could not find a sender of the specified name"); } if (receiver == null) { throw new InvalidOperationException("Could not find a receiver of the specified name"); } var fromSender = new List <IOngoingDiplomaticExchange>(); var fromReceiver = new List <IOngoingDiplomaticExchange>(); var bilateral = new List <IOngoingDiplomaticExchange>(); foreach (var offerData in ongoingDealData.ExchangesFromSender) { fromSender.Add(OngoingExchangeComposer.DecomposeOngoingExchange(offerData)); } foreach (var demandData in ongoingDealData.ExchangesFromReceiver) { fromReceiver.Add(OngoingExchangeComposer.DecomposeOngoingExchange(demandData)); } foreach (var bilateralData in ongoingDealData.BilateralExchanges) { bilateral.Add(OngoingExchangeComposer.DecomposeOngoingExchange(bilateralData)); } var retval = new OngoingDeal(sender, receiver, fromSender, fromReceiver, bilateral); retval.TurnsLeft = ongoingDealData.TurnsLeft; return(retval); }