Exemple #1
0
 void Start()
 {
     anim = GetComponent <Animator>();
     col  = GetComponent <Collider>();
     set  = gameObject.GetComponentInParent <TargetSet>();
     Activate(true);
 }
Exemple #2
0
        public void NoRulesValidationsAreSelected()
        {
            //Arrange
            var catalog = new ValidationCatalog();

            catalog.AddValidations(ValidationFinder.ScanAssembly(GetType().Assembly, t => t == typeof(CustomerSimple)));

            var targetSet = new TargetSet();

            targetSet.Add(new CustomerInstance());

            //Act
            var selected = ValidationSelector.Select(catalog, targetSet);

            //Assert
            var output = new Output();

            output.FormatTable(selected.Select(s => new
            {
                Method = s.Validation.Method.Name,
                Inputs = string.Join(", ", s.Targets.Select(t => t.GetType().Name))
            }));

            output.Report.Verify();
        }
 public void Add(TargetSet targetSet)
 {
     if (targetSet == null)
     {
         throw new ArgumentNullException("targetSet");
     }
     this.targetSets.Add(targetSet);
 }
 public Target(TargetSet targetSet, string url, string text)
 {
     if (targetSet == null)
     {
         throw new ArgumentNullException("targetSet");
     }
     this.targetSet = targetSet;
     this.url       = url;
     this.text      = text;
 }
        public void EntitiesAreKnownToSet()
        {
            //Arrange
            var set      = new TargetSet();
            var customer = new Customer();

            //Act
            set.Add(customer);

            //Assert
            set.Contains(customer);
        }
 /*
  * Generate Code Input
  * @param TargetSet set
  * @param int array
  * @param int from
  * @param int to
  */
 public void GenerateCodeInput(TargetSet set, int array, int from, int to)
 {
     for(int i = from; i <= to; i++)
     {
         string oldCode = set.spawns[array][i];
         string newCode = GUILayout.TextField(oldCode, GUILayout.Width (20));
         if(newCode != oldCode)
         {
             Round.current.ChangeTargetCode(currentSet, array, i, newCode);
         }
     }
 }
Exemple #7
0
        public override void Execute(INotification notification)
        {
            GameContainerProxy gameContainerProxy =
                Facade.RetrieveProxy(GameContainerProxy.NAME) as GameContainerProxy;
            PlayerGroupProxy playerGroupProxy =
                Facade.RetrieveProxy(PlayerGroupProxy.NAME) as PlayerGroupProxy;

            switch (notification.Type)
            {
            //根据效果渲染高亮
            case MinionSystemEvent.MINION_SYS_EFFECT_HIGHLIGHT:
                TargetSet targetSetToChoose = notification.Body as TargetSet;
                //通知生物层发生变更重新渲染部分生物
                SendNotification(MinionSystemEvent.MINION_VIEW, GetMinionListByTargetSet(targetSetToChoose, gameContainerProxy), MinionSystemEvent.MINION_VIEW_MINIONS_CHANGE);
                break;

            //根据效果渲染高亮-预定成为目标选择项
            case MinionSystemEvent.MINION_SYS_EFFECT_HIGHLIGHT_BECOME_TARGET:
                TargetSet        targetSetToChooseTarget = notification.Body as TargetSet;
                List <CardEntry> mList = GetMinionListByTargetSet(targetSetToChooseTarget, gameContainerProxy);

                //通知生物层发生变更重新渲染部分生物
                SendNotification(MinionSystemEvent.MINION_VIEW, mList, MinionSystemEvent.MINION_VIEW_MINIONS_CHANGE_TO_CHOOSE_TARGET);
                break;

            case MinionSystemEvent.MINION_SYS_EFFECT_HIGHLIGHT_CLOSE:
                List <CardEntry>         mListClose = new List <CardEntry>();
                List <GameContainerItem> returnGameContainerItemList = gameContainerProxy.GetGameContainerItemGameContainerType("CardBattlefield");
                foreach (GameContainerItem gameContainerItem in returnGameContainerItemList)
                {
                    foreach (CardEntry minionCellItem in gameContainerItem.cardEntryList)
                    {
                        if (minionCellItem.IsEffectTarget == true)
                        {
                            minionCellItem.IsEffectTarget = false;
                        }
                        mListClose.Add(minionCellItem);
                    }
                }
                //通知生物层发生变更重新渲染部分生物
                SendNotification(MinionSystemEvent.MINION_VIEW, mListClose, MinionSystemEvent.MINION_VIEW_MINIONS_CHANGE);
                break;

            //生物死亡
            case MinionSystemEvent.MINION_SYS_ONE_MINION_IS_DEAD:
                CardEntry minionCellItemIsDead = notification.Body as CardEntry;
                //放入墓地
                minionCellItemIsDead.nextGameContainerType = "CardGraveyard";
                minionCellItemIsDead.ttNeedChangeGameContainerType(minionCellItemIsDead);
                break;
            }
        }
Exemple #8
0
        public void EffectActionReady(EffectInfo effect)
        {
            if (effect.operationalTarget != null)
            {
                effect.operationalTarget.selectTargetList = new List <TargetSet>();
                foreach (string targetSetCode in effect.operationalTarget.selectTarget)
                {
                    TargetSet targetSetDto = TransExpV2 <TargetSet, TargetSet> .Trans(targetSetMap[targetSetCode]);

                    targetSetDto.CleanEffectTargetSetList();
                    effect.operationalTarget.selectTargetList.Add(targetSetDto);
                }
            }
        }
        public void EntitiesAreRemovedFromSet()
        {
            //Arrange
            var set      = new TargetSet();
            var customer = new Customer();

            set.Add(customer);

            //Act
            set.Remove(customer);

            //Assert
            set.Contains(customer).Should().BeFalse();
        }
        public void EntityFieldsAreReturned()
        {
            //Arrange
            var set      = new TargetSet();
            var customer = new Customer();

            set.Add(customer);
            var idRef = new EntityReference("Customer", "Id");

            //Act
            var result = set.GetFields(idRef);

            //Assert
            result.Any(f => ReferenceEquals(f.Target, customer)).Should().BeTrue();
        }
