Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if (activeObject == null)
            {
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit = default(RaycastHit);

                if (!Physics.Raycast(ray, out hit) || hit.transform.gameObject.layer == 8)
                {
                    var position = (Camera.main.ScreenToWorldPoint(Input.mousePosition));
                    SendWorkerTo(position);
                }
                else
                {
                    Debug.Log(string.Format("Layer: {0}", hit.transform.gameObject.layer));
                }
            }
        }
        else if (Input.GetMouseButtonDown(1))
        {
            Ray        ray          = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit          = default(RaycastHit);
            bool       hitSomething = Physics.Raycast(ray, out hit);

            if ((!hitSomething && (activeObject != null)) || (hit.transform != null && hit.transform.gameObject == activeObject))
            {
                SendMessageTo(activeObject, "HideOptions", SendMessageOptions.DontRequireReceiver);
                activeObject = null;
            }
            else if (hit.transform != null)
            {
                activeObject = hit.transform.gameObject;
                SendMessageTo(activeObject, "ShowOptions", SendMessageOptions.DontRequireReceiver);
            }
        }
        foreach (var queuedRequest in QueueMaterialRequest)
        {
            var requiredAmount = ExecuteRequestMaterial(queuedRequest.Key, queuedRequest.Value.ResourceName, queuedRequest.Value.Amount);
            queuedRequest.Value.Amount = requiredAmount;
        }
        QueueMaterialRequest.RemoveAll(q => q.Value.Amount <= 0);
    }
Beispiel #2
0
    public void RequestMaterial(Building building, string resourceName, int amountRequired)
    {
        Debug.Log(string.Format("Building {0} requested {1} of {2}", building.name, amountRequired, resourceName));

        QueueMaterialRequest.Add(new KeyValuePair <Building, ResourceAmount>(building, new ResourceAmount(resourceName, amountRequired)));
    }