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); } } }
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; }