예제 #1
0
 /// <summary>
 /// Open resource radial dial for an ore, store resource
 /// </summary>
 /// <param name="ore">Ore selected</param>
 public void OpenOreMenu(Ore ore)
 {
     _energyCrystal     = null;
     _ore               = ore;
     _resourceText.text = "Ore";
     DoUpdateChecks();
     gameObject.SetActive(true);
 }
예제 #2
0
 /// <summary>
 /// Open resource radial dial for an energy crystal, store resource
 /// </summary>
 /// <param name="crystal">Energy crystal selected</param>
 public void OpenEnergyCrystalMenu(EnergyCrystal energyCrystal)
 {
     _energyCrystal     = energyCrystal;
     _ore               = null;
     _resourceText.text = "Energy Crystal";
     DoUpdateChecks();
     gameObject.SetActive(true);
 }
예제 #3
0
 public void ShowResourceOptionsEnergyCrystal(EnergyCrystal energyCrystal)
 {
     CloseMenu();
     if (energyCrystal == null)
     {
         return;
     }
     MenuOpen = true;
     _resourceMenu.GetComponent <ResourceOptionsMenu>().OpenEnergyCrystalMenu(energyCrystal);
 }
예제 #4
0
 /// <summary>
 /// "When an energy crystal is added, set to max energy"
 /// </summary>
 /// <param name="crystal">"The crystal put into the building"</param>
 public virtual void AddEnergyCrystal(EnergyCrystal crystal)
 {
     _Energy        = 100;
     _EnergyRequest = false;
     if (_barsUpdater != null)
     {
         _barsUpdater.UpdateEnergyFill(_Energy);
     }
     _worldController._levelStatsController.EnergyCrystalUsed();
     Destroy(crystal.gameObject);
 }
예제 #5
0
    public bool EnergyCrystalSearch(bool requiredSight, float detectionRange)
    {
        if (_crystalList.Count > 0)
        {
            _closestEnergyCrystal = _crystalList[0];
            foreach (EnergyCrystal possibleLunch in _crystalList)
            {
                float difference = Vector3.Distance(possibleLunch.transform.position, transform.position) - Vector3.Distance(transform.position, _closestEnergyCrystal.transform.position);

                if (difference > 1 || difference < -1)
                {
                    if (Vector3.Distance(possibleLunch.transform.position, transform.position) < Vector3.Distance(transform.position, _closestEnergyCrystal.transform.position))
                    {
                        _closestEnergyCrystal = possibleLunch;
                    }
                }
            }
            if (requiredSight)
            {
                //ray cast to closest crystal
                _ray = new Ray(transform.position, _closestEnergyCrystal.transform.position - transform.position);
                Debug.DrawRay(transform.position, _closestEnergyCrystal.transform.position - transform.position);


                if (Physics.Raycast(_ray, out _hit))
                {
                    if (_hit.transform.tag == "EnergyCrystal")
                    {
                        return(true);
                    }
                }
            }
            else
            {
                if (Vector3.Distance(_closestEnergyCrystal.transform.position, transform.position) < detectionRange)
                {
                    return(true);
                }
            }
        }
        return(false);
    }
