//-------------------------------------------------------------------------------------------------------------- #region Constructor protected UiBaseCardState(IUiCard handler, BaseStateMachine fsm, UiCardParameters parameters) { Fsm = fsm; Handler = handler; Parameters = parameters; IsInitialized = true; }
//-------------------------------------------------------------------------------------------------------------- #region Operations /// <summary> /// Select the card in the parameter. /// </summary> /// <param name="card"></param> public void SelectCard(IUiCard card) { SelectedCard = card ?? throw new ArgumentNullException("Null is not a valid argument."); //disable all cards DisableCards(); OnCardSelected?.Invoke(SelectedCard); }
public UiCardTarget(IUiCard handler, Camera camera, BaseStateMachine fsm, UiCardParameters parameters) : base(handler, fsm, parameters) { var screenCenter = new Vector2(Screen.width, Screen.height) / 2; WorldCenter = camera.ScreenToWorldPoint(screenCenter).WithZ(0); Speed = 8; }
/// <summary> /// Discard the card in the parameter. /// </summary> /// <param name="card"></param> public void DiscardCard(IUiCard card) { if (card == null) { return; } RemoveCard(card); OnCardDiscarded?.Invoke(card); }
/// <summary> /// Removes a card from the graveyard or discard pile. /// </summary> /// <param name="card"></param> public override void RemoveCard(IUiCard card) { if (card == null) { throw new ArgumentNullException("Null is not a valid argument."); } Cards.Remove(card); NotifyPileChange(); }
//-------------------------------------------------------------------------------------------------------------- #region Operations /// <summary> /// Adds a card to the graveyard or discard pile. /// </summary> /// <param name="card"></param> public override void AddCard(IUiCard card) { if (card == null) { throw new ArgumentNullException("Null is not a valid argument."); } Cards.Add(card); card.transform.SetParent(graveyardPosition); card.Discard(); NotifyPileChange(); }
/// <summary> /// Unselect the card in the parameter. /// </summary> /// <param name="card"></param> public void UnselectCard(IUiCard card) { if (card == null) { return; } SelectedCard = null; card.Unselect(); NotifyPileChange(); EnableCards(); }
/// <summary> /// Play the card in the parameter. /// </summary> /// <param name="card"></param> public void PlayCard(IUiCard card) { if (card == null) { throw new ArgumentNullException("Null is not a valid argument."); } SelectedCard = null; RemoveCard(card); OnCardPlayed?.Invoke(card); EnableCards(); NotifyPileChange(); }
/// <summary> /// Add a card to the pile. /// </summary> /// <param name="card"></param> /// <exception cref="ArgumentNullException"></exception> public virtual void AddCard(IUiCard card) { if (card == null) { throw new ArgumentNullException("Null is not a valied argument."); } Cards.Add(card); card.transform.SetParent(transform); card.Initialize(); NotifyPileChange(); card.Draw(); }
//-------------------------------------------------------------------------------------------------------------- #region Operations /// <summary> /// Select the card in the parameter. /// </summary> /// <param name="card"></param> public void SelectCard(IUiCard card) { if (card == null) { return; } SelectedCard = card; //disable all cards DisableCards(); NotifyCardSelected(); }
public IEnumerator ResolveTargets(IUiCard uiCard, EffectTriggerType trigger) { if (uiCard == null) { yield return(0); } var card = uiCard.Data.RuntimeData; //grab all effects from the card var effects = GetEffects(card); //return if the specified trigger is not present if (!effects.Any(eff => eff.Key.tType == trigger)) { yield return(0); } var effectsByTrigger = effects[effects.First(eff => eff.Key.tType == trigger).Key].Effects; //register them in the card with their respective targets foreach (var effect in effectsByTrigger) { var targetType = effect.Target; var targets = targetType.GetTargets(card, GameData.RuntimeGame); if (targetType.IsDynamic) { uiCard.Target(); targetType.Subscribe(this); //keep checking the amount of targets until they are completely filled yield return(new WaitWhile(() => targetType.GetTargets(card, GameData.RuntimeGame).Length != targetType.TargetAmount)); targets = targetType.GetTargets(card, GameData.RuntimeGame); effect.Target.Unsubscribe(this); } card.AddTargets(effect, targets); } //resolve the spell Controller.PlayerController.Player.Play(card); OnTargetsResolve.Invoke(uiCard); }
public void RemoveUiCard(CardHand card) { IUiCard removed = null; foreach (var key in _registry.Keys) { if (_registry[key] == card) { removed = key; } } if (removed != null) { _registry.Remove(removed); } Pooler.Release(removed?.gameObject); }
/// <summary> /// Play the card in the parameter. If can't unselect it. /// </summary> /// <param name="uiCard"></param> public void PlayCard(IUiCard uiCard) { if (uiCard == null) { return; } var isMyTurn = Controller.PlayerController.IsMyTurn; var canPlayCost = Controller.PlayerController.Player.CanPlay(uiCard.Data.RuntimeData); if (!isMyTurn || !canPlayCost) { Unselect(); return; } SelectedCard = null; RemoveCard(uiCard); OnCardPlayed?.Invoke(uiCard); }
//-------------------------------------------------------------------------------------------------------------- #region Constructor public UiCardHandFsm(Camera camera, UiCardParameters cardConfigsParameters, IUiCard handler = null) : base(handler) { CardConfigsParameters = cardConfigsParameters; IdleState = new UiCardIdle(handler, this, CardConfigsParameters); DisableState = new UiCardDisable(handler, this, CardConfigsParameters); DragState = new UiCardDrag(handler, camera, this, CardConfigsParameters); HoverState = new UiCardHover(handler, this, CardConfigsParameters); DrawState = new UiCardDraw(handler, this, CardConfigsParameters); DiscardState = new UiCardDiscard(handler, this, CardConfigsParameters); RegisterState(IdleState); RegisterState(DisableState); RegisterState(DragState); RegisterState(HoverState); RegisterState(DrawState); RegisterState(DiscardState); Initialize(); }
public UiMotionMovementCard(IUiCard handler) : base(handler) { }
public UiCardDrag(IUiCard handler, Camera camera, BaseStateMachine fsm, UiCardParameters parameters) : base( handler, fsm, parameters) { MyCamera = camera; }
//-------------------------------------------------------------------------------------------------------------- protected UiMotionBaseCard(IUiCard handler) => Handler = handler;
//-------------------------------------------------------------------------------------------------------------- public UiCardScale(IUiCard handler) : base(handler) { }
public UiCardDiscard(IUiCard handler, BaseStateMachine fsm, UiCardParameters parameters) : base(handler, fsm, parameters) { }
//-------------------------------------------------------------------------------------------------------------- public UiMotionRotationCard(IUiCard handler) : base(handler) { }
public UiCardMovement(IUiCard handler) : base(handler) { }
//-------------------------------------------------------------------------------------------------------------- protected UiCardBaseTransform(IUiCard handler) { Handler = handler; }
//-------------------------------------------------------------------------------------------------------------- public UiCardRotation(IUiCard handler) : base(handler) { }
private void SelectCard(IUiCard uiCard) { SelectedCard = _registry[uiCard]; }
//-------------------------------------------------------------------------------------------------------------- public UiCardHover(IUiCard handler, BaseStateMachine fsm, UiCardParameters parameters) : base(handler, fsm, parameters) { HoverParticleSystem = handler.gameObject.GetComponentInChildren <UiHoverParticleSystem>(); }
void SelectCard(IUiCard uiCard) => SelectedCard = _registry[uiCard];
//-------------------------------------------------------------------------------------------------------------- public UiCardIdle(IUiCard handler, BaseStateMachine fsm, UiCardParameters parameters) : base(handler, fsm, parameters) { DefaultSize = Handler.transform.localScale; }
//-------------------------------------------------------------------------------------------------------------- public UiMotionScaleCard(IUiCard handler) : base(handler) { }
void RequestPlayCard(IUiCard uiCardPlayed) { var cardHand = _registry[uiCardPlayed]; GameData.CurrentGameInstance.PlayCard(PlayerId.User, cardHand); }
//-------------------------------------------------------------------------------------------------------------- public UiCardIdle(IUiCard handler, BaseStateMachine fsm, UiCardParameters parameters) : base(handler, fsm, parameters) =>