private SystemElement InstantiateSystemElement(ref GeneratedElementInfo elementInfo) { var control = controls[elementInfo.MapTerritory]; var type = types.GetRandom(random.Value); int size = elementInfo.Tiles.Count; return(new SystemElement(control, type, size, modifiers)); }
private void GenerateSystemElement(SystemElementGeneratorItem generatorItem, HashSet <HexagonTille> source, ref Color elementColor) { foreach (var tile in elementTiles) { tile.IsComponent = true; tile.SetMainColor(componentHexColor, ref elementColor); source.Remove(tile); foreach (var neighbour in tile.NeighbourList) { source.Remove(neighbour); } } Vector3 position = elementTiles[0].transform.position; if (elementTiles.Count == 3) { float minX, maxX, posY; minX = maxX = position.x; posY = position.y; for (int i = 1; i < elementTiles.Count; i++) { position = elementTiles[i].transform.position; float x = position.x; float y = position.y; if (x < minX) { minX = x; } else if (x > maxX) { maxX = x; } posY += y; } position = new Vector3((minX + maxX) / 2, posY / 3, 0); } var generatedElementInfo = new GeneratedElementInfo() { MapTerritory = currentMapTerritory, Position = position, Tiles = new HashSet <HexagonTille>(elementTiles) }; OnSystemElementGenerated.Invoke(generatedElementInfo); }
public void OnElementGenerated(GeneratedElementInfo elementInfo) { SystemElement systemElement = InstantiateSystemElement(ref elementInfo); systemElementList.Value.Add(systemElement); SystemElementController elementController = Instantiate(systemElementPrefab, transform); elementController.transform.position = elementInfo.Position; elementController.SystemElement = systemElement; elementController.Tiles = elementInfo.Tiles; systemElement.Controller = elementController; }