Exemplo n.º 1
0
    public Vector3 getFaceMotion(BuildCity.Pixel targetPix, GameObject target, BuildCity _city)
    {
        Vector3 delta   = new Vector3();
        Vector3 output  = new Vector3(0, 0, 0);
        var     closest = _city.FindClosestStreetPixel(targetPix);

        delta = closest.DisplayBuilding.transform.position - target.transform.position;

        var x = delta.x;
        var z = delta.z;

        var normalizedX = x / Mathf.Abs(x);
        var normalizedZ = z / Mathf.Abs(z);

        if (Mathf.Abs(x) > Mathf.Abs(z))
        {
            var trans = target.transform.localScale.x * normalizedX;
            output = new Vector3(trans, 0, 0);
        }
        else
        {
            var trans = target.transform.localScale.z * normalizedZ;
            output = new Vector3(0, 0, trans);
        }

        return(output);
    }
Exemplo n.º 2
0
    public List <Pixel> neighborBlocks(BuildCity.Pixel active)
    {
        List <Pixel> outputBlocks = new List <Pixel>();
        var          neighbors    = active.getAllNeighbors(mapPixels, mapWidth, mapHeight, active.Position.x, active.Position.z);

        foreach (var n in neighbors)
        {
            if (!n.IsActive)
            {
                outputBlocks.Add(n);
            }
        }

        return(outputBlocks);
    }
Exemplo n.º 3
0
    //Generates structures to which fleet needs to attend to.
    //Various instances of this class area consumed in BuildCity.
    public Job(BuildCity city)
    {
        this.city        = city;
        _graph           = city.army.graph;
        indices          = new List <Vector3Int>();
        initIndicesCount = 0;
        plot             = new BuildCity.Pixel(city);
        size             = new float();
        payout           = new float();
        timeReq          = new float();
        completed        = false;
        timeUp           = false;
        pursue           = false;
        abort            = false;
        timeExpire       = new float();

        Init(out streets, out targetBuilding);
        InstObj();
        name = plot.Name + string.Format("{0}", bldgIndex);

        timeCreate = Time.realtimeSinceStartup;
        timeExpire = timeCreate + 150.0f;
        timePassed = timeCreate;
    }
Exemplo n.º 4
0
    public GameObject PickBuilding(out BuildCity.Pixel plot, out int index)
    {
        Pixel      buildingNew = new Pixel(this);
        GameObject GO          = null;

        index = new int();

        bool selected = false;

        while (selected == false)
        {
            int r1 = Random.Range(0, mapHeight);
            int r2 = Random.Range(0, mapWidth);

            if (mapPixels[r1, r2].IsActive == false && mapPixels[r1, r2].HasStreet)
            {
                if (mapPixels[r1, r2].HQNotNeighbour(mapPixels, mapWidth, mapHeight, r1, r2))
                {
                    var proxy = mapPixels[r1, r2].DisplayBuilding;

                    var proxyCount = proxy.transform.childCount;
                    if (proxyCount >= 2)
                    {
                        selected    = true;
                        buildingNew = mapPixels[r1, r2];
                    }
                }
            }
        }
        plot = buildingNew;


        var closestStreet = FindClosestStreetPixel(buildingNew);

        var selectedGo = buildingNew.DisplayBuilding;
        var goPos      = buildingNew.WorldPosition;
        var childCount = selectedGo.transform.childCount;

        var tempGO = new List <GOScore>();

        //gameobject within pixel
        if (childCount > 3)
        {
            for (int i = 0; i < childCount; i++)
            {
                if (i != 0)
                {
                    var bldg   = selectedGo.transform.GetChild(i).gameObject;
                    var _index = bldg.transform.GetSiblingIndex();
                    var modPos = bldg.transform.localPosition + goPos;

                    var score = Vector3.Distance(modPos, closestStreet.WorldPosition);
                    tempGO.Add(new GOScore(bldg, score, _index));
                }
            }

            var sortedTemp = tempGO.OrderBy(s => s.score).ToList();
            var selTemp    = sortedTemp[0].GO;
            GO    = selTemp;
            index = sortedTemp[0].index;
        }

        else if (childCount == 3)
        {
            for (int i = 0; i < childCount; i++)
            {
                if (i != 0)
                {
                    var bldg   = selectedGo.transform.GetChild(i).gameObject;
                    var _index = bldg.transform.GetSiblingIndex();
                    var modPos = bldg.transform.localPosition + goPos;
                    var score  = Vector3.Distance(modPos, closestStreet.WorldPosition);
                    tempGO.Add(new GOScore(bldg, score, _index));
                }
            }

            var sortedTemp = tempGO.OrderBy(s => s.score).ToList();
            var selTemp    = sortedTemp[0].GO;
            GO    = selTemp;
            index = sortedTemp[0].index;
        }

        return(GO);
    }
Exemplo n.º 5
0
 public PixelScore(BuildCity.Pixel pixel, float score)
 {
     this.pixel = pixel;
     this.score = score;
 }