void Start() { currTimer = checkDelay; bData = gameObject.GetComponent <blockData>(); if (GameObject.Find("levelManager") != null) { lManage = GameObject.Find("levelManager").GetComponent <levelManager>(); } }
public int ReturnAdjacentForward(blockData block) { if (block.blockPos.z != maxLevelZ) { return(levelBlocks[block.blockPos.x, block.blockPos.y, block.blockPos.z + 1]); } else { return(-1); } }
public int ReturnAdjacentBack(blockData block) { if (block.blockPos.z != 0) { return(levelBlocks[block.blockPos.x, block.blockPos.y, block.blockPos.z - 1]); } else { return(-1); } }
public int ReturnAdjacentRight(blockData block) { if (block.blockPos.x != maxLevelX) { return(levelBlocks[block.blockPos.x + 1, block.blockPos.y, block.blockPos.z]); } else { return(-1); } }
public int ReturnAdjacentLeft(blockData block) { if (block.blockPos.x != 0) { return(levelBlocks[block.blockPos.x - 1, block.blockPos.y, block.blockPos.z]); } else { return(-1); } }
public int ReturnAdjacentDown(blockData block) { if (block.blockPos.y != 0) { return(levelBlocks[block.blockPos.x, block.blockPos.y - 1, block.blockPos.z]); } else { return(-1); } }
public int ReturnAdjacentUp(blockData block) { if (block.blockPos.y != maxLevelY) { return(levelBlocks[block.blockPos.x, block.blockPos.y + 1, block.blockPos.z]); } else { return(-1); } }
public bool IsValidToolingLocation(int tool, blockData target) { if ((tool == TOOL_SHOVEL) && (BlockTypeIsSoft(target.blockID))) { GameObject[] allMinions = GameObject.FindGameObjectsWithTag("minion"); if (allMinions.Length == 0) { return(false); } foreach (GameObject item in allMinions) { GridPos minionPos = item.GetComponent <blockData>().blockPos; //If block is by the minion's feet and not holding up something. if ((target.blockPos.y == (minionPos.y - 1)) && (ReturnAdjacentUp(target) == BLOCK_NULL)) { int totalMovement = 0; totalMovement += Mathf.Abs((target.blockPos.x - minionPos.x)); totalMovement += Mathf.Abs((target.blockPos.z - minionPos.z)); if (totalMovement == 1) { return(true); } } //If block is level with the minion else if (target.blockPos.y == minionPos.y) { int totalMovement = 0; totalMovement += Mathf.Abs((target.blockPos.x - minionPos.x)); totalMovement += Mathf.Abs((target.blockPos.z - minionPos.z)); if (totalMovement == 1) { return(true); } } } return(false); } else { return(false); } }
public bool IsValidMoveLocation(blockData mover, blockData target) { if (target.blockPos.y == maxLevelY) { return(false); } else if ((mover.blockID == ENTITY_MEEP_PLAINS)) { //If the mover is a basic meep, without the ability to navigate upwards without plants. if ((mover.blockPos.y != (target.blockPos.y + 1)) && (mover.blockPos.y != target.blockPos.y)) { return(false); } else { int totalMovement = 0; totalMovement += Mathf.Abs((target.blockPos.x - mover.blockPos.x)); totalMovement += Mathf.Abs((target.blockPos.z - mover.blockPos.z)); if ((totalMovement == 1) && (target.walkable)) { return(true); } } } else if ((mover.blockID == ENTITY_MEEP_GREATER_PLAINS)) { //If the mover is a greater meep, with the ability to navigate upwards without plants. if ((mover.blockPos.y != (target.blockPos.y + 2)) && (mover.blockPos.y != target.blockPos.y) && (mover.blockPos.y != (target.blockPos.y + 1))) { return(false); } else { int totalMovement = 0; totalMovement += Mathf.Abs((target.blockPos.x - mover.blockPos.x)); totalMovement += Mathf.Abs((target.blockPos.z - mover.blockPos.z)); if ((totalMovement == 1) && (target.walkable)) { return(true); } } } return(false); }
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); } } } }
public void MoveEntity(blockData entity, GridPos newPos) { levelBlocks[entity.blockPos.x, entity.blockPos.y, entity.blockPos.z] = BLOCK_NULL; levelBlocks[newPos.x, newPos.y, newPos.z] = entity.blockID; entity.blockPos = newPos; }
public void ReplaceBlock(blockData block, int newBlock) { levelBlocks[block.blockPos.x, block.blockPos.y, block.blockPos.z] = newBlock; CreateBlock(block.blockPos, newBlock); Destroy(block.gameObject); }
public void DeleteBlock(blockData block) { levelBlocks[block.blockPos.x, block.blockPos.y, block.blockPos.z] = BLOCK_NULL; Destroy(block.gameObject); }
void Start() { currTimer = flowDelay; bData = gameObject.GetComponent <blockData>(); lManage = GameObject.Find("levelManager").GetComponent <levelManager>(); }
void Start() { bData = GetComponent <blockData>(); }