Beispiel #1
0
        public int CalculateCost(IGameWorldManager gameWorldManager, int baseDamage, ICardInstance cardInstance)
        {
            //TODO: actually calculate shit here
            var calculatedValue = CalculateCostOverridable(gameWorldManager, cardInstance);

            Logger.Log($"Calculating actual cost: {calculatedValue} for card: {cardInstance.Name}({cardInstance.UniqueId})");
            return(calculatedValue);
        }
Beispiel #2
0
 public PlayCardCommandData(
     PlayerKey sender,
     ICardInstance cardInstance,
     Vector2Int targetTile)
 {
     this._sender      = sender;
     this.cardInstance = cardInstance;
     this.targetTile   = targetTile;
 }
Beispiel #3
0
        public bool TryDraw(out ICardInstance card)
        {
            card = null;

            if (drawOrder.Count > 0)
            {
                card = drawOrder[0];
                drawOrder.RemoveAt(0);
                return(true);
            }
            return(false);
        }
Beispiel #4
0
    private void UpdateDisplay(ICardInstance card)
    {
        if (card == null)
        {
            throw new NotImplementedException();
        }

        NameUI.text        = card.Name;
        DescriptionUI.text = card.Description;
        CostUI.text        = card.Cost.ToString();
        GraphicUI.sprite   = card.Graphic;
    }
Beispiel #5
0
        public void CardCreated(CardMovePoint targetPoint, ICardInstance cardInstance)
        {
            if (OnCardCreated == null)
            {
                return;
            }
            CardCreatedEventArgs args = new CardCreatedEventArgs()
            {
                TargetPoint = targetPoint, CardInstance = cardInstance
            };

            OnCardCreated(this, args);
        }
Beispiel #6
0
        public void CardUpgraded(ICardInstance baseCardInstance, BaseCard upgradeTarget, ICardInstance upgradedInstance)
        {
            if (OnCardUpgraded == null)
            {
                return;
            }
            CardUpgradedEventArgs args = new CardUpgradedEventArgs()
            {
                BaseCardInstance = baseCardInstance, UpgradeTarget = upgradeTarget, UpgradedInstance = upgradedInstance
            };

            OnCardUpgraded(this, args);
        }
Beispiel #7
0
        public void CardUsed(ICardInstance cardInstance)
        {
            if (OnCardUsed == null)
            {
                return;
            }
            CardUsedEventArgs args = new CardUsedEventArgs()
            {
                CardInstance = cardInstance
            };

            OnCardUsed(this, args);
        }
Beispiel #8
0
        public void CardDrawn(ICardInstance cardInstance)
        {
            if (OnCardDrawn == null)
            {
                return;
            }
            CardDrawnEventArgs args = new CardDrawnEventArgs()
            {
                CardInstance = cardInstance
            };

            OnCardDrawn(this, args);
        }
Beispiel #9
0
        /// <summary>
        /// Gets the first card in the DrawOrder and removes it from the DrawOrder.
        /// Will throw NullReferenceException if DrawOrder is null or empty.
        /// </summary>
        /// <returns></returns>
        public ICardInstance DrawNext()
        {
            if (drawOrder == null ||
                drawOrder.Count <= 0)
            {
                throw new System.NullReferenceException("Tried to draw a card but no cards were in DrawOrder");
            }

            ICardInstance inst = drawOrder[0];

            drawOrder.RemoveAt(0);
            return(inst);
        }
Beispiel #10
0
 private void Start()
 {
     if (_card == null)
     {
         if (cardSo != null)
         {
             _card = cardSo.CreateInstance();
         }
     }
     if (_card != null)
     {
         UpdateDisplay(_card);
     }
 }
