Example #1
0
    // il parametro init serve per capire se è il primo checkbuffer che inizializza la lista per inizializzare il
    // timeSequence in base alla prima ES
    void checkBuffer(bool init = false)
    {
        for (int i = spawnBuffer.Count; i < bufferSize; i++)
        {
            ESInfo info = new ESInfo();
            info.positioning  = getRandomPositioning();
            info.movetype     = getRandomMoveType();
            info.timeToCenter = getRandomTimeToCenter();
            info.count        = getRandomBurst();
            info.verse        = getRandomVerse();

            if (init)
            {
                init         = false;         // da fare solo per la prima ES
                timeSequence = info.timeToCenter;
            }

            //setto quando dovrà spawnare
            info.spawnTime = timeSequence - info.timeToCenter;
            //calcolo l'offset e lo aggiungo alla sequenza temporale per il calcolo del momento di spawn della prossima es
            timeSequence += spawnOffset.Evaluate(timeSinceGameStart) + (info.count - 1) * burstOffset;

            spawnBuffer.Add(info);
        }
    }
Example #2
0
    void spawn(ESInfo info)
    {
        EnergyShape[] esList = null;

        //posizionamento
        switch (info.positioning)
        {
        case Positioning.Standard:
            esList = standard(info.count);
            break;

        case Positioning.Parallel:
            esList = parallel(info.count);
            break;

        case Positioning.Perpendicular:
            esList = perpendicular(info.count);
            break;
        }

        //comportamento
        for (int i = 0; i < esList.Length; i++)
        {
            EnergyShape es = esList[i];
            es.moveType           = info.movetype;
            es.timeToCenter       = info.timeToCenter;
            es.isFast             = info.timeToCenter == timeToCenter.fast ? true : false;
            es.spiralAngularSpeed = es.spiralAngularSpeed * info.verse; // verse è 1 o -1 quindi determina il verso di rotazione

            es.Prepare();                                               //reinizializza l'ES nel caso sia stata riutilizzata dal pool
        }
    }