예제 #6
0
    void SelectUI()
    {
        if (!HasSelection())
        {
            return;
        }
        SelectionData Single = CurrentSelectionObjects[0];

        if (Single.IsWorker())
        {
            if (_hit.transform.tag == TagLibrary.HQ_TAG)
            {
                //RadialMenuScript.instance.ShowToolOptions(Single._Worker, _hit.transform.position);
                if (_hit.transform.GetComponent <Tile>() != null || _hit.transform.GetComponent <HQTileTagScript>() != null)
                {
                    ExecuteOrderOnAll(UnitTask.TaskType.Walk);
                }
            }
            else if (_hit.transform.tag == TagLibrary.VEHICLE_TAG)
            {
                if (!_hit.transform.GetComponent <Vehicle>().GetOccupied())
                {
                    RadialMenuScript.instance.ShowEmptyVehicleOptions(Single._Worker, _hit.transform.GetComponent <Vehicle>());
                }
            }
            else if (_hit.transform.tag == TagLibrary.WORKER_TAG)
            {
                Worker        worker  = _hit.transform.gameObject.GetComponentInParent <Worker>();
                List <Worker> workers = new List <Worker>();
                for (int i = 0; i < CurrentSelectionObjects.Count; i++)
                {
                    workers.Add(CurrentSelectionObjects[i]._Worker);
                }
                RadialMenuScript.instance.ShowWorkerOptions(workers, worker);
            }
            else
            {
                ExecuteOrderOnAll(UnitTask.TaskType.Walk);
            }
        }
        else
        {
            switch (_hit.transform.tag)
            {
            case TagLibrary.ROCK_TAG:
                RockScript rock = _hit.transform.gameObject.GetComponentInParent <RockScript>();
                RadialMenuScript.instance.ShowRockOptions(rock);
                break;

            case TagLibrary.RUBBLE_TAG:
                RubbleScript rubble = _hit.transform.gameObject.GetComponentInParent <RubbleScript>();
                RadialMenuScript.instance.ShowRubbleOptions(rubble);
                break;

            case TagLibrary.MONSTER_TAG:
                Monster monster = _hit.transform.GetComponentInParent <Monster>();
                RadialMenuScript.instance.ShowEnemyOptions(monster);
                break;

            case TagLibrary.HQ_TAG:
                HQ hq = _hit.transform.GetComponentInParent <HQ>();
                RadialMenuScript.instance.ShowHQOptions(hq);
                break;

            case TagLibrary.OUTPOST_TAG:
                Outpost outpost = _hit.transform.GetComponentInParent <Outpost>();
                RadialMenuScript.instance.ShowOutpostOptions(outpost);
                break;

            case TagLibrary.GARAGE_TAG:
                Garage garage = _hit.transform.GetComponentInParent <Garage>();
                RadialMenuScript.instance.ShowGarageOptions(garage);
                break;

            case TagLibrary.GEN_TAG:
            case TagLibrary.SKIP_TAG:
            case TagLibrary.BLOCK_TAG:
            case TagLibrary.TURRET_TAG:
            case TagLibrary.POWERGEN_TAG:
                Building building = _hit.transform.GetComponentInParent <Building>();
                RadialMenuScript.instance.ShowBuildingOptions(building);
                break;

            case TagLibrary.ORE_TAG:
                Ore ore = _hit.transform.GetComponentInParent <Ore>();
                RadialMenuScript.instance.ShowResourceOptionsOre(ore);
                break;

            case TagLibrary.ENERGYCRYSTAL_TAG:
                EnergyCrystal energyCrystal = _hit.transform.GetComponentInParent <EnergyCrystal>();
                RadialMenuScript.instance.ShowResourceOptionsEnergyCrystal(energyCrystal);
                break;

            case TagLibrary.VEHICLE_TAG:
                Vehicle vehicle = _hit.transform.GetComponent <Vehicle>();
                if (vehicle.GetOccupied())
                {
                    RadialMenuScript.instance.ShowVehicleOptions(_hit.transform.GetComponent <Vehicle>());
                }
                else
                {
                    RadialMenuScript.instance.ShowEmptyVehicleOptions(null, _hit.transform.GetComponent <Vehicle>());
                }
                break;

            case TagLibrary.BURN_TAG:
                MushroomCluster mushroomCluster = _hit.transform.GetComponentInParent <MushroomCluster>();
                RadialMenuScript.instance.ShowMushroomOptions(mushroomCluster);
                break;
            }
        }
        if (!Single.IsWorker())
        {
            ClearSelectedObjects(false);
        }
        SetMode(CurrentSelectionMode.RadialMenu);
    }
