You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

StatusBarOfHunter.xaml.cs 12 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Shapes;
  14. using Protobuf;
  15. using Preparation.Utility;
  16. namespace Client
  17. {
  18. /// <summary>
  19. /// StatusBarOfHunter.xaml 的交互逻辑
  20. /// </summary>
  21. public partial class StatusBarOfHunter : UserControl
  22. {
  23. public StatusBarOfHunter(Grid parent, int Row, int Column)
  24. {
  25. InitializeComponent();
  26. parent.Children.Add(this);
  27. Grid.SetColumn(this, Column);
  28. Grid.SetColumnSpan(this, 2);
  29. Grid.SetRow(this, Row);
  30. initialized = false;
  31. }
  32. public void SetFontSize(double fontsize)
  33. {
  34. if (fontsize != 0)
  35. serial.FontSize = scores.FontSize = state.FontSize = status.FontSize = activeSkill0.FontSize = activeSkill1.FontSize = activeSkill2.FontSize = prop0.FontSize = prop1.FontSize = prop2.FontSize = fontsize;
  36. }
  37. private void SetStaticValue(MessageOfTricker obj)
  38. {
  39. switch (obj.TrickerType) // 参数未设定
  40. {
  41. case TrickerType.Assassin:
  42. serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\nAssassin";
  43. break;
  44. case TrickerType.Klee:
  45. serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\nKlee";
  46. break;
  47. case TrickerType.ANoisyPerson:
  48. serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\nANoisyPerson";
  49. break;
  50. case TrickerType.Idol:
  51. serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\nIdol";
  52. break;
  53. case TrickerType.NullTrickerType:
  54. serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\nNullTrickerType";
  55. break;
  56. }
  57. activeSkill0.Text = "Skill0";
  58. activeSkill1.Text = "Skill1";
  59. activeSkill2.Text = "Skill2";
  60. initialized = true;
  61. }
  62. private void SetDynamicValue(MessageOfTricker obj)
  63. {
  64. status.Text = "🏃🏿‍: " + Convert.ToString(obj.Speed);
  65. switch (obj.PlayerState)
  66. {
  67. case PlayerState.Idle:
  68. state.Text = "Idle";
  69. break;
  70. case PlayerState.Learning:
  71. state.Text = "Learning";
  72. break;
  73. case PlayerState.Addicted:
  74. state.Text = "Addicted";
  75. break;
  76. case PlayerState.Graduated:
  77. state.Text = "Graduated";
  78. break;
  79. case PlayerState.Quit:
  80. state.Text = "Quit";
  81. break;
  82. case PlayerState.Treated:
  83. state.Text = "Encouraged";
  84. break;
  85. case PlayerState.Rescued:
  86. state.Text = "Roused";
  87. break;
  88. case PlayerState.Stunned:
  89. state.Text = "Stunned";
  90. break;
  91. case PlayerState.Treating:
  92. state.Text = "Encouraging";
  93. break;
  94. case PlayerState.Rescuing:
  95. state.Text = "Rousing";
  96. break;
  97. case PlayerState.Swinging:
  98. state.Text = "Swinging";
  99. break;
  100. case PlayerState.Attacking:
  101. state.Text = "Attacking";
  102. break;
  103. case PlayerState.Locking:
  104. state.Text = "Locking";
  105. break;
  106. case PlayerState.Rummaging:
  107. state.Text = "Rummaging";
  108. break;
  109. case PlayerState.Climbing:
  110. state.Text = "Climbing";
  111. break;
  112. case PlayerState.OpeningAChest:
  113. state.Text = "OpeningAChest";
  114. break;
  115. case PlayerState.UsingSpecialSkill:
  116. state.Text = "UsingSpecialSkill";
  117. break;
  118. case PlayerState.OpeningAGate:
  119. state.Text = "OpeningAGate";
  120. break;
  121. default:
  122. break;
  123. }
  124. scores.Text = "Scores: " + Convert.ToString(obj.Score);
  125. if (obj.TimeUntilSkillAvailable[0] >= 0)
  126. skillprogress0.Value = 100 - 100.0 * obj.TimeUntilSkillAvailable[0] / coolTime0[4];
  127. if (obj.TimeUntilSkillAvailable[1] >= 0)
  128. skillprogress1.Value = 100 - 100.0 * obj.TimeUntilSkillAvailable[1] / coolTime1[4];
  129. if (obj.TimeUntilSkillAvailable[2] >= 0)
  130. skillprogress2.Value = 100 - 100.0 * obj.TimeUntilSkillAvailable[2] / coolTime2[4];
  131. if (obj.PlayerState == PlayerState.Quit)
  132. {
  133. skillprogress0.Value = skillprogress1.Value = skillprogress2.Value = 0;
  134. skillprogress0.Background = skillprogress1.Background = skillprogress2.Background = Brushes.Gray;
  135. }
  136. else
  137. skillprogress0.Background = skillprogress1.Background = skillprogress2.Background = Brushes.White;
  138. int cnt = 0;
  139. foreach (var icon in obj.Prop)
  140. {
  141. switch (cnt)
  142. {
  143. case 0:
  144. switch (icon)
  145. {
  146. case Protobuf.PropType.Key3:
  147. prop0.Text = "🔑3";
  148. break;
  149. case Protobuf.PropType.Key5:
  150. prop0.Text = "🔑5";
  151. break;
  152. case Protobuf.PropType.Key6:
  153. prop0.Text = "🔑6";
  154. break;
  155. case Protobuf.PropType.AddSpeed:
  156. prop0.Text = "⛸";
  157. break;
  158. case Protobuf.PropType.AddLifeOrClairaudience:
  159. prop0.Text = "🏅";
  160. break;
  161. case Protobuf.PropType.AddHpOrAp:
  162. prop0.Text = "♥";
  163. break;
  164. case Protobuf.PropType.ShieldOrSpear:
  165. prop0.Text = "🛡";
  166. break;
  167. case Protobuf.PropType.RecoveryFromDizziness:
  168. prop0.Text = "🕶";
  169. break;
  170. default:
  171. prop0.Text = "";
  172. break;
  173. }
  174. cnt++;
  175. break;
  176. case 1:
  177. switch (icon)
  178. {
  179. case Protobuf.PropType.Key3:
  180. prop1.Text = "🔑3";
  181. break;
  182. case Protobuf.PropType.Key5:
  183. prop1.Text = "🔑5";
  184. break;
  185. case Protobuf.PropType.Key6:
  186. prop1.Text = "🔑6";
  187. break;
  188. case Protobuf.PropType.AddSpeed:
  189. prop1.Text = "⛸";
  190. break;
  191. case Protobuf.PropType.AddLifeOrClairaudience:
  192. prop1.Text = "🏅";
  193. break;
  194. case Protobuf.PropType.AddHpOrAp:
  195. prop1.Text = "♥";
  196. break;
  197. case Protobuf.PropType.ShieldOrSpear:
  198. prop1.Text = "🛡";
  199. break;
  200. case Protobuf.PropType.RecoveryFromDizziness:
  201. prop1.Text = "🕶";
  202. break;
  203. default:
  204. prop1.Text = "";
  205. break;
  206. }
  207. cnt++;
  208. break;
  209. case 2:
  210. switch (icon)
  211. {
  212. case Protobuf.PropType.Key3:
  213. prop2.Text = "🔑3";
  214. break;
  215. case Protobuf.PropType.Key5:
  216. prop2.Text = "🔑5";
  217. break;
  218. case Protobuf.PropType.Key6:
  219. prop2.Text = "🔑6";
  220. break;
  221. case Protobuf.PropType.AddSpeed:
  222. prop2.Text = "⛸";
  223. break;
  224. case Protobuf.PropType.AddLifeOrClairaudience:
  225. prop2.Text = "🏅";
  226. break;
  227. case Protobuf.PropType.AddHpOrAp:
  228. prop2.Text = "♥";
  229. break;
  230. case Protobuf.PropType.ShieldOrSpear:
  231. prop2.Text = "🛡";
  232. break;
  233. case Protobuf.PropType.RecoveryFromDizziness:
  234. prop2.Text = "🕶";
  235. break;
  236. default:
  237. prop2.Text = "";
  238. break;
  239. }
  240. cnt++;
  241. break;
  242. default:
  243. break;
  244. }
  245. }
  246. }
  247. public void SetValue(MessageOfTricker obj)
  248. {
  249. if (!initialized)
  250. SetStaticValue(obj);
  251. SetDynamicValue(obj);
  252. }
  253. public void NewData(int[] life, int[] death, int[,] coolTime)
  254. {
  255. for (int i = 0; i < GameData.numOfStudent; ++i)
  256. {
  257. totalLife[i] = life[i];
  258. totalDeath[i] = death[i];
  259. coolTime0[i] = coolTime[0, i];
  260. coolTime1[i] = coolTime[1, i];
  261. coolTime2[i] = coolTime[2, i];
  262. }
  263. coolTime0[4] = coolTime[0, 4];
  264. coolTime1[4] = coolTime[1, 4];
  265. coolTime2[4] = coolTime[2, 4];
  266. }
  267. private int[] totalLife = new int[4] { 100, 100, 100, 100 }, totalDeath = new int[4] { 100, 100, 100, 100 };
  268. 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 };
  269. private bool initialized;
  270. }
  271. }