Exemplo n.º 1
0
    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();
    }
Exemplo n.º 2
0
    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();
        }
    }