예제 #1
0
    /// <summary>
    /// 该地是否能放置该卡牌
    /// </summary>
    /// <param name="battleCardUI"></param>
    /// <returns></returns>
    public bool LandCanUseCard(BattleCardUI battleCardUI)
    {
        int goldCost       = GameDataSet.Instance.CardModelDic[battleCardUI.cardId].costGold;
        int populationCost = GameDataSet.Instance.CardModelDic[battleCardUI.cardId].costPopulation;

        return(goldCost <= BattleManager.Instance.CurCamp.OwnGold && leftPopulation >= populationCost);
    }
예제 #2
0
    public void SupplyCard()
    {
        List <BattleCardUI> CurCampCards = BattleManager.Instance.CurCamp.BattleCardUIs;

        if (CurCampCards.Count < 6)
        {
            BattleCardUI battleCardUI   = InstantiateBattleCardUI();
            bool         supplyCampCard = UnityEngine.Random.value > 0.5f;
            int          arrayIndex     = CurCampCards.Count;
            if (supplyCampCard)
            {
                //补给阵营专属牌
                Camp               curCamp    = BattleManager.Instance.CurCamp;
                int                startIndex = curCamp.cardStartIndex;
                int                endindex   = curCamp.cardEndIndex;
                CardModel          cardModel  = GetRandomCardModelByIndex(startIndex, endindex);
                BattleCardFuncEnum funcEnum   = (BattleCardFuncEnum)Enum.Parse(typeof(BattleCardFuncEnum), cardModel.cardFuncEnum);
                battleCardUI.InitCardInfo(cardModel, arrayIndex, curCamp.CardEnum_FuncDic[funcEnum]);
            }
            else
            {
                //补给基础牌
                CardModel          cardModel = GetRandomCardModelByIndex(BasicCardStartIndex, BasicCardEndIndex);
                BattleCardFuncEnum funcEnum  = (BattleCardFuncEnum)Enum.Parse(typeof(BattleCardFuncEnum), cardModel.cardFuncEnum);
                battleCardUI.InitCardInfo(cardModel, arrayIndex, CardEnum_FuncDic[funcEnum]);
            }
            CurCampCards.Add(battleCardUI);
        }
    }
예제 #3
0
    /// <summary>
    /// 消耗卡牌的费用
    /// </summary>
    /// <param name="battleCardUI"></param>
    /// <returns></returns>
    private void UseCardConsume(BattleCardUI battleCardUI)
    {
        int goldCost       = GameDataSet.Instance.CardModelDic[battleCardUI.cardId].costGold;
        int populationCost = GameDataSet.Instance.CardModelDic[battleCardUI.cardId].costPopulation;

        BattleManager.Instance.CurCamp.ReduceCampGold(goldCost);
        leftPopulation -= populationCost;
    }
예제 #4
0
    public void OnSelectCard(int arrayIndex)
    {
        List <BattleCardUI> CurCampCards = BattleManager.Instance.CurCamp.BattleCardUIs;

        CurCampCards[arrayIndex].PopSelf();
        CurSelectCard = CurCampCards[arrayIndex];
        BattleManager.Instance.SetCampLandsHighLight(CurSelectCard.isSelfCard);
    }
예제 #5
0
 public void CancelSelectCard()
 {
     if (CurSelectCard == null)
     {
         return;
     }
     CurSelectCard.BackToNormal();
     BattleManager.Instance.SetCampLandsHighLight(CurSelectCard.isSelfCard, false);
     CurSelectCard = null;
 }
예제 #6
0
    public void OnPointerClick(PointerEventData eventData)
    {
        BattleCardUI battleCardUI = UIManager._instance.OpenWnd <BattleCardUI>(UIManager.eKindWindow.BattleCardUI);

        battleCardUI.InitCardInfo(
            ResourcePoolManager._instance.GetObj <Sprite>(ResourcePoolManager.eResourceKind.Image, TableManager._instance.Get(eTableType.CardData).ToS(_myIndex, "Name")),
            TableManager._instance.Get(eTableType.CardData).ToS(_myIndex, "KoreanName"),
            TableManager._instance.Get(eTableType.CardData).ToS(_myIndex, "Effect"),
            _myIndex);
    }
