示例#1
0
    // Start is called before the first frame update
    void Start()
    {
        OldTree[] oldTrees = new OldTree[transform.childCount];

        for (int i = 0; i < transform.childCount; i++)
        {
            if (transform.GetChild(i).name == "Tree1(Clone)")
            {
                oldTrees[i] = new OldTree(1, transform.GetChild(i).transform);
            }
            else if (transform.GetChild(i).name == "Tree2(Clone)")
            {
                oldTrees[i] = new OldTree(2, transform.GetChild(i).transform);
            }
            else if (transform.GetChild(i).name == "Tree3(Clone)")
            {
                oldTrees[i] = new OldTree(3, transform.GetChild(i).transform);
            }
        }

        for (int i = transform.childCount - 1; i >= 0; i--)
        {
            Destroy(transform.GetChild(i).gameObject);
        }

        for (int i = 0; i < oldTrees.Length; i++)
        {
            GameObject gameObject;

            Transform newTransform = oldTrees[i].transform;
            newTransform.localScale = new Vector3(1f, 1f, 1f);

            Debug.Log(newTransform.localScale);

            if (oldTrees[i].i == 1)
            {
                gameObject = Instantiate <GameObject>(Tree1, newTransform);
            }
            else if (oldTrees[i].i == 2)
            {
                gameObject = Instantiate <GameObject>(Tree2, newTransform);
            }
            else
            {
                gameObject = Instantiate <GameObject>(Tree3, newTransform);
            }

            gameObject.transform.parent = this.transform;
        }
    }
    public static void Gather(Unit worker, Resource resource)
    {
        if (PlayerResources.hasStorageRoom(resource.type, 1))
        {
            if (worker.remainingMoves >= resource.CostWork)
            {
                worker.remainingMoves -= resource.CostWork;
                resource.Amount--;


                if (resource.type == ResourceManager.ResourceType.Wood)
                {
                    var resourceObjToReplace = resource.resourceObjects[0];
                    // OldTree
                    if (resourceObjToReplace.transform.parent.tag == TagHandler.magicTreeString)
                    {
                        OldTree oldTree = resource.resourceObjects[0].GetComponent <OldTree>();
                        var     sun     = GameObject.Find("Sun").GetComponent <LightSource>();
                        if (resource.Amount == 9)
                        {
                            Talker.TypeThis("Kablang...");
                            sun.LightRange--;
                            oldTree.minimum = -0.8f;
                        }
                        if (resource.Amount == 8)
                        {
                            Talker.TypeThis("Mortal, you are way out of line!");
                            sun.LightRange--;
                            oldTree.minimum = -0.6f;
                        }
                        if (resource.Amount == 7)
                        {
                            Talker.TypeThis("Hold on for a second, I must warn you!");
                            sun.LightRange--;
                            oldTree.minimum = -0.4f;
                        }
                        if (resource.Amount == 6)
                        {
                            Talker.TypeThis("Felling this tree will lead down a path of darkness...");
                            sun.LightRange--;
                            oldTree.minimum = -0.2f;
                        }
                        if (resource.Amount == 5)
                        {
                            Talker.TypeThis("The last person that tried to cut me down somehow seemed more sensible than you.");
                        }
                        if (resource.Amount < 5 && resource.Amount > 0)
                        {
                            AddRemoveResource(resource.type, 1, MethodHandler.Command.Add);
                            EventHandler.current.ResourceGathered(worker, resource.type);
                            Debug.Log("Gathered: " + resource.type);
                            Talker.TypeThis("Gathered: " + resource.type);
                            sun.LightRange--;
                            oldTree.minimum = +0.2f;
                        }
                        if (resource.Amount == 0)
                        {
                            AddRemoveResource(resource.type, 1, MethodHandler.Command.Add);
                            EventHandler.current.ResourceGathered(worker, resource.type);
                            Debug.Log("Gathered: " + resource.type);
                            Talker.TypeThis("Gathered: " + resource.type);
                            resource.resourceObjects.Remove(resourceObjToReplace);
                            Destroy(resourceObjToReplace);
                            if (resource.resourceObjects.Count == 0)
                            {
                                Destroy(resource);
                            }

                            sun.LightRange = 0;
                            GameObject.Destroy(sun.gameObject);
                            GameObject stump = Instantiate((GameObject)Resources.Load("Nature/OldTreeDark"), resourceObjToReplace.transform.position, resourceObjToReplace.transform.rotation, resource.transform);
                        }
                    }
                    else
                    {
                        AddRemoveResource(resource.type, 1, MethodHandler.Command.Add);
                        EventHandler.current.ResourceGathered(worker, resource.type);
                        Debug.Log("Gathered: " + resource.type);
                        Talker.TypeThis("Gathered: " + resource.type);
                        GameObject stump    = Instantiate((GameObject)Resources.Load("Nature/Stump"), resourceObjToReplace.transform.position, resourceObjToReplace.transform.rotation, resource.transform);
                        GameObject treeFall = Instantiate((GameObject)Resources.Load("Nature/TreeFall"), resourceObjToReplace.transform.position, resourceObjToReplace.transform.rotation, resource.transform);
                        treeFall.transform.localScale += new Vector3(1, 1, 1);
                        resource.resourceObjects.Remove(resourceObjToReplace);
                        Destroy(resourceObjToReplace);
                        if (resource.resourceObjects.Count == 0)
                        {
                            Destroy(resource);
                        }
                    }
                }
                else if (resource.type == ResourceManager.ResourceType.Stone)
                {
                    AddRemoveResource(resource.type, 1, MethodHandler.Command.Add);
                    EventHandler.current.ResourceGathered(worker, resource.type);
                    Debug.Log("Gathered: " + resource.type);
                    Talker.TypeThis("Gathered: " + resource.type);
                    var resourceObjToReplace = resource.resourceObjects[0];
                    //GameObject stump = Instantiate((GameObject)Resources.Load("Nature/Stump"), resourceObjToReplace.transform.position, resourceObjToReplace.transform.rotation, resource.transform);
                    //resource.resourceObjects.Remove(resourceObjToReplace);
                    if (resource.Amount < 1)
                    {
                        Destroy(resourceObjToReplace);
                        Destroy(resource);
                    }
                }
            }
            else
            {
                Debug.Log("No remaining Moves: " + resource.type + " not gathered");
            }
        }
        else
        {
            Debug.Log("No Storage rooom for: " + resource.type + " not gathered");
        }
    }