无故事王国
4 天以前 41aa6375f4086c3bbabd00c710c0734b25962d78
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_2_VC.swift
@@ -20,7 +20,6 @@
    private var playedIndex = Set<Int>() //已经播放过的view
    private var voicePlayer = VoicePlayer.share()
    private var isAnsterModel = Set<Listen1SubModel>()
    private var isOpen:Bool = false //是否展示标题文本
    private var studieds = 0
    private var handleClouse:(()->Void)?
    
@@ -59,11 +58,6 @@
        super.viewDidLoad()
        navigationItem.titleView = UIView()
        
        Services.getIsOpen().subscribe(onNext: {data in
            self.isOpen = data.data ?? false
            self.collectionView.reloadData()
        }).disposed(by: disposeBag)
        
        //回传记录,始终保持答题进度
        if let team = teamScheduleModel{
@@ -75,6 +69,13 @@
                }
            }
        }
        rootViewModel.currentPage.subscribe(onNext: {[unowned self] cpage in
            if cpage == self.page{
                self.restore()
                self.resetStackView()
            }
        }).disposed(by: disposeBag)
    }
    
    override func viewDidAppear(_ animated: Bool) {
@@ -89,6 +90,7 @@
    }
    
    func restore(){
        studieds = 0
        playedIndex.removeAll()
        tempViews.removeAll()
        
@@ -160,10 +162,9 @@
            handleView.view_choose.alpha = 0
            handleView.btn_choose.tag = 10 + index
            handleView.tag = 20 + index
            let row = viewModel.selectIndex.value!.row
            let model = listenNewModel.subjectList[page][row]
            let model = listenNewModel.subjectList[page][studieds]
            if index == 0{
                handleView.vioceSoundUrl = model.correct
            }
@@ -183,17 +184,17 @@
            
            handleView.chooseClouse {[weak self] btn in
                guard let weakSelf = self else { return }
                if weakSelf.playedIndex.count < 3{
                    handleView.btn_choose.isSelected = false
                    alertError(msg: "请听完");return
                }
//                if weakSelf.playedIndex.count < 3{
//                    handleView.btn_choose.isSelected = false
//                    alertError(msg: "请听完");return
//                }
                handleView.view_choose.alpha = 1
                var lessionType:Fight_lessonType = .none
                if handleView.vioceSoundUrl == weakSelf.listenNewModel.subjectList[weakSelf.page][row].correct{
                if handleView.vioceSoundUrl == weakSelf.listenNewModel.subjectList[weakSelf.page][weakSelf.studieds].correct{
                    lessionType = .success
                    weakSelf.voicePlayer.playSuccessVoice()
                    let teamId = weakSelf.listenNewModel.data?.id.components(separatedBy: ",")[weakSelf.page]
                    let answerId = weakSelf.listenNewModel.subjectList[weakSelf.page][row].id
                    let answerId = weakSelf.listenNewModel.subjectList[weakSelf.page][weakSelf.studieds].id
                    weakSelf.rootViewModel.insertCorrectAnswer(teamId: teamId, answerId: answerId)
                }else{
                    lessionType = .fail
@@ -218,7 +219,7 @@
                    }
                    
                    let i = ceil(handleView.x / 300).int
                    if let cell = self?.collectionView.cellForItem(at: self!.viewModel.selectIndex.value!) as? ListenFight_lesson_1_CCell{
                    if let cell = self?.collectionView.cellForItem(at: IndexPath(row: weakSelf.studieds, section: 0)) as? ListenFight_lesson_1_CCell{
                        self?.viewModel.answerType.accept(.success)
                        self?.answerSuccess(cell,index: i)
                        
@@ -259,9 +260,9 @@
                make.width.greaterThanOrEqualTo(221)
            }
            tempViews.append(handleView)
            tempViews.shuffle()
        }
        tempViews.shuffle() //乱序
        stackView.addArrangedSubviews(tempViews)
        
        DispatchQueue.main.asyncAfter(deadline: .now()+1) {
@@ -274,16 +275,15 @@
    }
    
    private func answerSuccess(_ cell:ListenFight_lesson_1_CCell,index:Int){
        studieds += 1
        let studyHandleView = stackView.arrangedSubviews[index] as! StudyHandleView
        let bounds = studyHandleView.convert(studyHandleView.bounds, to: self.view)
        
        //copy试图放在上面进行覆盖
        let copyHandleView = studyHandleView.copyView()
        copyHandleView.view_choose.isHidden = true
        copyHandleView.listenType = .lesson2
        copyHandleView.isplaying()
        copyHandleView.resetView()
        copyHandleView.alpha = 1
        copyHandleView.vioceSoundUrl = listenNewModel.subjectList[page][self.viewModel.selectIndex.value!.row].correct
        copyHandleView.jq_cornerRadius = 0
        view.addSubview(copyHandleView)
@@ -309,20 +309,21 @@
            self.view.layoutIfNeeded()
        }completion: { complete in
            if complete{
                self.voicePlayer.playerAt(url: self.listenNewModel.subjectList[self.page][self.viewModel.selectIndex.value!.row].correct)
                self.studieds += 1
                //答完题了
                if self.studieds == 4{
                    NotificationCenter.default.post(name: NextLession_Noti, object: nil)
                    return
                }
                self.resetStackView()
            }
        }
    }
    
    private func resetStackView(){
        playedIndex.removeAll()
        let newRow = viewModel.selectIndex.value!.row+1
        if newRow >= listenNewModel.subjectList[page].count{ //防止坐标越界
            NotificationCenter.default.post(name: NextLession_Noti, object: nil);return
        }
        collectionView.reloadData()
        viewModel.selectIndex.accept(IndexPath(row: newRow, section: 0))
        addStackView()
    }
    
@@ -354,14 +355,7 @@
        }else{
            cell.backgroundColor = .white
        }
        //            if viewModel.selectIndex.value?.row == indexPath.row && isOpen{
        //                cell.label_title.isHidden = false
        //            }else{
        cell.label_title.isHidden = true
        //            }
        
        cell.setListen1SubModel(listenNewModel.subjectList[page][indexPath.row])
        cell.label_title.text = listenNewModel.subjectList[page][indexPath.row].name
@@ -393,51 +387,58 @@
        view.isUserInteractionEnabled = true
        //对已经播放过的View,进行刷新
        for sub in stackView.arrangedSubviews as! [StudyHandleView]{
            sub.btn_pay.isEnabled = true
            sub.btn_choose.isEnabled = true
            if playedIndex.contains(sub.tag){
            if sub.alpha == 0{
                sub.isplaying()
                sub.voicePlayer.playerAt(url: sub.vioceSoundUrl)
                return
            }else{
                sub.btn_pay.isEnabled = true
                sub.btn_choose.isEnabled = true
                sub.resetView()
                sub.view_choose.alpha = playedIndex.contains(sub.tag) ? 1:0
            }
//            if playedIndex.contains(sub.tag){
//                sub.view_choose.alpha = playedIndex.contains(sub.tag) ? 1:0
//            }
        }
        
        
        for sub in view.subviews{
            if let v = sub as? StudyHandleView{
                v.resetView()
            }
        }
//        for sub in view.subviews{
//            if let v = sub as? StudyHandleView{
//                v.resetView()
//            }
//        }
        
        for v in tempViews{
            if v.isplayend{
                v.resetView()
            }
        }
//        for v in tempViews{
//            if v.isplayend{
//                v.resetView()
//            }
//        }
        
        for (i,v) in tempViews.enumerated(){
            if v.isplayend == false{
                self.playedIndex.insert(i)
                v.isplaying()
                voicePlayer.playerAt(url: v.vioceSoundUrl)
                break
            }
        }
//        for (i,v) in tempViews.enumerated(){
//            if v.isplayend == false{
//                self.playedIndex.insert(i)
//                v.isplaying()
//                voicePlayer.playerAt(url: v.vioceSoundUrl)
//                break
//            }
//        }
        
        
        if viewModel.answerType.value == .success{
            let v = rootViewModel.answerCount.value
            rootViewModel.answerCount.accept(v + 1)
            viewModel.answerType.accept(.none)
            for sub in stackView.arrangedSubviews as! [StudyHandleView]{
                sub.btn_pay.isEnabled = false
                sub.btn_choose.isEnabled = false
            }
            DispatchQueue.main.asyncAfter(deadline: .now()+2) {
                self.resetStackView()
            }
        }
//        if viewModel.answerType.value == .success{
//            let v = rootViewModel.answerCount.value
//            rootViewModel.answerCount.accept(v + 1)
//            viewModel.answerType.accept(.none)
//
//            for sub in stackView.arrangedSubviews as! [StudyHandleView]{
//                sub.btn_pay.isEnabled = false
//                sub.btn_choose.isEnabled = false
//            }
//
//            DispatchQueue.main.asyncAfter(deadline: .now()+2) {
//                self.resetStackView()
//            }
//        }
        
    }
}