Пример #1
0
    public Dictionary <GridElement, int> getAffected()
    {
        Dictionary <GridElement, int> res = new Dictionary <GridElement, int>();

        if (unitBase == null)
        {
            return(res);
        }
        if (unitBase.transform == null)
        {
            return(res);
        }
        if (unitBase.transform.parent == null)
        {
            return(res);
        }
        if (unitBase.transform.parent.GetComponent <GridElement>() == null)
        {
            return(res);
        }
        GridElement gridElement = unitBase.transform.parent.GetComponent <GridElement>();

        for (int x = 0; x < Zone.size; x++)
        {
            for (int z = 0; z < Zone.size; z++)
            {
                GameObject myGridElementObject = gridElement.getByXZ(x - (Zone.size - 1) / 2, z - (Zone.size - 1) / 2);
                if (myGridElementObject != null && zone.zoneValues[z, x] != 0)
                {
                    res.Add(myGridElementObject.GetComponent <GridElement>(), zone.zoneValues[z, x]);
                }
            }
        }
        return(res);
    }
Пример #2
0
    protected override void computeOne(GridElement gridElement, int value)
    {
        //UnityEngine.Debug.Log("move: try");
        if (value != 1)
        {
            return;
        }
        //UnityEngine.Debug.Log("move: compute");
        Debug.Log("move compute one");
        GameObject  temp    = gridElement.getAbsoluteXZ(0, 5);
        GridElement goalPos = isGridElement(temp);

        goalPos = setGoal(goalPos);
        Debug.Log("Goalpos (" + goalPos.x + "," + goalPos.z + ")");
        int x;
        int z;

        if (goalPos != null)
        {
            var move = Astar(gridElement, goalPos);
            x = move[0];
            z = move[1];
            Debug.Log("x: " + x);
            Debug.Log("z: " + z);
        }
        else
        {
            x = 0;
            z = 0;
        }

        // TODO A* for x,z
        GameObject gridElementObject = gridElement.getByXZ(x, z);//Względne

        if (gridElementObject != null && gridElementObject.GetComponent <GridElement>().unit == null)
        {
            GridElement oldGridElement = unitBase.transform.parent.gameObject.GetComponent <GridElement>();
            unitBase.transform.SetParent(gridElementObject.transform);
            gridElementObject.GetComponent <GridElement>().unit = unitBase.gameObject;
            unitBase.transform.position = new Vector3(gridElementObject.transform.position.x, gridElementObject.transform.position.y - 0.5f, gridElementObject.transform.position.z);
            oldGridElement.unit         = null;
            // TODO animation goes brrrrrr
        }
        else
        {
            //UnityEngine.Debug.Log("dupa");
        }
    }
Пример #3
0
    public virtual void perform()
    {
        GridElement gridElement = unitBase.transform.parent.GetComponent <GridElement>();

        for (int x = 0; x < Zone.size; x++)
        {
            for (int z = 0; z < Zone.size; z++)
            {
                GameObject myGridElementObject = gridElement.getByXZ(x - (Zone.size - 1) / 2, z - (Zone.size - 1) / 2);
                if (myGridElementObject != null && zone.zoneValues[z, x] != 0)
                {
                    performOne(myGridElementObject.GetComponent <GridElement>(), zone.zoneValues[z, x]);
                }
            }
        }
    }