예제 #7
0
    public void CheckWhatsClosest(bool eatCrystals, bool requiredSight, float DetectionRange)
    {
        bool foundCrystal  = false;
        bool foundBuilding = false;

        if (eatCrystals)
        {
            if (_crystalList.Count > 0)
            {
                _closestEnergyCrystal = _crystalList[0];
                foreach (EnergyCrystal possibleLunch in _crystalList)
                {
                    if (Vector3.Distance(possibleLunch.transform.position, transform.position) < Vector3.Distance(transform.position, _closestEnergyCrystal.transform.position))
                    {
                        _closestEnergyCrystal = possibleLunch;
                    }
                }
                if (requiredSight)
                {
                    //ray cast to closest crystal
                    _ray = new Ray(transform.position, _closestEnergyCrystal.transform.position - transform.position);
                    Debug.DrawRay(transform.position, _closestEnergyCrystal.transform.position - transform.position);


                    if (Physics.Raycast(_ray, out _hit))
                    {
                        if (_hit.transform.tag == "EnergyCrystal")
                        {
                            _currentMonsterState = MonsterState.eating;
                            foundCrystal         = true;
                        }
                    }
                }
                else
                {
                    if (Vector3.Distance(_closestEnergyCrystal.transform.position, transform.position) < DetectionRange)
                    {
                        _currentMonsterState = MonsterState.eating;
                        foundCrystal         = true;
                    }
                }
            }
        }
        if (_buildingList.Count > 0 && !foundCrystal)
        {
            _closestBuilding = _buildingList[0];
            foreach (Building possibleLunch in _buildingList)
            {
                if (Vector3.Distance(possibleLunch.transform.position, transform.position) < Vector3.Distance(transform.position, _closestBuilding.transform.position))
                {
                    _closestBuilding = possibleLunch;
                }
            }
            if (requiredSight)
            {
                //ray cast to closest building
                _ray = new Ray(transform.position, _closestBuilding.transform.position - transform.position);
                Debug.DrawRay(transform.position, _closestBuilding.transform.position - transform.position);
                if (Physics.Raycast(_ray, out _hit))
                {
                    if (_hit.transform.tag == "HQ" || _hit.transform.tag == "GEN" || _hit.transform.tag == "SKIP")
                    {
                        _currentMonsterState = MonsterState.attackingBuilding;
                        _currentTarget       = _closestBuilding.transform.gameObject;
                        foundBuilding        = true;
                    }
                }
            }
            else
            {
                if (Vector3.Distance(_closestBuilding.transform.position, transform.position) < DetectionRange)
                {
                    _currentMonsterState = MonsterState.attackingBuilding;
                    _currentTarget       = _closestBuilding.transform.gameObject;
                    foundBuilding        = true;
                }
            }
        }
        if (_UnitList.Count > 0 && !foundCrystal && !foundBuilding)
        {
            _closestUnit = _UnitList[0];
            foreach (Unit possibleLunch in _UnitList)
            {
                if (Vector3.Distance(possibleLunch.transform.position, transform.position) < Vector3.Distance(transform.position, _closestUnit.transform.position))
                {
                    _closestUnit = possibleLunch;
                }
            }
            if (requiredSight)
            {
                //ray cast to closest worker
                _ray = new Ray(transform.position, _closestUnit.transform.position - transform.position);
                Debug.DrawRay(transform.position, _closestUnit.transform.position - transform.position);

                if (Physics.Raycast(_ray, out _hit))
                {
                    if (_hit.transform.tag == "Worker" || _hit.transform.tag == "Unit")
                    {
                        _currentMonsterState = MonsterState.attackingUnit;
                        _currentTarget       = _closestUnit.transform.gameObject;
                    }
                }
            }
            else
            {
                if (Vector3.Distance(_closestUnit.transform.position, transform.position) < DetectionRange)
                {
                    _currentMonsterState = MonsterState.attackingUnit;
                    _currentTarget       = _closestUnit.transform.gameObject;
                }
            }
        }
    }
