/// <summary> /// checks for a building at given pos and return true if there is one /// returns as out the cupcakedataScript /// </summary> /// <param name="_pos">pos for check</param> /// <param name="_layermask">Layer for checking Building</param> /// <param name="_resource"> returned object</param> /// <returns>true when there is a building with given _layermask at _pos</returns> private bool IsBuildingAtHitPoint(Vector3 _pos, LayerMask _layermask, out CupcakeDataScript _resource) { Collider[] c = Physics.OverlapSphere(_pos, 1, _layermask); if (c.Length > 0) { _resource = c[0].gameObject.GetComponent <CupcakeDataScript>(); return(true); } _resource = null; return(false); }
/// <summary> /// checks for food at _position /// also make ant lookAt foodPosition and set it as new currentTargetPosition /// </summary> /// <param name="_position"></param> /// <param name="_hasfood"></param> /// <returns></returns> private void CheckForFood(Vector3 _position) { Collider[] foodCollider = Physics.OverlapSphere(_position, m_Perception, m_FoodMask); if (foodCollider.Length > 0) { m_FoundFood = true; m_CurrentFoodResource = foodCollider[0].GetComponent <CupcakeDataScript>(); m_CurrentFoodResource.CheckPathLenght(m_Path.Count, this.gameObject); m_Path.Add(foodCollider[0].transform.position); m_CurrentPathPosition++; transform.LookAt(foodCollider[0].transform.position); foodCollider[0].GetComponent <CupcakeDataScript>().m_TakenFood++; } }
/// <summary> /// Add a Cupcake for DataCollection /// Creates a DataPanel for showing specific Cupcakedata /// Creates a Button for joining DataPanel and get cameraPosition to this Cupcake /// </summary> /// <param name="_cupcake"></param> public void AddCupcakeData(CupcakeDataScript _cupcake) { m_CupcakeList.Add(_cupcake); GameObject btn = Instantiate(CupcakeButtonPrefab, CupcakePanel.transform); GameObject pnl = Instantiate(m_CupcakeDataPanelPrefab, m_BasePanel.transform); pnl.SetActive(false); pnl.GetComponent <CupcakeDataPanelScript>().m_CupcakeData = _cupcake; //reference cupcakeData to cupcakeDataPanel btn.GetComponent <CupcakeButtonScript>().m_CupcakeData = _cupcake; //reference cupcakeData to cupcakeButton btn.GetComponent <CupcakeButtonScript>().m_CameraRig = m_CameraRig; //just for camerapositionchanging btn.GetComponent <CupcakeButtonScript>().m_CupcakeDataPanel = pnl; //reference cupcakeDataPanel to cupcakeButton m_CupcakeDataPanelList.Add(pnl); m_CupcakeButtonList.Add(btn); }
/// <summary> /// Destroy a CupkakeButton from Datapanel -> is called when a foodresource is empty or destroyed by user /// removing GameOject from ButtonList and DataPanelList /// </summary> /// <param name="_cupcake"> CupcakeDataScript of destroyed Building</param> public void DeleteCupcake(CupcakeDataScript _cupcake) { int index = m_CupcakeList.IndexOf(_cupcake); //destroy Button GameObject btn = m_CupcakeButtonList[index]; m_CupcakeButtonList.Remove(btn); //detroy Panel GameObject pnl = m_CupcakeDataPanelList[index]; m_CupcakeDataPanelList.Remove(pnl); //destroy CupcakeScript m_CupcakeList.Remove(_cupcake); Destroy(pnl); Destroy(btn); }
private void InitNewPositionFinding() { if (m_CurrentFoodResource != null) { if (m_CurrentFoodResource.m_ShortestPathScout == this.gameObject) { m_CurrentFoodResource.m_ShortestPathToBaseByScout = 0; m_CurrentFoodResource.m_ShortestPathScout = null; } } m_Path.Clear(); m_LastPath.Clear(); m_CurrentPathPosition = 0; m_Path.Add(Vector3.zero); transform.LookAt(Vector3.zero); m_CurrentFoodResource = null; m_CarriedFood.SetActive(false); m_HasFood = false; m_FoundFood = false; }
/// <summary> /// almost the same like StandardBuildingProcedure exept a check for builded cupcake at all -> >=9 no more buildings of foodresources are allowed /// moving mouse to change buildingPosition /// wheel for rotating /// left to build with check for resourcesCount /// right to cancel /// </summary> protected override void Update() { if (!m_AttemptToBuild) { return; } if (Input.GetKeyDown("mouse 2") && !m_IsRotating) { m_RotationPoint = Input.mousePosition; m_IsRotating = true; } if (Input.GetKey("mouse 2") && m_IsRotating) { m_preBuild.transform.rotation = Quaternion.Euler(-90f, (m_RotationPoint.x - Input.mousePosition.x), 0f); } if (Input.GetKeyUp("mouse 2") && m_IsRotating) { m_IsRotating = false; } if (!m_IsRotating) { m_preBuild.transform.position = GetMapHitPoint(); } if (Input.GetKeyDown("mouse 0")) { CupcakeDataScript tmp = m_preBuild.GetComponent <CupcakeDataScript>(); if (tmp != null) { if (FindObjectOfType <BaseScript>().m_CupcakeList.Count < 9) { InitBuilding(); //tmp.Init(); Debug.Log("Init at cupcake"); } } } if (Input.GetKeyDown("mouse 1")) { CancelAttemptBuilding(); } }