コード例 #1
0
 /// <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);
 }
コード例 #2
0
 /// <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++;
     }
 }
コード例 #3
0
    /// <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);
    }
コード例 #4
0
    /// <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);
    }
コード例 #5
0
 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;
 }
コード例 #6
0
 /// <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();
     }
 }