Exemple #11
0
    private void SetTargets(int legIndex, TargetSet set, bool reverseHip = false)
    {
        Quaternion hipQuat = set.hip;

        if (reverseHip)
        {
            hipQuat.x *= -1;
        }

        Leg leg = legs[legIndex];

        leg.hip.targetRotation    = hipQuat;
        leg.knee.targetRotation   = set.knee;
        leg.ankle.targetRotation  = set.ankle;
        leg.constantForce.enabled = set.useConstantForce;
    }
Exemple #12
0
        public void FieldTypeMismatchExcludesValidation()
        {
            //Arrange
            var set = new TargetSet();

            set.Add(new BadCustomer());
            var validation = _validations.Validations()
                             .Single(v => v.ContainingType == typeof(CustomerSimple) && v.Method.Name == nameof(CustomerSimple.SurnameIsMandatory));
            var candidates = CandidateSelector.AllPossible(validation, set);

            //Act
            var error = ValidationRuleChecker.Check(candidates[0]).Single();

            //Assert
            error.Message.Should().Contain("incorrect type");
        }
Exemple #13
0
        public List <CardEntry> GetMinionListByTargetSet(TargetSet targetSetToChoose, GameContainerProxy gameContainerProxy)
        {
            List <CardEntry>         mList = new List <CardEntry>();
            List <GameContainerItem> returnGameContainerItemList = gameContainerProxy.GetGameContainerItemGameContainerType("CardBattlefield");

            foreach (GameContainerItem gameContainerItem in returnGameContainerItemList)
            {
                foreach (CardEntry minionCellItem in gameContainerItem.cardEntryList)
                {
                    if (targetSetToChoose.checkEffectToTargetMinionCellItem(minionCellItem))
                    {
                        UtilityLog.Log(" 检查了生物:" + minionCellItem.cardInfo.code, LogUtType.Special);
                        minionCellItem.IsEffectTarget = true;
                        mList.Add(minionCellItem);
                    }
                }
            }
            return(mList);
        }
        private void treeViewFavorites_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            TargetSet ts = this.treeViewFavorites.SelectedItem as TargetSet;

            if (ts != null)
            {
                this.ActiveTargetSet = ts;
                RaiseEvent(new RoutedEventArgs(Favorites.TargetSetClick, this));
                return;
            }

            FavoriteFile ff = this.treeViewFavorites.SelectedItem as FavoriteFile;

            if (ff != null)
            {
                this.ActiveFavoriteFile = ff;
                RaiseEvent(new RoutedEventArgs(Favorites.FavoriteClick, this));
            }
        }
        private void treeViewFavorites_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs <object> e)
        {
            TargetSet ts = this.treeViewFavorites.SelectedItem as TargetSet;

            if (ts != null)
            {
                this.ActiveTargetSet = ts;
                RaiseEvent(new RoutedEventArgs(Favorites.TargetSetClick, this));
                return;
            }

            FavoriteFile ff = this.treeViewFavorites.SelectedItem as FavoriteFile;

            if (ff != null)
            {
                this.ActiveFavoriteFile = ff;
                RaiseEvent(new RoutedEventArgs(Favorites.FavoriteClick, this));
            }
        }
        public override void Execute(INotification notification)
        {
            OperateSystemProxy operateSystemProxy =
                Facade.RetrieveProxy(OperateSystemProxy.NAME) as OperateSystemProxy;
            QuestStageCircuitProxy questStageCircuitProxy =
                Facade.RetrieveProxy(QuestStageCircuitProxy.NAME) as QuestStageCircuitProxy;
            PlayerGroupProxy playerGroupProxy =
                Facade.RetrieveProxy(PlayerGroupProxy.NAME) as PlayerGroupProxy;
            CardDbProxy cardDbProxy =
                Facade.RetrieveProxy(CardDbProxy.NAME) as CardDbProxy;
            EffectInfoProxy effectInfoProxy =
                Facade.RetrieveProxy(EffectInfoProxy.NAME) as EffectInfoProxy;
            GameModelProxy gameModelProxy =
                Facade.RetrieveProxy(GameModelProxy.NAME) as GameModelProxy;
            GameContainerProxy gameContainerProxy =
                Facade.RetrieveProxy(GameContainerProxy.NAME) as GameContainerProxy;
            HexGridProxy hexGridProxy =
                Facade.RetrieveProxy(HexGridProxy.NAME) as HexGridProxy;

            //获取当前操作玩家
            string playerCode = questStageCircuitProxy.GetNowHaveStagePlayerCode();

            if (playerCode == null)
            {
                return;
            }
            PlayerItem playerItem = playerGroupProxy.getPlayerByPlayerCode(playerCode);
            CardEntry  chooseHand = operateSystemProxy.operateSystemItem.onChooseCardEntry;

            switch (notification.Type)
            {
            //判断手牌是否可用
            case OperateSystemEvent.OPERATE_SYS_HAND_CAN_USE_JUDGE:
                string            playerCodeHandCanUseJudge = notification.Body as string;
                PlayerItem        playerItemHandCanUseJudge = playerGroupProxy.playerGroup.playerItems[playerCodeHandCanUseJudge];
                GameContainerItem gameContainerItem         = gameContainerProxy.GetGameContainerItemByPlayerItemAndGameContainerType(playerItemHandCanUseJudge, "CardHand");
                gameContainerItem.ChangeHandCardCanUse(questStageCircuitProxy.circuitItem);
                SendNotification(HandSystemEvent.HAND_CHANGE, gameContainerItem.cardEntryList, StringUtil.GetNTByNotificationTypeAndPlayerCode(HandSystemEvent.HAND_CHANGE_CAN_USE_JUDGE, playerCode));
                break;

            //选中战场上一个生物
            case OperateSystemEvent.OPERATE_SYS_POINTER_DOWN_ONE_MINION:
                CardEntry downMinionCard = notification.Body as CardEntry;
                operateSystemProxy.IntoModeByType(downMinionCard, playerItem, OperateSystemItem.OperateType.MinionControling);
                //渲染可移动区域
                SendNotification(HexSystemEvent.HEX_VIEW_SYS, operateSystemProxy.operateSystemItem, HexSystemEvent.HEX_VIEW_RENDER_CAN_MOVE_AND_ATK);
                //消息通知-划线组件激活
                SendNotification(OperateSystemEvent.OPERATE_TRAIL_DRAW, null, OperateSystemEvent.OPERATE_TRAIL_DRAW_START);

                break;

            //选中手牌
            case OperateSystemEvent.OPERATE_SYS_HAND_CHOOSE:
                CardEntry handCellItem = notification.Body as CardEntry;
                operateSystemProxy.IntoModeByType(handCellItem, playerItem, OperateSystemItem.OperateType.HandUse);
                switch (handCellItem.WhichCard)
                {
                case CardEntry.CardType.MinionCard:
                    //渲染可召唤区域
                    SendNotification(HexSystemEvent.HEX_VIEW_SYS, operateSystemProxy.operateSystemItem, HexSystemEvent.HEX_VIEW_RENDER_CAN_CALL);
                    break;

                case CardEntry.CardType.TacticsCard:
                    //渲染可释放
                    //获取效果信息
                    //判断是否存在用于渲染的目标效果
                    if (handCellItem.cardInfo.targetSetToChooseList != null)
                    {
                        foreach (string targetSetToChooseCode in handCellItem.cardInfo.targetSetToChooseList)
                        {
                            TargetSet targetSetToChoose = effectInfoProxy.GetDepthCloneTargetSetByName(targetSetToChooseCode);
                            foreach (TargetClaim targetClaim in targetSetToChoose.targetClaims)
                            {
                                if (targetClaim.claim == "Owner")
                                {
                                    if (targetClaim.content == "Myself")
                                    {
                                        targetClaim.result.Add(playerItem.playerCode);
                                    }
                                }
                            }
                            if (targetSetToChoose.target == "Minion")
                            {
                                //传入效果,根据效果目标进行筛选渲染
                                SendNotification(MinionSystemEvent.MINION_SYS, targetSetToChoose, MinionSystemEvent.MINION_SYS_EFFECT_HIGHLIGHT);
                            }
                        }
                    }

                    break;
                }
                break;

            //划线结束选择了战场
            case OperateSystemEvent.OPERATE_SYS_DRAW_END_HEX:
                HexCellItem    hexCellItem = notification.Body as HexCellItem;
                HexCoordinates index       = hexCellItem.coordinates;
                //通知战场层去除渲染
                SendNotification(HexSystemEvent.HEX_VIEW_SYS, null, HexSystemEvent.HEX_VIEW_RENDER_CAN_CALL_CANCEL);
                //判断状态
                if (operateSystemProxy.operateSystemItem.operateModeType == OperateSystemItem.OperateType.HandUse)
                {
                    UtilityLog.Log("玩家【" + playerCode + "】尝试操作手牌,手牌种类为【" + chooseHand.WhichCard + "】", LogUtType.Operate);
                    //如果成功释放了,还需要去除掉目标渲染
                    bool   checkUseSuccess = false;
                    string targetType      = "Null";
                    switch (chooseHand.WhichCard)
                    {
                    case CardEntry.CardType.ResourceCard:
                        UtilityLog.Log("玩家【" + playerCode + "】进行操作手牌,手牌种类为【" + chooseHand.WhichCard + "】", LogUtType.Operate);
                        checkUseSuccess = true;
                        //执行卡牌
                        //SendNotification(EffectExecutionEvent.EFFECT_EXECUTION_SYS, chooseHand, EffectExecutionEvent.EFFECT_EXECUTION_SYS_EXE_CARD);
                        break;

                    case CardEntry.CardType.MinionCard:
                        //检查是否可用释放
                        bool canUse  = playerItem.CheckOneCardCanUse(chooseHand, questStageCircuitProxy.circuitItem);
                        bool canCall = playerItem.CheckOneCellCanCall(hexCellItem.coordinates);
                        //检查所选格子是否可用召唤
                        if (canUse && canCall)
                        {
                            checkUseSuccess     = true;
                            chooseHand.nowIndex = index;
                        }
                        else
                        {
                            SendNotification(OperateSystemEvent.OPERATE_SYS, null, OperateSystemEvent.OPERATE_SYS_DRAW_END_NULL);
                        }
                        break;

                    case CardEntry.CardType.TacticsCard:
                        //如果存在目标,则需要先选择目标再释放
                        if (chooseHand.cardInfo.targetSetToChooseList != null)
                        {
                            bool hasTarget = false;
                            foreach (string targetSetToChooseCode in chooseHand.cardInfo.targetSetToChooseList)
                            {
                                TargetSet targetSetToChoose = effectInfoProxy.GetDepthCloneTargetSetByName(targetSetToChooseCode);
                                if (targetSetToChoose.target == "Minion")
                                {
                                    targetType = "Minion";
                                    //判断格子上是否有生物
                                    CardEntry minionCellItem = gameContainerProxy.CheckHasCardEntryByGameContainerTypeAndHexCoordinates("CardBattlefield", index);
                                    if (minionCellItem != null)
                                    {
                                        //检查是否满足效果释放条件
                                        if (targetSetToChoose.checkEffectToTargetMinionCellItem(minionCellItem))
                                        {
                                            //确认目标
                                            chooseHand.targetBasicGameDto = minionCellItem;
                                            hasTarget = true;
                                        }
                                    }
                                }
                            }
                            if (hasTarget)
                            {
                                checkUseSuccess = true;
                            }
                        }
                        //如果不需要选择目标或者需要选择多个目标则先执行
                        else
                        {
                            checkUseSuccess = true;
                        }
                        break;
                    }
                    if (checkUseSuccess)
                    {
                        //减少费用-预先减少
                        playerItem.ChangeManaUsableByUseHand(chooseHand);
                        chooseHand.nextGameContainerType = "CardIsReleasing";
                        chooseHand.ttNeedChangeGameContainerType(chooseHand);
                        //减少费用-预先减少
                        playerItem.ChangeManaUsableByUseHand(chooseHand);
                        if (targetType == "Minion")
                        {
                            //取消渲染
                            SendNotification(MinionSystemEvent.MINION_SYS, null, MinionSystemEvent.MINION_SYS_EFFECT_HIGHLIGHT_CLOSE);
                        }
                        //执行卡牌
                        SendNotification(EffectExecutionEvent.EFFECT_EXECUTION_SYS, chooseHand, EffectExecutionEvent.EFFECT_EXECUTION_SYS_EXE_CARD);
                    }
                }
                else if (operateSystemProxy.operateSystemItem.operateModeType == OperateSystemItem.OperateType.MinionControling)
                {
                    UtilityLog.Log("玩家【" + playerCode + "】尝试操作生物", LogUtType.Special);
                    if (operateSystemProxy.operateSystemItem.onChooseCardEntry.canBeMovedCellMap.ContainsKey(index))
                    {
                        HexCellItem        endHexCellItem = operateSystemProxy.operateSystemItem.onChooseCardEntry.canBeMovedCellMap[index];
                        List <HexCellItem> cellRoute      = new List <HexCellItem>();
                        cellRoute.Add(endHexCellItem);
                        bool isOver = false;
                        while (!isOver)
                        {
                            if (endHexCellItem.pathfindingLastCell.coordinates.X == operateSystemProxy.operateSystemItem.onChooseCardEntry.nowIndex.X &&
                                endHexCellItem.pathfindingLastCell.coordinates.Z == operateSystemProxy.operateSystemItem.onChooseCardEntry.nowIndex.Z)
                            {
                                isOver = true;
                            }
                            else
                            {
                                cellRoute.Add(endHexCellItem.pathfindingLastCell);
                                endHexCellItem = endHexCellItem.pathfindingLastCell;
                            }
                        }
                        //路径是倒的,需要换成正序的
                        List <HexCellItem> positiveCellRoute = new List <HexCellItem>();
                        for (int n = cellRoute.Count - 1; n > -1; n--)
                        {
                            positiveCellRoute.Add(cellRoute[n]);
                        }
                        operateSystemProxy.operateSystemItem.onChooseCardEntry.cellRoute = positiveCellRoute;
                        effectInfoProxy.effectSysItem.showEffectNum++;
                        operateSystemProxy.operateSystemItem.onChooseCardEntry.MoveToTargetHexCoordinates(index);
                    }
                }

                break;

            case OperateSystemEvent.OPERATE_SYS_HAND_CHOOSE_EXE_OVER:
                //如果是战术,资源牌,放入墓地
                if (chooseHand.WhichCard == CardEntry.CardType.ResourceCard || chooseHand.WhichCard == CardEntry.CardType.TacticsCard)
                {
                    //在墓地添加手牌
                    chooseHand.nextGameContainerType = "CardGraveyard";
                    chooseHand.ttNeedChangeGameContainerType(chooseHand);
                }
                else if (chooseHand.WhichCard == CardEntry.CardType.MinionCard)
                {
                    gameContainerProxy.AddOneMinionByCard(chooseHand.nowIndex, chooseHand);
                    chooseHand.nextGameContainerType = "CardBattlefield";
                    chooseHand.ttNeedChangeGameContainerType(chooseHand);
                }
                //移除手牌
                playerItem.RemoveOneCardByUse(chooseHand);
                UtilityLog.Log("手牌【" + chooseHand.name + "】使用完毕:", LogUtType.Operate);
                //结束,改变模式为初始,清除手牌
                operateSystemProxy.IntoModeClose();
                break;

            case OperateSystemEvent.OPERATE_SYS_DRAW_END_NULL:
                //什么都没选
                switch (operateSystemProxy.operateSystemItem.operateModeType)
                {
                //手牌使用状态
                case OperateSystemItem.OperateType.HandUse:

                    //手牌回复原位
                    SendNotification(HandSystemEvent.HAND_CHANGE, chooseHand, StringUtil.GetNTByNotificationTypeAndPlayerCode(HandSystemEvent.HAND_CHANGE_UNCHECK_STATUS, playerItem.playerCode));
                    switch (chooseHand.WhichCard)
                    {
                    case CardEntry.CardType.MinionCard:
                        //通知战场层取消渲染
                        SendNotification(HexSystemEvent.HEX_VIEW_SYS, null, HexSystemEvent.HEX_VIEW_RENDER_CAN_CALL_CANCEL);
                        operateSystemProxy.IntoModeClose();
                        break;

                    case CardEntry.CardType.TacticsCard:
                        EffectInfo effectInfo = effectInfoProxy.GetDepthCloneEffectByName(chooseHand.cardInfo.effectCodeList[0]);
                        foreach (TargetSet targetSet in effectInfo.operationalTarget.selectTargetList)
                        {
                            if (targetSet.target == "Minion")
                            {
                                //取消渲染
                                SendNotification(MinionSystemEvent.MINION_SYS, effectInfo, MinionSystemEvent.MINION_SYS_EFFECT_HIGHLIGHT_CLOSE);
                            }
                        }


                        break;
                    }
                    break;
                }
                break;

            //选择一个生物作为某次选择的结果
            case OperateSystemEvent.OPERATE_SYS_CHOOSE_ONE_MINION:
                CardEntry oneChooseMinionCellItem = notification.Body as CardEntry;
                for (int n = 0; n < effectInfoProxy.effectSysItem.effectInfos.Count; n++)
                {
                    EffectInfo effect = effectInfoProxy.effectSysItem.effectInfos[n];
                    if (effect.effectInfoStage == EffectInfoStage.ConfirmingTarget)
                    {
                        //遍历每一个前置效果
                        foreach (EffectInfo preEffect in effect.preEffectEntryList)
                        {
                            if (preEffect.effectInfoStage == EffectInfoStage.ConfirmingTarget)
                            {
                                preEffect.effectInfoStage = EffectInfoStage.ConfirmedTarget;
                                preEffect.needPlayerToChooseTargetSet.targetMinionCellItems.Add(oneChooseMinionCellItem);
                                break;
                            }
                        }
                        //遍历每一个后置效果
                        foreach (EffectInfo postEffect in effect.postEffectEntryList)
                        {
                            if (postEffect.effectInfoStage == EffectInfoStage.ConfirmingTarget)
                            {
                                postEffect.effectInfoStage = EffectInfoStage.ConfirmedTarget;
                                postEffect.needPlayerToChooseTargetSet.targetMinionCellItems.Add(oneChooseMinionCellItem);
                                break;
                            }
                        }
                        effectInfoProxy.effectSysItem.showEffectNum--;
                        //返回继续执行效果选择的信号
                        SendNotification(EffectExecutionEvent.EFFECT_EXECUTION_SYS, null, EffectExecutionEvent.EFFECT_EXECUTION_SYS_FIND_TARGET);
                    }
                }
                break;

            //选择一个效果的某一个选项
            case OperateSystemEvent.OPERATE_SYS_CHOOSE_ONE_USER_SELECTION_ITEM:
                OneUserSelectionItem oneUserSelectionItem = notification.Body as OneUserSelectionItem;
                for (int n = 0; n < effectInfoProxy.effectSysItem.effectInfos.Count; n++)
                {
                    EffectInfo effect = effectInfoProxy.effectSysItem.effectInfos[n];
                    if (effect.effectInfoStage == EffectInfoStage.AskTheUser)
                    {
                        //遍历每一个前置效果
                        foreach (EffectInfo preEffect in effect.preEffectEntryList)
                        {
                            if (preEffect.effectInfoStage == EffectInfoStage.AskTheUser)
                            {
                                preEffect.userChooseExecution = oneUserSelectionItem.isExecute;
                                preEffect.effectInfoStage     = EffectInfoStage.AskTheUserOver;
                                UtilityLog.Log("收到前台的反馈并修改了", LogUtType.Special);
                                break;
                            }
                        }
                        effect.effectInfoStage = EffectInfoStage.AskTheUserOver;
                        effectInfoProxy.effectSysItem.showEffectNum--;
                        //返回继续执行效果选择的信号
                        SendNotification(EffectExecutionEvent.EFFECT_EXECUTION_SYS, null, EffectExecutionEvent.EFFECT_EXECUTION_SYS_ASK_THE_USER);
                    }
                }
                break;

            //选择一个效果类型,选择了目标
            case OperateSystemEvent.OPERATE_SYS_CHOOSE_ONE_EFFECT:
                CardEntry effectCard = notification.Body as CardEntry;
                //逻辑上可以确定只能有一个效果字段?
                if (effectCard.effectCodeList.Length > 1)
                {
                    UtilityLog.LogError("this chooseEffect has many Effect");
                }
                EffectInfo chooseEffect = effectInfoProxy.GetDepthCloneEffectByName(effectCard.effectCodeList[0]);
                for (int n = 0; n < effectInfoProxy.effectSysItem.effectInfos.Count; n++)
                {
                    EffectInfo effect = effectInfoProxy.effectSysItem.effectInfos[n];
                    if (effect.effectInfoStage == EffectInfoStage.ConfirmingTarget)
                    {
                        foreach (TargetSet targetSet in effect.operationalTarget.selectTargetList)
                        {
                            if (targetSet.target == "ChooseEffect")
                            {
                                //确认目标
                                targetSet.targetEffectInfos.Add(chooseEffect);
                                //设置为确认完毕
                                effect.effectInfoStage = EffectInfoStage.ConfirmedTarget;
                                //添加新效果
                                //设置状态
                                chooseEffect.effectInfoStage = EffectInfoStage.UnStart;
                                //设置所有者,手牌操作模式,所有者是当前玩家
                                chooseEffect.player = playerItem;
                                //设置所属卡牌
                                chooseEffect.cardEntry = chooseHand;
                                //将这个效果添加到队列中
                                effectInfoProxy.effectSysItem.effectInfos.Add(chooseEffect);
                                //返回一个选择完毕的信号
                                SendNotification(
                                    UIViewSystemEvent.UI_VIEW_CURRENT,
                                    UIViewConfig.getNameStrByUIViewName(UIViewName.ChooseStage),
                                    StringUtil.GetNTByNotificationTypeAndUIViewNameAndMaskLayer(
                                        UIViewSystemEvent.UI_VIEW_CURRENT_CLOSE_ONE_VIEW,
                                        UIViewConfig.getNameStrByUIViewName(UIViewName.ChooseStage),
                                        "N"
                                        )
                                    );


                                //返回继续执行效果选择的信号
                                SendNotification(EffectExecutionEvent.EFFECT_EXECUTION_SYS, null, EffectExecutionEvent.EFFECT_EXECUTION_SYS_FIND_TARGET);
                                return;
                            }
                            else
                            {
                                UtilityLog.LogError("this effectType is not ChooseEffect");
                            }
                        }
                    }
                }
                break;

            //打开了墓地
            case OperateSystemEvent.OPERATE_SYS_GRAVEYARD_LIST_LOAD:
                string     playerCodeOpenGraveyard = notification.Body as string;
                PlayerItem playerItemOpenGraveyard = playerGroupProxy.getPlayerByPlayerCode(playerCodeOpenGraveyard);
                //获取墓地的牌,并发送给前台
                SendNotification(
                    UIViewSystemEvent.UI_VIEW_CURRENT,
                    gameContainerProxy.GetGameContainerItemByPlayerItemAndGameContainerType(playerItemOpenGraveyard, "CardGraveyard"),
                    StringUtil.GetNTByNotificationTypeAndUIViewNameAndMaskLayer(
                        UIViewSystemEvent.UI_VIEW_CURRENT_OPEN_ONE_VIEW,
                        UIViewConfig.getNameStrByUIViewName(UIViewName.GraveyardListView),
                        "Y"
                        )
                    );

                break;
            }
        }
