Exemple #1
0
    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);
    }
Exemple #3
0
    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;
    }