private void CreateRandomArmy() { if (_size < UnitsData.TypesCount) { return; } int part = _size / UnitsData.TypesCount; int remainder = _size - (part * UnitsData.TypesCount); int[] parts = new int[UnitsData.TypesCount]; int random = 0; for (int i = 0; i < parts.Length; i++) { parts[i] += part; random = Random.Range(-part / 2, part / 2); parts[i] += random; if (i + 1 < parts.Length) { parts[i + 1] -= random; } else { parts[i - 1] -= random; } } parts[Random.Range(0, UnitsData.TypesCount)] += remainder; _army = new Army(troopCount, troopSprite); buttonAttack.gameObject.SetActive(true); for (byte i = 0; i < UnitsData.TypesCount; i++) { if (parts[i] > 0) { _army.AddTroop(parts[i], i); } } Castle.Instance.UpdateSoldiersCount(_army.UnitsCount); inputField.text = "0"; _size = 0; buttonCreateArmy.gameObject.SetActive(false); buttonDisbandArmy.gameObject.SetActive(true); }