public void AssignCard(RoomCard newCard, RoomCardDisplayer displayer)
    {
        base.UpdateBasicVisuals(newCard);
        this.displayer = displayer;

        GetComponent<Button>().onClick.AddListener(() => CardClicked());
        assignedCard = newCard;
        enemyCountText.text = assignedCard.GetEnemyCount().ToString();
    }
        public virtual void OnCardAnnounce(Room room, CardUseStruct use, bool ignore_rule)
        {
            use.Card = RoomLogic.ParseUseCard(room, use.Card).GetUsedCard();
            room.ShowSkill(use.From, use.Card.ShowSkill, use.Card.SkillPosition);

            if (!ignore_rule)
            {
                CheckTargetModSkillShow(room, use);
            }

            WrappedCard use_card = use.Card;

            //将卡牌转化为延时锦囊就相当于改写了该牌的牌名,必须对其重写以保证此延时锦囊将来可以正确生效
            if (Engine.GetFunctionCard(use_card.Name) is DelayedTrick && use_card.IsVirtualCard() && use_card.SubCards.Count == 1)
            {
                RoomCard wrapped = room.GetCard(use_card.GetEffectiveId());
                use_card.Id = wrapped.Id;
                wrapped.TakeOver(use_card);
                use.Card = wrapped.GetUsedCard();
            }

            //record big or small for fighttogether
            if (Engine.GetFunctionCard(use_card.Name) is FightTogether && use.To.Count > 0)
            {
                List <string> big_kingdoms = RoomLogic.GetBigKingdoms(room);
                if (big_kingdoms.Count > 0)
                {
                    string target_kingdom = (use.To[0].HasShownOneGeneral() ?
                                             (use.To[0].GetRoleEnum() == PlayerRole.Careerist ? use.To[0].Name : use.To[0].Kingdom) : string.Empty);
                    bool big = big_kingdoms.Contains(target_kingdom);
                    if (big)
                    {
                        use.Pattern = "big";
                    }
                    else
                    {
                        use.Pattern = "small";
                    }
                }
                else
                {
                    use.Pattern = "unknown";
                }
            }

            OnUse(room, use);
        }
Example #3
0
 public void RoomCardSelected(RoomCard selectedCard)
 {
     BeginCombatMode(selectedCard);
 }
Example #4
0
 void BeginCombatMode(RoomCard selectedCard)
 {
     combatManager.SetupCombat(selectedCard);
 }
    public void SetupCombat(RoomCard playedRoom)
    {
        EncounterEnemy[] enemies = playedRoom.GetEnemies();
        uiToggler.SetAllowHandPeeking(true);
        characterManager.PrepAllCharactersForCombatStart(enemies);

        List<RoomStipulationCard> randomRoomStipulationCards = playedRoom.GetRandomRoomStipulationCards(1);
        foreach (RoomStipulationCard card in randomRoomStipulationCards)
            PlaceRoomStipulationCard(card);

        playerHandManager.DrawCombatStartHand();
        playerHandManager.SetHandInteractivity(false);
        prepManager.BeginPrepCardsPhase();
    }
Example #6
0
    void GenerateRoomCards()
    {
        List<System.Type> possibleRoomTypes = RoomCard.GetAllPossibleRoomCards(encounterType);
        //Order is important
        System.Type randomLastRoomType = possibleRoomTypes[Random.Range(0, possibleRoomTypes.Count)];
        lastRoom = RoomCard.GetRoomCardByType(randomLastRoomType,this);

        int requiredRoomsCount = Mathf.Min(3, possibleRoomTypes.Count);
        for (int i = 0; i < requiredRoomsCount; i++)
        {
            System.Type randomRoomCardType = possibleRoomTypes[Random.Range(0, possibleRoomTypes.Count)];
            rooms.Add(RoomCard.GetRoomCardByType(randomRoomCardType,this));
            rooms.Add(RoomCard.GetRoomCardByType(randomRoomCardType,this));
            possibleRoomTypes.Remove(randomRoomCardType);
        }
    }
Example #7
0
 public RoomCard[] GetRoomSelection(int selectCount)
 {
     if (rooms.Count > 0 && roomsToGo>0)
     {
         int modifiedCount = Mathf.Min(selectCount, rooms.Count);
         RoomCard[] roomsToSelectFrom = new RoomCard[modifiedCount];
         for (int i = 0; i < modifiedCount; i++)
         {
             int randomRoomIndex = Random.Range(0,rooms.Count);
             roomsToSelectFrom[i] = rooms[randomRoomIndex];
             rooms.RemoveAt(randomRoomIndex);
         }
         roomsToGo--;
         return roomsToSelectFrom;
     }
     else
     {
         finished = true;
         RoomCard[] oneItemAr = new RoomCard[1];
         oneItemAr[0] = lastRoom;
         return oneItemAr;
     }
 }