| | |
| | | |
| | | let NextLession_Noti = Notification.Name.init("NextLession_Noti") |
| | | |
| | | enum ListenType{ |
| | | case lesson1 //自主学习-听音选图 |
| | | case lesson2 //自主学习-看图选音 |
| | | case lesson3 //自主学习-归纳排除 |
| | | case lesson4 //自主学习-有问有答 |
| | | case lesson5 //自主学习-音图相配 |
| | | case game1 //游戏类型-超级听力 |
| | | case game2 //游戏类型-超级记忆 |
| | | case story1 //故事类型-自主故事1-看图配音 |
| | | case story2 //故事类型-自主故事2-框架记忆 |
| | | enum ListenType:Int{ |
| | | case lesson1 = 1 //自主学习-听音选图 |
| | | case lesson2 = 2 //自主学习-看图选音 |
| | | case lesson3 = 3 //自主学习-归纳排除 |
| | | case lesson4 = 4 //自主学习-有问有答 |
| | | case lesson5 = 5 //自主学习-音图相配 |
| | | case game1 = 6 //游戏类型-超级听力 |
| | | case game2 = 7 //游戏类型-超级记忆 |
| | | case story1 = 8 //故事类型-自主故事1-看图配音 |
| | | case story2 = 9 //故事类型-自主故事2-框架记忆 |
| | | |
| | | var rawTitle:String{ |
| | | switch self { |
| | | case .lesson1:return "自主学习1-听音选图" |
| | | case .lesson2:return "自主学习2-看图选音" |
| | | case .lesson3:return "自主学习3-归纳排除" |
| | | case .lesson4:return "自主学习4-有问有答" |
| | | case .lesson5:return "自主学习5-音图相配" |
| | | case .game1:return "游戏类型1-超级听力" |
| | | case .game2:return "游戏类型2-超级记忆" |
| | | case .story1:return "自主故事1-看图配音" |
| | | case .story2:return "自主故事2-框架记忆" |
| | | } |
| | | } |
| | | } |
| | | |
| | | class HomeListenFightViewModel{ |
| | |
| | | var currentPage = BehaviorRelay<Int>(value: 0) |
| | | var maxPage = BehaviorRelay<Int>(value: 5) |
| | | var listenType = BehaviorRelay<ListenType>(value:.lesson1) |
| | | var times:Int = 0 |
| | | |
| | | //回答错误数量 |
| | | var correctNum:Int = 0{ |
| | | didSet{ |
| | | print("回答正确:\(correctNum)") |
| | | } |
| | | } |
| | | |
| | | var errorNum:Int = 0{ |
| | | didSet{ |
| | | print("回答错误:\(correctNum)") |
| | | } |
| | | } |
| | | |
| | | //所有回答的 |
| | | var answerItems = Dictionary<Int,Any>() //{page:0,data:String,currectAt:0} |
| | | } |
| | | |
| | | class HomeListenFightVC: BaseVC { |
| | | |
| | | private var viewModel = HomeListenFightViewModel() |
| | | var data:Any? |
| | | |
| | | private lazy var label_pageNum:UILabel = { |
| | | let label = UILabel() |
| | |
| | | private lazy var pageVC:FFPageViewController = { |
| | | let vc = FFPageViewController() |
| | | vc.scrollview.isScrollEnabled = false |
| | | vc.prePages = UInt(viewModel.maxPage.value) / 2 |
| | | vc.maxPages = UInt(viewModel.maxPage.value) + 1 |
| | | return vc |
| | | }() |
| | | |
| | | private var timer:Timer! |
| | | |
| | | |
| | | init(listenType:ListenType) { |
| | |
| | | label_pageNum.isHidden = true |
| | | } |
| | | |
| | | timer = Timer(fire: .distantPast, interval: 1.0, repeats: true, block: {[weak self] _ in |
| | | self?.viewModel.times += 1 |
| | | }) |
| | | |
| | | timer.fire() |
| | | RunLoop.current.add(timer, forMode: .common) |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | |
| | | //完成 |
| | | if nextPage >= weakSelf.viewModel.maxPage.value{ |
| | | let vc = HomeStudyCompleteVC() |
| | | vc.title = "自主学习1-听音选图" |
| | | |
| | | var toalIntegral:Int = 0 |
| | | var ids = [Int]() |
| | | for v in weakSelf.viewModel.answerItems.values{ |
| | | if let v = v as? Listen1Model{ |
| | | toalIntegral += v.data?.integral ?? 0 |
| | | ids.append(v.data?.studyId ?? 0) |
| | | } |
| | | } |
| | | |
| | | Services.completeLearing(type: weakSelf.viewModel.listenType.value.rawValue, studyTime: weakSelf.viewModel.times, studyIds: ids, isComplete: false).subscribe(onNext: {data in |
| | | |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | |
| | | weakSelf.timer.invalidate() |
| | | let vc = HomeStudyCompleteVC(correctNum: weakSelf.viewModel.correctNum, errorNum: weakSelf.viewModel.errorNum, totalCoin: toalIntegral) |
| | | vc.title = weakSelf.viewModel.listenType.value.rawTitle |
| | | weakSelf.push(vc: vc) |
| | | return |
| | | } |
| | |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | deinit{ |
| | | timer.invalidate() |
| | | } |
| | | |
| | | @objc func quitAction(){ |
| | | CommonAlertView.show(content: "未完成全部答题,确认退出吗?") { |
| | | self.navigationController?.popViewController(animated: true) |
| | |
| | | } |
| | | |
| | | @objc func beforeAction(){ |
| | | let beforePage = max(1, viewModel.currentPage.value - 1) |
| | | let beforePage = max(0, viewModel.currentPage.value - 1) |
| | | pageVC.scroll(toPage: beforePage, animation: true) |
| | | viewModel.currentPage.accept(beforePage) |
| | | } |
| | |
| | | func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController { |
| | | |
| | | if viewModel.listenType.value == .lesson1{ |
| | | let vc = HomeListenFight_lesson_1_VC() |
| | | let vc = HomeListenFight_lesson_1_VC(page: page,listen1Model:data as! Listen1Model) |
| | | vc.rootViewModel = viewModel |
| | | return vc |
| | | } |
| | | |
| | | if viewModel.listenType.value == .lesson2{ |
| | | let vc = HomeListenFight_lesson_2_VC() |
| | | let vc = HomeListenFight_lesson_2_VC(page: page,listen1Model:data as! Listen1Model) |
| | | vc.rootViewModel = viewModel |
| | | return vc |
| | | } |
| | | |
| | | if viewModel.listenType.value == .lesson3{ |
| | | let vc = HomeListenFight_lesson_3_VC() |
| | | let vc = HomeListenFight_lesson_3_VC(page: page, listen1Model: data as! Listen1Model) |
| | | vc.rootViewModel = viewModel |
| | | return vc |
| | | } |
| | | |
| | | if viewModel.listenType.value == .lesson4{ |
| | | let vc = HomeListenFight_lesson_4_VC() |
| | | let vc = HomeListenFight_lesson_4_VC(page: page, listen4Model: data as! Listen4Model) |
| | | vc.rootViewModel = viewModel |
| | | return vc |
| | | } |
| | | |
| | | if viewModel.listenType.value == .lesson5{ |
| | | let vc = HomeListenFight_lesson_5_VC() |
| | | let vc = HomeListenFight_lesson_5_VC(page: page, listen1Model: data as! Listen1Model) |
| | | vc.rootViewModel = viewModel |
| | | return vc |
| | | } |
| | | |