Esempio n. 1
0
 bool TrySetTarget(HeroPower hero_power, IEntity target)
 {
     if (!target.CanBeTargeted(hero_power))
     {
         return(false);
     }
     return(hero_power.SetTarget(target));
 }
Esempio n. 2
0
 bool TryUseHeroPower(HeroPower power)
 {
     if (power.controller.can_use_hero_power && power.controller.SpendMana(power.mana_cost))
     {
         return(true);
     }
     return(false);
 }
Esempio n. 3
0
    void Awake()
    {
        hero_power = GetComponent <HeroPower>();

        if (art != null)
        {
            art.sprite = hero_power.art;
        }
    }
Esempio n. 4
0
    public HeroPower createHeroPower(string classname, Player p)
    {
        HeroPower     newHeroPower  = Instantiate(baseHeroPower) as HeroPower;
        HeroPowerCard heroPowerCard = getHeroPowerCardByClassname(classname);

        newHeroPower.player = p;
        newHeroPower.SetCard(heroPowerCard);

        return(newHeroPower);
    }
        public async Task DeletePowerById(int id)
        {
            HeroPower power = await _context.HeroPowers.Where(p => p.Id == id).FirstOrDefaultAsync();

            int heroId = power.HeroId;

            if (power == null)
            {
                throw new EntityNotFoundException($"There is no Hero Power with id: {id}");
            }

            _context.HeroPowers.Remove(power);
            await _context.SaveChangesAsync();

            _heroService.ChangeOverallStrength(heroId);
        }
Esempio n. 6
0
    public void LoadHeroPowerFromPrefab(HeroPower prefab)
    {
        if (prefab == null)
        {
            return;
        }

        HeroPower power = Instantiate(prefab);

        power.transform.SetParent(hero_power.transform.parent);
        power.transform.position   = hero_power.transform.position;
        power.transform.localScale = hero_power.transform.localScale;
        Destroy(hero_power.gameObject);

        _hero_power = power;

        power.SetController(player);
    }
Esempio n. 7
0
        private void addCardToZone(IZone zone, Card card, Controller player)
        {
            var tags = new Dictionary <GameTag, int>
            {
                [GameTag.ENTITY_ID]  = _game.NextId,
                [GameTag.CONTROLLER] = player.PlayerId,
                [GameTag.ZONE]       = (int)zone.Type
            };
            IPlayable playable = null;


            switch (card.Type)
            {
            case CardType.MINION:
                playable = new Minion(player, card, tags);
                break;

            case CardType.SPELL:
                playable = new Spell(player, card, tags);
                break;

            case CardType.WEAPON:
                playable = new Weapon(player, card, tags);
                break;

            case CardType.HERO:
                tags[GameTag.ZONE]     = (int)SabberStoneCore.Enums.Zone.PLAY;
                tags[GameTag.CARDTYPE] = card[GameTag.CARDTYPE];
                playable = new Hero(player, card, tags);
                break;

            case CardType.HERO_POWER:
                tags[GameTag.COST]     = card[GameTag.COST];
                tags[GameTag.ZONE]     = (int)SabberStoneCore.Enums.Zone.PLAY;
                tags[GameTag.CARDTYPE] = card[GameTag.CARDTYPE];
                playable = new HeroPower(player, card, tags);
                break;

            default:
                throw new EntityException($"Couldn't create entity, because of an unknown cardType {card.Type}.");
            }

            zone?.Add(playable);
        }
Esempio n. 8
0
    //creates a list of Cards for the CardController to turn into HandCards
    //First card is hero
    public bool processDecklist(string fileName)
    {
        try
        {
            string       line;
            StreamReader theReader = new StreamReader(fileName, Encoding.Default);

            using (theReader)
            {
                int count = 0;
                do
                {
                    line = theReader.ReadLine();

                    if (line != null)
                    {
                        if (count == 0)
                        {
                            hero             = playerInput.controller.createHero(line, this);
                            heroPower        = playerInput.controller.createHeroPower(hero.card.heroClass, this);
                            hero.Player      = this;
                            heroPower.player = this;
                        }
                        else
                        {
                            decklist[count - 1] = CardController.getCardByFilename(line);
                        }
                    }
                    count++;
                }while (line != null);
                theReader.Close();


                return(true);
            }
        }

        catch (Exception e)
        {
            Console.WriteLine("{0}\n", e.Message);
            return(false);
        }
    }