Exemple #17
0
        private void buttonSave_Click(object sender, RoutedEventArgs e)
        {
            TargetSet tset = new TargetSet {
                file = this.favFileName, Name = this.txtTargetSetName.Text, Parameters = this.favParameters, Strapper = this.favStrapper, Targets = this.favTargets
            };

            if (this.listBoxExistingFavorites.SelectedIndex >= 0)
            {
                FavoriteFile   f            = this.listBoxExistingFavorites.SelectedItem as FavoriteFile;
                XmlSerializer  deserializer = new XmlSerializer(typeof(FavoriteEntity));
                FavoriteEntity foundFavorite;
                using (FileStream favStream = new FileStream(f.FullPath, FileMode.Open, FileAccess.Read))
                {
                    foundFavorite = (FavoriteEntity)deserializer.Deserialize(favStream);
                }

                TargetSet[] temp = new TargetSet[foundFavorite.TargetSet.Length + 1];
                int         i    = 0;
                foreach (TargetSet t in foundFavorite.TargetSet)
                {
                    temp[i] = t;
                    i++;
                }

                temp[i] = tset;
                foundFavorite.TargetSet = temp;

                XmlSerializer serializer = new XmlSerializer(typeof(FavoriteEntity));
                using (FileStream fs = new FileStream(f.FullPath, FileMode.Create))
                {
                    TextWriter writer = new StreamWriter(fs, new UTF8Encoding());
                    serializer.Serialize(writer, foundFavorite);
                }

                this.Close();
                return;
            }

            SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog {
                DefaultExt = ".msbef", Filter = "MSBuild Explorer Favorite (.msbef)|*.msbef"
            };

            if (dlg.ShowDialog() == true)
            {
                FavoriteEntity fe = new FavoriteEntity();
                fe.groupName = this.txtFavoriteGroupName.Text;
                TargetSet[] tsetcol = new TargetSet[1];
                tsetcol[0]      = tset;
                fe.TargetSet    = tsetcol;
                fe.file         = this.favFileName;
                fe.friendlyName = this.txtFavoriteName.Text;

                XmlSerializer serializer = new XmlSerializer(typeof(FavoriteEntity));
                using (FileStream fs = new FileStream(dlg.FileName, FileMode.Create))
                {
                    TextWriter writer = new StreamWriter(fs, new UTF8Encoding());
                    serializer.Serialize(writer, fe);
                }

                StringCollection favs = new StringCollection();
                foreach (string s in from string s in Settings.Default.Favorites where !favs.Contains(s) select s)
                {
                    favs.Add(s);
                }

                if (!favs.Contains(dlg.FileName))
                {
                    favs.Add(dlg.FileName);
                }

                Settings.Default.Favorites = favs;

                Settings.Default.Save();

                this.Close();
            }
        }
 private TargetSet BuildTargetSet(int count)
 {
     TargetSet ts = new TargetSet(this, count);
     foreach (ParamsMethodMaker maker in paramsMakers) {
         MethodTarget target = maker.MakeTarget(count);
         if (target != null) ts.Add(target);
     }
     return ts;
 }
 private void AddTarget(MethodTarget target)
 {
     int count = target.ParameterCount;
     TargetSet set;
     if (!targetSets.TryGetValue(count, out set)) {
         set = new TargetSet(this, count);
         targetSets[count] = set;
     }
     set.Add(target);
 }
 internal void LoadTargetSet(TargetSet targetSet)
 {
     this.TextBoxParameters.Text = targetSet.Parameters;
     this.TextBoxPreExecute.Text = targetSet.Strapper;
 }
        private void treeViewFavorites_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
        {
            TargetSet ts = this.treeViewFavorites.SelectedItem as TargetSet;
            if (ts != null)
            {
                this.ActiveTargetSet = ts;
                RaiseEvent(new RoutedEventArgs(Favorites.TargetSetClick, this));
                return;
            }

            FavoriteFile ff = this.treeViewFavorites.SelectedItem as FavoriteFile;
            if (ff != null)
            {
                this.ActiveFavoriteFile = ff;
                RaiseEvent(new RoutedEventArgs(Favorites.FavoriteClick, this));
            }
        }
        private void buttonSave_Click(object sender, RoutedEventArgs e)
        {
            TargetSet tset = new TargetSet { file = this.favFileName, Name = this.txtTargetSetName.Text, Parameters = this.favParameters, Strapper = this.favStrapper, Targets = this.favTargets };

            if (this.listBoxExistingFavorites.SelectedIndex >= 0)
            {
                FavoriteFile f = this.listBoxExistingFavorites.SelectedItem as FavoriteFile;
                XmlSerializer deserializer = new XmlSerializer(typeof(FavoriteEntity));
                FavoriteEntity foundFavorite;
                using (FileStream favStream = new FileStream(f.FullPath, FileMode.Open, FileAccess.Read))
                {
                    foundFavorite = (FavoriteEntity)deserializer.Deserialize(favStream);
                }

                TargetSet[] temp = new TargetSet[foundFavorite.TargetSet.Length + 1];
                int i = 0;
                foreach (TargetSet t in foundFavorite.TargetSet)
                {
                    temp[i] = t;
                    i++;
                }

                temp[i] = tset;
                foundFavorite.TargetSet = temp;

                XmlSerializer serializer = new XmlSerializer(typeof(FavoriteEntity));
                using (FileStream fs = new FileStream(f.FullPath, FileMode.Create))
                {
                    TextWriter writer = new StreamWriter(fs, new UTF8Encoding());
                    serializer.Serialize(writer, foundFavorite);
                }

                this.Close();
                return;
            }

            SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog { DefaultExt = ".msbef", Filter = "MSBuild Explorer Favorite (.msbef)|*.msbef" };
            if (dlg.ShowDialog() == true)
            {
                FavoriteEntity fe = new FavoriteEntity();
                fe.groupName = this.txtFavoriteGroupName.Text;
                TargetSet[] tsetcol = new TargetSet[1];
                tsetcol[0] = tset;
                fe.TargetSet = tsetcol;
                fe.file = this.favFileName;
                fe.friendlyName = this.txtFavoriteName.Text;

                XmlSerializer serializer = new XmlSerializer(typeof(FavoriteEntity));
                using (FileStream fs = new FileStream(dlg.FileName, FileMode.Create))
                {
                    TextWriter writer = new StreamWriter(fs, new UTF8Encoding());
                    serializer.Serialize(writer, fe);
                }

                StringCollection favs = new StringCollection();
                foreach (string s in from string s in Settings.Default.Favorites where !favs.Contains(s) select s)
                {
                    favs.Add(s);
                }

                if (!favs.Contains(dlg.FileName))
                {
                    favs.Add(dlg.FileName);
                }

                Settings.Default.Favorites = favs;

                Settings.Default.Save();

                this.Close();
            }
        }
