Пример #1
0
    public void SetSelectedIndex(int index)
    {
        m_selectedIndex = index;
        TowerSegment segment = m_towerSegments[m_selectedIndex];
        Sprite       sprite  = segment.GetComponent <SpriteRenderer>().sprite;

        m_selectedSprite.GetComponent <SpriteRenderer>().sprite = sprite;
    }
Пример #2
0
    public TowerSegment AddTowerSegment(TowerSegment towerSegmentPrefab)
    {
        TowerSegment newSegment = (TowerSegment)Instantiate(towerSegmentPrefab);

        newSegment.OwningTower             = this;
        newSegment.transform.parent        = transform;
        newSegment.transform.localPosition = Vector3.up * (float)segments.Count * TowerSegment.HEIGHT;
        newSegment.TowerSegmentPrefab      = towerSegmentPrefab;
        segments.Add(newSegment);
        return(newSegment);
    }
Пример #3
0
    public override void OnCompleteAction()
    {
        TowerSegment opponentTowerSegment = m_owningTower.GetOpponentTowerSegmentPrefab(1);

        if (opponentTowerSegment != null && opponentTowerSegment.CanBeStolen())
        {
            AudioSource.PlayClipAtPoint(wizardTowerClip, Vector3.zero);
            m_owningTower.DestroyOpponentsSegment(1);
            m_owningTower.SwapSegment(this, opponentTowerSegment);
        }
        this.Reset();
    }
Пример #4
0
    public TowerSegment SwapSegment(TowerSegment oldSegment, TowerSegment prefab)
    {
        int          index      = segments.IndexOf(oldSegment);
        TowerSegment newSegment = (TowerSegment)Instantiate(prefab);

        newSegment.OwningTower             = this;
        newSegment.transform.parent        = oldSegment.transform.parent;
        newSegment.transform.localPosition = oldSegment.transform.localPosition;
        newSegment.TowerSegmentPrefab      = prefab;
        segments[index] = newSegment;
        Destroy(oldSegment.gameObject);
        return(newSegment);
    }
Пример #5
0
    public void Update()
    {
        TowerSegment segment = m_towerSegments[m_selectedIndex];
        int          size    = segment.OnGetMinimumTribeSize();

        if (size == 0)
        {
            buildingCost.text = "";
        }
        else
        {
            buildingCost.text = size.ToString() + " workers from each tribe needed";
        }
    }
Пример #6
0
    public void UpdateBuildingCost()
    {
        TowerSegment segment = segments[m_cursorPosition].GetComponent <TowerSegment>() as TowerSegment;
        string       label;
        int          cost = segment.OnGetTribeCost();

        if (segment.OnIsActionable() && cost > 0)
        {
            label = cost.ToString() + " workers to activate";
        }
        else
        {
            label = "";
        }
        m_selector.GetComponent <Selector>().buildingCostLabel = label;
    }
Пример #7
0
    public void DestroyPlayersSegment(int segmentIndex)
    {
        if (segmentIndex >= segments.Count ||
            (segments[segmentIndex] as EmptyTowerSegment) != null)
        {
            /* TODO: Add sound effect. */
            return;
        }
        TowerSegment segment = segments[segmentIndex];

        AudioSource.PlayClipAtPoint(demolitionClip, Vector3.zero);
        Destroy(segment.gameObject);
        segments.RemoveAt(segmentIndex);
        for (int i = segmentIndex; i < (segments.Count); i++)
        {
            segments[i].transform.position += new Vector3(0.0f, -2.0f, 0.0f);
        }
        MoveDown();
    }
Пример #8
0
    public void PerformAction(Tribe tribe)
    {
        TowerSegment segment = segments[m_cursorPosition].GetComponent <TowerSegment>();

        if (!segment.IsActionable() || tribe.IsBusy || tribe.Count < segment.OnGetTribeCost())
        {
            AudioSource.PlayClipAtPoint(wrongClip, Vector3.zero);
            return;
        }

        EmptyTowerSegment emptySegment = segment as EmptyTowerSegment;

        if (emptySegment != null)
        {
            TowerSegment segmentToConstruct = m_constructableTowerSegments[m_selectedPrefabIndex];

            int  minimumPerTribeSize = segmentToConstruct.OnGetMinimumTribeSize();
            bool enoughTribes        = true;
            for (int i = 0; i < 4; ++i)
            {
                if (m_owningPlayer.tribes[i].Count < minimumPerTribeSize)
                {
                    enoughTribes = false;
                }
            }
            if (enoughTribes)
            {
                for (int i = 0; i < 4; ++i)
                {
                    m_owningPlayer.tribes[i].Count -= minimumPerTribeSize;
                }
                emptySegment.PerformAction(tribe, segmentToConstruct);
            }
            else
            {
                AudioSource.PlayClipAtPoint(wrongClip, Vector3.zero);
            }
        }
        else
        {
            segment.PerformAction(tribe);
        }
    }
Пример #9
0
    public void DestroyOpponentsSegment(TowerSegment segment)
    {
        int segmentIndex = segments.IndexOf(segment);

        m_owningPlayer.DestroyOpponentsSegment(segmentIndex);
    }
Пример #10
0
 public void OnCancelAction(TowerSegment segment)
 {
 }
Пример #11
0
 public void OnCompleteAction(TowerSegment segment)
 {
 }
Пример #12
0
 public void OnProgressAction(TowerSegment segment, float progress, float secondsRemaining)
 {
 }
Пример #13
0
 public void OnBeginAction(TowerSegment segment)
 {
 }
Пример #14
0
 public void OnProgressAction(TowerSegment segment, float progress, float secondsRemaining)
 {
     busyFraction  = progress;
     busyRemaining = secondsRemaining;
 }
Пример #15
0
 public void OnCompleteAction(TowerSegment segment)
 {
     busy = false;
 }
Пример #16
0
 public void OnCancelAction(TowerSegment segment)
 {
     busy = false;
 }
Пример #17
0
 public void AddSelection(TowerSegment segment)
 {
     m_towerSegments.Add(segment);
 }
Пример #18
0
 public void PerformAction(Tribe tribe, TowerSegment prefab)
 {
     m_towerSegmentToBeConstructed = prefab;
     PerformAction(tribe);
 }
Пример #19
0
    public TowerSegment GetOpponentTowerSegmentPrefab(TowerSegment segment)
    {
        int segmentIndex = segments.IndexOf(segment);

        return(m_owningPlayer.GetOpponentTowerSegmentPrefab(segmentIndex));
    }
Пример #20
0
 public void SetTowerSegmentToBeConstructed(TowerSegment prefab)
 {
     m_towerSegmentToBeConstructed = prefab;
 }
Пример #21
0
 public void OnBeginAction(TowerSegment segment)
 {
     busy = true;
 }