예제 #7
0
 public void UseCard(BattleCardUI battleCardUI)
 {
     UseCardConsume(battleCardUI);
     if (battleCardUI.triggerTime.Equals(BattleCardTriggerTime.IMMEDIATELY))
     {
         battleCardUI.CardFunc(this);
     }
     else
     {
         BattleCard = new BattleCard(battleCardUI.triggerTime, battleCardUI.CardFunc);
     }
     if (BattleManager.Instance.BATTLE_EVENT_USE_CARD != null)
     {
         BattleManager.Instance.BATTLE_EVENT_USE_CARD();
     }
     Debug.Log("使用成功");
 }
예제 #8
0
    public void DestroyCard()
    {
        List <BattleCardUI> CurCampCards = BattleManager.Instance.CurCamp.BattleCardUIs;

        Destroy(CurSelectCard.gameObject);
        CurCampCards.Remove(CurSelectCard);
        //重新赋值下顺序
        for (int i = 0; i < CurCampCards.Count; i++)
        {
            CurCampCards[i].arrayIndex = i;
        }
        bool isMycampCard = CurSelectCard.isSelfCard;

        CurSelectCard = null;

        BattleManager.Instance.SetCampLandsHighLight(isMycampCard, false);
    }
예제 #9
0
    public override void ClickAction(Land clickLand)
    {
        base.ClickAction(clickLand);
        BattleCardUI CurCard = BattleCardManager.Instance.CurSelectCard;

        //如果这块地上有牌了,就直接返回
        if (clickLand.HasCard() && !(CurCard.triggerTime == BattleCardTriggerTime.IMMEDIATELY))
        {
            MyRound.CurAttackState = MyRound.AttackStateDic[AttackStateEnum.NoneAttack];
            GlobalUImanager.Instance.OpenPopTip().GetComponent <PopTip>().SetContent("该地已经有卡牌了");
            return;
        }
        bool curLandIsMyCampLand = clickLand.CampID == BattleManager.Instance.CurCamp.campID;

        //如果卡牌放的位置是对的,并且剩余资源足够使用卡牌则放牌,否则跳过
        if (CurCard != null && !(CurCard.isSelfCard ^ curLandIsMyCampLand))
        {
            if (clickLand.LandCanUseCard(CurCard))
            {
                clickLand.UseCard(CurCard);
                BattleCardManager.Instance.DestroyCard();
            }
            else
            {
                GlobalUImanager.Instance.OpenPopTip().GetComponent <PopTip>().SetContent("资源不足,不能布置卡牌!");
                BattleCardManager.Instance.CancelSelectCard();
            }
        }
        else
        {
            BattleCardManager.Instance.CancelSelectCard();
            Debug.Log("收回卡牌!!!");
        }

        MyRound.CurAttackState = MyRound.AttackStateDic[AttackStateEnum.NoneAttack];
    }
예제 #10
0
 public void DestroyCardInAIState(BattleCardUI battleCardUI, Land land)
 {
     Destroy(battleCardUI.gameObject);
     land.LandHighLightSide.ShowSelf(HighLightType.Single, false);
 }
예제 #11
0
    /// <summary>
    /// 根据卡牌效果,返回一个应该放置的地块
    /// </summary>
    /// <param name="battleCardUI"></param>
    /// <returns></returns>
    private Land GetCardPlaceLandByType(BattleCardUI battleCardUI)
    {
        Land result  = null;
        Camp curCamp = BattleManager.Instance.CurCamp;

        switch (battleCardUI.cardEffectType)
        {
        case CardEffectType.CampBuff:
            foreach (Land land in _orderedCurCampLands)
            {
                if (land.LandCanUseCard(battleCardUI))
                {
                    result = land;
                    break;
                }
            }
            break;

        case CardEffectType.BombOtherCamp:
            foreach (Camp camp in BattleManager.Instance.CampDic.Values)
            {
                if (camp != curCamp)
                {
                    foreach (Land land in camp.ownedLands)
                    {
                        //遍历其他阵营地块,找出兵力最强的地
                        if (land.LandCanUseCard(battleCardUI) && (result == null || land.BattleUnit > result.BattleUnit))
                        {
                            result = land;
                        }
                    }
                }
            }
            break;

        case CardEffectType.AttackOwnStrongLand:
            foreach (Land land in _orderedCurCampLands)
            {
                if (land.LandCanUseCard(battleCardUI))
                {
                    result = land;
                    break;
                }
            }
            break;

        case CardEffectType.DefenceOwnWeakLand:
            for (int i = _orderedCurCampLands.Count - 1; i > 0; i--)
            {
                if (_orderedCurCampLands[i].LandCanUseCard(battleCardUI))
                {
                    result = _orderedCurCampLands[i];
                    break;
                }
            }
            break;

        default:
            break;
        }
        return(result);
    }