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); }
public void RoomCardSelected(RoomCard selectedCard) { BeginCombatMode(selectedCard); }
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(); }
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); } }
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; } }