// // BoomInfoViewController.m // YuMi // // Created by P on 2024/9/29. // #import "BoomInfoViewController.h" #import "BoomInfoModel.h" #import "RoomBoomManager.h" #import "RoomBoomExplosionView.h" #import "XPRoomGiftAnimationParser.h" #import @interface RocketBox : UIView @property (nonatomic, strong) NetImageView *icon; @property (nonatomic, strong) UILabel *levelLabel; @property (nonatomic, assign) NSInteger level; @property (nonatomic, assign) BOOL isSelected; @property (nonatomic, copy) void(^didTapRocket)(NSInteger level); @end @implementation RocketBox - (instancetype)init { if (self = [super init]) { [self setupUI]; [self setupTap]; } return self; } - (void)setupUI { [self addSubview:self.icon]; [self.icon mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.mas_equalTo(0); make.leading.mas_equalTo(4.5); make.width.mas_equalTo(23); make.height.mas_equalTo(36); }]; [self addSubview:self.levelLabel]; [self.levelLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.mas_equalTo(self); make.leading.mas_equalTo(self.icon.mas_trailing).offset(7); make.trailing.mas_equalTo(0); }]; } - (void)setupTap { UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap)]; [self addGestureRecognizer:tap]; } - (void)handleTap { if (_didTapRocket) { self.didTapRocket(self.level); } } - (void)setLevel:(NSInteger)level { _level = level; self.levelLabel.text = [NSString stringWithFormat:@"LV.%ld", (long)level]; } - (void)setIsSelected:(BOOL)isSelected { _isSelected = isSelected; if (isSelected) { self.backgroundColor = UIColorFromRGB(0x9739FF); } else { self.backgroundColor = [UIColor clearColor]; } } - (NetImageView *)icon { if (!_icon) { _icon = [[NetImageView alloc] init]; _icon.userInteractionEnabled = YES; } return _icon; } - (UILabel *)levelLabel { if (!_levelLabel) { _levelLabel = [UILabel labelInitWithText:@"" font:kFontMedium(12) textColor:UIColorFromRGB(0xF8F4C9)]; _levelLabel.textAlignment = NSTextAlignmentCenter; _levelLabel.userInteractionEnabled = YES; } return _levelLabel; } @end @interface BoomInfoViewController () @property (nonatomic, strong) UIView *giftsView; @property (nonatomic, strong) NetImageView *giftBig; @property (nonatomic, strong) NetImageView *giftSmall_1; @property (nonatomic, strong) NetImageView *giftSmall_2; @property (nonatomic, strong) NetImageView *giftSmall_3; @property (nonatomic, strong) NetImageView *giftSmall_4; @property (nonatomic, strong) RocketBox *rocket_lv_1; @property (nonatomic, strong) RocketBox *rocket_lv_2; @property (nonatomic, strong) RocketBox *rocket_lv_3; @property (nonatomic, strong) RocketBox *rocket_lv_4; @property (nonatomic, strong) RocketBox *rocket_lv_5; @property (nonatomic, strong) UILabel *progressLabel; @property (nonatomic, copy) NSArray * boomInfoArray; @property (nonatomic, strong) VAPView *vapView; @property (nonatomic, strong) XPRoomGiftAnimationParser *vapParser; @property (nonatomic, assign) NSInteger selectedIndex; @property (nonatomic, strong) UIImageView *progressBar; @property (nonatomic, strong) UIView *rankingView; @property (nonatomic, strong) NetImageView *rankAvatar_1; @property (nonatomic, strong) NetImageView *rankAvatar_2; @property (nonatomic, strong) NetImageView *rankAvatar_3; @property (nonatomic, strong) UILabel *rankName_1; @property (nonatomic, strong) UILabel *rankName_2; @property (nonatomic, strong) UILabel *rankName_3; @end @implementation BoomInfoViewController - (instancetype)init { if (self = [super init]) { self.view.backgroundColor = [UIColor clearColor]; } return self; } - (void)dealloc { [self.vapView stopHWDMP4]; [self.vapView removeFromSuperview]; self.vapView = nil; [[RoomBoomManager sharedManager] removeEventListenerForTarget:self]; } - (void)viewDidLoad { [super viewDidLoad]; [self setupUI]; @kWeakify(self); [[RoomBoomManager sharedManager] registerBoomProgressUpdate:^(id _Nonnull sth) { @kStrongify(self); if ([sth isKindOfClass:[BoomDetailModel class]]) { self.boomInfoArray = [[RoomBoomManager sharedManager] loadBoomDetails]; } } target:self]; self.selectedIndex = -1; self.boomInfoArray = [[RoomBoomManager sharedManager] loadBoomDetails]; for (BoomDetailModel *boom in self.boomInfoArray) { if (boom.currLevel == 1 || boom.speed > 0) { [self handleTapRocket:boom level:boom.level]; } switch (boom.level) { case 1: self.rocket_lv_1.icon.imageUrl = boom.pic; break; case 2: self.rocket_lv_2.icon.imageUrl = boom.pic; break; case 3: self.rocket_lv_3.icon.imageUrl = boom.pic; break; case 4: self.rocket_lv_4.icon.imageUrl = boom.pic; break; case 5: self.rocket_lv_5.icon.imageUrl = boom.pic; break; default: break; } } if (self.selectedIndex == -1) { [self handleTapRocket:nil level:1]; } } - (void)setBoomInfoArray:(NSArray *)boomInfoArray { _boomInfoArray = boomInfoArray; if (self.selectedIndex != -1) { [self handleTapRocket:nil level:self.selectedIndex]; } } - (void)setupUI { UIImageView *backgroundImageView = [self backgroundImageView]; [self.view addSubview:backgroundImageView]; [backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.leading.trailing.mas_equalTo(self.view); make.top.mas_equalTo(self.view).offset(kGetScaleWidth(154)); }]; UIButton *leaveButton = [self leaveButton]; [self.view addSubview:leaveButton]; [leaveButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.leading.trailing.mas_equalTo(self.view); make.height.mas_equalTo(kGetScaleWidth(188)); }]; _vapView = [[VAPView alloc] init]; _vapView.contentMode = UIViewContentModeScaleAspectFill; [self.view addSubview:_vapView]; [_vapView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.view); make.top.mas_equalTo(self.view).offset(kGetScaleWidth(170) - kSafeAreaBottomHeight); make.width.mas_equalTo(kGetScaleWidth(211)); make.height.mas_equalTo(kGetScaleWidth(489)); }]; [self.view addSubview:self.giftsView]; [self.giftsView mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.leading.trailing.mas_equalTo(self.view); make.height.mas_equalTo(kGetScaleWidth(230+65) + kSafeAreaBottomHeight); }]; UIButton *bottomButton = [self bottomButton]; [self.giftsView addSubview:bottomButton]; [bottomButton mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.giftsView); make.bottom.mas_equalTo(self.view).offset(kGetScaleWidth(-11)); make.width.mas_equalTo(kGetScaleWidth(340)); make.height.mas_equalTo(kGetScaleWidth(44)); }]; UIImageView *jackpotBackgroundImageView = [self jackpotBackgroundImageView]; [self.giftsView addSubview:jackpotBackgroundImageView]; [jackpotBackgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(self.giftsView).offset(kGetScaleWidth(-65)); make.centerX.mas_equalTo(self.giftsView); make.width.mas_equalTo(kGetScaleWidth(355)); make.height.mas_equalTo(kGetScaleWidth(230)); }]; UIButton *helpButton = [self helpButton]; [self.giftsView addSubview:helpButton]; [helpButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(jackpotBackgroundImageView).offset(-8); make.trailing.mas_equalTo(jackpotBackgroundImageView).offset(-3); make.width.height.mas_equalTo(43); }]; UIImageView *jackpotTitleImageView = [self jackpotTitleView]; [self.giftsView addSubview:jackpotTitleImageView]; [jackpotTitleImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(jackpotBackgroundImageView); make.centerY.mas_equalTo(helpButton); make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(166), kGetScaleWidth(52))); }]; UILabel *tipsLabel = [self jackpotTipsLabel]; [self.giftsView addSubview:tipsLabel]; [tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(jackpotTitleImageView.mas_bottom).offset(4.5); make.leading.mas_equalTo(jackpotBackgroundImageView).offset(28); make.trailing.mas_equalTo(jackpotBackgroundImageView).offset(-28); make.height.mas_equalTo(12); }]; UIImageView *giftBigBG = [self jackpotGiftBigBG]; [self.giftsView addSubview:giftBigBG]; [giftBigBG mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(tipsLabel.mas_bottom).offset(11.5); make.bottom.mas_equalTo(jackpotBackgroundImageView).offset(-11); make.leading.mas_equalTo(jackpotBackgroundImageView).offset(32); make.width.mas_equalTo(kGetScaleWidth(120)); }]; [giftBigBG addSubview:self.giftBig]; [self.giftBig mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(giftBigBG); make.size.mas_equalTo(giftBigBG).multipliedBy(0.8); }]; UIImageView *giftSmall_1 = [self jackpotGiftSmallBG]; [self.giftsView addSubview:giftSmall_1]; [giftSmall_1 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(giftBigBG); make.leading.mas_equalTo(giftBigBG.mas_trailing).offset(13); make.width.height.mas_equalTo(kGetScaleWidth(73.5)); }]; [giftSmall_1 addSubview:self.giftSmall_1]; [self.giftSmall_1 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(giftSmall_1); make.size.mas_equalTo(giftSmall_1).multipliedBy(0.8); }]; UIImageView *giftSmall_2 = [self jackpotGiftSmallBG]; [self.giftsView addSubview:giftSmall_2]; [giftSmall_2 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(giftBigBG); make.leading.mas_equalTo(giftSmall_1.mas_trailing).offset(13); make.width.height.mas_equalTo(kGetScaleWidth(73.5)); }]; [giftSmall_2 addSubview:self.giftSmall_2]; [self.giftSmall_2 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(giftSmall_2); make.size.mas_equalTo(giftSmall_2).multipliedBy(0.8); }]; UIImageView *giftSmall_3 = [self jackpotGiftSmallBG]; [self.giftsView addSubview:giftSmall_3]; [giftSmall_3 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(giftSmall_1.mas_bottom).offset(5.5); make.leading.mas_equalTo(giftBigBG.mas_trailing).offset(13); make.width.height.mas_equalTo(kGetScaleWidth(73.5)); }]; [giftSmall_3 addSubview:self.giftSmall_3]; [self.giftSmall_3 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(giftSmall_3); make.size.mas_equalTo(giftSmall_3).multipliedBy(0.8); }]; UIImageView *giftSmall_4 = [self jackpotGiftSmallBG]; [self.giftsView addSubview:giftSmall_4]; [giftSmall_4 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(giftSmall_3); make.leading.mas_equalTo(giftSmall_3.mas_trailing).offset(13); make.width.height.mas_equalTo(kGetScaleWidth(73.5)); }]; [giftSmall_4 addSubview:self.giftSmall_4]; [self.giftSmall_4 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(giftSmall_4); make.size.mas_equalTo(giftSmall_4).multipliedBy(0.8); }]; UIImageView *progressBG = [self progressBarBG]; [self.view addSubview:progressBG]; [progressBG mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(helpButton.mas_top).offset(-13); make.trailing.mas_equalTo(self.view).offset(-6); make.width.mas_equalTo(kGetScaleWidth(58)); make.height.mas_equalTo(kGetScaleWidth(240)); }]; [progressBG addSubview:self.progressBar]; [self.progressBar mas_makeConstraints:^(MASConstraintMaker *make) { // make.centerX.mas_equalTo(progressBG); make.leading.mas_equalTo(progressBG).offset(kGetScaleWidth(21.5)); make.bottom.mas_equalTo(progressBG).offset(kGetScaleWidth(-35)); make.width.mas_equalTo(kGetScaleWidth(18)); make.height.mas_equalTo(kGetScaleWidth(180)).multipliedBy(1); }]; UIImageView *progressNumberBG = [self progressBarNumberBG]; [self.view addSubview:progressNumberBG]; [progressNumberBG mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(progressBG).offset(kGetScaleWidth(-13)); // make.centerX.mas_equalTo(progressBG); make.leading.mas_equalTo(progressBG).offset(11); make.width.height.mas_equalTo(kGetScaleWidth(43)); }]; [self.view addSubview:self.progressLabel]; [self.progressLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(progressNumberBG); }]; UIImageView *rocketsBG = [self rocketsBG]; [self.view addSubview:rocketsBG]; [rocketsBG mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.mas_equalTo(self.view); make.bottom.mas_equalTo(jackpotBackgroundImageView.mas_top); make.width.mas_equalTo(kGetScaleWidth(71)); make.height.mas_equalTo(kGetScaleWidth(247)); }]; [rocketsBG addSubview:self.rocket_lv_5]; [self.rocket_lv_5 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(rocketsBG).offset(kGetScaleWidth(11.5)); make.leading.mas_equalTo(rocketsBG); make.width.mas_equalTo(rocketsBG.mas_width).offset(-7.5); make.height.mas_equalTo(kGetScaleWidth(38.5)); }]; [rocketsBG addSubview:self.rocket_lv_4]; [self.rocket_lv_4 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.rocket_lv_5.mas_bottom).offset(kGetScaleWidth(7)); make.leading.mas_equalTo(rocketsBG); make.width.mas_equalTo(self.rocket_lv_5); make.height.mas_equalTo(self.rocket_lv_5); }]; [rocketsBG addSubview:self.rocket_lv_3]; [self.rocket_lv_3 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.rocket_lv_4.mas_bottom).offset(kGetScaleWidth(7)); make.leading.mas_equalTo(rocketsBG); make.width.mas_equalTo(self.rocket_lv_5); make.height.mas_equalTo(self.rocket_lv_5); }]; [rocketsBG addSubview:self.rocket_lv_2]; [self.rocket_lv_2 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.rocket_lv_3.mas_bottom).offset(kGetScaleWidth(7)); make.leading.mas_equalTo(rocketsBG); make.width.mas_equalTo(self.rocket_lv_5); make.height.mas_equalTo(self.rocket_lv_5); }]; [rocketsBG addSubview:self.rocket_lv_1]; [self.rocket_lv_1 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.rocket_lv_2.mas_bottom).offset(kGetScaleWidth(7)); make.leading.mas_equalTo(rocketsBG); make.width.mas_equalTo(self.rocket_lv_5); make.height.mas_equalTo(self.rocket_lv_5); }]; [self.view addSubview:self.rankingView]; [self.rankingView mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(self.view).offset(-16); make.leading.mas_equalTo(self.view).offset(10); make.trailing.mas_equalTo(self.view).offset(-10); make.height.mas_equalTo(kGetScaleWidth(288)); }]; UIImageView *rankingBG = [self rankingBG]; [self.rankingView addSubview:rankingBG]; [rankingBG mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.mas_equalTo(self.rankingView); }]; UIButton *helpButton_2 = [self helpButton]; [self.rankingView addSubview:helpButton_2]; [helpButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(rankingBG).offset(-8); make.trailing.mas_equalTo(rankingBG).offset(-3); make.width.height.mas_equalTo(43); }]; UIImageView *rankingTitle = [self rankingTitle]; [self.rankingView addSubview:rankingTitle]; [rankingTitle mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(rankingBG.mas_top).offset(-14); make.centerX.mas_equalTo(self.rankingView); make.width.mas_equalTo(kGetScaleWidth(215)); make.height.mas_equalTo(kGetScaleWidth(52)); }]; [self.rankingView addSubview:self.rankAvatar_1]; [self.rankAvatar_1 mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.rankingView); make.top.mas_equalTo(rankingBG).offset(kGetScaleWidth(60)); make.width.height.mas_equalTo(kGetScaleWidth(86)); }]; UIImageView *wear_1 = [self rankingAvatarWear]; [self.rankingView addSubview:wear_1]; [wear_1 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(self.rankAvatar_1); make.width.height.mas_equalTo(kGetScaleWidth(124)); }]; [self.rankingView addSubview:self.rankAvatar_2]; [self.rankAvatar_2 mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.mas_equalTo(rankingBG).offset(30); make.top.mas_equalTo(rankingBG).offset(kGetScaleWidth(108)); make.width.height.mas_equalTo(kGetScaleWidth(66)); }]; UIImageView *wear_2 = [self rankingAvatarWear]; [self.rankingView addSubview:wear_2]; [wear_2 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(self.rankAvatar_2); make.width.height.mas_equalTo(kGetScaleWidth(94)); }]; [self.rankingView addSubview:self.rankAvatar_3]; [self.rankAvatar_3 mas_makeConstraints:^(MASConstraintMaker *make) { make.trailing.mas_equalTo(rankingBG).offset(-30); make.top.mas_equalTo(rankingBG).offset(kGetScaleWidth(108)); make.width.height.mas_equalTo(kGetScaleWidth(66)); }]; UIImageView *wear_3 = [self rankingAvatarWear]; [self.rankingView addSubview:wear_3]; [wear_3 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(self.rankAvatar_3); make.width.height.mas_equalTo(kGetScaleWidth(94)); }]; UIImageView *nameBG_1 = [self rankingNameBG]; [self.rankingView addSubview:nameBG_1]; [nameBG_1 mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(wear_1); make.top.mas_equalTo(wear_1.mas_bottom).offset(6); make.width.mas_equalTo(kGetScaleWidth(98)); make.height.mas_equalTo(kGetScaleWidth(28)); }]; [self.rankingView addSubview:self.rankName_1]; [self.rankName_1 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(nameBG_1); }]; UIImageView *nameBG_2 = [self rankingNameBG]; [self.rankingView addSubview:nameBG_2]; [nameBG_2 mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(wear_2); make.top.mas_equalTo(wear_2.mas_bottom).offset(6); make.width.mas_equalTo(kGetScaleWidth(98)); make.height.mas_equalTo(kGetScaleWidth(28)); }]; [self.rankingView addSubview:self.rankName_2]; [self.rankName_2 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(nameBG_2); }]; UIImageView *nameBG_3 = [self rankingNameBG]; [self.rankingView addSubview:nameBG_3]; [nameBG_3 mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(wear_3); make.top.mas_equalTo(wear_3.mas_bottom).offset(6); make.width.mas_equalTo(kGetScaleWidth(98)); make.height.mas_equalTo(kGetScaleWidth(28)); }]; [self.rankingView addSubview:self.rankName_3]; [self.rankName_3 mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(nameBG_3); }]; UILabel *tipsLabel_2 = [self rankTipsLabel]; [self.rankingView addSubview:tipsLabel_2]; [tipsLabel_2 mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.rankingView); make.bottom.mas_equalTo(-15); }]; } - (void)handleTapBottomButton { [self dismissViewControllerAnimated:YES completion:nil]; } - (void)handleTapHelpButton { } - (void)handleTapEmptySpace { [self dismissViewControllerAnimated:YES completion:nil]; } - (void)handleTapRocket:(BoomDetailModel * _Nullable )boom level:(NSInteger)level { self.selectedIndex = level; self.rocket_lv_1.isSelected = NO; self.rocket_lv_2.isSelected = NO; self.rocket_lv_3.isSelected = NO; self.rocket_lv_4.isSelected = NO; self.rocket_lv_5.isSelected = NO; switch (level) { case 1: self.rocket_lv_1.isSelected = YES; break; case 2: self.rocket_lv_2.isSelected = YES; break; case 3: self.rocket_lv_3.isSelected = YES; break; case 4: self.rocket_lv_4.isSelected = YES; break; case 5: self.rocket_lv_5.isSelected = YES; break; default: break; } if (boom == nil) { for (BoomDetailModel *boomInfo in self.boomInfoArray) { if (boomInfo.level == level) { boom = boomInfo; break; } } } self.progressLabel.text = @(boom.speed).stringValue; CGFloat progress = boom.speed * 1.0 / 100.0; if (progress == 0) { progress = 0.05; } [UIView animateWithDuration:0.3 animations:^{ [self.progressBar mas_updateConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(kGetScaleWidth(180) * progress); // 动态调整高度 }]; [self.view layoutIfNeeded]; }]; [self playMP4:boom.vapUrl]; if (boom.roomBoomRankVos.count > 0) { self.rankingView.hidden = NO; self.giftsView.hidden = YES; for (roomBoomRankVo *rank in boom.roomBoomRankVos) { switch (rank.position) { case 1: self.rankAvatar_1.imageUrl = rank.avatar; self.rankName_1.text = rank.nick; break; case 2: self.rankAvatar_2.imageUrl = rank.avatar; self.rankName_2.text = rank.nick; break; case 3: self.rankAvatar_3.imageUrl = rank.avatar; self.rankName_3.text = rank.nick; break; default: break; } } } else { self.rankingView.hidden = YES; self.giftsView.hidden = NO; for (roomBoomLevelAwardVo *award in boom.roomBoomLevelAwardVos) { if (award.isShow != 1) { continue; } switch (award.seq) { case 1: self.giftBig.imageUrl = award.awardPic; break; case 2: self.giftSmall_1.imageUrl = award.awardPic; break; case 3: self.giftSmall_2.imageUrl = award.awardPic; break; case 4: self.giftSmall_3.imageUrl = award.awardPic; break; case 5: self.giftSmall_4.imageUrl = award.awardPic; break; default: break; } } } } - (void)playMP4:(NSString *)path { NSString *mp4Path = [path stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (mp4Path.length == 0) { return; } NSString *encodingUrl = [mp4Path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet]; @kWeakify(self); [self.vapParser parseWithURL:encodingUrl completionBlock:^(NSString * _Nullable videoUrl) { @kStrongify(self); if (videoUrl.length) { [self.vapView setMute:YES]; [self.vapView playHWDMP4:videoUrl repeatCount:-1 delegate:self]; } } failureBlock:^(NSError * _Nullable error) { NSLog(@"%@", error); }]; } #pragma mark - HWDMP4PlayDelegate //即将开始播放时询问,true马上开始播放,false放弃播放 - (BOOL)shouldStartPlayMP4:(VAPView *)container config:(QGVAPConfigModel *)config { return YES; } - (void)viewDidFinishPlayMP4:(NSInteger)totalFrameCount view:(VAPView *)container { } - (void)viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container { } - (void)viewDidFailPlayMP4:(NSError *)error{ } #pragma mark - - (UILabel *)progressLabel { if (!_progressLabel) { _progressLabel = [UILabel labelInitWithText:@"99" font:kFontMedium(15) textColor:UIColorFromRGB(0xF0E7BA)]; } return _progressLabel; } - (UIButton *)leaveButton { UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom]; [b addTarget:self action:@selector(handleTapEmptySpace) forControlEvents:UIControlEventTouchUpInside]; return b; } - (UIImageView *)backgroundImageView { UIImageView *bg = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_bg")]; bg.contentMode = UIViewContentModeScaleAspectFit; bg.userInteractionEnabled = YES; return bg; } - (UIView *)giftsView { if (!_giftsView) { _giftsView = [[UIView alloc] init]; _giftsView.hidden = YES; } return _giftsView; } - (UIButton *)bottomButton { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setTitle:YMLocalizedString(@"RoomBoom_2") forState:UIControlStateNormal]; [button setBackgroundImage:kImage(@"room_boom_progress_bottom_bg") forState:UIControlStateNormal]; [button addTarget:self action:@selector(handleTapBottomButton) forControlEvents:UIControlEventTouchUpInside]; return button; } - (UIImageView *)jackpotBackgroundImageView { UIImageView *bg = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_jackpot_bg")]; bg.contentMode = UIViewContentModeScaleAspectFill; return bg; } - (UIButton *)helpButton { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setBackgroundImage:kImage(@"room_boom_progress_help") forState:UIControlStateNormal]; [button addTarget:self action:@selector(handleTapHelpButton) forControlEvents:UIControlEventTouchUpInside]; return button; } - (UIImageView *)jackpotTitleView { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_jsckpot_title")]; return imageView; } - (UILabel *)jackpotTipsLabel { UILabel *label = [UILabel labelInitWithText:@"以下的奖励仅供参考,具体发放的礼物由您的贡献值和幸运程度决定" font:kFontRegular(10) textColor:UIColorFromRGB(0xCBA1FF)]; label.textAlignment = NSTextAlignmentCenter; return label; } - (UIImageView *)jackpotGiftBigBG { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_gift_big_bg")]; return imageView; } - (UIImageView *)jackpotGiftSmallBG { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_gift_small_bg")]; return imageView; } - (UIView *)rankingView { if (!_rankingView) { _rankingView = [[UIView alloc] init]; _rankingView.hidden = YES; } return _rankingView; } - (UIImageView *)rankingBG { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_ranking_bg")]; return imageView; } - (UIImageView *)rankingTitle { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_raning_title")]; return imageView; } - (UIImageView *)rankingAvatarWear { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_avatar")]; return imageView; } - (UIImageView *)rankingNameBG { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_ranking_name_bg")]; return imageView; } - (UILabel *)rankName_1 { if (!_rankName_1) { _rankName_1 = [UILabel labelInitWithText:@"" font:kFontMedium(15) textColor:UIColorFromRGB(0xF0E7BA)]; } return _rankName_1; } - (UILabel *)rankName_2 { if (!_rankName_2) { _rankName_2 = [UILabel labelInitWithText:@"" font:kFontMedium(15) textColor:UIColorFromRGB(0xF0E7BA)]; } return _rankName_2; } - (UILabel *)rankName_3 { if (!_rankName_3) { _rankName_3 = [UILabel labelInitWithText:@"" font:kFontMedium(15) textColor:UIColorFromRGB(0xF0E7BA)]; } return _rankName_3; } - (NetImageView *)rankAvatar_1 { if (!_rankAvatar_1) { _rankAvatar_1 = [[NetImageView alloc] init]; _rankAvatar_1.contentMode = UIViewContentModeScaleAspectFit; _rankAvatar_1.layer.cornerRadius = 86/2; _rankAvatar_1.layer.masksToBounds = YES; } return _rankAvatar_1; } - (NetImageView *)rankAvatar_2 { if (!_rankAvatar_2) { _rankAvatar_2 = [[NetImageView alloc] init]; _rankAvatar_2.contentMode = UIViewContentModeScaleAspectFit; _rankAvatar_2.layer.cornerRadius = 66/2; _rankAvatar_2.layer.masksToBounds = YES; } return _rankAvatar_2; } - (NetImageView *)rankAvatar_3 { if (!_rankAvatar_3) { _rankAvatar_3 = [[NetImageView alloc] init]; _rankAvatar_3.contentMode = UIViewContentModeScaleAspectFit; _rankAvatar_3.layer.cornerRadius = 66/2; _rankAvatar_3.layer.masksToBounds = YES; } return _rankAvatar_3; } - (UIImageView *)progressBarBG { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_bar_bg")]; return imageView; } - (UIImageView *)progressBarNumberBG { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_number_bg")]; return imageView; } - (UIImageView *)rocketsBG { UIImageView *imageView = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_rockets_bg")]; imageView.userInteractionEnabled = YES; return imageView; } - (NetImageView *)giftBig { if (!_giftBig) { _giftBig = [[NetImageView alloc] init]; _giftBig.contentMode = UIViewContentModeScaleAspectFit; } return _giftBig; } - (NetImageView *)giftSmall_1 { if (!_giftSmall_1) { _giftSmall_1 = [[NetImageView alloc] init]; _giftSmall_1.contentMode = UIViewContentModeScaleAspectFit; } return _giftSmall_1; } - (NetImageView *)giftSmall_2 { if (!_giftSmall_2) { _giftSmall_2 = [[NetImageView alloc] init]; _giftSmall_2.contentMode = UIViewContentModeScaleAspectFit; } return _giftSmall_2; } - (NetImageView *)giftSmall_3 { if (!_giftSmall_3) { _giftSmall_3 = [[NetImageView alloc] init]; _giftSmall_3.contentMode = UIViewContentModeScaleAspectFit; } return _giftSmall_3; } - (NetImageView *)giftSmall_4 { if (!_giftSmall_4) { _giftSmall_4 = [[NetImageView alloc] init]; _giftSmall_4.contentMode = UIViewContentModeScaleAspectFit; } return _giftSmall_4; } - (RocketBox *)rocket_lv_1 { if (!_rocket_lv_1) { _rocket_lv_1 = [[RocketBox alloc] init]; _rocket_lv_1.level = 1; @kWeakify(self); _rocket_lv_1.didTapRocket = ^(NSInteger level) { @kStrongify(self); [self handleTapRocket:nil level:level]; }; } return _rocket_lv_1; } - (RocketBox *)rocket_lv_2 { if (!_rocket_lv_2) { _rocket_lv_2 = [[RocketBox alloc] init]; _rocket_lv_2.level = 2; @kWeakify(self); _rocket_lv_2.didTapRocket = ^(NSInteger level) { @kStrongify(self); [self handleTapRocket:nil level:level]; }; } return _rocket_lv_2; } - (RocketBox *)rocket_lv_3 { if (!_rocket_lv_3) { _rocket_lv_3 = [[RocketBox alloc] init]; _rocket_lv_3.level = 3; @kWeakify(self); _rocket_lv_3.didTapRocket = ^(NSInteger level) { @kStrongify(self); [self handleTapRocket:nil level:level]; }; } return _rocket_lv_3; } - (RocketBox *)rocket_lv_4 { if (!_rocket_lv_4) { _rocket_lv_4 = [[RocketBox alloc] init]; _rocket_lv_4.level = 4; @kWeakify(self); _rocket_lv_4.didTapRocket = ^(NSInteger level) { @kStrongify(self); [self handleTapRocket:nil level:level]; }; } return _rocket_lv_4; } - (RocketBox *)rocket_lv_5 { if (!_rocket_lv_5) { _rocket_lv_5 = [[RocketBox alloc] init]; _rocket_lv_5.level = 5; @kWeakify(self); _rocket_lv_5.didTapRocket = ^(NSInteger level) { @kStrongify(self); [self handleTapRocket:nil level:level]; }; } return _rocket_lv_5; } - (XPRoomGiftAnimationParser *)vapParser { if (!_vapParser) { _vapParser = [[XPRoomGiftAnimationParser alloc] init]; } return _vapParser; } - (UIImageView *)progressBar { if (!_progressBar) { UIImage *progressImage = [kImage(@"room_boom_progress_bar") resizableImageWithCapInsets:UIEdgeInsetsMake(10, 0, 10, 0) resizingMode:UIImageResizingModeStretch]; _progressBar = [[UIImageView alloc] initWithImage:progressImage]; _progressBar.userInteractionEnabled = YES; _progressBar.hidden = NO; } return _progressBar; } - (UILabel *)rankTipsLabel { UILabel *label = [UILabel labelInitWithText:YMLocalizedString(@"RoomBoom_6") font:kFontLight(12) textColor:[UIColor whiteColor]]; label.textAlignment = NSTextAlignmentCenter; return label; } @end