Esempio n. 1
0
    private void Update()
    {
        if (GameHelper.GameManager.data.gameOver)
        {
            return;
        }

        timer -= Time.deltaTime * GameHelper.GameManager.data.timeScale;
        t     += Time.deltaTime * GameHelper.GameManager.data.timeScale;

        if (timer <= 0.0f) // Spawn a new NPC
        {
            // Choose a new entry, following the histogram
            float chooseEntry = Random.Range(0.0F, 1.0F);
            int   entryNumber = 0;

            while (probEntries[entryNumber] < chooseEntry)
            {
                entryNumber++;
            }

            var              entry    = PathfinderHelper.Pathfinder.entries[entryNumber];
            Vector3          spawnPos = new Vector3(entry.gridX, entry.gridY + 1, 0);
            GameObject       newNPC   = Instantiate(npc, spawnPos, Quaternion.identity);
            NPCDataComponent npcData  = newNPC.GetComponent <NPCDataComponent>();

            // Check if a dancer has spawn in the last 4 NPC
            bool dancerFound = false;
            foreach (DrunkType state in lastNPCStates)
            {
                if (state == DrunkType.Dancer)
                {
                    dancerFound = true;
                    break;
                }
            }

            if (!dancerFound) // If not, modify the drunkType to a DANCER
            {
                npcData.drunkType = DrunkType.Dancer;
            }

            for (int i = 1; i < lastNPCStates.Length; i++)
            {
                lastNPCStates[i - 1] = lastNPCStates[i];
            }
            lastNPCStates[lastNPCStates.Length - 1] = npcData.drunkType;

            // Set timer
            timeToPop = t * coeff + startingTimeToPop;
            timeToPop = timeToPop > startingTimeToPop ? startingTimeToPop : timeToPop; // Does not come across startingTimeToStop
            timeToPop = timeToPop < endingTimeToPop ? endingTimeToPop : timeToPop;

            timer = timeToPop;
        }
    }
Esempio n. 2
0
    // Start is called before the first frame update
    private void Start()
    {
        _npc      = GetComponent <NPCComponent>();
        _audioSrc = GetComponent <AudioSource>();
        _data     = GetComponent <NPCDataComponent>();

        _currentTime = minTime;
        _targetTime  = 0;

        _npc.OnFall += NPCFallAction;
        GameHelper.GameManager.OnGameOver += GameOverAction;
    }
Esempio n. 3
0
 private void Start()
 {
     _data = GetComponent <NPCDataComponent>();
     _body = GetComponent <Rigidbody2D>();
 }