HotkeysViewModel.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. using HelloItQuantum.Function;
  2. using HelloItQuantum.Views;
  3. using System;
  4. using System.IO;
  5. using System.Media;
  6. namespace HelloItQuantum.ViewModels
  7. {
  8. public class HotkeysViewModel : MainWindowViewModel
  9. {
  10. #region
  11. bool visibleBtnNext = true; //Кнопка Далее
  12. string textInBtnNext = "Далее"; //Текст внутри кнопки Далее (иногда он может быть Да)
  13. bool visibleBtnNo = false; //Кнопка Нет
  14. bool visibleTBAnswer = false; //TB куда вводить ответ
  15. bool visibleImgAnswer = false; //SP с ответом
  16. bool visibleSvgHotkey = true;
  17. string pathSvgHotkey = "/Assets/ImgHotkeys/Backspace.svg";
  18. string textInSP = ""; //Текст в StackPanel
  19. string textAnswer = ""; //Текст в поле ввода ответа
  20. (int, string, int) act = (1, "", 1);
  21. string textShowAct = "1/5";
  22. string path = $"{Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory))))}\\Assets\\HotkeysAudio\\voice1.wav";
  23. public bool VisibleBtnNext { get => visibleBtnNext; set => SetProperty(ref visibleBtnNext, value); }
  24. public string TextInBtnNext { get => textInBtnNext; set => SetProperty(ref textInBtnNext, value); }
  25. public bool VisibleBtnNo { get => visibleBtnNo; set => SetProperty(ref visibleBtnNo, value); }
  26. public bool VisibleTBAnswer { get => visibleTBAnswer; set => SetProperty(ref visibleTBAnswer, value); }
  27. public bool VisibleImgAnswer { get => visibleImgAnswer; set => SetProperty(ref visibleImgAnswer, value); }
  28. public string TextInSP { get => textInSP; set => SetProperty(ref textInSP, value); }
  29. public string TextShowAct { get => textShowAct; set => SetProperty(ref textShowAct, value); }
  30. public string TextAnswer { get => textAnswer; set => SetProperty(ref textAnswer, value); }
  31. public bool VisibleSvgHotkey { get => visibleSvgHotkey; set => SetProperty(ref visibleSvgHotkey, value); }
  32. public string PathSvgHotkey { get => pathSvgHotkey; set => SetProperty(ref pathSvgHotkey, value); }
  33. #endregion
  34. public HotkeysViewModel()
  35. {
  36. string directory = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory))));
  37. switch (CurrentUser.GameHotkeys)
  38. {
  39. case 20:
  40. {
  41. act = (6, "Ты молодец. Знаешь ли ты, как с помощью клавиатуры скопировать текст?", 2);
  42. path = $"{directory}\\Assets\\HotkeysAudio\\voice6.wav";
  43. TextShowAct = "2/5";
  44. }
  45. break;
  46. case 40:
  47. {
  48. act = (9, "Отлично справляешься. Знаешь ли ты, как с помощью клавиатуры вставить скопированный текст?", 2);
  49. path = $"{directory}\\Assets\\HotkeysAudio\\voice11.wav";
  50. TextShowAct = "3/5";
  51. }
  52. break;
  53. case 60:
  54. {
  55. act = (12, "Почти конец! Знаешь ли ты, как стереть символ спереди курсора?", 2);
  56. path = $"{directory}\\Assets\\HotkeysAudio\\voice15.wav";
  57. TextShowAct = "4/5";
  58. }
  59. break;
  60. case 80:
  61. {
  62. act = (15, "И мой последний вопрос. Знаешь ли ты, как закрыть приложение, в котором ты сейчас находишься, с помощью клавиш?", 2);
  63. path = $"{directory}\\Assets\\HotkeysAudio\\voice19.wav";
  64. TextShowAct = "5/5";
  65. } break;
  66. default: act = act = (1, "Изучать программирование - значит уметь выполнять различные действия на компьютере с помощью клавиатуры", 1); break;
  67. }
  68. ParsAct();
  69. }
  70. /// <summary>
  71. /// Функция запуска аудио
  72. /// </summary>
  73. public void PlayTask()
  74. {
  75. SoundPlayer snd = new SoundPlayer(path);
  76. snd.Play();
  77. }
  78. /// <summary>
  79. /// Парс элемента очереди
  80. /// </summary>
  81. public void ParsAct()
  82. {
  83. TextAnswer = "";
  84. TextInSP = act.Item2;
  85. switch (act.Item3)
  86. {
  87. case 1:
  88. {
  89. VisibleTBAnswer = false;
  90. VisibleBtnNo = false;
  91. VisibleBtnNext = true;
  92. TextInBtnNext = "Далее";
  93. }; break;
  94. case 2:
  95. {
  96. VisibleTBAnswer = false;
  97. VisibleBtnNo = true;
  98. VisibleBtnNext = true;
  99. TextInBtnNext = "Да";
  100. }; break;
  101. case 3:
  102. {
  103. VisibleTBAnswer = true;
  104. VisibleBtnNo = false;
  105. VisibleBtnNext = true;
  106. TextInBtnNext = "Далее";
  107. }; break;
  108. }
  109. }
  110. public void GoBack()
  111. {
  112. PageSwitch.View = new PlaySectionView();
  113. }
  114. /// <summary>
  115. /// Обработка нажатий на кнопку
  116. /// </summary>
  117. /// <param name="button">Какая кнопка была нажата</param>
  118. public void GoNext(string button)
  119. {
  120. string directory = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory))));
  121. switch (act.Item1)
  122. {
  123. case 1:
  124. {
  125. act = (2, "Готов ли ты проверить свои знания в мире горячих клавиш? Не волнуйся, я тебя научу", 2);
  126. path = $"{directory}\\Assets\\HotkeysAudio\\voice2.wav";
  127. }; break;
  128. case 2:
  129. {
  130. if (button == "Далее")
  131. {
  132. act = (3, "Отлично. Начнем с простого вопроса. Знаешь ли ты, как с помощью клавиатуры стирать текст?", 2);
  133. path = $"{directory}\\Assets\\HotkeysAudio\\voice3.wav";
  134. }
  135. else
  136. {
  137. GoBack();
  138. }
  139. }; break;
  140. case 3:
  141. {
  142. if (button == "Далее")
  143. {
  144. act = (4, "Если говоришь, знаешь, введи название клавиши, с помощью которой можно стереть текст", 3);
  145. path = $"{directory}\\Assets\\HotkeysAudio\\voice4.wav";
  146. }
  147. else
  148. {
  149. act = (5, "Чтобы стереть текст, который ты написал, необходимо нажать клавишу Backspace. Иногда её изображают стрелочкой влево.", 1);
  150. PathSvgHotkey = "/Assets/ImgHotkeys/Backspace.svg";
  151. VisibleSvgHotkey = !VisibleSvgHotkey;
  152. path = $"{directory}\\Assets\\HotkeysAudio\\voice5.wav";
  153. }
  154. }; break;
  155. case 4:
  156. {
  157. if (button == "Забыл")
  158. {
  159. act = (5, "Чтобы стереть текст, который ты написал, необходимо нажать клавишу Backspace. Иногда её изображают стрелочкой влево.", 1);
  160. PathSvgHotkey = "/Assets/ImgHotkeys/Backspace.svg";
  161. VisibleSvgHotkey = !VisibleSvgHotkey;
  162. path = $"{directory}\\Assets\\HotkeysAudio\\voice5.wav";
  163. }
  164. else
  165. {
  166. if (TextAnswer.ToLower().Trim() == "backspace" || TextAnswer.ToLower().Trim() == "←" || TextAnswer.ToLower().Trim() == "<-")
  167. {
  168. WorkWithFile.UpdateValueGameProgress(1, 20, CurrentUser);
  169. act = (6, "Ты молодец. Знаешь ли ты, как с помощью клавиатуры скопировать текст?", 2);
  170. path = $"{directory}\\Assets\\HotkeysAudio\\voice6.wav";
  171. TextShowAct = "2/5";
  172. }
  173. else
  174. {
  175. SoundPlayer snd = new SoundPlayer($"{directory}\\Assets\\HotkeysAudio\\error.wav");
  176. snd.Play();
  177. }
  178. }
  179. }; break;
  180. case 5:
  181. {
  182. VisibleSvgHotkey = !VisibleSvgHotkey;
  183. act = (4, "Введи название клавиши, которую ты узнал, с помощью которой можно стереть текст", 3);
  184. path = $"{directory}\\Assets\\HotkeysAudio\\voice7.wav";
  185. }; break;
  186. case 6:
  187. {
  188. if (button == "Далее")
  189. {
  190. act = (8, "Если говоришь, знаешь, введи сочетание клавиш, с помощью которых можно скопировать текст", 3);
  191. path = $"{directory}\\Assets\\HotkeysAudio\\voice8.wav";
  192. }
  193. else
  194. {
  195. act = (7, "Чтобы с помощью клавиатуры скопировать текст, необходимо использовать сочетание клавиш Ctrl + C.", 1);
  196. PathSvgHotkey = "/Assets/ImgHotkeys/CtrlC.svg";
  197. VisibleSvgHotkey = !VisibleSvgHotkey;
  198. path = $"{directory}\\Assets\\HotkeysAudio\\voice9.wav";
  199. }
  200. }; break;
  201. case 7:
  202. {
  203. VisibleSvgHotkey = !VisibleSvgHotkey;
  204. act = (8, "Если говоришь, знаешь, введи сочетание клавиш, с помощью которых можно скопировать текст", 3);
  205. path = $"{directory}\\Assets\\HotkeysAudio\\voice10.wav";
  206. }; break;
  207. case 8:
  208. {
  209. if (button == "Забыл")
  210. {
  211. act = (7, "Чтобы с помощью клавиатуры скопировать текст, необходимо использовать сочетание клавиш Ctrl + C.", 1);
  212. PathSvgHotkey = "/Assets/ImgHotkeys/CtrlC.svg";
  213. VisibleSvgHotkey = !VisibleSvgHotkey;
  214. path = $"{directory}\\Assets\\HotkeysAudio\\voice9.wav";
  215. }
  216. else
  217. {
  218. if (TextAnswer.ToLower().Trim() == "ctrl + c" || TextAnswer.ToLower().Trim() == "ctrl c")
  219. {
  220. WorkWithFile.UpdateValueGameProgress(1, 40, CurrentUser);
  221. act = (9, "Отлично справляешься. Знаешь ли ты, как с помощью клавиатуры вставить скопированный текст?", 2);
  222. path = $"{directory}\\Assets\\HotkeysAudio\\voice11.wav";
  223. TextShowAct = "3/5";
  224. }
  225. else
  226. {
  227. SoundPlayer snd = new SoundPlayer($"{directory}\\Assets\\HotkeysAudio\\error.wav");
  228. snd.Play();
  229. }
  230. }
  231. }; break;
  232. case 9:
  233. {
  234. if (button == "Далее")
  235. {
  236. act = (11, "Если говоришь, знаешь, введи сочетание клавиш, с помощью которых можно вставить скопированный текст", 3);
  237. path = $"{directory}\\Assets\\HotkeysAudio\\voice12.wav";
  238. }
  239. else
  240. {
  241. act = (10, "Чтобы с помощью клавиатуры вставить скопированный текст, необходимо использовать сочетание клавиш Ctrl + V.", 1);
  242. PathSvgHotkey = "/Assets/ImgHotkeys/CtrlV.svg";
  243. VisibleSvgHotkey = !VisibleSvgHotkey;
  244. path = $"{directory}\\Assets\\HotkeysAudio\\voice13.wav";
  245. }
  246. }; break;
  247. case 10:
  248. {
  249. VisibleSvgHotkey = !VisibleSvgHotkey;
  250. act = (11, "Введи сочетание клавиш, с помощью которых можно вставить скопированный текст", 3);
  251. path = $"{directory}\\Assets\\HotkeysAudio\\voice14.wav";
  252. }; break;
  253. case 11:
  254. {
  255. if (button == "Забыл")
  256. {
  257. act = (10, "Чтобы с помощью клавиатуры вставить скопированный текст, необходимо использовать сочетание клавиш Ctrl + V.", 1);
  258. PathSvgHotkey = "/Assets/ImgHotkeys/CtrlV.svg";
  259. VisibleSvgHotkey = !VisibleSvgHotkey;
  260. path = $"{directory}\\Assets\\HotkeysAudio\\voice13.wav";
  261. }
  262. else
  263. {
  264. if (TextAnswer.ToLower().Trim() == "ctrl + v")
  265. {
  266. WorkWithFile.UpdateValueGameProgress(1, 60, CurrentUser);
  267. act = (12, "Почти конец! Знаешь ли ты, как стереть символ спереди курсора?", 2);
  268. path = $"{directory}\\Assets\\HotkeysAudio\\voice15.wav";
  269. TextShowAct = "4/5";
  270. }
  271. else
  272. {
  273. SoundPlayer snd = new SoundPlayer($"{directory}\\Assets\\HotkeysAudio\\error.wav");
  274. snd.Play();
  275. }
  276. }
  277. }; break;
  278. case 12:
  279. {
  280. if (button == "Далее")
  281. {
  282. act = (14, "Если говоришь, знаешь, введи клавишу, с помощью которой можно стереть текст спереди курсора", 3);
  283. path = $"{directory}\\Assets\\HotkeysAudio\\voice16.wav";
  284. }
  285. else
  286. {
  287. act = (13, "Курсор - мерцающая линия, которая дает знать, в каком месте сейчас будет изменяться текст. Чтобы стереть символ спереди курсора необходимо нажать клавишу Delete или Del.", 1);
  288. PathSvgHotkey = "/Assets/ImgHotkeys/Del.svg";
  289. VisibleSvgHotkey = !VisibleSvgHotkey;
  290. path = $"{directory}\\Assets\\HotkeysAudio\\voice17.wav";
  291. }
  292. }; break;
  293. case 13:
  294. {
  295. VisibleSvgHotkey = !VisibleSvgHotkey;
  296. act = (14, "Введи клавишу, с помощью которой можно стереть текст спереди курсора", 3);
  297. path = $"{directory}\\Assets\\HotkeysAudio\\voice18.wav";
  298. }; break;
  299. case 14:
  300. {
  301. if (button == "Забыл")
  302. {
  303. act = (13, "Курсор - мерцающая линия, которая дает знать, в каком месте сейчас будет изменяться текст. Чтобы стереть символ спереди курсора необходимо нажать клавишу Delete или Del.", 1);
  304. PathSvgHotkey = "/Assets/ImgHotkeys/Del.svg";
  305. VisibleSvgHotkey = !VisibleSvgHotkey;
  306. path = $"{directory}\\Assets\\HotkeysAudio\\voice17.wav";
  307. }
  308. else
  309. {
  310. if (TextAnswer.ToLower().Trim() == "delete" || TextAnswer.ToLower().Trim() == "del")
  311. {
  312. WorkWithFile.UpdateValueGameProgress(1, 80, CurrentUser);
  313. act = (15, "И мой последний вопрос. Знаешь ли ты, как закрыть приложение, в котором ты сейчас находишься, с помощью клавиш?", 2);
  314. path = $"{directory}\\Assets\\HotkeysAudio\\voice19.wav";
  315. TextShowAct = "5/5";
  316. }
  317. else
  318. {
  319. SoundPlayer snd = new SoundPlayer($"{directory}\\Assets\\HotkeysAudio\\error.wav");
  320. snd.Play();
  321. }
  322. }
  323. }; break;
  324. case 15:
  325. {
  326. if (button == "Далее")
  327. {
  328. act = (17, "Если говоришь, знаешь, введи сочетание клавиш, с помощью которых можно закрыть приложение, в котором ты сейчас находишься", 3);
  329. path = $"{directory}\\Assets\\HotkeysAudio\\voice20.wav";
  330. }
  331. else
  332. {
  333. act = (16, "Чтобы закрыть приложение, в котором ты сейчас находишься, с помощью клавиш, необходимо нажать клавиши Alt + F4.", 1);
  334. PathSvgHotkey = "/Assets/ImgHotkeys/AltF4.svg";
  335. VisibleSvgHotkey = !VisibleSvgHotkey;
  336. path = $"{directory}\\Assets\\HotkeysAudio\\voice21.wav";
  337. }
  338. }; break;
  339. case 16:
  340. {
  341. VisibleSvgHotkey = !VisibleSvgHotkey;
  342. act = (17, "Введи сочетание клавиш, с помощью которых можно закрыть приложение, в котором ты сейчас находишься", 3);
  343. path = $"{directory}\\Assets\\HotkeysAudio\\voice22.wav";
  344. }; break;
  345. case 17:
  346. {
  347. if (button == "Забыл")
  348. {
  349. act = (16, "Чтобы закрыть приложение, в котором ты сейчас находишься, с помощью клавиш, необходимо нажать клавиши Alt + F4.", 1);
  350. PathSvgHotkey = "/Assets/ImgHotkeys/AltF4.svg";
  351. VisibleSvgHotkey = !VisibleSvgHotkey;
  352. path = $"{directory}\\Assets\\HotkeysAudio\\voice21.wav";
  353. }
  354. else
  355. {
  356. if (TextAnswer.ToLower().Trim() == "alt + f4")
  357. {
  358. WorkWithFile.UpdateValueGameProgress(1, 100, CurrentUser);
  359. act = (18, "Ты молодец и знаешь все базовые горячие клавиши для того, чтобы изучать программирование. Надеюсь это поможет тебе выбрать направление. Пока-пока!", 1);
  360. path = $"{directory}\\Assets\\HotkeysAudio\\voice23.wav";
  361. TextInBtnNext = "Выйти";
  362. }
  363. else
  364. {
  365. SoundPlayer snd = new SoundPlayer($"{directory}\\Assets\\HotkeysAudio\\error.wav");
  366. snd.Play();
  367. }
  368. }
  369. }; break;
  370. case 18:
  371. {
  372. GoBack();
  373. }; break;
  374. }
  375. ParsAct();
  376. }
  377. }
  378. }