Ejemplo n.º 1
0
    private TreeBehavior FindClosestTree()
    {
        var trees = FindObjectsOfType <TreeBehavior>();

        if (trees.Length == 0)
        {
            return(null);
        }

        TreeBehavior currentClosest  = trees.First();
        var          currentDistance = DistanceTo(this, currentClosest);

        for (int i = 1; i < trees.Length; i++)
        {
            var thisDistance = DistanceTo(this, trees[i]);

            if (thisDistance < currentDistance)
            {
                currentClosest  = trees[i];
                currentDistance = thisDistance;
            }
        }

        if (currentClosest.closestTree == null || DistanceTo(currentClosest, currentClosest.closestTree) > currentDistance)
        {
            currentClosest.closestTree = this;
        }

        return(currentClosest);
    }
Ejemplo n.º 2
0
        public static (TreeBehavior, float) FindClosestTree(Vector3 position)
        {
            var trees = Object.FindObjectsOfType <TreeBehavior>();

            if (trees.Length == 0)
            {
                return(null, 0f);
            }

            TreeBehavior currentClosest  = trees.First();
            var          currentDistance = GetDistance(position, currentClosest.transform.position);

            for (int i = 1; i < trees.Length; i++)
            {
                var thisDistance = GetDistance(position, trees[i].transform.position);

                if (thisDistance < currentDistance)
                {
                    currentClosest  = trees[i];
                    currentDistance = thisDistance;
                }
            }

            return(currentClosest, currentDistance);
        }
Ejemplo n.º 3
0
 private static float DistanceTo(TreeBehavior thisTree, TreeBehavior thatTree)
 {
     if (thisTree.Equals(thatTree))
     {
         return(float.MaxValue);
     }
     return(LocationUtil.GetDistance(thatTree.transform.position, thisTree.transform.position));
 }
Ejemplo n.º 4
0
    // Use this for initialization
    void Start()
    {
        firstTree = Object.FindObjectsOfType <TreeBehavior>().First();

        for (var i = 0; i < initialSpawn; i++)
        {
            firstTree.DropFruit();
        }
    }
Ejemplo n.º 5
0
    public override bool ApplyOnItem(WorkableItem item)
    {
        TreeBehavior tree = item as TreeBehavior;

        if (tree)
        {
            tree.AfterWorked();

            return(true);
        }

        return(false);
    }
Ejemplo n.º 6
0
    private void OnMouseDown()
    {
        if (tree != null)
        {
            tree.Fruits.Remove(this);
            tree.Invoke("SpawnFruit", tree.spawnTime);
            tree = null;
        }

        dragTimer = Time.time;
        holding   = true;
        Camera.main.GetComponent <DragToMove>().disabled = true;
    }
Ejemplo n.º 7
0
        public static void GerminateTree(TreeGenes genes, Vector3 position, GameObject gameObject, GameObject fruitPrefab)
        {
            TreeBehavior newTree = gameObject.GetComponent <TreeBehavior>();

            newTree.fruitPrefab          = fruitPrefab;
            newTree.transform.position   = new Vector3(position.x, 0, position.z);
            newTree.transform.rotation   = Quaternion.Euler(Vector3.up * Random.Range(0, 360));
            newTree.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
            newTree.Start();

            newTree.growDropRatio  = genes.growDropRatio * GetDrift();
            newTree.lifespan       = (int)(genes.lifespan * GetDrift());
            newTree.fastGrowTime   = (int)(genes.fastGrowTime * GetDrift());
            newTree.mediumGrowTime = (int)(genes.mediumGrowTime * GetDrift());
            newTree.slowGrowTime   = (int)(genes.slowGrowTime * GetDrift());
            newTree.age            = 0;
        }
Ejemplo n.º 8
0
    private void Grow()
    {
        transform.localScale += new Vector3(growthRate, growthRate, growthRate);

        if (IsOverlappingClosestTree())
        {
            if (transform.localScale.x > closestTree.transform.localScale.x)
            {
                Destroy(closestTree.gameObject);
                Destroy(closestTree);
                closestTree = null;
                FindClosestTree();
            }
            else
            {
                Destroy(this.gameObject);
                Destroy(this);
                closestTree.FindClosestTree();
            }
        }
    }
Ejemplo n.º 9
0
 // Start is called before the first frame update
 internal void Start()
 {
     closestTree = FindClosestTree();
     isOnMap     = LocationUtil.IsOnMap(transform.position);
 }