Esempio n. 9
0
 public void OnHeroPowerClicked()
 {
     if (OptionsManager.Singleton.options.ContainsKey(careAboutGuid))
     {
         List <Option> ops = OptionsManager.Singleton.options[careAboutGuid];
         if (ops.Count == 1)
         {
             HeroPower hp = ops[0] as HeroPower;
             if (hp.targetGuid == "-1")
             {
                 //This means that the hero power is a no target power IE: Hunter, Paladin, Warlock, Warrior, Rougue, Shamen
                 OptionsManager.Singleton.PickUpOption(ops[0]);
             }
         }
         else
         {
             //this means there are target, working on that one
         }
     }
 }
        public async Task ChangeMainPower(MainPowerChangeDto dto)
        {
            if (dto.HeroPowerId < 1)
            {
                throw new ArgumentException("Invalid id");
            }
            var heroPower = await _context.HeroPowers.Include(hp => hp.Hero).ThenInclude(h => h.MainPower).FirstOrDefaultAsync(hp => hp.Id == dto.HeroPowerId);

            var       hero      = heroPower.Hero;
            HeroPower mainPower = null;

            if (hero.MainPower != null)
            {
                mainPower = new HeroPower()
                {
                    Strength         = hero.MainPower.Strength,
                    Hero             = hero,
                    HeroId           = hero.Id,
                    Power            = hero.MainPower.Power,
                    PowerId          = hero.MainPower.PowerId,
                    LastTrainingTime = hero.MainPower.LastTrainingTime
                };
            }
            hero.MainPower = null;
            _context.Update(hero);
            await _context.SaveChangesAsync();

            if (!dto.IsMainPower)
            {
                return;
            }
            hero.MainPower = heroPower;
            if (mainPower != null)
            {
                hero.Powers.Append(mainPower);
            }
            _context.Update(hero);
            await _context.SaveChangesAsync();
        }
Esempio n. 11
0
            public override TaskState Process()
            {
                // get a new class
                CardClass randClass = 0;

                do
                {
                    randClass = (CardClass)Random.Next(2, 11);
                } while (randClass == CardClass.WARLOCK);

                // replace Hero Power
                Card heroPowerCard = null;

                switch (randClass)
                {
                case CardClass.DRUID:
                    heroPowerCard = Cards.FromId("CS2_017");
                    break;

                case CardClass.HUNTER:
                    heroPowerCard = Cards.FromId("DS1h_292");
                    break;

                case CardClass.MAGE:
                    heroPowerCard = Cards.FromId("CS2_034");
                    break;

                case CardClass.PALADIN:
                    heroPowerCard = Cards.FromId("CS2_101");
                    break;

                case CardClass.PRIEST:
                    heroPowerCard = Cards.FromId("CS1h_001");
                    break;

                case CardClass.ROGUE:
                    heroPowerCard = Cards.FromId("CS2_083b");
                    break;

                case CardClass.SHAMAN:
                    heroPowerCard = Cards.FromId("CS2_049");
                    break;

                case CardClass.WARRIOR:
                    heroPowerCard = Cards.FromId("CS2_102");
                    break;
                }
                HeroPower heroPower =
                    (HeroPower)Entity.FromCard(Controller, heroPowerCard, new EntityData.Data
                {
                    { GameTag.CREATOR, Source.Id },
                    { GameTag.ZONE, (int)Zone.PLAY }
                });

                Controller.SetasideZone.Add(Controller.Hero.HeroPower);
                Controller.Hero.HeroPower = heroPower;

                var cards = Cards.FormatTypeClassCards(Game.FormatType)[randClass].Where(p => p.Class == randClass && !p.IsQuest).ToArray();

                // replace cards in hand
                for (int i = 0; i < Controller.HandZone.Count; i++)
                {
                    IPlayable entity = Controller.HandZone[i];
                    if (entity.Card.Class != CardClass.WARLOCK)
                    {
                        continue;
                    }
                    Controller.HandZone.Remove(entity);
                    Controller.SetasideZone.Add(entity);
                    var tags = new EntityData.Data
                    {
                        { GameTag.ZONE_POSITION, i + 1 },
                    };
                    if (Game.History)
                    {
                        tags.Add(GameTag.CREATOR, Source.Id);
                    }
                    IPlayable newEntity = Entity.FromCard(Controller, Util.Choose(cards), tags, Controller.HandZone, -1, i);
                    newEntity.NativeTags.Add(GameTag.DISPLAYED_CREATOR, Source.Id);
                    CostReduceEffect.Apply(newEntity.AuraEffects);
                }

                // replace cards in deck
                for (int i = Controller.DeckZone.Count - 1; i >= 0; i--)
                {
                    IPlayable entity = Controller.DeckZone[i];
                    if (entity.Card.Class != CardClass.WARLOCK)
                    {
                        continue;
                    }

                    Card      randCard  = Util.Choose(cards);
                    IPlayable newEntity = Entity.FromCard(Controller, randCard, null, Controller.DeckZone);
                    newEntity.NativeTags.Add(GameTag.DISPLAYED_CREATOR, Source.Id);

                    //Enchantment.GetInstance(Controller, (IPlayable) Source, newEntity, EnchantmentCard);

                    Controller.DeckZone.Remove(entity);
                    Controller.SetasideZone.Add(entity);

                    CostReduceEffect.Apply(newEntity.AuraEffects);
                }

                Game.OnRandomHappened(true);

                return(TaskState.COMPLETE);
            }
