public void Split(SplitType type) { if (hexes.Count < 1) { GameManager.Singleton.World.GetPlates().Remove(this); return; } if (type == SplitType.NORMAL) { Plate newPlate = new Plate(gen, UnityEngine.Random.ColorHSV()); newPlate.direction = (HexDirection)UnityEngine.Random.Range(0, HexConstants.MAX_DIR); int id = GameManager.Singleton.World.AddPlate(newPlate); Debug.Log("CREATING PLATE"); int q = 0; int r = 0; foreach (Hex h in hexes) { q += h.q; r += h.r; } q /= hexes.Count; r /= hexes.Count; FractionalHex fHexCenter = new FractionalHex(q, r, -q - r); Hex centerHex = fHexCenter.HexRound(); for (int i = hexes.Count - 1; i > -1; i--) { Hex cur = hexes[i]; if ((cur.q - centerHex.q) > 0) { int dist = cur.Distance(centerHex); if (dist < 2 && UnityEngine.Random.value < .5) { continue; } hexes.RemoveAt(i); newPlate.AddHex(cur); if (GameManager.Singleton.World.TryGetHexData(cur, out TileObject obj)) { obj.hexData.plateId = id; } } } } }