Beispiel #11
0
        public MatchData(
            Decklist deckPlayer1,
            Decklist deckPlayer2,
            Vector2Int gridSizeX,
            Vector2Int crystalPosition,
            int crystalStrength)
        {
            playerDatas   = new Dictionary <PlayerKey, PlayerData>();
            cardInstances = new Dictionary <ICardInstance, PlayerKey>();
            fieldEntities = new Dictionary <Vector2Int, IFieldEntity>();

            player1Key = new PlayerKey();
            player2Key = new PlayerKey();

            List <ICardInstance> player1Instances = new List <ICardInstance>();
            List <ICardInstance> player2Instances = new List <ICardInstance>();

            foreach (DecklistEntry entry in deckPlayer1.cards)
            {
                ICardData     cardData     = Cards.DB[entry.cardName];
                ICardInstance cardInstance = Cards.CreateCardInstance(cardData, player1Key);

                cardInstances.Add(cardInstance, player1Key);
                player1Instances.Add(cardInstance);
            }
            foreach (DecklistEntry entry in deckPlayer2.cards)
            {
                ICardData     cardData     = Cards.DB[entry.cardName];
                ICardInstance cardInstance = Cards.CreateCardInstance(cardData, player2Key);

                cardInstances.Add(cardInstance, player1Key);
                player2Instances.Add(cardInstance);
            }
            DrawOrder drawOrderP1 = new DrawOrder(player1Instances);
            DrawOrder drawOrderP2 = new DrawOrder(player2Instances);

            playerDatas.Add(player1Key, new PlayerData(drawOrderP1, player1Key, 5, 5));
            playerDatas.Add(player2Key, new PlayerData(drawOrderP2, player2Key, 5, 5));

            _crystal = new Crystal(crystalStrength);

            new FieldEntity <Crystal>(this, _crystal, crystalPosition);
            this.crystalPosition = crystalPosition;
            currentState         = new MatchState(MatchStateType.Idle, player1Key, player2Key);
        }
Beispiel #12
0
        internal static ICardInstance CreateCardInstance(ICardData cardData, PlayerKey player1Key)
        {
            Type          cardType     = cardData.type;
            ICardInstance cardInstance = null;

            if (cardType == typeof(Monster))
            {
                cardInstance = new CardInstance <Monster>(cardData);
            }
            else if (cardType == typeof(Spell))
            {
                cardInstance = new CardInstance <Spell>(cardData);
            }

            if (cardInstance == null)
            {
                throw new System.Exception("Invalid Card Type");
            }

            return(cardInstance);
        }
Beispiel #13
0
 public RuleEvaluationInfo()
 {
     actionAllowed     = true;
     ruleDeniedMessage = "NULL";
     cardInstance      = null;
 }
Beispiel #14
0
        public void CardMovedBetweenPiles(CardMovePoint sourcePoint, CardMovePoint targetPoint, ICardInstance cardInstance)
        {
            if (OnCardMovedBetweenPiles == null)
            {
                return;
            }
            CardMovedBetweenPilesEventArgs args = new CardMovedBetweenPilesEventArgs()
            {
                CardInstance = cardInstance, SourcePoint = sourcePoint, TargetPoint = targetPoint
            };

            OnCardMovedBetweenPiles(this, args);
        }
Beispiel #15
0
        public virtual int CalculateCostOverridable(IGameWorldManager gameWorldManager, ICardInstance cardInstance)
        {
            //TODO: actually calculate shit here

            // In case of CorruptionPower:
            if (CardType == CardType.Skill)
            {
                var hasCorruption = gameWorldManager.HeroManager.ActivePowerCards.Any(x => x.UniquePowerId == new Guid("05bbe85a-f7da-4555-a7cc-cc60bbc21bed"));
                if (hasCorruption)
                {
                    return(0);
                }
            }

            var calculatedCost = Cost;

            return(calculatedCost);
        }
Beispiel #16
0
        public override int CalculateCostOverridable(IGameWorldManager gameWorldManager, ICardInstance cardInstance)
        {
            var baseCost = base.CalculateCostOverridable(gameWorldManager, cardInstance);
            var newValue = Cost - (gameWorldManager.HeroManager.MetaInformation[MetaInformation.TimesPlayerGotAttacked] * 1);

            if (newValue > baseCost)
            {
                return(baseCost);
            }
            return(newValue >= 0 ? newValue : 0);
        }
Beispiel #17
0
 public RuleEvaluationInfo(bool actionAllowed, ICardInstance cardInstance = null)
 {
     this.actionAllowed     = actionAllowed;
     this.ruleDeniedMessage = "";
     this.cardInstance      = cardInstance;
 }
Beispiel #18
0
 public void SetCard(ICardInstance card)
 {
     _card = card;
     UpdateDisplay(_card);
 }
Beispiel #19
0
 public int CalculateCostOverridable(GameWorldManager gameWorldManager, ICardInstance cardInstance)
 {
     return(Cost);
 }