Esempio n. 12
0
 public ReplaceHeroPower(HeroPower power)
 {
     Power     = power;
     PowerCard = null;
 }
Esempio n. 13
0
 private ReplaceHeroPower(HeroPower power, Card cardPower)
 {
     Power     = power;
     PowerCard = cardPower;
 }
Esempio n. 14
0
 public HeroPowerTriggeredAbility(HeroPower power, TriggeredAbility to_wrap)
 {
     this.to_wrap = to_wrap;
     this.to_wrap.SetSource(power);
 }
Esempio n. 15
0
 private static bool IsHeroTurn(int turn, HeroPower power)
 {
     return (power != null && power.Turn == turn - 1);
 }
Esempio n. 16
0
        /// <summary>
        /// Creates a zone for the opponent using the specified cards and zone.
        /// </summary>
        /// <param name="opponent">the controller of the opponent</param>
        /// <param name="predictedCards">the predicted cards the zone is populated with</param>
        /// <param name="zone">the zone who will be created</param>
        /// <param name="setasideZone">the setaside zone</param>
        /// <returns>the playables of the zone based on the cards</returns>
        private List <IPlayable> createZone(Controller opponent, List <Card> predictedCards,
                                            IZone zone, ref SetasideZone setasideZone)
        {
            var deck = new List <IPlayable>();

            foreach (Card card in predictedCards)
            {
                var tags = new Dictionary <GameTag, int>();
                tags[GameTag.ENTITY_ID]  = opponent.Game.NextId;
                tags[GameTag.CONTROLLER] = opponent.PlayerId;
                tags[GameTag.ZONE]       = (int)zone.Type;
                IPlayable playable = null;
                switch (card.Type)
                {
                case CardType.MINION:
                    playable = new Minion(opponent, card, tags);
                    break;

                case CardType.SPELL:
                    playable = new Spell(opponent, card, tags);
                    break;

                case CardType.WEAPON:
                    playable = new Weapon(opponent, card, tags);
                    break;

                case CardType.HERO:
                    tags[GameTag.ZONE]     = (int)SabberStoneCore.Enums.Zone.PLAY;
                    tags[GameTag.CARDTYPE] = card[GameTag.CARDTYPE];
                    playable = new Hero(opponent, card, tags);
                    break;

                case CardType.HERO_POWER:
                    tags[GameTag.COST]     = card[GameTag.COST];
                    tags[GameTag.ZONE]     = (int)SabberStoneCore.Enums.Zone.PLAY;
                    tags[GameTag.CARDTYPE] = card[GameTag.CARDTYPE];
                    playable = new HeroPower(opponent, card, tags);
                    break;

                default:
                    throw new EntityException($"Couldn't create entity, because of an unknown cardType {card.Type}.");
                }

                opponent.Game.IdEntityDic.Add(playable.Id, playable);

                // add entity to the appropriate zone if it was given
                zone?.Add(playable);

                if (playable.ChooseOne)
                {
                    playable.ChooseOnePlayables[0] = Entity.FromCard(opponent,
                                                                     Cards.FromId(playable.Card.Id + "a"),
                                                                     new Dictionary <GameTag, int>
                    {
                        [GameTag.CREATOR]     = playable.Id,
                        [GameTag.PARENT_CARD] = playable.Id
                    },
                                                                     setasideZone);
                    playable.ChooseOnePlayables[1] = Entity.FromCard(opponent,
                                                                     Cards.FromId(playable.Card.Id + "b"),
                                                                     new Dictionary <GameTag, int>
                    {
                        [GameTag.CREATOR]     = playable.Id,
                        [GameTag.PARENT_CARD] = playable.Id
                    },
                                                                     setasideZone);
                }
                deck.Add(playable);
            }
            return(deck);
        }