Ejemplo n.º 1
0
 void Start()
 {
     currTimer = checkDelay;
     bData     = gameObject.GetComponent <blockData>();
     if (GameObject.Find("levelManager") != null)
     {
         lManage = GameObject.Find("levelManager").GetComponent <levelManager>();
     }
 }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
 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);
     }
 }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
 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);
     }
 }
Ejemplo n.º 6
0
 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);
     }
 }
Ejemplo n.º 7
0
 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);
     }
 }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 11
0
 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;
 }
Ejemplo n.º 12
0
 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);
 }
Ejemplo n.º 13
0
 public void DeleteBlock(blockData block)
 {
     levelBlocks[block.blockPos.x, block.blockPos.y, block.blockPos.z] = BLOCK_NULL;
     Destroy(block.gameObject);
 }
Ejemplo n.º 14
0
 void Start()
 {
     currTimer = flowDelay;
     bData     = gameObject.GetComponent <blockData>();
     lManage   = GameObject.Find("levelManager").GetComponent <levelManager>();
 }
Ejemplo n.º 15
0
 void Start()
 {
     bData = GetComponent <blockData>();
 }