void StartGame() { _winScreen.SetActive(false); _loseScreen.SetActive(false); _currentSegment = null; if (_conversationData == null) { Debug.LogError("Conversation Data missing - cannot start game"); return; } if (_conversationData.StartingConversationSegments.Length == 0 && _conversationData.RandomConversationSegments.Length == 0) { Debug.LogError("Conversation Data empty - cannot start game"); return; } _gameState = State.InGame; Score = 0; RandomSegmentCount = 0; _remainingStarterSegments = new Queue <ConversationSegment>(); foreach (var starterSegment in _conversationData.StartingConversationSegments) { _remainingStarterSegments.Enqueue(starterSegment); } _remainingRandomSegments = new List <ConversationSegment>(); _remainingRandomSegments.AddRange(_conversationData.RandomConversationSegments); NextConversationSegment(); }
private void NextConversationSegment() { if (_gameState == State.InGame) { Debug.Log("Next Conversation Segment"); _currentSegment = null; if (_remainingStarterSegments.Count > 0) { _currentSegment = _remainingStarterSegments.Dequeue(); } else if (_remainingRandomSegments.Count > 0) { if (RandomSegmentCount >= RANDOM_SEGMENTS_NEEDED_TO_WIN) { _gameState = State.GameWin; Debug.Log("YOU WON"); return; } int randomIndex = Random.Range(0, _remainingRandomSegments.Count); _currentSegment = _remainingRandomSegments[randomIndex]; RandomSegmentCount++; _remainingRandomSegments.RemoveAt(randomIndex); } if (_currentSegment == null) { // Out of segments, you made it _gameState = State.GameWin; Debug.Log("YOU WON"); return; } _timerImage.fillAmount = 0; TextFeed.Instance.Say(new Line() { LineId = _currentSegment.LineId, ConversationText = _currentSegment.ConversationText }); ResponseManager.Instance.ClearAvailableResponses(); ResponseManager.Instance.ClearCollectedResponses(); } }