1001 lines
34 KiB
Objective-C
1001 lines
34 KiB
Objective-C
//
|
||
// 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 <QGVAPWrapView.h>
|
||
|
||
@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 () <HWDMP4PlayDelegate>
|
||
|
||
@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 <BoomDetailModel *> * 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<BoomDetailModel *> *)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
|