Beispiel #1
0
    public IEnumerator PlaceObjects()
    {
        if (!edge)
        {
            int     random    = Random.Range(0, 5);
            Vector3 randomRot = new Vector3(0, random * 60, 0);

            LayerMask nodeLayer    = LayerMask.GetMask("Node");
            Vector3   raycastOrgin = transform.position;
            raycastOrgin.y += 2f;

            //spawn rocks
            for (int x = 0; x < levelRocks.Count; x++)
            {
                if (x == level)
                {
                    if (Random.Range(0, 100) < levelRocks[x])
                    {
                        if (!Physics.Raycast(raycastOrgin, Vector3.down, 4f, nodeLayer, QueryTriggerInteraction.Collide))
                        {
                            Transform  rockFolder = transform.parent.parent.Find("RockFolder").transform;
                            GameObject o          = Instantiate(rock, transform.position, Quaternion.Euler(randomRot), rockFolder);
                            o.transform.localScale = o.transform.localScale * Random.Range(.8f, 1.2f);
                            o.GetComponent <Target>().Place();
                        }
                    }
                }
            }

            //spawn trees
            for (int x = 0; x < levelTrees.Count; x++)
            {
                if (x == level)
                {
                    if (Random.Range(0, 100) < levelTrees[x])
                    {
                        if (!Physics.Raycast(raycastOrgin, Vector3.down, 4f, nodeLayer, QueryTriggerInteraction.Collide))
                        {
                            Transform  treeFolder = transform.parent.parent.Find("TreeFolder").transform;
                            GameObject Tree       = Instantiate(tree, transform.position, Quaternion.Euler(randomRot), treeFolder);
                            TreeStuff  treeStuff  = Tree.GetComponent <TreeStuff>();
                            treeStuff.SetTree();
                            treeStuff.Place();
                        }
                    }
                }
            }

            yield return(new WaitForEndOfFrame());
        }
    }
Beispiel #2
0
    void PlantTree(Target target)
    {
        Destroy(target.gameObject);

        int     random    = Random.Range(0, 5);
        Vector3 randomRot = new Vector3(0, random * 60, 0);

        GameObject Tree;

        Tree = Instantiate(loadedResources.sapling, target.transform.position, Quaternion.Euler(randomRot));
        TreeStuff treeStuff = Tree.GetComponent <TreeStuff>();

        treeStuff.SetSapling();

        RemoveReservation();         // free up a space
        jobTaskComplete = true;      // set job task complete, so we get next job in queue
    }
Beispiel #3
0
    IEnumerator ChopTree(Target target)
    {
        bool      atTarget = true;
        TreeStuff tree     = target.GetComponent <TreeStuff>();

        while (tree.treeHP > 0 && !gameManager.night && atTarget)
        {
            if ((chicken.transform.position - target.transform.position).sqrMagnitude > 1f)
            {
                atTarget = false;
            }

            tree.treeHP--;
            yield return(new WaitForSeconds(tree.chopTime / 100 / gameManager.gameSpeed));            // wait for as long as one action takes
        }

        if (tree.treeHP <= 0 && !gameManager.night)
        {
            taskCreator.GetResource(chicken, Resource.Wood, target.gameObject);
        }

        RemoveReservation();         // free up a space
        jobTaskComplete = true;      // set job task complete, so we get next job in queue
    }