예제 #8
0
    // Update is called once per frame
    void Update()
    {
        _ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (_currentSelectedObject != null)
        {
            _selectionRing.transform.position = _currentSelectedObject.transform.position;
        }
        else
        {
            _selectionRing.transform.position = new Vector3(0, -100, 0);
        }

        if (Physics.Raycast(_ray, out _hit))
        {
            Debug.DrawRay(_ray.origin, _ray.direction * _hit.distance, Color.yellow);
            _mouseWorldLocation = _hit.point;

            if (ControlScript.instance.GetControl("Select").InputDown)
            {
                if (!EventSystem.current.IsPointerOverGameObject())
                {
                    RadialMenuScript.instance.CloseMenu();
                }

                switch (_hit.transform.tag)
                {
                case TagLibrary.WORKER_TAG:
                    if (_currentSelectedObject != null)
                    {
                        _currentSelectedObject._selected = false;
                        _currentSelectedObject           = null;
                    }

                    _currentSelectedObject           = _hit.transform.gameObject.GetComponent <SelectableObject>();
                    _currentSelectedObject._selected = true;

                    WorkerInfoPanelScript.instance.Open(_hit.transform.GetComponent <Worker>());
                    break;

                default:

                    if (_currentSelectedObject != null)
                    {
                        _currentSelectedObject._selected = false;
                        _currentSelectedObject           = null;
                    }
                    WorkerInfoPanelScript.instance.Close();
                    break;
                }
            }
            else if (ControlScript.instance.GetControl("Order Modifier").AnyInput&& ControlScript.instance.GetControl("Order").InputDown)
            {
                if (_currentSelectedObject != null)
                {
                    switch (_hit.transform.tag)
                    {
                    case "Floor":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker   tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();
                            UnitTask tempTask   = new UnitTask
                            {
                                _location        = _mouseWorldLocation,
                                _taskType        = UnitTask.TaskType.Walk,
                                _taskDescription = "Walking to location",
                                _requiredTool    = Unit.UnitTool.none
                            };
                            tempWorker.AddTask(tempTask);
                        }

                        break;

                    case "RockTile":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker     tempWorker = _currentSelectedObject.gameObject.GetComponent <Worker>();
                            RockScript tempRock   = _hit.transform.gameObject.GetComponentInParent <RockScript>();

                            if (tempWorker._currentTool == Unit.UnitTool.Hammer)
                            {
                                UnitTask tempTask = new UnitTask
                                {
                                    _location        = _hit.transform.position,
                                    _taskType        = UnitTask.TaskType.Reinforce,
                                    _targetRock      = tempRock,
                                    _requiredTool    = Unit.UnitTool.Hammer,
                                    _taskDescription = "Reinforcing a wall"
                                };
                                tempWorker.AddTask(tempTask);
                            }
                            else
                            {
                                if (tempRock.RockType == RockScript.Type.Dirt || (tempRock.RockType == RockScript.Type.LooseRock && (int)WorldController.GetWorldController._miningLevel >= 1) || (tempRock.RockType == RockScript.Type.HardRock && (int)WorldController.GetWorldController._miningLevel == 2))
                                {
                                    UnitTask tempTask = new UnitTask
                                    {
                                        _location        = _hit.transform.position,
                                        _taskType        = UnitTask.TaskType.Mine,
                                        _targetRock      = tempRock,
                                        _requiredTool    = Unit.UnitTool.MiningTool,
                                        _taskDescription = "Mining a wall"
                                    };
                                    tempWorker.SetTask(tempTask);
                                }
                            }
                        }
                        break;

                    case "Rubble":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker       tempWorker = _currentSelectedObject.gameObject.GetComponent <Worker>();
                            RubbleScript tempRubble = _hit.transform.gameObject.GetComponentInParent <RubbleScript>();

                            UnitTask tempTask = new UnitTask
                            {
                                _location        = tempRubble.transform.position,
                                _taskType        = UnitTask.TaskType.ClearRubble,
                                _targetRubble    = tempRubble,
                                _requiredTool    = Unit.UnitTool.Shovel,
                                _taskDescription = "Clearing rubble"
                            };
                            tempWorker.SetTask(tempTask);
                        }
                        break;

                    case "Ore":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker   tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();
                            UnitTask tempTask   = new UnitTask
                            {
                                _location        = _hit.transform.position,
                                _taskType        = UnitTask.TaskType.Pickup,
                                _itemToPickUp    = _hit.transform.gameObject,
                                _itemType        = UnitTask.ItemType.Ore,
                                _taskDescription = "Transporting Ore",
                                _requiredTool    = Unit.UnitTool.none
                            };
                            tempWorker.AddTask(tempTask);
                        }
                        break;

                    case "EnergyCrystal":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker   tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();
                            UnitTask tempTask   = new UnitTask
                            {
                                _location        = _hit.transform.position,
                                _taskType        = UnitTask.TaskType.Pickup,
                                _itemToPickUp    = _hit.transform.gameObject,
                                _itemType        = UnitTask.ItemType.EnergyCrystal,
                                _taskDescription = "Transporting an Energy crystal",
                                _requiredTool    = Unit.UnitTool.none
                            };
                            tempWorker.AddTask(tempTask);
                        }
                        break;

                    case "HQ":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            //RadialMenuScript.instance.ShowToolOptions(_currentSelectedObject.transform.gameObject.GetComponent<Worker>(), _hit.transform.position);
                        }
                        break;

                    case "SKIP":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();

                            //check if building needs building

                            UnitTask tempTask = new UnitTask
                            {
                                _location        = _hit.transform.position,
                                _taskType        = UnitTask.TaskType.Build,
                                _itemToPickUp    = _hit.transform.gameObject,
                                _requiredTool    = Unit.UnitTool.Hammer,
                                _taskDescription = "Building A Skip"
                            };
                            tempWorker.AddTask(tempTask);
                        }
                        break;

                    case "GEN":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();

                            //check if building needs building

                            UnitTask tempTask = new UnitTask
                            {
                                _location        = _hit.transform.position,
                                _taskType        = UnitTask.TaskType.Build,
                                _itemToPickUp    = _hit.transform.gameObject,
                                _requiredTool    = Unit.UnitTool.Hammer,
                                _taskDescription = "Building An Oxegen Generator"
                            };
                            tempWorker.AddTask(tempTask);
                        }
                        break;

                    case "Monster":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();

                            if ((int)WorldController.GetWorldController._miningLevel >= 1)
                            {
                                UnitTask tempTask = new UnitTask
                                {
                                    _location        = _hit.transform.position,
                                    _taskType        = UnitTask.TaskType.Attack,
                                    _requiredTool    = Unit.UnitTool.Weapon,
                                    _taskDescription = "Attacking monster"
                                };
                                tempWorker.SetTask(tempTask);
                            }
                        }
                        break;
                    }
                }
            }
            else if (ControlScript.instance.GetControl("Order").InputDown)
            {
                if (_currentSelectedObject == null || (_currentSelectedObject != null && _currentSelectedObject == _hit.transform.GetComponentInParent <SelectableObject>()))
                {
                    switch (_hit.transform.tag)
                    {
                    case "Worker":
                        Worker worker = _hit.transform.GetComponent <Worker>();
                        //RadialMenuScript.instance.ShowWorkerOptions(worker);
                        break;

                    case "RockTile":
                        RockScript rock = _hit.transform.gameObject.GetComponentInParent <RockScript>();
                        RadialMenuScript.instance.ShowRockOptions(rock);
                        break;

                    case "Rubble":
                        RubbleScript rubble = _hit.transform.gameObject.GetComponentInParent <RubbleScript>();
                        RadialMenuScript.instance.ShowRubbleOptions(rubble);
                        break;

                    case "Monster":
                        Monster monster = _hit.transform.GetComponentInParent <Monster>();
                        RadialMenuScript.instance.ShowEnemyOptions(monster);
                        break;

                    case "HQ":
                        HQ hq = _hit.transform.GetComponentInParent <HQ>();
                        RadialMenuScript.instance.ShowHQOptions(hq);
                        break;

                    case "GEN":
                    case "BLOCK":
                        Building building = _hit.transform.GetComponentInParent <Building>();
                        RadialMenuScript.instance.ShowBuildingOptions(building);
                        break;

                    case "Ore":
                        Ore ore = _hit.transform.GetComponentInParent <Ore>();
                        RadialMenuScript.instance.ShowResourceOptionsOre(ore);
                        break;

                    case "EnergyCrystal":
                        EnergyCrystal energyCrystal = _hit.transform.GetComponentInParent <EnergyCrystal>();
                        RadialMenuScript.instance.ShowResourceOptionsEnergyCrystal(energyCrystal);
                        break;
                    }
                }
                else if (_currentSelectedObject != null)
                {
                    switch (_hit.transform.tag)
                    {
                    case "Floor":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker   tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();
                            UnitTask tempTask   = new UnitTask
                            {
                                _location        = _mouseWorldLocation,
                                _taskType        = UnitTask.TaskType.Walk,
                                _taskDescription = "Walking to location",
                                _requiredTool    = Unit.UnitTool.none
                            };
                            tempWorker.SetTask(tempTask);
                        }

                        break;

                    case "RockTile":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker     tempWorker = _currentSelectedObject.gameObject.GetComponent <Worker>();
                            RockScript tempRock   = _hit.transform.gameObject.GetComponentInParent <RockScript>();

                            if (tempWorker._currentTool == Unit.UnitTool.Hammer)
                            {
                                UnitTask tempTask = new UnitTask
                                {
                                    _location        = _hit.transform.position,
                                    _taskType        = UnitTask.TaskType.Reinforce,
                                    _targetRock      = tempRock,
                                    _requiredTool    = Unit.UnitTool.Hammer,
                                    _taskDescription = "Reinforcing a wall"
                                };
                                tempWorker.SetTask(tempTask);
                            }
                            else
                            {
                                if (tempRock.RockType == RockScript.Type.Dirt || (tempRock.RockType == RockScript.Type.LooseRock && (int)WorldController.GetWorldController._miningLevel >= 1) || (tempRock.RockType == RockScript.Type.HardRock && (int)WorldController.GetWorldController._miningLevel == 2))
                                {
                                    UnitTask tempTask = new UnitTask
                                    {
                                        _location        = _hit.transform.position,
                                        _taskType        = UnitTask.TaskType.Mine,
                                        _targetRock      = tempRock,
                                        _requiredTool    = Unit.UnitTool.MiningTool,
                                        _taskDescription = "Mining a wall"
                                    };
                                    tempWorker.SetTask(tempTask);
                                }
                            }
                        }
                        break;

                    case "Rubble":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker       tempWorker = _currentSelectedObject.gameObject.GetComponent <Worker>();
                            RubbleScript tempRubble = _hit.transform.gameObject.GetComponentInParent <RubbleScript>();

                            if (tempWorker._currentTool == Unit.UnitTool.Shovel)
                            {
                                UnitTask tempTask = new UnitTask
                                {
                                    _location        = tempRubble.transform.position,
                                    _taskType        = UnitTask.TaskType.ClearRubble,
                                    _targetRubble    = tempRubble,
                                    _requiredTool    = Unit.UnitTool.Shovel,
                                    _taskDescription = "Clearing rubble"
                                };
                                tempWorker.SetTask(tempTask);
                            }
                            else
                            {
                                UnitTask tempTask = new UnitTask
                                {
                                    _location        = _mouseWorldLocation,
                                    _taskType        = UnitTask.TaskType.Walk,
                                    _taskDescription = "Walking to location",
                                    _requiredTool    = Unit.UnitTool.none
                                };
                                tempWorker.SetTask(tempTask);
                            }
                        }
                        break;

                    case "Ore":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker   tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();
                            UnitTask tempTask   = new UnitTask
                            {
                                _location        = _hit.transform.position,
                                _taskType        = UnitTask.TaskType.Pickup,
                                _itemToPickUp    = _hit.transform.gameObject,
                                _itemType        = UnitTask.ItemType.Ore,
                                _taskDescription = "Transporting Ore",
                                _requiredTool    = Unit.UnitTool.none
                            };
                            tempWorker.SetTask(tempTask);
                        }
                        break;

                    case "EnergyCrystal":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker   tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();
                            UnitTask tempTask   = new UnitTask
                            {
                                _location        = _hit.transform.position,
                                _taskType        = UnitTask.TaskType.Pickup,
                                _itemToPickUp    = _hit.transform.gameObject,
                                _itemType        = UnitTask.ItemType.EnergyCrystal,
                                _taskDescription = "Transporting an Energy crystal",
                                _requiredTool    = Unit.UnitTool.none
                            };
                            tempWorker.SetTask(tempTask);
                        }
                        break;

                    case "HQ":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            //RadialMenuScript.instance.ShowToolOptions(_currentSelectedObject.transform.gameObject.GetComponent<Worker>(), _hit.transform.position);
                        }
                        break;

                    case "SKIP":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();

                            //check if building needs building

                            UnitTask tempTask = new UnitTask
                            {
                                _location        = _hit.transform.position,
                                _taskType        = UnitTask.TaskType.Build,
                                _itemToPickUp    = _hit.transform.gameObject,
                                _requiredTool    = Unit.UnitTool.Hammer,
                                _taskDescription = "Building A Skip"
                            };
                            tempWorker.AddTask(tempTask);
                        }
                        break;

                    case "GEN":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();

                            //check if building needs building

                            UnitTask tempTask = new UnitTask
                            {
                                _location        = _hit.transform.position,
                                _taskType        = UnitTask.TaskType.Build,
                                _itemToPickUp    = _hit.transform.gameObject,
                                _requiredTool    = Unit.UnitTool.Hammer,
                                _taskDescription = "Building An Oxegen Generator"
                            };
                            tempWorker.AddTask(tempTask);
                        }
                        break;

                    case "Monster":
                        if (_currentSelectedObject.transform.tag == "Worker")
                        {
                            Worker tempWorker = _currentSelectedObject.transform.gameObject.GetComponent <Worker>();

                            if ((int)WorldController.GetWorldController._miningLevel >= 1)
                            {
                                UnitTask tempTask = new UnitTask
                                {
                                    _location        = _hit.transform.position,
                                    _taskType        = UnitTask.TaskType.Attack,
                                    _requiredTool    = Unit.UnitTool.Weapon,
                                    _taskDescription = "Attacking monster"
                                };
                                tempWorker.SetTask(tempTask);
                            }
                        }
                        break;
                    }
                }
            }
        }
    }