private NodeState SetRefineryConstructPosition()
        {
            GameObject prefab;

            if (Singleton.classname == "Human")
            {
                prefab = AssetUtils.Instance.GetAsset("OrcRefinery") as GameObject;
            }
            else
            {
                prefab = AssetUtils.Instance.GetAsset("HumanRefinery") as GameObject;
            }
            GameObject refineryGameObj = GameObject.Instantiate(prefab);
            Construct  refinery        = refineryGameObj.GetComponentInChildren <Construct>();

            refinery.Player = npc;
            refinery.Group  = Group.NPC;
            refineryGameObj.SetActive(true);
            refinery.Build();
            return(SetConstructPosition(ConstructId.Refinery, LocationOffset.Refinery, refineryGameObj.transform));
        }
        private NodeState SetBarrackConstructPosition()
        {
            GameObject prefab;

            if (Singleton.classname == "Human")
            {
                prefab = AssetUtils.Instance.GetAsset("OrcBarrack") as GameObject;
            }
            else
            {
                prefab = AssetUtils.Instance.GetAsset("HumanBarrack") as GameObject;
            }
            GameObject barrackGameObj = GameObject.Instantiate(prefab);
            Construct  barrack        = barrackGameObj.GetComponentInChildren <Construct>();

            barrack.Player = npc;
            barrack.Group  = Group.NPC;
            barrackGameObj.SetActive(true);
            barrack.Build();

            return(SetConstructPosition(ConstructId.Barrack, LocationOffset.Barrack, barrackGameObj.transform));
        }
        private NodeState SetYardContrustPostion()
        {
            GameObject prefab;

            if (Singleton.classname == "Human")
            {
                prefab = AssetUtils.Instance.GetAsset("OrcYard") as GameObject;
            }
            else
            {
                prefab = AssetUtils.Instance.GetAsset("HumanYard") as GameObject;
            }

            GameObject yardGameObj = GameObject.Instantiate(prefab);
            Construct  yard        = yardGameObj.GetComponentInChildren <Construct>();

            yard.Player = npc;
            yard.Group  = Group.NPC;
            yardGameObj.SetActive(true);
            yard.Build();

            return(SetConstructPosition(ConstructId.Yard, LocationOffset.Yard, yardGameObj.transform));
        }
    // Update is called once per frame
    void Update()
    {
        if (OnselectTaget == true)
        {
            foreach (CubeManager cube in ListInSelect)
            {
                if (cube != null)
                {
                    if (cube.CanBuild == false)
                    {
                        cube.SetState("Not");
                        cube.OnraycastIn();
                    }

                    else
                    {
                        cube.SetState("Can");
                        cube.OnraycastIn();


                        foreach (CubeManager _cube in ListBuildCube)
                        {
                            _cube.SetState("None");
                            _cube.OnraycastIn();
                        }
                    }
                }
            }

            ray = rtsCamera.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray: ray,
                                hitInfo: out hitInfo,
                                maxDistance: Mathf.Infinity,
                                layerMask: LayerMask.GetMask("Floor")))
            {
                CubeManager cube = hitInfo.collider.gameObject.GetComponent <CubeManager>();


                if (cube != null)
                {
                    setBuildSize(BuildSize, cube);
                }
            }


            if (OnholdTaget)
            {
                if (Input.GetMouseButtonDown(1))
                {
                    for (int k = 0; k < ListInSelect.Count; k++)
                    {
                        ListInSelect[k].SetState("None");
                        ListInSelect[k].OnraycastIn();
                    }
                    Player _player = FindObjectOfType <MainPlayer>();
                    _player.TakeGold(BuildPrice);
                    ResetTaget();
                    ListInSelect.Clear();
                    return;
                }
                if (Input.GetMouseButtonDown(0) && select() == false)
                {
                    return;
                }
                else
                {
                    if (Input.GetMouseButtonDown(0))
                    {
                        if (ListInSelect.Count < BuildSize.x * BuildSize.y)
                        {
                            return;
                        }
                        GameObject NewGO     = Instantiate(BuildModel, new Vector3(LatPoint.x + ((int)BuildSize.x / 2), 0, LatPoint.y + ((int)BuildSize.y / 2)), Quaternion.identity);
                        Construct  construct = NewGO.GetComponentInChildren <Construct>();
                        for (int k = 0; k < ListInSelect.Count; k++)
                        {
                            ListInSelect[k].CanBuild = false;
                            ListInSelect[k].SetState("None");
                            ListInSelect[k].OnraycastIn();
                            construct.CellInfo.Add(ListInSelect[k]);
                        }

                        construct.Group = EnumCollection.Group.Player;
                        SoundManager.instanece.PlayEffect(2);
                        NewGO.SetActive(true);
                        construct.Build();
                        ListInSelect.Clear();
                        ResetTaget();
                        uiControl.GetACtiveBuild(construct.Player);
                    }
                }
            }

            if (Input.GetMouseButtonUp(0))
            {
                OnholdTaget = true;
            }
        }
    }