Exemple #23
0
 internal void LoadTargetSet(TargetSet targetSet)
 {
     this.TextBoxParameters.Text = targetSet.Parameters;
     this.TextBoxPreExecute.Text = targetSet.Strapper;
 }
Exemple #24
0
        public bool FindTargetOrObejct(EffectInfo effectInfo, TargetSet targetSet,
                                       EffectInfoProxy effectInfoProxy,
                                       PlayerGroupProxy playerGroupProxy,
                                       QuestStageCircuitProxy questStageCircuitProxy,
                                       GameContainerProxy gameContainerProxy)
        {
            bool designationTargetOver = false;

            effectInfo.needPlayerToChooseTargetSet = targetSet;
            //先判断是否已经指定了目标
            switch (targetSet.target)
            {
            case "Minion":
                if (targetSet.targetMinionCellItems.Count == targetSet.targetClaimsNums)
                {
                    designationTargetOver = true;
                }
                break;
            }
            if (designationTargetOver)
            {
                targetSet.hasTarget = true;
                return(true);
            }
            //条件
            TargetClaim[] targetClaims = targetSet.targetClaims;

            //目标玩家
            PlayerItem targetPlayer = null;

            //类型
            switch (targetSet.target)
            {
            case "Card":
                List <CardEntry> cardEntries       = new List <CardEntry>();
                string           gameContainerType = targetSet.targetSource;
                PlayerItem       gameContainerControllerPlayerItem = null;
                for (int n = 0; n < targetClaims.Length; n++)
                {
                    //判断所有权
                    if (targetClaims[n].claim == "Owner")
                    {
                        //是自己选
                        if (targetClaims[n].content == "Myself")
                        {
                            gameContainerControllerPlayerItem = effectInfo.player;
                        }
                    }
                }
                GameContainerItem gameContainerItem = gameContainerProxy.GetGameContainerItemByPlayerItemAndGameContainerType(gameContainerControllerPlayerItem, gameContainerType);
                for (int n = 0; n < targetClaims.Length; n++)
                {
                    //判断所有权
                    if (targetClaims[n].claim == "locationIndex")
                    {
                        cardEntries.Add(gameContainerItem.cardEntryList[Convert.ToInt32(targetClaims[n].content)]);
                    }
                    else if (targetClaims[n].claim == "CardCode")
                    {
                        CardEntry cardEntryByCode = gameContainerItem.GetOneCardByCardCode(targetClaims[n].content);
                        if (cardEntryByCode != null)
                        {
                            cardEntries.Add(cardEntryByCode);
                        }
                    }
                }
                if (cardEntries.Count > 0)
                {
                    if (targetSet.targetClaimsNums == 1)
                    {
                        targetSet.hasTarget = true;
                        targetSet.targetCardEntries.Add(cardEntries[0]);
                    }
                }
                break;

            case "Minion":
                List <CardEntry>         minionCellItems             = new List <CardEntry>();
                List <GameContainerItem> returnGameContainerItemList = gameContainerProxy.GetGameContainerItemGameContainerType("CardBattlefield");
                foreach (GameContainerItem gameContainerItemMinion in returnGameContainerItemList)
                {
                    foreach (CardEntry minionCellItem in gameContainerItemMinion.cardEntryList)
                    {
                        for (int n = 0; n < targetClaims.Length; n++)
                        {
                            //判断所有权
                            if (targetClaims[n].claim == "Owner")
                            {
                                //是自己的
                                if (targetClaims[n].content == "Myself")
                                {
                                    targetClaims[n].result.Add(effectInfo.player.playerCode);
                                    if (minionCellItem.controllerPlayerItem.playerCode == effectInfo.player.playerCode)
                                    {
                                        minionCellItems.Add(minionCellItem);
                                    }
                                }
                                //不是自己的
                                else if (targetClaims[n].content == "Enemy")
                                {
                                    targetClaims[n].result.Add(effectInfo.player.playerCode);
                                    if (minionCellItem.controllerPlayerItem.playerCode != effectInfo.player.playerCode)
                                    {
                                        minionCellItems.Add(minionCellItem);
                                    }
                                }
                            }
                        }
                    }
                }
                if (minionCellItems.Count <= targetSet.targetClaimsNums)
                {
                    //符合数量限制
                    targetSet.hasTarget             = true;
                    targetSet.targetMinionCellItems = minionCellItems;
                }
                else
                {
                    //超出目标上限,需要用户选择
                    if (effectInfo.operationalTarget.whoOperate == "MyselfPlayer")
                    {
                        effectInfo.chooseByPlayer = effectInfo.player;
                        //发送已经确认目标的效果到前台进行展示
                        CardEntry oneCardEntry = effectInfo.cardEntry;
                        oneCardEntry.needShowEffectInfo = effectInfo;
                        effectInfoProxy.effectSysItem.showEffectNum++;
                        SendNotification(UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS, oneCardEntry, UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS_ONE_EFFECT_NEED_CHOOSE_TARGET);
                        //发布用户需要选择信号
                        SendNotification(LogicalSysEvent.LOGICAL_SYS, effectInfo, LogicalSysEvent.LOGICAL_SYS_NEED_PLAYER_CHOOSE);
                    }
                    else
                    {
                        UtilityLog.LogError("找不到需要选择的用户");
                    }
                    return(false);
                }

                break;

            //效果选择
            case "ChooseEffect":
                //获取玩家,根据条件筛选出复合条件的释放者和选择者
                //筛选结果
                foreach (PlayerItem playerItem in playerGroupProxy.playerGroup.playerItems.Values)
                {
                    for (int n = 0; n < targetClaims.Length; n++)
                    {
                        //判断所有权
                        if (targetClaims[n].claim == "Owner")
                        {
                            //是自己选
                            if (targetClaims[n].content == "Myself")
                            {
                                if (playerItem.playerCode == effectInfo.player.playerCode)
                                {
                                    targetPlayer = playerItem;
                                }
                            }
                        }
                    }
                }
                if (targetPlayer != null)
                {
                    effectInfo.chooseByPlayer = targetPlayer;
                    //发布用户需要选择信号
                    SendNotification(LogicalSysEvent.LOGICAL_SYS, effectInfo, LogicalSysEvent.LOGICAL_SYS_NEED_PLAYER_CHOOSE);
                    return(false);
                    //
                }
                else
                {
                    UtilityLog.LogError("no player can ChooseEffect");
                }

                break;

            //玩家
            case "Player":
                //获取玩家,根据条件筛选出复合条件的释放者和选择者
                //筛选结果
                foreach (PlayerItem playerItem in playerGroupProxy.playerGroup.playerItems.Values)
                {
                    for (int n = 0; n < targetClaims.Length; n++)
                    {
                        //判断所有权
                        if (targetClaims[n].claim == "Owner")
                        {
                            //是自己选
                            if (targetClaims[n].content == "Myself")
                            {
                                if (playerItem.playerCode == effectInfo.player.playerCode)
                                {
                                    targetPlayer = playerItem;
                                }
                            }
                        }
                    }
                }
                if (targetPlayer != null)
                {
                    //玩家确认
                    targetSet.targetPlayerItems.Add(targetPlayer);
                    targetSet.hasTarget = true;
                }
                else
                {
                    UtilityLog.LogError("no player can add TargetPlayerItems");
                }
                break;
            }
            return(true);
        }
 public void Add(TargetSet targetSet) {
     if (targetSet == null)
         throw new ArgumentNullException("targetSet");
     this.targetSets.Add(targetSet);
 }
