private void ReturnToFirstScreenAnimation_Completed(object sender, EventArgs e) { // MessageBox.Show("Анимация завершена"); imgLoading.Visibility = Visibility.Collapsed; txtScreenTop.Visibility = Visibility.Visible; // Переходим на указанный экран // curScreen = nextScreen; CurrentScreenInfo = listScreenInfo.FirstOrDefault(s => s.CurrentEnScreen == curScreen); }
private void InputAnimation_Completed(object sender, EventArgs e) { // MessageBox.Show("Анимация завершена"); // Выставляем флаг отработки транзакции - чтобы она отработала только 1 раз // if (IsAnimationCompleted) { return; } IsAnimationCompleted = true; imgLoading.Visibility = Visibility.Collapsed; txtScreenTop.Visibility = Visibility.Visible; // imgLoading2.Visibility = Visibility.Collapsed; // пробуем внести указанное кол-во указанных купюр // string status = InputTransaction(); if (status.Length > 0) { txtErrorInfo.Text = status; // "Банкомат не имеет возможности принять все указанные купюры."; } else { txtErrorInfo.Text = ""; } // Переходим на указанный экран // curScreen = nextScreen; CurrentScreenInfo = listScreenInfo.FirstOrDefault(s => s.CurrentEnScreen == curScreen); }
// //----------- Вспомогательные функции --------------- // #region NextScreenInfo() /// <summary> /// Переходим на указанный экран /// </summary> /// <param name="nextScreen">Требуемый экран, к которому хотим перейти</param> /// <returns></returns> bool NextScreenInfo(EnScreens screen) { if (screen == EnScreens.OutputResult) { // //---------- Экран выдачи денег ------ // // Запоминаем индекс требуемого к переходу экрана и запускаем анимацию // nextScreen = screen; // Показываем анимацию // // imgLoading DoubleAnimation imgAnimation = new DoubleAnimation(); imgAnimation.From = 0; // imgLoading.Opacity; imgAnimation.To = 1; imgAnimation.Duration = TimeSpan.FromSeconds(1); imgAnimation.AutoReverse = true; imgAnimation.Completed += OutputAnimation_Completed; txtScreenTop.Visibility = Visibility.Collapsed; // Выставляем флаг отработки транзакции - чтобы она отработала только 1 раз // IsAnimationCompleted = false; imgLoading.Visibility = Visibility.Visible; imgLoading.BeginAnimation(Image.OpacityProperty, imgAnimation); //// Дополнительно показываем анимацию в блоке состояния банкомата //// //imgLoading2.Visibility = Visibility.Visible; //imgLoading2.BeginAnimation(Image.OpacityProperty, imgAnimation); } else if (screen == EnScreens.InputResult) { // //---------- Экран внесения денег ------ // // Запоминаем индекс требуемого к переходу экрана и запускаем анимацию // nextScreen = screen; // Показываем анимацию // // imgLoading DoubleAnimation imgAnimation = new DoubleAnimation(); imgAnimation.From = 0; // imgLoading.Opacity; imgAnimation.To = 1; imgAnimation.Duration = TimeSpan.FromSeconds(1); imgAnimation.AutoReverse = true; imgAnimation.Completed += InputAnimation_Completed; txtScreenTop.Visibility = Visibility.Collapsed; // Выставляем флаг отработки транзакции - чтобы она отработала только 1 раз // IsAnimationCompleted = false; imgLoading.Visibility = Visibility.Visible; imgLoading.BeginAnimation(Image.OpacityProperty, imgAnimation); //// Дополнительно показываем анимацию в блоке состояния банкомата //// //imgLoading2.Visibility = Visibility.Visible; //imgLoading2.BeginAnimation(Image.OpacityProperty, imgAnimation); } else { // Переходим на указанный экран // curScreen = screen; CurrentScreenInfo = listScreenInfo.FirstOrDefault(s => s.CurrentEnScreen == curScreen); } return(true); }
/// <summary> /// Инициализатор списка держателей карт и списка полей экранов /// </summary> /// <returns></returns> bool InitializeScreenInfo() { // Инициализатор списка кол-ва и типов купюр в банкомате // listATM = new List <Banknote>(); Banknote note0 = new Banknote() { Title = "10", MaxAmount = 2000, CurAmount = 1950 }; Banknote note1 = new Banknote() { Title = "50", MaxAmount = 2000, CurAmount = 10 }; Banknote note2 = new Banknote() { Title = "100", MaxAmount = 1000, CurAmount = 980 }; Banknote note3 = new Banknote() { Title = "500", MaxAmount = 1000, CurAmount = 12 }; Banknote note4 = new Banknote() { Title = "1000", MaxAmount = 500, CurAmount = 492 }; Banknote note5 = new Banknote() { Title = "5000", MaxAmount = 100, CurAmount = 1 }; listATM.AddRange(new Banknote[] { note0, note1, note2, note3, note4, note5 }); // Устанавливаем у lvATM источник данных // lvATM.ItemsSource = listATM; // Инициализируем список с информацией о последних проведенных транзакциях // listLastTransInfo = new ObservableCollection <LastTransInfo>(); // Устанавливаем у lvLastTransaction источник данных // lvLastTransaction.ItemsSource = listLastTransInfo; // Инициализатор списка держателей карт // listCardholders = new List <Cardholder>(); Cardholder holder0 = new Cardholder() { Name = "Иванов И.И.", Balans = 3000 }; Cardholder holder1 = new Cardholder() { Name = "Петров П.П.", Balans = 9000 }; Cardholder holder2 = new Cardholder() { Name = "Сидоров С.С.", Balans = 14000 }; Cardholder holder3 = new Cardholder() { Name = "Кузнецов К.К.", Balans = 17000 }; listCardholders.AddRange(new Cardholder[] { holder0, holder1, holder2, holder3 }); // Инициализатор списка полей экранов // listScreenInfo = new List <ScreenInfo>(); ScreenInfo screen0 = new ScreenInfo() { CurrentEnScreen = EnScreens.Initial, Screen1 = "", Screen2 = "", Screen3 = "", Screen4 = "", Screen5 = holder0.Name, Screen6 = holder1.Name, Screen7 = holder2.Name, Screen8 = holder3.Name, ScreenTop = "Добро пожаловать!\r\nВставьте Вашу карту в банкомат", HelpInfo = "Чтобы имитировать вставку карты - нажмите кнопку рядом с владельцем карты" }; ScreenInfo screen1 = new ScreenInfo() { CurrentEnScreen = EnScreens.Password, Screen1 = "", Screen2 = "", Screen3 = "", Screen4 = "", Screen5 = "", Screen6 = "", Screen7 = "", Screen8 = "Вернуть карту", ScreenTop = "Используя кнопки от 0 до 9 ведите пин-код: ", HelpInfo = "Чтобы имитировать ввод реального ПИН-кода - введите любой четырехзначный код с цифровой клавиатуры" }; ScreenInfo screen2 = new ScreenInfo() { CurrentEnScreen = EnScreens.Actions, Screen1 = "", Screen2 = "", Screen3 = "", Screen4 = "", Screen5 = "Внесение наличных", Screen6 = "Выдача наличных", Screen7 = "", Screen8 = "Вернуть карту", ScreenTop = "Добро пожаловать, выберите требуемую операцию:", HelpInfo = "Чтобы выбрать требуемую операцию - просто нажмите на кнопку справа от нее" }; ScreenInfo screen3 = new ScreenInfo() { CurrentEnScreen = EnScreens.OutputSum, Screen1 = "500", Screen2 = "1000", Screen3 = "3000", Screen4 = "5000", Screen5 = "10000", Screen6 = "15000", Screen7 = "20000", Screen8 = "Вернуть карту", ScreenTop = "Выберите сумму для снятия", HelpInfo = "Чтобы выбрать необходимую сумму для снятия - нажмите кнопку рядом с требуемой суммой" }; ScreenInfo screen4 = new ScreenInfo() { CurrentEnScreen = EnScreens.OutputBanknote, Screen1 = "10", Screen2 = "50", Screen3 = "100", Screen4 = "500", Screen5 = "1000", Screen6 = "5000", Screen7 = "Назад", Screen8 = "Вернуть карту", ScreenTop = "Выберите купюрами какого достоинства произвести выдачу", HelpInfo = "Чтобы выбрать необходимый тип купюр - нажмите кнопку рядом с требуемым типом купюр" }; ScreenInfo screen5 = new ScreenInfo() { CurrentEnScreen = EnScreens.OutputResult, Screen1 = "", Screen2 = "", Screen3 = "", Screen4 = "", Screen5 = "", Screen6 = "", Screen7 = "Другие операции", Screen8 = "Вернуть карту", ScreenTop = "Заберите Ваши деньги из окна выдачи", HelpInfo = "Производится операция выдачи наличных из банкомата" }; ScreenInfo screen6 = new ScreenInfo() { CurrentEnScreen = EnScreens.InputBanknote, Screen1 = "10", Screen2 = "50", Screen3 = "100", Screen4 = "500", Screen5 = "1000", Screen6 = "5000", Screen7 = "", Screen8 = "Вернуть карту", ScreenTop = "Выберите купюры какого достоинства будут внесены на Ваш счет", HelpInfo = "Чтобы выбрать необходимый тип купюр - нажмите кнопку рядом с требуемым типом купюр" }; ScreenInfo screen7 = new ScreenInfo() { CurrentEnScreen = EnScreens.InputQuantity, Screen1 = "5", Screen2 = "10", Screen3 = "15", Screen4 = "20", Screen5 = "25", Screen6 = "30", Screen7 = "Назад", Screen8 = "Вернуть карту", ScreenTop = "Выберите количество вносимых купюр", HelpInfo = "Чтобы выбрать вносимое количество купюр - нажмите кнопку рядом с вносимым количеством купюр" }; ScreenInfo screen8 = new ScreenInfo() { CurrentEnScreen = EnScreens.InputResult, Screen1 = "", Screen2 = "", Screen3 = "", Screen4 = "", Screen5 = "", Screen6 = "", Screen7 = "Другие операции", Screen8 = "Вернуть карту", ScreenTop = "Купюры приняты банкоматом", HelpInfo = "Производится операция внесения наличных в банкомат" }; listScreenInfo.AddRange(new ScreenInfo[] { screen0, screen1, screen2, screen3, screen4, screen5, screen6, screen7, screen8 }); return(true); }