Exemplo n.º 1
0
 private void placeEntity(int x, int y, EntityOfLife ent, bool flip)
 {
     int[,] entit = ent.shape;
     if (flip)
     {
         entit = ent.GetFlippedShape();
     }
     try {
         for (int i = 0; i < ent.size.x; i++)
         {
             for (int j = 0; j < ent.size.y; j++)
             {
                 if (entit[i, j] == 1)
                 {
                     alive[x + i, y + j] = true;
                 }
             }
         }
     }
     catch (System.IndexOutOfRangeException) {}
 }
Exemplo n.º 2
0
        private void tetrisTick()
        {
            if (cleared)
            {
                return;
            }
            if (dungeonTimer < dungeonWinTime)
            {
                //Tiles
                if (Random.Range(0, 100) < 10)
                {
                    int          x    = Random.Range(0, W);
                    EntityOfLife life = EntityOfLife.ENTITIES_TETRIS[Random.Range(0, EntityOfLife.ENTITIES_TETRIS.Length)];
                    if (Random.Range(0, 100) > life.rarity)
                    {
                        placeEntity(x, H - 3, life);
                    }
                }
            }

            //Killing
            if (dungeonTimer > dungeonWinTime)
            {
                for (int i = 0; i < 20; i++)
                {
                    int randX = Random.Range(0, W);
                    int randY = Random.Range(0, H);
                    alive[randX, randY] = false;
                }
                if (dungeonTimer > dungeonWinTime + 5 && !cleared)
                {
                    cleared = true;
                    StartCoroutine(Clear());
                }
            }
        }
Exemplo n.º 3
0
 private void placeEntity(int x, int y, EntityOfLife ent)
 {
     placeEntity(x, y, ent, false);
 }
Exemplo n.º 4
0
        private void gameOfLifeTick()
        {
            if (cleared)
            {
                return;
            }
            if (dungeonTimer < dungeonWinTime)
            {
                //Corners
                if (Random.Range(0, 100) < 5)
                {
                    for (int i = 0; i < 12; i++)
                    {
                        EntityOfLife life = EntityOfLife.ENTITIES_OF_LIFE[Random.Range(0, EntityOfLife.ENTITIES_OF_LIFE.Length)];
                        if (Random.Range(0, 100) > life.rarity)
                        {
                            placeEntity((W / 2) * ((i % 2) + 1) - (W / 4), (H / 2) * ((i % 2) + 1) - (H / 4), life);
                        }
                    }
                }
                //Center
                if (spawnDelay <= 0)
                {
                    for (int i = 0; i < 3; i++)
                    {
                        EntityOfLife life = EntityOfLife.ENTITIES_OF_LIFE[Random.Range(0, EntityOfLife.ENTITIES_OF_LIFE.Length)];
                        if (Random.Range(0, 100) > life.rarity)
                        {
                            placeEntity((W / 2) * ((i % 2) + 1), H / 2, life);
                        }
                        else
                        {
                            i--;
                            continue;
                        }
                    }
                    spawnDelay = 1;
                }
                //Gliders
                if (Random.Range(0, 100) < 10 && (int)Time.time % 2 == 0 && gliderDelay <= 0)
                {
                    for (int i = 0; i < 2; i++)
                    {
                        placeEntity((W / 2) * ((i % 2) + 1) - (W / 4), (H / 2) * ((i % 2) + 1) - (H / 4), EntityOfLife.ENTITIES_OF_LIFE[0], (i == 1));
                    }
                    gliderDelay = 1;
                }
            }

            //Killing
            if (dungeonTimer > dungeonWinTime)
            {
                for (int i = 0; i < 20; i++)
                {
                    int randX = Random.Range(0, W);
                    int randY = Random.Range(0, H);
                    alive[randX, randY] = false;
                }
                if (dungeonTimer > dungeonWinTime + 5 && !cleared)
                {
                    cleared = true;
                    StartCoroutine(Clear());
                }
            }
        }