Пример #1
0
    public void PositionHand()
    {
        var centerScreen = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width / 2, Screen.height / 6, 5f));

        float cardWidth = 1f;

        for (int i = 0; i < hand.Count; i++)
        {
            var card = hand[i];
            // card.behavior.gameObject.transform.position = centerScreen + new Vector3(i * cardWidth - (cardWidth * (hand.Count - 1)) / 2 , 0, 0);
            var animEvent = new CardMoveAnimation(card.guid);
            var data      = new AnimationEvent.Data();
            data.Add("start", card.behavior.gameObject.transform.position);
            data.Add("end", centerScreen + new Vector3(i * cardWidth - (cardWidth * (hand.Count - 1)) / 2, 0, 0));
            data.Add("behaviour", card.behavior.gameObject);
            data.Add("animationTime", 1f);
            animEvent.OnSetup(data);
            AnimationManager.Instance.AddEvent(animEvent);
        }

        AnimationManager.Instance.QueueNextEvent();
    }
Пример #2
0
        public override void ExceHandleNotification(INotification notification)
        {
            //判断是否是转发内容
            if (notification.Name.Contains("=>"))
            {
                SendNotification(StringUtil.GeNotificationNameForNN(notification.Name), notification.Body, notification.Type);
                return;
            }

            // 处理公共请求
            HandleNotificationCommon(notification);


            ViewChooseStage     viewChooseStage   = null;
            List <CardDeckList> cardDeckListLoad  = new List <CardDeckList>();
            CardMoveAnimation   cardMoveAnimation = null;
            //回调函数
            UnityAction callBack = () =>
            {
                exceINotification = false;
                SendNotification(UIViewSystemEvent.UI_ANIMATION_SYS, null, UIViewSystemEvent.UI_ANIMATION_SYS_START);
            };
            bool callBackDelay = false;

            switch (notification.Name)
            {
            case UIViewSystemEvent.UI_ANIMATION_SYS:
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_ANIMATION_SYS_START:
                    DoExceHandleNotification();
                    break;
                }
                break;

            case UIViewSystemEvent.UI_CARD_ENTRY_SYS:
                switch (notification.Type)
                {
                //卡牌的归属地发生了变化
                case UIViewSystemEvent.UI_CARD_ENTRY_SYS_CHANGE_GAME_CONTAINER_TYPE:
                    CardEntry cardEntryMove = notification.Body as CardEntry;
                    if (cardEntryMove.gameContainerType == "CardHand")
                    {
                        SendNotification(HandSystemEvent.HAND_CHANGE, notification.Body, StringUtil.GetNTByNotificationTypeAndPlayerCode(HandSystemEvent.HAND_CHANGE_DRAW_ONE_CARD, cardEntryMove.controllerPlayerItem.playerCode));
                        return;
                    }
                    if (cardEntryMove.lastGameContainerType == "CardHand")
                    {
                        SendNotification(HandSystemEvent.HAND_CHANGE, cardEntryMove, StringUtil.GetNTByNotificationTypeAndPlayerCode(HandSystemEvent.HAND_CHANGE_REMOVE_ONE_CARD, cardEntryMove.controllerPlayerItem.playerCode));
                    }
                    break;

                //卡牌在显示页面需要被隐藏
                case UIViewSystemEvent.UI_CARD_ENTRY_SYS_CARD_NEED_HIDE_IN_VIEW:
                    CardEntry cardEntryNeedHide = notification.Body as CardEntry;
                    if (cardEntryNeedHide.gameContainerType == "CardHand")
                    {
                        SendNotification(HandSystemEvent.HAND_CHANGE, notification.Body, StringUtil.GetNTByNotificationTypeAndPlayerCode(UIViewSystemEvent.UI_CARD_ENTRY_SYS_CARD_NEED_HIDE_IN_VIEW, cardEntryNeedHide.controllerPlayerItem.playerCode));
                    }
                    break;
                }
                break;

            case UIViewSystemEvent.UI_VIEW_CURRENT:
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_VIEW_CURRENT_OPEN_ONE_VIEW:
                    //是否需要打开遮罩层
                    if (parameterMap.ContainsKey("OpenMaskLayer"))
                    {
                        string OpenMaskLayer = parameterMap["OpenMaskLayer"];
                        if ("Y" == OpenMaskLayer)
                        {
                            UIViewName uiMaskLayeView = UIViewConfig.getUIViewNameByNameStr("UIMaskLayeView");
                            UIControllerLIst.ShowView(uiMaskLayeView);
                        }
                    }
                    UIViewName viewNameOpen = UIViewConfig.getUIViewNameByNameStr(parameterMap["UIViewName"]);
                    UIControllerLIst.ShowView(viewNameOpen);
                    //初始化页面
                    UIControllerLIst.GetViewByName <ViewBaseView>(viewNameOpen).InitViewForParameter(this, notification.Body, parameterMap);
                    //一些界面打开时需要初始化
                    switch (viewNameOpen)
                    {
                    case UIViewName.CardDeckList:
                        PlayerItem          playerItem    = notification.Body as PlayerItem;
                        List <CardDeckList> cardDeckLists = UIControllerLIst.GetViewListByName <CardDeckList>(UIViewName.CardDeckList);
                        for (int num = 0; num < cardDeckLists.Count; num++)
                        {
                            if (cardDeckLists[num].playerItem == null)
                            {
                                cardDeckLists[num].playerItem = playerItem;
                                //设置位置
                                //0在左,1在右
                                //己方始终显示在左边
                                Vector3 position = new Vector3();
                                if (playerItem.playerCode == playerCode)
                                {
                                    position.x = -600;
                                }
                                else
                                {
                                    position.x = 430;
                                }
                                cardDeckLists[num].transform.localPosition = position;
                            }
                        }
                        break;
                    }
                    break;

                case UIViewSystemEvent.UI_VIEW_CURRENT_CLOSE_ONE_VIEW:
                    UIViewName viewNameClose = UIViewConfig.getUIViewNameByNameStr(notification.Body as string);
                    UIControllerLIst.HideView(viewNameClose);
                    //是否需要关闭遮罩层
                    if (parameterMap.ContainsKey("OpenMaskLayer"))
                    {
                        string OpenMaskLayer = parameterMap["OpenMaskLayer"];
                        if ("N" == OpenMaskLayer)
                        {
                            UIViewName uiMaskLayeView = UIViewConfig.getUIViewNameByNameStr("UIMaskLayeView");
                            UIControllerLIst.HideView(uiMaskLayeView);
                        }
                    }
                    break;
                }
                break;

            case UIViewSystemEvent.UI_CHOOSE_STAGE:
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_CHOOSE_STAGE_LOAD_CARD_ENTRY:
                    viewChooseStage = UIControllerLIst.GetViewByName <ViewChooseStage>(UIViewName.ChooseStage);
                    List <CardEntry> shipCardEntryList = (List <CardEntry>)notification.Body;
                    //载入卡牌列表
                    viewChooseStage.LoadCardEntryList(shipCardEntryList);
                    //载入完成后绑定事件
                    foreach (CardIntactView cardIntactView in viewChooseStage.cardIntactViews)
                    {
                        //如果是自己的命令则绑定上点击事件
                        if (playerCode == playerCodeNotification)
                        {
                            cardIntactView.OnClick = () =>
                            {
                                SendNotification(UIViewSystemEvent.UI_CHOOSE_STAGE, cardIntactView.card, UIViewSystemEvent.UI_CHOOSE_STAGE_ONE_CARD);
                            };
                        }
                        else
                        {
                            //设置为空
                            cardIntactView.OnClick = () =>
                            {
                            };
                        }
                    }
                    break;

                case UIViewSystemEvent.UI_CHOOSE_STAGE_ONE_SHIP_CARD_ANIMATION:
                    viewChooseStage = UIControllerLIst.GetViewByName <ViewChooseStage>(UIViewName.ChooseStage);
                    CardEntry      choosedShipCard      = notification.Body as CardEntry;
                    CardIntactView targetCardIntactView = null;
                    //找到这张组件
                    foreach (CardIntactView cardIntactView in viewChooseStage.cardIntactViews)
                    {
                        if (cardIntactView.card.uuid == choosedShipCard.uuid)
                        {
                            cardDeckListLoad  = UIControllerLIst.GetViewListByName <CardDeckList>(UIViewName.CardDeckList);
                            cardMoveAnimation = UIControllerLIst.GetViewByName <CardMoveAnimation>(UIViewName.CardMoveAnimation);
                            //执行动画,获得卡牌的位置,list的位置
                            for (int num = 0; num < cardDeckListLoad.Count; num++)
                            {
                                //移动目标
                                if (cardDeckListLoad[num].playerItem.playerCode == playerCodeNotification)
                                {
                                    callBackDelay = true;
                                    cardMoveAnimation.MoveShipCardAnimation(cardIntactView, cardDeckListLoad[num], callBack);
                                }
                            }
                        }
                    }


                    break;
                }
                break;

            case UIViewSystemEvent.UI_CHOOSE_MAKE_STAGE:
                ViewChooseMakeStage viewChooseMakeStage = UIControllerLIst.GetViewByName <ViewChooseMakeStage>(UIViewName.ViewChooseMakeStage);
                switch (notification.Type)
                {
                //获取下一组数据
                case UIViewSystemEvent.UI_CHOOSE_MAKE_STAGE_LOAD_NEXT_LIST:
                    List <CardEntry> cardList = notification.Body as List <CardEntry>;
                    viewChooseMakeStage = UIControllerLIst.GetViewByName <ViewChooseMakeStage>(UIViewName.ViewChooseMakeStage);
                    viewChooseMakeStage.LoadNewCardList(cardList);
                    break;

                case UIViewSystemEvent.UI_CHOOSE_MAKE_STAGE_ONE_CARD_SUCCESS:

                    CardEntry card = notification.Body as CardEntry;
                    viewChooseMakeStage.ChangeOneCradForBuyed(card);
                    break;
                }
                break;

            case UIViewSystemEvent.UI_CARD_DECK_LIST:
                switch (notification.Type)
                {
                //读取牌组
                case UIViewSystemEvent.UI_CARD_DECK_LIST_LOAD:
                    PlayerItem playerItemLoad = notification.Body as PlayerItem;
                    cardDeckListLoad = UIControllerLIst.GetViewListByName <CardDeckList>(UIViewName.CardDeckList);
                    for (int num = 0; num < cardDeckListLoad.Count; num++)
                    {
                        if (cardDeckListLoad[num].playerItem.playerCode == playerItemLoad.playerCode)
                        {
                            cardDeckListLoad[num].LoadPlayerInfo();
                            foreach (CardHeadView cardHeadView in cardDeckListLoad[num].cardHeadViews)
                            {
                                cardHeadView.OnPointerEnter = () =>
                                {
                                    SendNotification(
                                        UIViewSystemEvent.UI_VIEW_CURRENT,
                                        cardHeadView,
                                        StringUtil.GetNTByNotificationTypeAndUIViewNameAndOtherType(
                                            UIViewSystemEvent.UI_VIEW_CURRENT_OPEN_ONE_VIEW,
                                            UIViewConfig.getNameStrByUIViewName(UIViewName.OneCardAllInfo),
                                            "CardHeadView"
                                            )
                                        );
                                };
                                cardHeadView.OnPointerExit = () =>
                                {
                                    SendNotification(
                                        UIViewSystemEvent.UI_VIEW_CURRENT,
                                        UIViewConfig.getNameStrByUIViewName(UIViewName.OneCardAllInfo),
                                        UIViewSystemEvent.UI_VIEW_CURRENT_CLOSE_ONE_VIEW);
                                };
                            }
                        }
                    }
                    break;
                }
                break;

            //费用控制组件
            case UIViewSystemEvent.UI_MANA_INFA_SYS:
                int          changeNum    = 0;
                ManaInfoView manaInfoView = null;
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_MANA_INFA_SYS_INIT:
                    VariableAttribute manaInitVariableAttribute = notification.Body as VariableAttribute;
                    manaInfoView = UIControllerLIst.GetViewByName <ManaInfoView>(UIViewName.ManaInfoView);
                    manaInfoView.UIManaInfoSysInit(manaInitVariableAttribute, myself, playerCodeNotification);
                    break;

                case UIViewSystemEvent.UI_MANA_INFA_SYS_NUM_CHANGE:
                    VariableAttribute manaChangeVariableAttribute = notification.Body as VariableAttribute;
                    manaInfoView = UIControllerLIst.GetViewByName <ManaInfoView>(UIViewName.ManaInfoView);
                    manaInfoView.ChangeManaUsable(manaChangeVariableAttribute, myself);
                    break;
                }
                break;

            //科技组件显示
            case UIViewSystemEvent.UI_TRAIT_COMBINATION_SYS:
                TraitCombinationView traitCombinationView = null;
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_TRAIT_COMBINATION_SYS_INIT:
                    List <TraitType> traitTypes = notification.Body as List <TraitType>;
                    traitCombinationView = UIControllerLIst.GetViewByName <TraitCombinationView>(UIViewName.TraitCombinationView);
                    traitCombinationView.UITraitCombinationSysInit(traitTypes, myself, playerCodeNotification);
                    break;

                case UIViewSystemEvent.UI_TRAIT_COMBINATION_SYS_ADD:
                    string traitType = notification.Body.ToString();
                    traitCombinationView = UIControllerLIst.GetViewByName <TraitCombinationView>(UIViewName.TraitCombinationView);
                    traitCombinationView.UITraitCombinationSysAdd(traitType, myself);
                    break;
                }
                break;

            //效果展示列控制
            case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS:
                EffectDisplayView effectDisplayView = null;
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS_PUT_ONE_EFFECT:
                    effectDisplayView = UIControllerLIst.GetViewByName <EffectDisplayView>(UIViewName.EffectDisplayView);
                    CardEntry effectCardNeedShow = notification.Body as CardEntry;
                    callBackDelay = true;
                    //回调函数
                    callBack = () =>
                    {
                        exceINotification = false;
                        SendNotification(EffectExecutionEvent.EFFECT_EXECUTION_SYS, null, EffectExecutionEvent.EFFECT_EXECUTION_SYS_EFFECT_SHOW_OVER);
                        SendNotification(UIViewSystemEvent.UI_ANIMATION_SYS, null, UIViewSystemEvent.UI_ANIMATION_SYS_START);
                    };
                    effectDisplayView.ShowCradEffectByCardEntryAuto(effectCardNeedShow, callBack);
                    break;

                case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS_ONE_EFFECT_NEED_CHOOSE_EXE:
                    effectDisplayView = UIControllerLIst.GetViewByName <EffectDisplayView>(UIViewName.EffectDisplayView);
                    CardEntry effectCardNeedChooseExe = notification.Body as CardEntry;
                    SendNotificationAddCardEntry sendNotificationAddCard = (OneUserSelectionItem oneUserSelectionItem) =>
                    {
                        SendNotification(OperateSystemEvent.OPERATE_SYS, oneUserSelectionItem, OperateSystemEvent.OPERATE_SYS_CHOOSE_ONE_USER_SELECTION_ITEM);
                    };
                    effectDisplayView.ShowCradEffectAndUserSelectionListByCardEntry(effectCardNeedChooseExe, sendNotificationAddCard);
                    break;

                case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS_ONE_EFFECT_NEED_CHOOSE_TARGET:
                    effectDisplayView = UIControllerLIst.GetViewByName <EffectDisplayView>(UIViewName.EffectDisplayView);
                    CardEntry effectCardNeedChooseTarget = notification.Body as CardEntry;
                    effectDisplayView.ShowCradEffectByCardEntry(effectCardNeedChooseTarget);
                    break;

                case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS_TO_HIDE:
                    effectDisplayView = UIControllerLIst.GetViewByName <EffectDisplayView>(UIViewName.EffectDisplayView);
                    effectDisplayView.cardIntactView.gameObject.SetActive(false);
                    break;
                }
                break;

            //科技组件显示
            case UIViewSystemEvent.UI_PLAYER_SCORE_SHOW_SYS:
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_PLAYER_SCORE_SHOW_SYS_CHANGE:
                    ShipComponentView shipScoreComponentView = UIControllerLIst.GetViewByName <ShipComponentView>(UIViewName.ShipComponentView);
                    shipScoreComponentView.ChangeScoreShow(myself, Convert.ToInt32(notification.Body));
                    break;
                }
                break;

            //结束按钮的显示控制
            case UIViewSystemEvent.UI_NEXT_TURN_SHOW_SYS:
                NextTurnButton nextTurnButton = null;
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_NEXT_TURN_SHOW_SYS_SHOW:
                    if (myself)
                    {
                        nextTurnButton = UIControllerLIst.GetViewByName <NextTurnButton>(UIViewName.NextTurnButton);
                        nextTurnButton.ShowButton();
                    }
                    break;
                }
                break;

            //展示卡牌完整信息的控制
            case UIViewSystemEvent.UI_ONE_CARD_ALL_INFO:
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_ONE_CARD_ALL_INFO_BUFF_CHANGE:
                    CardEntry      minionCellItem = notification.Body as CardEntry;
                    OneCardAllInfo oneCardAllInfo = UIControllerLIst.GetViewByName <OneCardAllInfo>(UIViewName.OneCardAllInfo);
                    if (oneCardAllInfo != null)
                    {
                        if (oneCardAllInfo.cardEntryShow.uuid == minionCellItem.uuid)
                        {
                            oneCardAllInfo.LoadingAllInfoByMinionCellItem(minionCellItem);
                        }
                    }
                    break;
                }
                break;

            case UIViewSystemEvent.UI_TURN_STAGE_SYS:
                switch (notification.Type)
                {
                case UIViewSystemEvent.UI_TURN_STAGE_SYS_STAGE_CHANGE:
                    //回调函数
                    UnityAction turnStageCallBack = () =>
                    {
                        SendNotification(EffectExecutionEvent.EFFECT_EXECUTION_SYS, null, EffectExecutionEvent.EFFECT_EXECUTION_SYS_EFFECT_SHOW_OVER);
                        SendNotification(UIViewSystemEvent.UI_ANIMATION_SYS, null, UIViewSystemEvent.UI_ANIMATION_SYS_START);
                    };
                    TurnSysProgressBarView turnSysProgressBarView = UIControllerLIst.GetViewByName <TurnSysProgressBarView>(UIViewName.TurnSysProgressBarView);
                    QuestStageCircuitItem  questStageCircuitItem  = notification.Body as QuestStageCircuitItem;
                    turnSysProgressBarView.LoadingAllStageInfoToChange(questStageCircuitItem, playerCode, turnStageCallBack);
                    break;
                }
                break;
            }
            if (callBackDelay == false)
            {
                callBack();
            }
        }