private void RefreshEffectInstances()
 {
     if (m_effectInstances.Count != System.Effects.Count)
     {
         var newList = new List<EffectInstance>(System.Effects.Count);
         for (int i = 0; i < System.Effects.Count; ++i)
         {
             newList.Add(i < m_effectInstances.Count ? m_effectInstances[i] : null);
         }
         m_effectInstances = newList;
         EffectInstances = m_effectInstances.ToIndexable();
     }
     for (int i = 0; i < m_effectInstances.Count; ++i)
     {
         if (m_effectInstances[i] == null || m_effectInstances[i].Effect != System.Effects[i])
         {
             m_effectInstances[i] = new EffectInstance(System.Effects[i], this);
         }
     }
 }
Ejemplo n.º 2
0
        private void InterpretMessageSelectCards(XDocument xmlMessage)
        {
            var selectCards = m_remoteInteraction as Interactions.SelectCards;
            if (selectCards == null)
            {
                throw new Exception("Wrong Phase");
            }

            List<int> indexes = ExtXML.GetDescendantsValues<Int32, XDocument>(xmlMessage, "Index");
            if (indexes.Count() == 0)
            {
                selectCards.Respond(Indexable.Empty<CardInstance>());
            }
            else
            {
                var selectedCards = new List<CardInstance>();
                for (int i = 0; i < indexes.Count; i++)
                {
                    var selectedCard = selectCards.Candidates[indexes[i]];
                    selectedCards.Add(selectedCard);
                }
                selectCards.Respond(selectedCards.ToIndexable());
            }
            m_remoteInteraction = null;
        }