using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using Protobuf; namespace Client { /// /// StatusBarOfHunter.xaml 的交互逻辑 /// public partial class StatusBarOfHunter : UserControl { public StatusBarOfHunter(Grid parent, int Row, int Column) { InitializeComponent(); parent.Children.Add(this); Grid.SetColumn(this, Column); Grid.SetColumnSpan(this, 2); Grid.SetRow(this, Row); initialized = false; } public void SetFontSize(double fontsize) { serial.FontSize = scores.FontSize = state.FontSize = status.FontSize=activeSkill0.FontSize = activeSkill1.FontSize = activeSkill2.FontSize = prop0.FontSize = prop1.FontSize = prop2.FontSize = prop3.FontSize = fontsize; } private void SetStaticValue(MessageOfTricker obj) { switch (obj.TrickerType) // 参数未设定 { case TrickerType.Assassin: coolTime0 = coolTime1 = coolTime2 = 10000; serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:Assassin"; break; case TrickerType._2: coolTime0 = coolTime1 = coolTime2 = 20000; serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:TrickerType2"; break; case TrickerType._3: coolTime0 = coolTime1 = coolTime2 = 30000; serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:TrickerType3"; break; case TrickerType._4: coolTime0 = coolTime1 = coolTime2 = 40000; serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:TrickerType4"; break; case TrickerType.NullTrickerType: coolTime0 = coolTime1 = coolTime2 = -1; serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:NullTrickerType"; break; } activeSkill0.Text = "Skill0"; activeSkill1.Text = "Skill1"; activeSkill2.Text = "Skill2"; initialized = true; } private void SetDynamicValue(MessageOfTricker obj) { status.Text = "🏃🏿‍:"+Convert.ToString(obj.Speed); switch (obj.PlayerState) { case PlayerState.Idle: state.Text = "Idle"; break; case PlayerState.Learning: state.Text = "Learning"; break; case PlayerState.Addicted: state.Text = "Addicted"; break; case PlayerState.Graduated: state.Text = "Graduated"; break; case PlayerState.Quit: state.Text = "Quit"; break; case PlayerState.Treated: state.Text = "Treated"; break; case PlayerState.Rescued: state.Text = "Rescued"; break; case PlayerState.Stunned: state.Text = "Stunned"; break; case PlayerState.Treating: state.Text = "Treating"; break; case PlayerState.Rescuing: state.Text = "Rescuing"; break; case PlayerState.Swinging: state.Text = "Swinging"; break; case PlayerState.Attacking: state.Text = "Attacking"; break; case PlayerState.Locking: state.Text = "Locking"; break; case PlayerState.Rummaging: state.Text ="Rummaging"; break; case PlayerState.Climbing: state.Text ="Climbing"; break; case PlayerState.OpeningAChest: state.Text = "OpeningAChest"; break; case PlayerState.UsingSpecialSkill: state.Text = "UsingSpecialSkill"; break; case PlayerState.OpeningAGate: state.Text = "OpeningAGate"; break; default: break; } scores.Text = "Scores:" + Convert.ToString(obj.Score); if (obj.TimeUntilSkillAvailable[0] >= 0) skillprogress0.Value = 100 - obj.TimeUntilSkillAvailable[0] / coolTime0 * 100; if (obj.TimeUntilSkillAvailable[1] >= 0) skillprogress1.Value = 100 - obj.TimeUntilSkillAvailable[1] / coolTime1 * 100; if (obj.TimeUntilSkillAvailable[2] >= 0) skillprogress2.Value = 100 - obj.TimeUntilSkillAvailable[2] / coolTime2 * 100; if (obj.PlayerState == PlayerState.Quit) { skillprogress0.Value = skillprogress1.Value = skillprogress2.Value = 0; skillprogress0.Background = skillprogress1.Background = skillprogress2.Background = Brushes.Gray; } else skillprogress0.Background = skillprogress1.Background = skillprogress2.Background = Brushes.White; int cnt = 0; foreach (var icon in obj.Prop) { switch (cnt) { case 0: switch (icon) { case PropType.Key3: prop0.Text = "🔑"; break; case PropType.Key5: prop0.Text = "🔑"; break; case PropType.Key6: prop0.Text = "🔑"; break; case PropType.AddSpeed: prop0.Text = "⛸"; break; case PropType.AddLifeOrAp: prop0.Text = "🏅"; break; case PropType.AddHpOrAp: prop0.Text = "♥"; break; case PropType.ShieldOrSpear: prop0.Text = "🛡"; break; default: prop0.Text = ""; break; } cnt++; break; case 1: switch (icon) { case PropType.Key3: prop1.Text = "🔑"; break; case PropType.Key5: prop1.Text = "🔑"; break; case PropType.Key6: prop1.Text = "🔑"; break; case PropType.AddSpeed: prop1.Text = "⛸"; break; case PropType.AddLifeOrAp: prop1.Text = "🏅"; break; case PropType.AddHpOrAp: prop1.Text = "♥"; break; case PropType.ShieldOrSpear: prop1.Text = "🛡"; break; default: prop1.Text = ""; break; } cnt++; break; case 2: switch (icon) { case PropType.Key3: prop2.Text = "🔑"; break; case PropType.Key5: prop2.Text = "🔑"; break; case PropType.Key6: prop2.Text = "🔑"; break; case PropType.AddSpeed: prop2.Text = "⛸"; break; case PropType.AddLifeOrAp: prop2.Text = "🏅"; break; case PropType.AddHpOrAp: prop2.Text = "♥"; break; case PropType.ShieldOrSpear: prop2.Text = "🛡"; break; default: prop2.Text = ""; break; } cnt++; break; case 3: switch (icon) { case PropType.Key3: prop3.Text = "🔑"; break; case PropType.Key5: prop3.Text = "🔑"; break; case PropType.Key6: prop3.Text = "🔑"; break; case PropType.AddSpeed: prop3.Text = "⛸"; break; case PropType.AddLifeOrAp: prop3.Text = "🏅"; break; case PropType.AddHpOrAp: prop3.Text = "♥"; break; case PropType.ShieldOrSpear: prop3.Text = "🛡"; break; default: prop3.Text = ""; break; } cnt++; break; default: break; } } } public void SetValue(MessageOfTricker obj) { if (!initialized) SetStaticValue(obj); SetDynamicValue(obj); } private int coolTime0, coolTime1, coolTime2; private bool initialized; } }