Пример #1
0
    private void HandleDestroyIdle()
    {
        RaycastHit2D hit;

        if (bRaycastHit(m_moveMask, out hit))
        {
            IngameBuilding buildingHit = hit.transform.GetComponentInParent <IngameBuilding>();
            if (buildingHit != m_buildingCurrent)
            {
                DeHighlightCurrentBuilding();
                m_buildingCurrent = buildingHit;
                m_buildingCurrent.Visual.Highlight(Colors.Instance.BuildingDestroy);
            }

            if (m_buildingCurrent != null)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    EnterDestroyConfirm();
                }
            }
        }
        else
        {
            DeHighlightCurrentBuilding();
            m_buildingCurrent = null;
        }
        if (Input.GetMouseButtonDown(1))
        {
            EnterIdleMode();
        }
    }
Пример #2
0
 private void CancelDestroyBuilding()
 {
     DeHighlightCurrentBuilding();
     m_buildingCurrent = null;
     m_destroyMenu.gameObject.SetActive(false);
     EnterDestroyMode();
 }
Пример #3
0
 public void AddMathSignBuildingPair(IngameBuilding a, IngameBuilding b)
 {
     if (MathSignPairs.Count == 0)
     {
         MathSignPairs.Add(new IngameBuildingPair(a, b));
     }
     else
     {
         bool hasPair = false;
         for (int i = MathSignPairs.Count - 1; i >= 0; i--)
         {
             IngameBuildingPair buildingPair = MathSignPairs[i];
             if (buildingPair.HasPair(a, b))
             {
                 hasPair = true;
                 break;
             }
         }
         if (!hasPair)
         {
             MathSignPairs.Add(new IngameBuildingPair(a, b));
         }
     }
     ReDrawAllMathSigns();
 }
Пример #4
0
    public List <IngameBuilding> GetAdjacentBuildings()
    {
        List <IngameBuilding> adjacentBuildings = new List <IngameBuilding>();
        Index positionIndex = m_tile.PositionIndex;


        foreach (GridTile adjacentTile in m_tile.GetAdjacentTiles())
        {
            //Abbruchbedingungen
            if (adjacentTile.ContainedObject == null)
            {
                continue;
            }
            if (adjacentTile.ContainedObject.GetComponent <IngameBuilding>() == null)
            {
                continue;
            }

            IngameBuilding building = adjacentTile.ContainedObject.GetComponent <IngameBuilding>();
            if (!adjacentBuildings.Contains(building))
            {
                adjacentBuildings.Add(building);
            }
        }

        return(adjacentBuildings);
    }
Пример #5
0
    private IngameBuilding CreateBuilding()
    {
        IngameBuilding building = Instantiate(ShopItemManager.Instance.ingameBuildingPrefab);

        building.Initialize(m_dataCurrent);

        return(building);
    }
Пример #6
0
 private void ConfirmDestroyBuilding()
 {
     m_buildingCurrent.OnDestroyBuilding();
     m_buildingCurrent.Tile.ContainedObject = null;
     DeHighlightCurrentBuilding();
     Destroy(m_buildingCurrent.gameObject);
     m_buildingCurrent = null;
     EnterDestroyIdle();
 }
Пример #7
0
 private void EnterIdleMode()
 {
     DeHighlightCurrentBuilding();
     m_placementVisual.gameObject.SetActive(false);
     EnterState(ControlState.Idle);
     m_dataCurrent      = null;
     m_currentBuildTile = null;
     m_buildingCurrent  = null;
 }
Пример #8
0
 public void RemoveMathSignBuildingPair(IngameBuilding a, IngameBuilding b)
 {
     for (int i = MathSignPairs.Count - 1; i >= 0; i--)
     {
         IngameBuildingPair buildingPair = MathSignPairs[i];
         if (buildingPair.HasPair(a, b))
         {
             MathSignPairs.RemoveAt(i);
         }
     }
 }
Пример #9
0
 public bool HasPair(IngameBuilding a, IngameBuilding b)
 {
     if (BuildingA == a || BuildingA == b)
     {
         if (BuildingB == a || BuildingB == b)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #10
0
 public void RemoveMathSignBuilding(IngameBuilding building)
 {
     for (int i = MathSignPairs.Count - 1; i >= 0; i--)
     {
         IngameBuildingPair buildingPair = MathSignPairs[i];
         if (buildingPair.BuildingA == building || buildingPair.BuildingB == building)
         {
             MathSignPairs.RemoveAt(i);
         }
     }
 }
Пример #11
0
    private bool bTryPlaceBuilding(GridTile _tile)
    {
        if (!bCanPlaceBuilding(m_dataCurrent.eType, _tile))
        {
            return(false);
        }

        if (!bCanBuyBuilding(m_dataCurrent.iWorkerCost))
        {
            return(false);
        }

        IngameBuilding building = CreateBuilding();

        PlaceBuilding(building, _tile);
        BuyBuilding();
        return(true);
    }
Пример #12
0
    public MathSign CreateMathSign(MathSigns _eType, IngameBuilding _buildingA, IngameBuilding _buildingB)
    {
        Vector3 v3PosA     = _buildingA.transform.position;
        Vector3 v3PosB     = _buildingB.transform.position;
        Vector3 v3DirAB    = v3PosB - v3PosA;
        Vector3 v3PosMidAB = v3PosA + v3DirAB * .5f;

        Vector3 v3TargetWorldPos    = v3PosMidAB;
        Vector2 v2TargetViewportPos = Camera.main.WorldToViewportPoint(v3TargetWorldPos);
        Vector2 v2CanvasSize        = GetComponent <RectTransform>().sizeDelta;
        Vector2 v2TargetGuiPos      = new Vector2(v2CanvasSize.x * v2TargetViewportPos.x, v2CanvasSize.y * v2TargetViewportPos.y);

        MathSign sign = Instantiate(p_mathSign, transform, false);

        sign.GetComponent <RectTransform>().anchoredPosition = v2TargetGuiPos;
        sign.transform.SetAsFirstSibling();
        sign.Initialize(_eType);

        return(sign);
    }
Пример #13
0
 private void PlaceBuilding(IngameBuilding _building, GridTile _tile)
 {
     _building.transform.position = _tile.transform.position;
     _building.SetTile(_tile);
     _tile.ContainedObject = _building.gameObject;
 }
Пример #14
0
 private void Close()
 {
     m_building = null;
     gameObject.SetActive(false);
 }
Пример #15
0
 public void Initialize(IngameBuilding _building, OnConfirmDestroyCallback _confirmCallback, OnCancelDestroyCallback _cancelCallback)
 {
     m_building          = _building;
     m_onConfirmCallback = _confirmCallback;
     m_onCancelCallback  = _cancelCallback;
 }
Пример #16
0
 public IngameBuildingPair(IngameBuilding buildingA, IngameBuilding buildingB)
 {
     BuildingA = buildingA;
     BuildingB = buildingB;
 }
Пример #17
0
 private void MoveBuilding(IngameBuilding _building, GridTile _targetTile)
 {
     m_tileBeginMove.ContainedObject = null;
     PlaceBuilding(m_buildingCurrent, _targetTile);
 }