Esempio n. 1
0
        public IDiplomaticProposal DecomposeProposal(SerializableProposalData proposalData)
        {
            var sender   = CivFactory.AllCivilizations.Where(civ => civ.Template.Name.Equals(proposalData.Sender)).FirstOrDefault();
            var receiver = CivFactory.AllCivilizations.Where(civ => civ.Template.Name.Equals(proposalData.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 retval = new DiplomaticProposal(sender, receiver);

            foreach (var offerData in proposalData.OfferedBySender)
            {
                retval.AddAsOffer(ExchangeComposer.DecomposeExchange(offerData));
            }

            foreach (var demandData in proposalData.DemandedOfReceiver)
            {
                retval.AddAsDemand(ExchangeComposer.DecomposeExchange(demandData));
            }

            foreach (var bilateralData in proposalData.BilateralExchanges)
            {
                retval.AddAsBilateralExchange(ExchangeComposer.DecomposeExchange(bilateralData));
            }

            return(retval);
        }
Esempio n. 2
0
        public SerializableProposalData ComposeProposal(IDiplomaticProposal proposal)
        {
            var retval = new SerializableProposalData();

            retval.Sender   = proposal.Sender.Template.Name;
            retval.Receiver = proposal.Receiver.Template.Name;

            foreach (var offer in proposal.OfferedBySender)
            {
                retval.OfferedBySender.Add(ExchangeComposer.ComposeExchange(offer));
            }

            foreach (var demand in proposal.DemandedOfReceiver)
            {
                retval.DemandedOfReceiver.Add(ExchangeComposer.ComposeExchange(demand));
            }

            foreach (var bilateral in proposal.BilateralExchanges)
            {
                retval.BilateralExchanges.Add(ExchangeComposer.ComposeExchange(bilateral));
            }

            return(retval);
        }