public void GiveCard(IGamePlayable _character) { CE_Card _card = PickRandomCard(); _character.HandCards.AddCard(_card); _character.NoteSystem.MatchCard(_card.ID); }
CE_Card PickRandomCard() { if (!gameCardsDB.IsValid) { return(null); } int _randomIndex = UnityEngine.Random.Range(0, availableCards.Count); CE_Card _card = availableCards[_randomIndex]; availableCards.Remove(_card); return(_card); }
public CE_Card PickRandomCard(CardType _type) { List <CE_Card> _cards = availableCards.Where(c => c.Type == _type).ToList(); if (_cards == null) { return(null); } int _randomIndex = UnityEngine.Random.Range(0, _cards.Count); CE_Card _card = _cards[_randomIndex]; availableCards.Remove(_card); return(_card); }
public CE_Card GetSuggestCard(CE_Suggest _suggest) { CE_Card _character = handCards.Where(c => c.ID == _suggest.Character.ID).FirstOrDefault(); CE_Card _weapon = handCards.Where(c => c.ID == _suggest.Weapon.ID).FirstOrDefault(); CE_Card _room = handCards.Where(c => c.ID == _suggest.Room.ID).FirstOrDefault(); if (_character != null) { return(_character); } if (_weapon != null) { return(_weapon); } if (_room != null) { return(_room); } return(null); }
IEnumerator IASuggest() { if (!isInRoom) { yield break; } CE_Card _pickCharacterCard = CE_GameManager.Instance.GameDeck.GetCard(NoteSystem.PickRandomNotes(CardType.Character).ID); CE_Card _pickWeaponCard = CE_GameManager.Instance.GameDeck.GetCard(NoteSystem.PickRandomNotes(CardType.Weapon).ID); CE_Card _pickRoomCard = CE_GameManager.Instance.GameDeck.GetCard(nextRoomInvestigate.ID); CE_Suggest _suggest = new CE_Suggest(_pickCharacterCard, _pickRoomCard, _pickWeaponCard); OnStartSuggest?.Invoke(_suggest, this); int _askIndex = CE_GameManager.Instance.CurrentCharacterTurnIndex; Debug.Log($"{characterRef.ColorName} is suggesting {_suggest.Room.Name} with {_suggest.Weapon.Name} at {_suggest.Character.Name}"); while (isInRoom && currentAIPhase == AIPhase.Suggest) { _askIndex++; _askIndex = _askIndex > CE_GameManager.Instance.AllCharacterInGame.Count - 1 ? 0 : _askIndex; IGamePlayable _askTo = CE_GameManager.Instance.AllCharacterInGame[_askIndex]; CE_Card _result = _askTo.HandCards.GetSuggestCard(_suggest); OnSuggestProgress?.Invoke(_suggest, this, _askTo, _result); Debug.Log($"{_askTo.CharacterRef.ColorName} {(_result == null ? "can't" : "can")} answer."); if (_result != null) { NoteSystem.MatchCard(_result.ID); currentAIPhase = AIPhase.Idle; } if (CE_GameManager.Instance.CurrentCharacterTurnIndex == _askIndex) { CE_GameManager.Instance.EndGame(); currentAIPhase = AIPhase.Idle; } Debug.Log($"{_askTo.CharacterRef.ColorName} {(_result == null ? "can't" : "can")} answer."); yield return(new WaitForSeconds(1)); } nextRoomInvestigate = null; currentAIPhase = AIPhase.Idle; yield return(new WaitForSeconds(5)); }
public void AddCard(CE_Card _card) => handCards.Add(_card);
public CE_MysteryCards(CE_Card _first, CE_Card _second, CE_Card _third) { firstCard = _first; secondCard = _second; thirdCard = _third; }
public void GiveWeapon(CE_Card _weapon) => Weapon = _weapon;
public void GiveCharacter(CE_Card _character) => Character = _character;
public void GiveRoom(CE_Card _room) => Room = _room;
public CE_Suggest(CE_Card _room, CE_Card _character, CE_Card _weapon) { Room = _room; Character = _character; Weapon = _weapon; }