int GetPositionFromKey(Egg eggData, int key, out int newRow, out int newCol) { int offsetRow = (eggData.GetRow() % 2 == (isOdd() ? 1 : 0)) ? 1 : 0; newCol = -1; newRow = -1; //Debug.Log(key + " and " + offsetRow); switch (key) { case 1: newCol = eggData.GetCol() + offsetRow; newRow = eggData.GetRow() - 1; break; case 2: newCol = eggData.GetCol() + 1; newRow = eggData.GetRow(); break; case 3: newCol = eggData.GetCol() + offsetRow; newRow = eggData.GetRow() + 1; break; case 4: newCol = eggData.GetCol() - 1 + offsetRow; newRow = eggData.GetRow() + 1; break; case 5: newCol = eggData.GetCol() - 1; newRow = eggData.GetRow(); break; case 6: newCol = eggData.GetCol() - 1 + offsetRow; newRow = eggData.GetRow() - 1; break; } return(key); }
void SpawnLine() { for (int r = ROWS - 2; r >= 0; r--) { foreach (Egg e in mGird[r]) { mGird[r + 1][e.GetCol()].SetColor(e.GetColor()); mGird[r + 1][e.GetCol()].SetHazard(e.IsHazard()); mGird[r + 1][e.GetCol()].SetPosition(e.GetCol(), r + 1, e.GetOffset()); mGird[r + 1][e.GetCol()].gameObject.SetActive(e.gameObject.activeSelf); mGird[r + 1][e.GetCol()].UpdatePositionAnim(-Egg.EGG_RATIO, e.GetOffset()); } } float offset = mOdd ? OFFSET_EGG : 0; for (int i = 0; i < COLUMNS; ++i) { Egg e = mGird[0][i]; int color; int left = i == 0 ? 0 : mOdd ? i : i - 1; int right = i == (COLUMNS - 1) ? (COLUMNS - 1) : mOdd ? i + 1 : i; bool haveLeftEgg = mGird[1][left].isActiveAndEnabled; bool haveRightEgg = mGird[1][right].isActiveAndEnabled; if (Random.Range(0, 100) < WEIGHTED_RANDOM_CHANCE && (haveLeftEgg || haveRightEgg)) // 80% { if (haveLeftEgg && haveRightEgg) { if (Random.Range(0, 2) == 1) // 50% { color = mGird[1][left].GetColor(); } else { color = mGird[1][right].GetColor(); } } else if (haveLeftEgg) { color = mGird[1][left].GetColor(); } else { color = mGird[1][right].GetColor(); } } else { color = Random.Range(0, Defines.EggCount); } e.SetColor(color); e.SetPosition(e.GetCol(), 0, offset); e.gameObject.SetActive(true); e.UpdatePositionAnim(-Egg.EGG_RATIO, e.GetOffset()); e.SetHazard(false); if (Random.Range(0, 100) < HAZARD_CHANCE && currentHazardCount < MAX_HAZARD_ON_SCREEN) { switch (color) { case 2: case 4: e.SetHazard(true); currentHazardCount++; break; } } } mOdd = !mOdd; animateEggDown = true; eggDownAnimTime = 0.0f; }