Exemple #26
0
    /*
     * Serialize
     * Serialize round and organize components into individual arrays
     */
    public RoundData Serialize()
    {
        RoundData data = new RoundData();

        //	Save an array of round names
        data.roundName = roundName;
        data.numPucks = numPucks;

        TargetSet[] sets = new TargetSet[targetSets.Count];
        for (int i = 0; i < targetSets.Count; i++)
            sets [i] = (TargetSet)targetSets [i];
        data.targetSets = sets;

        return data;
    }
 public Target(TargetSet targetSet, string url, string text) {
     if (targetSet == null)
         throw new ArgumentNullException("targetSet");
     this.targetSet = targetSet;
     this.url = url;
     this.text = text;
 }
Exemple #28
0
 public void InsertNewTarget(TargetSet newTarget)
 {
     this._repostitoryFactory.GetTargetRepository(this._dbContext).Insert(newTarget);
 }
Exemple #29
0
    /*
     * Add Set
     * @param int i, index of set
     */
    public void AddSet(int i)
    {
        TargetSet newSet = new TargetSet ();
        newSet.Initialize ();
        targetSets.Insert (Mathf.Clamp (i, 0, targetSets.Count), newSet);

        BuildSet (i);
    }
        private void treeViewFavorites_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            TargetSet ts = this.treeViewFavorites.SelectedItem as TargetSet;
            if (ts != null)
            {
                this.ActiveTargetSet = ts;
                RaiseEvent(new RoutedEventArgs(Favorites.TargetSetClick, this));
                return;
            }

            FavoriteFile ff = this.treeViewFavorites.SelectedItem as FavoriteFile;
            if (ff != null)
            {
                this.ActiveFavoriteFile = ff;
                RaiseEvent(new RoutedEventArgs(Favorites.FavoriteClick, this));
            }
        }