// 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); }
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))); }