| | |
| | | |
| | | private var treeInfoModel:TreeInfoModel? |
| | | |
| | | private var ruleView:TreeTeskFirstRuleView? |
| | | |
| | | private var maxLevel:TreeLevel? |
| | | private var currentLevel:TreeLevel? |
| | | |
| | | private lazy var voicePlayer:AVPlayer = { |
| | | let p = AVPlayer() |
| | | return p |
| | |
| | | if settingModel!.userFirstOpenTreeTask{ |
| | | DispatchQueue.main.asyncAfter(delay: 0.5) { |
| | | let h = (JQ_ScreenW - 90) * 0.8766 |
| | | TreeTeskFirstRuleView.show(title: "生命之树", content:"亲爱的家人,生命之树的种子已植入这片沃土,请以农夫的心态用心浇灌,为你加油哦。",textAlignment: .left,height: h,textTopOffset: 22) |
| | | self.ruleView = TreeTeskFirstRuleView.show(title: "生命之树", content:"亲爱的家人,生命之树的种子已植入这片沃土,请以农夫的心态用心浇灌,为你加油哦。",textAlignment: .left,height: h,textTopOffset: 22) |
| | | self.voicePlayer.replaceCurrentItem(with: AVPlayerItem(url: URL(string: TreeLevel.level_1.sound)!)) |
| | | self.voicePlayer.play() |
| | | self.ruleView?.setEnableBtn(state: false) |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | private func getTreeData(){ |
| | | |
| | | //缓存的树苗信息 |
| | |
| | | if let m = data.data{ |
| | | self.taskListView.setTreeInfoModel(m) |
| | | self.treeInfoModel = m |
| | | if self.currentLevel == nil{ |
| | | self.currentLevel = m.treeLevelType |
| | | } |
| | | self.updateTreeInfo() |
| | | self.updateAni(false) |
| | | try? self.cacheTreeInfoModel.save(m) |
| | |
| | | } |
| | | |
| | | private func updateTreeInfo(){ |
| | | btn_seedingAgain.isHidden = treeInfoModel!.treeLevelType != .level_10 |
| | | btn_seedingAgain.isHidden = currentLevel != .level_10 |
| | | |
| | | icon_energy.text = String(format: "当前能量值:%ld", treeInfoModel!.energyValue) |
| | | setProgress(current: treeInfoModel!.growthValue, total: treeInfoModel!.nextLevel) |
| | |
| | | |
| | | @IBAction func sowAgainAction(_ sender: UIButton) { |
| | | Services.sowAgain().subscribe(onNext: {[weak self] _ in |
| | | self?.currentLevel = nil |
| | | self?.getTreeData() |
| | | |
| | | if self?.treeInfoModel?.treeLevelType == .level_10{ |
| | | if let soundURL = URL(string:TreeLevel.level_1.sound){ |
| | | self?.voicePlayer.replaceCurrentItem(with: AVPlayerItem(url: soundURL)) |
| | | self?.voicePlayer.play() |
| | | } |
| | | let h = (JQ_ScreenW - 90) * 0.7729 |
| | | self?.ruleView = TreeTeskFirstRuleView.show(title: "生命之树", content:TreeLevel.level_1.titleContent,textAlignment: .center,height: h,textTopOffset: 57,clickClouse: { |
| | | |
| | | }) |
| | | |
| | | if let soundURL = URL(string:TreeLevel.level_1.sound){ |
| | | self?.voicePlayer.replaceCurrentItem(with: AVPlayerItem(url: soundURL)) |
| | | self?.voicePlayer.play() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | if currentItem?.url == notifiUrl?.url{ |
| | | self?.player.seek(to: CMTime.zero) |
| | | self?.player.play() |
| | | } |
| | | |
| | | //播放音频完成 |
| | | if let voiceUrl = (self?.voicePlayer.currentItem?.asset as? AVURLAsset){ |
| | | if voiceUrl.url == notifiUrl?.url{ |
| | | self?.ruleView?.setEnableBtn(state: true) |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | private func next(){ |
| | | currentLevel?.updateLevel() |
| | | guard let currentL = currentLevel else {return} |
| | | guard let maxL = maxLevel else {return} |
| | | if currentL.rawValue > maxL.rawValue{return} |
| | | |
| | | |
| | | let h = (JQ_ScreenW - 90) * 0.7729 |
| | | ruleView = TreeTeskFirstRuleView.show(title: "生命之树", content:currentL.titleContent,textAlignment: .center,height: h,textTopOffset: 57,clickClouse: {[weak self] () in |
| | | if currentL.rawValue != maxL.rawValue || currentL != TreeLevel.level_10{ |
| | | self?.next() |
| | | } |
| | | }) |
| | | |
| | | if let soundURL = URL(string:currentL.sound){ |
| | | voicePlayer.replaceCurrentItem(with: AVPlayerItem(url: soundURL)) |
| | | voicePlayer.play() |
| | | } |
| | | |
| | | ruleView?.setEnableBtn(state: false) |
| | | |
| | | updateAni() |
| | | getTreeData() |
| | | updateTreeInfo() |
| | | } |
| | | |
| | | //能量明细 |
| | | @IBAction func energyDetailAction(_ sender: TapBtn) { |
| | | guard sceneDelegate!.checkisLoginState() else {return} |
| | |
| | | if let m = data.data{ |
| | | sender.isUserInteractionEnabled = true |
| | | if m.isNext{ |
| | | weakSelf.maxLevel = m.treeLevelType |
| | | weakSelf.treeInfoModel!.treeLevelType = m.treeLevelType |
| | | |
| | | let h = (JQ_ScreenW - 90) * 0.7729 |
| | | TreeTeskFirstRuleView.show(title: "什么之树", content:weakSelf.treeInfoModel!.treeLevelType.titleContent,textAlignment: .center,height: h,textTopOffset: 57) |
| | | |
| | | if let soundURL = URL(string:weakSelf.treeInfoModel?.treeLevelType.sound){ |
| | | weakSelf.voicePlayer.replaceCurrentItem(with: AVPlayerItem(url: soundURL)) |
| | | weakSelf.voicePlayer.play() |
| | | } |
| | | weakSelf.next() |
| | | } |
| | | |
| | | weakSelf.updateAni() |
| | | weakSelf.getTreeData() |
| | | |
| | | weakSelf.treeInfoModel?.growthValue = m.growthValue |
| | | weakSelf.treeInfoModel?.energyValue = 0 |
| | | weakSelf.treeInfoModel?.nextLevel = m.nextLevel |
| | | weakSelf.updateTreeInfo() |
| | | |
| | | NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | |
| | | } |
| | | |
| | | private func updateAni(_ needAni:Bool = true){ |
| | | let treeLevel = treeInfoModel?.treeLevelType ?? .level_1 |
| | | guard let treeLevel = currentLevel else {return} |
| | | |
| | | guard let animateUrl = Bundle.main.url(forResource: treeLevel.aniResource, withExtension: "png") else {return} |
| | | guard let staticDroopUrl = Bundle.main.url(forResource: treeLevel.staticDroopResource, withExtension: "png") else {return} |