public WudaoOpponentItem(WudaoOpponent opponent, CommonSettings.ObjectCallBack callback)
        {
            InitializeComponent();
            opp              = opponent;
            this.callback    = callback;
            SayContent.Text  = opponent.Say;
            HeadImage.Source = opponent.Team[0].Head;
            InfoText.Text    = string.Format("{0}({1})  周目:{2}\n游戏时间:{3}\n战斗力评估:{4}",
                                             opponent.Team[0].Name,
                                             opponent.Menpai == "" ? "无门派" : opponent.Menpai,
                                             opponent.Round == 0 ? "/" : opponent.Round.ToString(),
                                             CommonSettings.DateTimeToGameTime(opponent.GameTime),
                                             opponent.Power
                                             );
            if (opponent.Rank == 1)
            {
                RankText.Text       = string.Format("武林霸主");
                RankText.Foreground = new SolidColorBrush(Colors.Orange);
            }
            else if (opponent.Rank < 10)
            {
                RankText.Text       = string.Format("江湖排名:{0}", opponent.Rank);
                RankText.Foreground = new SolidColorBrush(Colors.Green);
            }
            else if (opponent.Rank < 50)
            {
                RankText.Text       = string.Format("江湖排名:{0}", opponent.Rank);
                RankText.Foreground = new SolidColorBrush(Colors.Yellow);
            }
            else if (opponent.Rank < 100)
            {
                RankText.Text       = string.Format("江湖排名:{0}", opponent.Rank);
                RankText.Foreground = new SolidColorBrush(Colors.Purple);
            }
            else if (opponent.Rank < 500)
            {
                RankText.Text       = string.Format("江湖排名:{0}", opponent.Rank);
                RankText.Foreground = new SolidColorBrush(Colors.White);
            }
            else
            {
                RankText.Text       = string.Format("江湖排名:{0}", opponent.Rank);
                RankText.Foreground = new SolidColorBrush(Colors.Gray);
            }
            foreach (var r in opponent.Team)
            {
                Role  role = r;
                Image img  = new Image()
                {
                    Source = r.Head, Width = 40, Height = 40
                };
                ToolTipService.SetToolTip(img, "点击查看详情");
                img.MouseLeftButtonUp += (s, e) =>
                {
                    RuntimeData.Instance.gameEngine.uihost.rolePanel.Show(role);
                };

                TeamPanel.Children.Add(img);
            }
        }
예제 #2
0
        /// <summary>
        /// 武道大会
        /// </summary>
        /// <param name="opp"></param>
        public void LoadWudao(WudaoOpponent opp)
        {
            WudaoOpponent me = new WudaoOpponent();

            me.Team = uiHost.arenaSelectRole.selectedMyFriends;

            if (me.IsCheat)
            {
                MessageBox.Show("检测到你在作弊,禁止参加武道大会");
                RuntimeData.Instance.IsCheated = true;
                return;
            }
            if (opp.IsCheat)
            {
                MessageBox.Show("检测到对方作弊,直接判定胜利。");
                GameServerManager.Instance.BeatWudaoOpponent(opp);
                MessageBox.Show("恭喜你,你的江湖排名升级到第" + opp.Rank + "名");
                RuntimeData.Instance.gameEngine.CallScence(
                    uiHost.battleFieldContainer.field,
                    new NextGameState()
                {
                    Type = "wudaodahui", Value = ""
                });
                return;
            }

            CurrentScrollDirection = ScrollDirection.NONE;
            this.Visibility        = System.Windows.Visibility.Visible;
            Battle battle = BattleManager.GetBattle("武道大会_比武");

            field.LoadWudaodahui(battle, opp, (ret) =>
            {
                uiHost.mapUI.resetTeam();
                List <Role> roles = uiHost.arenaSelectRole.selectedMyFriends;
                //赢了交换名次
                if (ret == 1)
                {
                    GameServerManager.Instance.BeatWudaoOpponent(opp);
                    MessageBox.Show("恭喜你,你的江湖排名升级到第" + opp.Rank + "名");
                }

                //RuntimeData.Instance.gameEngine.LoadMap(RuntimeData.Instance.CurrentBigMap);
                RuntimeData.Instance.gameEngine.CallScence(
                    uiHost.battleFieldContainer.field,
                    new NextGameState()
                {
                    Type = "wudaodahui", Value = ""
                });
            });
            this.BattleFieldScrollable = true;

            this.IsEnabled = false;
            this.FadeOut.Stop();
            this.FadeIn.Begin();
        }
        private void Refresh()
        {
            UIHost uiHost = RuntimeData.Instance.gameEngine.uihost;

            RolesPanel.Children.Clear();
            SayContentText.Text = RuntimeData.Instance.WudaoSay;
            Status = WudaoDahuiPanelStatus.Working;
            this.StatusInfoText.Text = "正在联机获取信息,请稍后...";

            //获取对手数据
            GameServerManager.Instance.GetWudaodahuiOpponents((opponents) =>
            {
                Status = WudaoDahuiPanelStatus.Idle;
                //如果读到数据了,但玩家已经取消了
                if (this.Visibility == System.Windows.Visibility.Collapsed)
                {
                    return;
                }

                //读取出错
                if (opponents == null)
                {
                    this.StatusInfoText.Text = "获取失败,请检查网络连接!";
                    return;
                }

                //没有合适的对手
                if (opponents.Count == 0)
                {
                    this.StatusInfoText.Text = "没有找到合适的对手!";
                    if (RuntimeData.Instance.Rank == 1)
                    {
                        this.StatusInfoText.Text = "恭喜你,你已经问鼎江湖第一,没有对手了。";
                    }
                    return;
                }

                this.StatusInfoText.Text = "请选择你的对手";

                //填充对手列表
                foreach (var oppent in from o in opponents orderby o.Rank select o)
                {
                    foreach (var r in oppent.Team)
                    {
                        r.Reset();
                    }
                    this.RolesPanel.Children.Add(new WudaoOpponentItem(oppent, (sender) =>
                    {
                        WudaoOpponent opp = (sender as WudaoOpponentItem).opp;
                        this.Visibility   = System.Windows.Visibility.Collapsed;
                        uiHost.arenaSelectRole.confirmBack = () =>
                        {
                            //先将选择的角色发到服务器存档
                            RuntimeData.Instance.WudaoSay = SayContentText.Text;
                            List <Role> roles             = uiHost.arenaSelectRole.selectedMyFriends;
                            GameServerManager.Instance.SendWudaodahuiTeam(RuntimeData.Instance.UUID, roles);

                            //载入战斗
                            RuntimeData.Instance.gameEngine.uihost.battleFieldContainer.LoadWudao(opp);
                        };
                        uiHost.arenaSelectRole.cancelBack = () =>
                        {
                            this.Show();
                        };
                        uiHost.arenaSelectRole.load(3, new string[] { "主角" });
                    }));
                }
            });
        }