Esempio n. 1
0
    void Update()
    {
        #region Action menu
        // Action menu
        if (Input.GetButtonDown("Fire2") && !actionMenuActive && localPlayer.canDoAction && !EventSystem.current.IsPointerOverGameObject()) // Open action menu
        {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit, 1024))
            {
                actionMenuActive = true;
                actionMenuWorldPos = hit.point;
                actionMenuScreenPos = MouseScreenPosToGUIPos();
                actionMenuObject = hit.transform.gameObject;

                string hitTag = hit.transform.tag;
                switch (hitTag)
                {
                    case "Terrain":
                        {
                            currentAction = Actions_Old.Map;
                        }
                        break;
                    case "Player":
                        {
                            currentAction = Actions_Old.Player;
                        }
                        break;
                    case "Tree":
                        {
                            currentAction = Actions_Old.Tree;
                        }
                        break;
                    default:
                        {
                            CloseActionMenu();
                        }
                        break;
                }
            }
        }
        #endregion

        #region Quick action
        // Quick action
        if (Input.GetButtonDown("Fire1") && !actionMenuActive && localPlayer.canDoAction && !EventSystem.current.IsPointerOverGameObject()) // Perfrom quick action
        {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit, 1024))
            {
                actionMenuWorldPos = hit.point;
                actionMenuScreenPos = MouseScreenPosToGUIPos();
                actionMenuObject = hit.transform.gameObject;

                string hitTag = hit.transform.tag;
                switch (hitTag)
                {
                    case "Terrain": // Quick action for map
                        {
                            Vector2 pos = ConvertToWalkPos(new Vector2(actionMenuWorldPos.x, actionMenuWorldPos.z));
                            sender.SendWantedPosition(new Vector2(pos.x, pos.y));
                        }
                        break;
                    case "Player": // Quick action for tree
                        {
                            Vector2 pos = ConvertToWalkPos(new Vector2(actionMenuWorldPos.x, actionMenuWorldPos.z));
                            sender.SendWantedPosition(new Vector2(pos.x, pos.y));
                        }
                        break;
                    case "Tree":
                        {
                            TreeData tree = actionMenuObject.GetComponent<TreeData>();

                            // Check if player is standing next to tree
                            if (Math.Round(Vector3.Distance(actionMenuObject.transform.position, localPlayer.transform.position), 1) <= 1.8f)
                            {
                                sender.SendHarvestObject(0, tree.treeID);
                            }
                            else
                                Debug.Log("You have to stand next to tree to chop it down.");
                        }
                        break;
                }
            }
        }
        #endregion

        // Close action menu when open and Fire2 is up
        if (actionMenuActive && !Input.GetButton("Fire2"))
            CloseActionMenu();
    }
Esempio n. 2
0
    void Update()
    {
        #region Action menu
        // Action menu
        if (Input.GetButtonDown("Fire2") && !actionMenuActive && localPlayer.canDoAction && !EventSystem.current.IsPointerOverGameObject()) // Open action menu
        {
            RaycastHit hit;
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit, 1024))
            {
                actionMenuActive    = true;
                actionMenuWorldPos  = hit.point;
                actionMenuScreenPos = MouseScreenPosToGUIPos();
                actionMenuObject    = hit.transform.gameObject;

                string hitTag = hit.transform.tag;
                switch (hitTag)
                {
                case "Terrain":
                {
                    currentAction = Actions_Old.Map;
                }
                break;

                case "Player":
                {
                    currentAction = Actions_Old.Player;
                }
                break;

                case "Tree":
                {
                    currentAction = Actions_Old.Tree;
                }
                break;

                default:
                {
                    CloseActionMenu();
                }
                break;
                }
            }
        }
        #endregion

        #region Quick action
        // Quick action
        if (Input.GetButtonDown("Fire1") && !actionMenuActive && localPlayer.canDoAction && !EventSystem.current.IsPointerOverGameObject()) // Perfrom quick action
        {
            RaycastHit hit;
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit, 1024))
            {
                actionMenuWorldPos  = hit.point;
                actionMenuScreenPos = MouseScreenPosToGUIPos();
                actionMenuObject    = hit.transform.gameObject;

                string hitTag = hit.transform.tag;
                switch (hitTag)
                {
                case "Terrain":     // Quick action for map
                {
                    Vector2 pos = ConvertToWalkPos(new Vector2(actionMenuWorldPos.x, actionMenuWorldPos.z));
                    sender.SendWantedPosition(new Vector2(pos.x, pos.y));
                }
                break;

                case "Player":     // Quick action for tree
                {
                    Vector2 pos = ConvertToWalkPos(new Vector2(actionMenuWorldPos.x, actionMenuWorldPos.z));
                    sender.SendWantedPosition(new Vector2(pos.x, pos.y));
                }
                break;

                case "Tree":
                {
                    TreeData tree = actionMenuObject.GetComponent <TreeData>();

                    // Check if player is standing next to tree
                    if (Math.Round(Vector3.Distance(actionMenuObject.transform.position, localPlayer.transform.position), 1) <= 1.8f)
                    {
                        sender.SendHarvestObject(0, tree.treeID);
                    }
                    else
                    {
                        Debug.Log("You have to stand next to tree to chop it down.");
                    }
                }
                break;
                }
            }
        }
        #endregion

        // Close action menu when open and Fire2 is up
        if (actionMenuActive && !Input.GetButton("Fire2"))
        {
            CloseActionMenu();
        }
    }