fix
无故事王国
2024-06-06 6f7f02d5c8880ff670b2c694fe61f5af5a6e3e36
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift
@@ -11,16 +11,30 @@
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{
@@ -29,11 +43,28 @@
            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()
@@ -81,8 +112,12 @@
            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) {
@@ -112,6 +147,12 @@
                                    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() {
@@ -172,8 +213,23 @@
                                    //完成
                                    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
                                    }
@@ -189,6 +245,10 @@
                        }).disposed(by: disposeBag)
            }
            deinit{
                        timer.invalidate()
            }
            @objc func quitAction(){
                        CommonAlertView.show(content: "未完成全部答题,确认退出吗?") {
                                    self.navigationController?.popViewController(animated: true)
@@ -196,7 +256,7 @@
            }
            @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)
            }
@@ -214,27 +274,32 @@
            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
                        }