| | |
| | | |
| | | //所有回答的 |
| | | var answerItems = Dictionary<Int,Any>() //{page:0,data:String,currectAt:0} |
| | | var answerCount = BehaviorRelay<Int>(value: 1) |
| | | } |
| | | |
| | | class HomeListenFightVC: BaseVC { |
| | |
| | | btn_forward.addTarget(self, action: #selector(beforeAction), for: .touchUpInside) |
| | | btn_next.addTarget(self, action: #selector(nextAction), for: .touchUpInside) |
| | | |
| | | setPages() |
| | | pageVC.reloadData() |
| | | |
| | | if viewModel.listenType.value == .game1 || viewModel.listenType.value == .game2{ |
| | | btn_forward.isHidden = true |
| | | label_pageNum.isHidden = true |
| | | |
| | | if viewModel.listenType.value == .game1{ |
| | | showGameLevel() |
| | | } |
| | | }else if viewModel.listenType.value == .story1 || viewModel.listenType.value == .story2{ |
| | | let count = (data as! Listen1Model).storyList.count |
| | | viewModel.maxPage.accept(count) |
| | | label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(viewModel.maxPage.value)" |
| | | }else{ |
| | | pageVC.reloadData() |
| | | } |
| | | // if viewModel.listenType.value == .game1 || viewModel.listenType.value == .game2{ |
| | | // btn_forward.isHidden = true |
| | | // label_pageNum.isHidden = true |
| | | // |
| | | // if viewModel.listenType.value == .game1{ |
| | | // showGameLevel() |
| | | // } |
| | | // }else if viewModel.listenType.value == .story1 || viewModel.listenType.value == .story2{ |
| | | // let count = (data as! Listen1Model).storyList.count |
| | | // viewModel.maxPage.accept(count) |
| | | // label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(viewModel.maxPage.value)" |
| | | // }else{ |
| | | // pageVC.reloadData() |
| | | // } |
| | | |
| | | timer = Timer(fire: .distantPast, interval: 1.0, repeats: true, block: {[weak self] _ in |
| | | self?.viewModel.times += 1 |
| | |
| | | NotificationCenter.default.rx.notification(NextLession_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in |
| | | guard let weakSelf = self else { return } |
| | | let nextPage = weakSelf.viewModel.currentPage.value + 1 |
| | | var asComplete:Bool = false |
| | | switch weakSelf.viewModel.listenType.value { |
| | | case .lesson1,.lesson2:asComplete = nextPage >= (weakSelf.data as! ListenNewModel).subjectList.count |
| | | |
| | | if weakSelf.viewModel.listenType.value == .story2{ |
| | | weakSelf.btn_next.isHidden = (nextPage + 1) == weakSelf.viewModel.maxPage.value |
| | | if weakSelf.btn_next.isHidden{ |
| | | weakSelf.btn_exit.setTitle("完成", for: .normal) |
| | | } |
| | | default:break |
| | | } |
| | | |
| | | //完成 |
| | | if nextPage >= weakSelf.viewModel.maxPage.value{ |
| | | if asComplete{ |
| | | switch weakSelf.viewModel.listenType.value { |
| | | case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5: |
| | | weakSelf.studyComplete() |
| | | case .game1,.game2: |
| | | if let dict = noti.object as? Dictionary<String,Any>{ |
| | | weakSelf.gamesComplete(gameId: dict["gameId"] as! Int,integral: dict["gameIntegral"] as! Int) |
| | | } |
| | | case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5: |
| | | weakSelf.studyComplete() |
| | | case .story1,.story2: |
| | | if let dict = noti.object as? Dictionary<String,Any>{ |
| | | weakSelf.storyComplete(storyId: dict["storyId"] as! Int, integral: dict["storyIntegral"] as! Int) |
| | |
| | | return |
| | | } |
| | | |
| | | self?.listenFightLine = .next |
| | | self?.pageVC.scroll(toPage: nextPage, animation: true) |
| | | self?.viewModel.currentPage.accept(nextPage) |
| | | |
| | | //以下无效代码 |
| | | // if weakSelf.viewModel.listenType.value == .story2{ |
| | | // weakSelf.btn_next.isHidden = (nextPage + 1) == weakSelf.viewModel.maxPage.value |
| | | // if weakSelf.btn_next.isHidden{ |
| | | // weakSelf.btn_exit.setTitle("完成", for: .normal) |
| | | // } |
| | | // } |
| | | // |
| | | // //完成 |
| | | // if nextPage >= weakSelf.viewModel.maxPage.value{ |
| | | // switch weakSelf.viewModel.listenType.value { |
| | | // case .game1,.game2: |
| | | // if let dict = noti.object as? Dictionary<String,Any>{ |
| | | // weakSelf.gamesComplete(gameId: dict["gameId"] as! Int,integral: dict["gameIntegral"] as! Int) |
| | | // } |
| | | // case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5: |
| | | // weakSelf.studyComplete() |
| | | // case .story1,.story2: |
| | | // if let dict = noti.object as? Dictionary<String,Any>{ |
| | | // weakSelf.storyComplete(storyId: dict["storyId"] as! Int, integral: dict["storyIntegral"] as! Int) |
| | | // } |
| | | // } |
| | | // return |
| | | // } |
| | | |
| | | weakSelf.listenFightLine = .next |
| | | weakSelf.pageVC.scroll(toPage: nextPage, animation: true) |
| | | weakSelf.viewModel.currentPage.accept(nextPage) |
| | | }).disposed(by: disposeBag) |
| | | |
| | | viewModel.currentPage.subscribe(onNext: {[weak self]currentPage in |
| | | guard let weakSelf = self else { return } |
| | | self?.btn_forward.isHidden = currentPage <= 0 |
| | | self?.label_pageNum.text = "已完成:\(weakSelf.viewModel.currentPage.value + 1)/\(weakSelf.viewModel.maxPage.value)" |
| | | self?.setPages() |
| | | }).disposed(by: disposeBag) |
| | | |
| | | viewModel.answerCount.subscribe(onNext: {[weak self] count in |
| | | self?.setPages() |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | private func setPages(){ |
| | | switch viewModel.listenType.value{ |
| | | case .lesson1,.lesson2,.lesson3: |
| | | label_pageNum.text = "已完成:\(viewModel.answerCount.value)/\((data as! ListenNewModel).subjectList.flatMap({$0}).count)" |
| | | case .game1,.game2: |
| | | btn_forward.isHidden = true |
| | | label_pageNum.isHidden = true |
| | | |
| | | if viewModel.listenType.value == .game1{ |
| | | showGameLevel() |
| | | } |
| | | case .story1,.story2: |
| | | let count = (data as! Listen1Model).storyList.count |
| | | viewModel.maxPage.accept(count) |
| | | label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(0)" |
| | | default:break |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | /// - Parameter ignorePush: 是否忽略跳转(未完成答题 :true) |
| | | private func studyComplete(){ |
| | | var toalIntegral:Int = 0 |
| | | var ids = [Int]() |
| | | for v in viewModel.answerItems.values{ |
| | | if let v = v as? Listen1Model{ |
| | | toalIntegral += v.data?.integral ?? 0 |
| | | ids.append(v.data?.studyId ?? 0) |
| | | } |
| | | var ids:String = "" |
| | | |
| | | switch viewModel.listenType.value { |
| | | case .lesson1,.lesson2: |
| | | let data = (data as! ListenNewModel).data |
| | | ids = data?.id ?? "" |
| | | toalIntegral = data?.integral ?? 0 |
| | | default:break |
| | | } |
| | | |
| | | |
| | | //有答题过程 |
| | | //完成进度 |
| | | var isComplete = false |
| | | switch viewModel.listenType.value { |
| | | case .lesson1:isComplete = studyScheduleModel?.listen == 100 |
| | | case .lesson2:isComplete = studyScheduleModel?.look == 100 |
| | | case .lesson3:isComplete = studyScheduleModel?.induction == 100 |
| | | case .lesson4:isComplete = studyScheduleModel?.answer == 100 |
| | | case .lesson5:isComplete = studyScheduleModel?.pair == 100 |
| | | default:isComplete = false |
| | | } |
| | | //完成进度 |
| | | var isComplete = false |
| | | switch viewModel.listenType.value { |
| | | case .lesson1:isComplete = studyScheduleModel?.listen == 100 |
| | | case .lesson2:isComplete = studyScheduleModel?.look == 100 |
| | | case .lesson3:isComplete = studyScheduleModel?.induction == 100 |
| | | case .lesson4:isComplete = studyScheduleModel?.answer == 100 |
| | | case .lesson5:isComplete = studyScheduleModel?.pair == 100 |
| | | default:isComplete = false |
| | | } |
| | | |
| | | Services.completeLearing(type: viewModel.listenType.value.rawValue, studyTime: viewModel.times, studyIds: ids, isComplete: isComplete).subscribe(onNext: {data in |
| | | NotificationCenter.default.post(name: Refresh_ListenSchedule_Noti, object: nil) |
| | | }).disposed(by: disposeBag) |
| | | Services.completeLearing(type: viewModel.listenType.value.rawValue, studyTime: viewModel.times, studyIds: ids, isComplete: isComplete).subscribe(onNext: {data in |
| | | NotificationCenter.default.post(name: Refresh_ListenSchedule_Noti, object: nil) |
| | | }).disposed(by: disposeBag) |
| | | |
| | | timer.invalidate() |
| | | |
| | | let vc = HomeStudyCompleteVC(correctNum: viewModel.correctNum, errorNum: viewModel.errorNum, totalCoin: toalIntegral, listenType: viewModel.listenType.value) |
| | | vc.title = viewModel.listenType.value.rawTitle |
| | | push(vc: vc) |
| | | let vc = HomeStudyCompleteVC(correctNum: viewModel.correctNum, errorNum: viewModel.errorNum, totalCoin: toalIntegral, listenType: viewModel.listenType.value) |
| | | vc.title = viewModel.listenType.value.rawTitle |
| | | push(vc: vc) |
| | | } |
| | | |
| | | //游戏类完成 |
| | |
| | | extension HomeListenFightVC:FFPageViewControllerDelegate{ |
| | | func totalPagesOfpageViewController(_ pageViewConteoller: FFPageViewController) -> UInt { |
| | | |
| | | switch viewModel.listenType.value { |
| | | case .lesson1,.lesson2,.lesson3:return UInt((data as! ListenNewModel).subjectList.count) |
| | | default:break |
| | | } |
| | | |
| | | |
| | | //超级听力,只有一页 |
| | | if viewModel.listenType.value == .game1 || viewModel.listenType.value == .game2{ |
| | | return 1 |
| | |
| | | } |
| | | |
| | | func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController { |
| | | print("加载======") |
| | | if viewModel.listenType.value == .lesson1{ |
| | | let vc = HomeListenFight_lesson_1_VC(page: page,listen1Model:data as! Listen1Model) |
| | | let vc = HomeListenFight_lesson_1_VC(page: page,listenNewModel:data as! ListenNewModel) |
| | | vc.rootViewModel = viewModel |
| | | return vc |
| | | } |
| | | |
| | | if viewModel.listenType.value == .lesson2{ |
| | | let vc = HomeListenFight_lesson_2_VC(page: page,listen1Model:data as! Listen1Model) |
| | | let vc = HomeListenFight_lesson_2_VC(page: page,listenNewModel:data as! ListenNewModel) |
| | | vc.rootViewModel = viewModel |
| | | return vc |
| | | } |
| | | |
| | | if viewModel.listenType.value == .lesson3{ |
| | | let vc = HomeListenFight_lesson_3_VC(page: page, listen1Model: data as! Listen1Model) |
| | | let vc = HomeListenFight_lesson_3_VC(page: page, listenNewModel: data as! ListenNewModel) |
| | | vc.rootViewModel = viewModel |
| | | return vc |
| | | } |