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) {} }
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()); } } }
private void placeEntity(int x, int y, EntityOfLife ent) { placeEntity(x, y, ent, false); }
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()); } } }