public void AddMana(ManaSymbol mana) { if (ManaSymbol.GetColorCount(mana.color) > 1) { throw new ArgumentException("You can only add 0-1 color mana to your mana pool"); } manaSymbols.Add(mana); tempManaSymbols.Add(mana); }
public bool RemoveMana(ManaSymbol mana) { bool result = manaSymbols.Remove(mana); if (result) { tempManaSymbols.Remove(mana); } return(result); }
public virtual bool CanThisPayForMe(ManaSymbol manaBeingSpent) { int colorCount = GetColorCount(color); if (colorCount == 0) { return(true); } else if (colorCount == 1) { return(color.HasColor(manaBeingSpent.color)); } else { throw new ArgumentException("The ManaSymbol being spent should only have one color"); } }
public static bool operator ==(ManaCost x, ManaCost y) { if (object.ReferenceEquals(x, null)) { return(object.ReferenceEquals(y, null)); } if (object.ReferenceEquals(y, null)) { return(object.ReferenceEquals(x, null)); } // TODO Manacost should self-sort to make this faster if (x.manaSymbols.Count != y.manaSymbols.Count) { return(false); } var manaX = new List <ManaSymbol>(x.manaSymbols); var manaY = new List <ManaSymbol>(y.manaSymbols); for (int ix = 0; ix < manaX.Count; ix++) { bool found = false; ManaSymbol mana = manaX[ix]; for (int iy = 0; iy < manaY.Count; iy++) { if (manaY[iy] == mana) { manaY.RemoveAt(iy); found = true; break; } } if (!found) { return(false); } } return(true); }
public ManaChoice(List <ManaSymbol> manaSymbols, ManaSymbol manaToPay, int playerIndex) { Title = $"Choose which mana to use to pay for {manaToPay}"; Min = 1; Max = 1; Options = new List <ManaChoiceOption>(); Cancellable = true; foreach (var mana in manaSymbols) { Options.Add(new ManaChoiceOption { type = ManaChoiceOption.OptionType.UseMana, manaSymbol = mana }); } foreach (var kvp in MTG.Instance.objects) { OID oid = kvp.Key; MTGObject obj = kvp.Value; if (obj.attr.controller != playerIndex) { continue; } foreach (var ability in obj.attr.activatedAbilities) { if (ability is ManaAbility && ability.CanBeActivated(oid)) { Options.Add(new ManaChoiceOption { type = ManaChoiceOption.OptionType.ActivateManaAbility, manaAbilitySource = oid, manaAbility = ability as ManaAbility }); } } } }
public RemoveManaEvent(OID source, int player, ManaSymbol mana) : base(source) { this.player = player; this.mana = mana; }
internal AddManaEvent(OID source, int player, ManaSymbol mana) : base(source) { this.player = player; this.mana = mana; }
public PayManaCostEvent(ManaSymbol mana) : base() { this.mana = mana; }