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; using Preparation.Utility; namespace Client { /// /// StatusBarOfSurvivor.xaml 的交互逻辑 /// public partial class StatusBarOfSurvivor : UserControl { public StatusBarOfSurvivor(Grid parent, int Row, int Column) { InitializeComponent(); parent.Children.Add(this); Grid.SetColumn(this, Column); Grid.SetRow(this, Row); initialized = false; } public void SetFontSize(double fontsize) { if (fontsize != 0) serial.FontSize = scores.FontSize = status.FontSize = activeSkill0.FontSize = activeSkill1.FontSize = activeSkill2.FontSize = prop0.FontSize = prop1.FontSize = prop2.FontSize = fontsize; } private void SetStaticValue(MessageOfStudent obj) { switch (obj.StudentType) // coolTime参数未设定, { case StudentType.Athlete: serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\nAthlete"; break; case StudentType.Teacher: serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\nTeacher"; break; case StudentType.StraightAStudent: serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\nStraightAStudent"; break; case StudentType.Robot: serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\nRobot"; break; case StudentType.TechOtaku: serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\nTechOtaku"; break; case StudentType.Sunshine: serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\nSunshine"; break; case StudentType.NullStudentType: serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\nNullStudentType"; break; } activeSkill0.Text = "Skill0"; activeSkill1.Text = "Skill1"; activeSkill2.Text = "Skill2"; initialized = true; } private void SetDynamicValue(MessageOfStudent obj, long i) { int life = obj.Determination, death = obj.Addiction; int perLife = (int)(100.0 * life / totalLife[i]), perDeath = (int)(100.0 * death / totalDeath[i]); switch (obj.PlayerState) { case PlayerState.Idle: status.Text = "♥: " + Convert.ToString(life) + "\nIdle, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Learning: status.Text = "♥: " + Convert.ToString(life) + "\nLearning, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Addicted: status.Text = "💀: " + Convert.ToString(death) + "\nAddicted, " + Convert.ToString(perDeath) + "%"; break; case PlayerState.Graduated: status.Text = "♥" + "\nGraduated"; break; case PlayerState.Quit: status.Text = "💀" + "\nQuit"; break; case PlayerState.Treated: status.Text = "♥: " + Convert.ToString(life) + "\nEncouraged, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Rescued: status.Text = "💀: " + Convert.ToString(death) + "\nRoused, " + Convert.ToString(perDeath) + "%"; break; case PlayerState.Stunned: status.Text = "♥: " + Convert.ToString(life) + "\nStunned, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Treating: status.Text = "♥: " + Convert.ToString(life) + "\nEncouraging, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Rescuing: status.Text = "♥: " + Convert.ToString(life) + "\nRousing, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Swinging: status.Text = "♥: " + Convert.ToString(life) + "\nSwinging, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Attacking: status.Text = "♥: " + Convert.ToString(life) + "\nAttacking, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Locking: status.Text = "♥: " + Convert.ToString(life) + "\nLocking, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Rummaging: status.Text = "♥: " + Convert.ToString(life) + "\nRummaging, " + Convert.ToString(perLife) + "%"; break; case PlayerState.Climbing: status.Text = "♥: " + Convert.ToString(life) + "\nClimbing, " + Convert.ToString(perLife) + "%"; break; case PlayerState.OpeningAChest: status.Text = "♥: " + Convert.ToString(life) + "\nOpeningAChest, " + Convert.ToString(perLife) + "%"; break; case PlayerState.UsingSpecialSkill: status.Text = "♥: " + Convert.ToString(life) + "\nUsingSpecialSkill, " + Convert.ToString(perLife) + "%"; break; case PlayerState.OpeningAGate: status.Text = "♥: " + Convert.ToString(life) + "\nOpeningAGate, " + Convert.ToString(perLife) + "%"; break; default: break; } scores.Text = "Scores: " + obj.Score; if (obj.TimeUntilSkillAvailable[0] >= 0) skillprogress0.Value = 100 - 100.0 * obj.TimeUntilSkillAvailable[0] / coolTime0[i]; if (obj.TimeUntilSkillAvailable[1] >= 0) skillprogress1.Value = 100 - 100.0 * obj.TimeUntilSkillAvailable[1] / coolTime1[i]; if (obj.TimeUntilSkillAvailable[2] >= 0) skillprogress2.Value = 100 - 100.0 * obj.TimeUntilSkillAvailable[2] / coolTime2[i]; 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 Protobuf.PropType.Key3: prop0.Text = "🔑3"; break; case Protobuf.PropType.Key5: prop0.Text = "🔑5"; break; case Protobuf.PropType.Key6: prop0.Text = "🔑6"; break; case Protobuf.PropType.AddSpeed: prop0.Text = "⛸"; break; case Protobuf.PropType.AddLifeOrClairaudience: prop0.Text = "🏅"; break; case Protobuf.PropType.AddHpOrAp: prop0.Text = "♥"; break; case Protobuf.PropType.ShieldOrSpear: prop0.Text = "🛡"; break; case Protobuf.PropType.RecoveryFromDizziness: prop0.Text = "🕶"; break; default: prop0.Text = ""; break; } cnt++; break; case 1: switch (icon) { case Protobuf.PropType.Key3: prop1.Text = "🔑3"; break; case Protobuf.PropType.Key5: prop1.Text = "🔑5"; break; case Protobuf.PropType.Key6: prop1.Text = "🔑6"; break; case Protobuf.PropType.AddSpeed: prop1.Text = "⛸"; break; case Protobuf.PropType.AddLifeOrClairaudience: prop1.Text = "🏅"; break; case Protobuf.PropType.AddHpOrAp: prop1.Text = "♥"; break; case Protobuf.PropType.ShieldOrSpear: prop1.Text = "🛡"; break; case Protobuf.PropType.RecoveryFromDizziness: prop1.Text = "🕶"; break; default: prop1.Text = ""; break; } cnt++; break; case 2: switch (icon) { case Protobuf.PropType.Key3: prop2.Text = "🔑3"; break; case Protobuf.PropType.Key5: prop2.Text = "🔑5"; break; case Protobuf.PropType.Key6: prop2.Text = "🔑6"; break; case Protobuf.PropType.AddSpeed: prop2.Text = "⛸"; break; case Protobuf.PropType.AddLifeOrClairaudience: prop2.Text = "🏅"; break; case Protobuf.PropType.AddHpOrAp: prop2.Text = "♥"; break; case Protobuf.PropType.ShieldOrSpear: prop2.Text = "🛡"; break; case Protobuf.PropType.RecoveryFromDizziness: prop2.Text = "🕶"; break; default: prop2.Text = ""; break; } cnt++; break; default: break; } } } public void SetValue(MessageOfStudent obj, long i) { if (!initialized) SetStaticValue(obj); SetDynamicValue(obj, i); } public void NewData(int[] life, int[] death, int[,] coolTime) { for (int i = 0; i < GameData.numOfStudent; ++i) { totalLife[i] = life[i]; totalDeath[i] = death[i]; coolTime0[i] = coolTime[0, i]; coolTime1[i] = coolTime[1, i]; coolTime2[i] = coolTime[2, i]; } coolTime0[4] = coolTime[0, 4]; coolTime1[4] = coolTime[1, 4]; coolTime2[4] = coolTime[2, 4]; } private int[] totalLife = new int[4] { 100, 100, 100, 100 }, totalDeath = new int[4] { 100, 100, 100, 100 }; private int[] coolTime0 = new int[5] { 100, 100, 100, 100, 100 }, coolTime1 = new int[5] { 100, 100, 100, 100, 100 }, coolTime2 = new int[5] { 100, 100, 100, 100, 100 }; private bool initialized; } }