private bool IsPlayableFromHand() { bool meetsPlayRequirements = PlayRequirements.Count == 0 || PlayRequirements.All(req => req.MeetsRequirement()); return(Player.IsLocalPlayer && State == State.InHand && Player.CanUseActions(ActionCost) && meetsPlayRequirements && IsUnique() && MeetsAdditionalPlayRequirements()); }
private void LoadPlayRequirements() { PlayRequirements = GetComponents <MonoBehaviour>().OfType <ICardPlayRequirement>().ToList(); var inputRequirement = PlayRequirements.OfType <InputRequirement>().SingleOrDefault(); if (inputRequirement != null) { _inputGatherer = GetComponent <InputGatherer>(); _fromHandActionInputRequired = inputRequirement.FromHandActionInputRequired; _inPlayActionInputRequired = inputRequirement.InPlayActionInputRequired; } }
/// <summary> /// Returns a string containing all information about this instance. /// </summary> /// <param name="gameTag"></param> /// <param name="playReq"></param> /// <returns></returns> public string FullPrint(bool gameTag = false, bool playReq = false) { var builder = new StringBuilder(); builder.Append($"[CARD: {Name} - {Id} (Col={Collectible},Set={Set})]"); if (gameTag) { builder.Append("\n GameTags:"); Tags.ToList().ForEach(pair => builder.Append($"\n - {pair.Key} -> {pair.Value}")); } if (playReq) { builder.Append("\n PlayReq:"); PlayRequirements.ToList().ForEach(pair => builder.Append($"\n - {pair.Key} -> {pair.Value}")); } return(builder.ToString()); }