void Update() { currTimer -= Time.deltaTime; if (currTimer <= 0) { currTimer = flowDelay; if (lManage.ReturnAdjacentDown(bData) == BLOCK_NULL) { lManage.CreateBlock(new GridPos(bData.blockPos.x, bData.blockPos.y - 1, bData.blockPos.z), bData.blockID); } else { if (lManage.ReturnAdjacentDown(bData) != bData.blockID) { if (lManage.ReturnAdjacentLeft(bData) == BLOCK_NULL) { lManage.CreateBlock(new GridPos(bData.blockPos.x - 1, bData.blockPos.y, bData.blockPos.z), bData.blockID); } if (lManage.ReturnAdjacentRight(bData) == BLOCK_NULL) { lManage.CreateBlock(new GridPos(bData.blockPos.x + 1, bData.blockPos.y, bData.blockPos.z), bData.blockID); } if (lManage.ReturnAdjacentForward(bData) == BLOCK_NULL) { lManage.CreateBlock(new GridPos(bData.blockPos.x, bData.blockPos.y, bData.blockPos.z + 1), bData.blockID); } if (lManage.ReturnAdjacentBack(bData) == BLOCK_NULL) { lManage.CreateBlock(new GridPos(bData.blockPos.x, bData.blockPos.y, bData.blockPos.z - 1), bData.blockID); } } } } }
void Update() { if (paused || win) { padMarker.SetActive(false); minionPointer.SetActive(false); stepPad.SetActive(false); toolHighlight.SetActive(false); } else if (Input.GetMouseButton(1)) { newRot.y += ((Input.GetAxis("Mouse X") * cameraSensitivity) * Time.deltaTime); padMarker.SetActive(false); stepPad.SetActive(false); toolHighlight.SetActive(false); if (selectedMinion == null) { minionPointer.SetActive(false); } else { minionPointer.SetActive(true); minionPointer.transform.Rotate(new Vector3(0, 80.0f * Time.deltaTime, 0)); minionPointer.transform.position = new Vector3(selectedMinion.transform.position.x, selectedMinion.transform.position.y - 0.3f, selectedMinion.transform.position.z); } } else if ((currentlyHeldItem >= 101) && (selectedMinion == null)) { padMarker.SetActive(false); pointerRay = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(pointerRay, out hit)) { blockData hitBlock = hit.transform.GetComponent <blockData>(); if (hitBlock != null) { if (gridParent.IsValidToolingLocation(currentlyHeldItem, hitBlock)) { toolHighlight.SetActive(true); toolHighlight.transform.position = hitBlock.transform.position; if (Input.GetMouseButtonUp(0)) { gridParent.DeleteBlock(hitBlock); //Remove icon Destroy(slots[currentlySelectedSlot - 1].transform.GetChild(0).gameObject); //Deselect slot slots[currentlySelectedSlot - 1].GetComponent <Image>().color = Color.black; PlayerInventory[currentlySelectedSlot - 1] = 0; currentlySelectedSlot = 0; currentlyHeldItem = 0; toolHighlight.SetActive(false); } } } } } else if ((currentlyHeldItem != 0) && (selectedMinion == null)) { toolHighlight.SetActive(false); pointerRay = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(pointerRay, out hit)) { blockData hitBlock = hit.transform.GetComponent <blockData>(); if ((hitBlock != null) && (hitBlock.blockPos.y != maxLevelY)) { if (!hitBlock.isEntity && (gridParent.levelBlocks[hitBlock.blockPos.x, hitBlock.blockPos.y + 1, hitBlock.blockPos.z] == BLOCK_NULL)) { padMarker.SetActive(true); padMarker.transform.position = new Vector3(hitBlock.transform.position.x, hitBlock.transform.position.y + 0.55f, hitBlock.transform.position.z); if (Input.GetMouseButtonUp(0) && IsValidPlace(currentlyHeldItem, hitBlock.blockID)) { gridParent.CreateBlock(new GridPos(hitBlock.blockPos.x, hitBlock.blockPos.y + 1, hitBlock.blockPos.z), currentlyHeldItem); //Remove icon Destroy(slots[currentlySelectedSlot - 1].transform.GetChild(0).gameObject); //Deselect slot slots[currentlySelectedSlot - 1].GetComponent <Image>().color = Color.black; PlayerInventory[currentlySelectedSlot - 1] = 0; currentlySelectedSlot = 0; currentlyHeldItem = 0; //Disable padMarker padMarker.SetActive(false); } } else { padMarker.SetActive(false); minionPointer.SetActive(false); } } else { //When there's no block data padMarker.SetActive(false); minionPointer.SetActive(false); } } else { //When there's no raycast hit. padMarker.SetActive(false); minionPointer.SetActive(false); } } else if (selectedMinion == null) { pointerRay = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(pointerRay, out hit)) { if (hit.transform.tag == "minion") { minionPointer.SetActive(true); minionPointer.transform.position = new Vector3(hit.transform.position.x, hit.transform.position.y - 0.3f, hit.transform.position.z); if (Input.GetMouseButtonUp(0)) { selectedMinion = hit.transform.gameObject; } } else { minionPointer.SetActive(false); } } } else if (selectedMinion != null) { toolHighlight.SetActive(false); minionPointer.SetActive(true); stepPad.SetActive(false); pointerRay = Camera.main.ScreenPointToRay(Input.mousePosition); minionPointer.transform.Rotate(new Vector3(0, 80.0f * Time.deltaTime, 0)); minionPointer.transform.position = new Vector3(selectedMinion.transform.position.x, selectedMinion.transform.position.y - 0.3f, selectedMinion.transform.position.z); if (Physics.Raycast(pointerRay, out hit)) { if ((hit.transform.gameObject == selectedMinion) && (Input.GetMouseButtonUp(0))) { selectedMinion = null; minionPointer.SetActive(false); } else if (hit.transform.tag == "minion") { minionPointer.transform.position = new Vector3(hit.transform.position.x, hit.transform.position.y - 0.3f, hit.transform.position.z); if (Input.GetMouseButtonUp(0)) { selectedMinion = hit.transform.gameObject; } } else if ((hit.transform.GetComponent <blockData>() != null) && (hit.transform.GetComponent <blockData>().blockPos.y != maxLevelY)) { blockData targetBlock = hit.transform.GetComponent <blockData>(); GridPos aboveTarget = new GridPos(targetBlock.blockPos.x, targetBlock.blockPos.y + 1, targetBlock.blockPos.z); if ((gridParent.levelBlocks[aboveTarget.x, aboveTarget.y, aboveTarget.z] == ENTITY_GOAL) && (gridParent.IsValidMoveLocation(selectedMinion.GetComponent <blockData>(), targetBlock))) { stepPad.SetActive(true); stepPad.transform.position = new Vector3(hit.transform.position.x, hit.transform.position.y + 0.6f, hit.transform.position.z); if (Input.GetMouseButtonUp(0)) { Win(); gridParent.DeleteBlock(GameObject.Find("goal(Clone)").GetComponent <blockData>()); gridParent.MoveEntity(selectedMinion.GetComponent <blockData>(), aboveTarget); } } else if ((gridParent.levelBlocks[aboveTarget.x, aboveTarget.y, aboveTarget.z] == BLOCK_NULL) && (gridParent.IsValidMoveLocation(selectedMinion.GetComponent <blockData>(), targetBlock))) { stepPad.SetActive(true); stepPad.transform.position = new Vector3(hit.transform.position.x, hit.transform.position.y + 0.6f, hit.transform.position.z); if (Input.GetMouseButtonUp(0)) { gridParent.MoveEntity(selectedMinion.GetComponent <blockData>(), aboveTarget); } } } else { minionPointer.SetActive(false); stepPad.SetActive(false); } } } }