Files
featherVoice/QXLive/Room(房间)/View/麦位视图/QXRoomSeatBarView.m
2026-01-14 20:36:58 +08:00

1076 lines
44 KiB
Objective-C

//
// QXRoomSeatBarView.m
// QXLive
//
// Created by 启星 on 2026/1/4.
//
#import "QXRoomSeatBarView.h"
#import "QXMineNetwork.h"
#import "QXRoomBarSetTimeView.h"
#import "QXRoomBarSetGiftView.h"
#import "QXBarAskAlertView.h"
#import "QXSeductionAlertView.h"
#import "QXRoomBarSendCustomGiftView.h"
#import "QXCustomAlertView.h"
#import "QXFileManager.h"
#import "QXRechargeViewcController.h"
@interface QXRoomSeatBarView()<QXRoomSeatBarViewDelagate,QXRoomBarSetGiftViewDelegate,QXBarAskAlertViewDelegate>
/// 主持
@property (nonatomic,strong)QXRoomSeatContentView *compereView;
/// 嘉宾
@property (nonatomic,strong)QXRoomSeatContentView *guestView;
/// 嘉宾
@property (nonatomic,strong)QXRoomSeatBarSeatView *seatView1;
/// 嘉宾
@property (nonatomic,strong)QXRoomSeatBarSeatView *seatView2;
/// 嘉宾
@property (nonatomic,strong)QXRoomSeatBarSeatView *seatView3;
/// 嘉宾
@property (nonatomic,strong)QXRoomSeatBarSeatView *seatView4;
/// 嘉宾
@property (nonatomic,strong)QXRoomSeatBarSeatView *seatView5;
/// 嘉宾
@property (nonatomic,strong)QXRoomSeatBarSeatView *seatView6;
@property (nonatomic,strong)UIButton *ruleBtn;
@property (nonatomic,strong)UIView *leftSettingView;
@property (nonatomic,strong)UIButton *timeBtn;
@property (nonatomic,strong)UIView *rightSettingView;
@property (nonatomic,strong)UIButton *giftBtn;
/// seatArray
@property (nonatomic,strong)NSMutableArray *seatArray;
@property (nonatomic, strong) NSTimer *checkTimer;
@property (nonatomic, strong) UIButton *seaKingBtn;
@end
@implementation QXRoomSeatBarView
- (instancetype)init
{
self = [super init];
if (self) {
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.leftSettingView = [[UIView alloc] init];
self.leftSettingView.hidden = YES;
[self addSubview:self.leftSettingView];
self.rightSettingView = [[UIView alloc] init];
[self addSubview:self.rightSettingView];
self.timeBtn = [[UIButton alloc] init];
// [self.timeBtn setTitle:@"设置时长" forState:(UIControlStateNormal)];
// [self.timeBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateNormal)];
// self.timeBtn.titleLabel.font = [UIFont systemFontOfSize:14];
[self.timeBtn setBackgroundImage:[UIImage imageNamed:@"bar_room_set_seat_time"] forState:(UIControlStateNormal)];
[self.timeBtn addTarget:self action:@selector(timeAction) forControlEvents:(UIControlEventTouchUpInside)];
// [self.timeBtn addRoundedCornersWithRadius:ScaleWidth(30)];
// self.timeBtn.backgroundColor = QXConfig.themeColor;
[self.leftSettingView addSubview:self.timeBtn];
self.ruleBtn = [[UIButton alloc] init];
[self.rightSettingView addSubview:self.ruleBtn];
[self.ruleBtn addTarget:self action:@selector(ruleAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.ruleBtn setBackgroundImage:[UIImage imageNamed:@"nobility_help_icon"] forState:(UIControlStateNormal)];
self.giftBtn = [[UIButton alloc] init];
// [self.giftBtn setTitle:@"自定义礼物" forState:(UIControlStateNormal)];
// [self.giftBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateNormal)];
// self.giftBtn.titleLabel.font = [UIFont systemFontOfSize:14];
// [self.giftBtn addRoundedCornersWithRadius:ScaleWidth(30)];
// self.giftBtn.backgroundColor = QXConfig.themeColor;
[self.giftBtn setBackgroundImage:[UIImage imageNamed:@"bar_room_set_custom_gift"] forState:(UIControlStateNormal)];
[self.giftBtn addTarget:self action:@selector(giftAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.rightSettingView addSubview:self.giftBtn];
[self.leftSettingView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self);
make.height.mas_equalTo(ScaleWidth(36));
make.width.mas_equalTo(ScaleWidth(53));
make.top.mas_equalTo(20);
}];
[self.rightSettingView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self);
make.height.mas_equalTo(ScaleWidth(57));
make.width.mas_equalTo(ScaleWidth(69));
make.top.equalTo(self);
}];
[self.ruleBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-5);
make.width.height.mas_equalTo(ScaleWidth(24));
make.top.equalTo(self.rightSettingView);
}];
[self.timeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.leftSettingView);
make.right.equalTo(self.leftSettingView);
make.top.equalTo(self.leftSettingView);
make.bottom.equalTo(self.leftSettingView);
}];
[self.giftBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.rightSettingView);
make.right.equalTo(self.rightSettingView);
make.bottom.equalTo(self.rightSettingView);
make.height.mas_equalTo(ScaleWidth(23));
}];
self.compereView = [[QXRoomSeatContentView alloc] init];
self.compereView.delegate = self;
self.compereView.tagString = QXText(@"主持");
self.compereView.number = 9;
[self addSubview:self.compereView];
CGFloat margin = (SCREEN_WIDTH/2-ScaleWidth(60))/2;
[self.compereView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self).offset(12);
make.width.mas_equalTo(ScaleWidth(65));
make.height.mas_equalTo(ScaleWidth(65-10)+51-ScaleWidth(15)-5);
make.centerX.equalTo(self).offset(ScaleWidth(-65));
}];
self.guestView = [[QXRoomSeatContentView alloc] init];
self.guestView.tagString = QXText(@"嘉宾");
self.guestView.number = 10;
// [self.guestView addTapBlock:^(id _Nonnull obj) {
// [weakSelf didClickSeatView:obj];
// }];
self.guestView.delegate = self;
[self addSubview:self.guestView];
[self.guestView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self).offset(12);
make.width.mas_equalTo(ScaleWidth(65));
make.height.mas_equalTo(ScaleWidth(65-10)+51-ScaleWidth(15)-5);
make.centerX.equalTo(self).offset(ScaleWidth(65));
}];
CGFloat seatHeight = ScaleWidth(60-10)+51-ScaleWidth(15)-5 + ScaleWidth(12+14)-5;
CGFloat seatSpace = (SCREEN_WIDTH - ScaleWidth(100)*3)/4;
self.seatView2 = [[QXRoomSeatBarSeatView alloc] init];
self.seatView2.contentView.number = 2;
self.seatView2.delegate = self;
[self addSubview:self.seatView2];
[self.seatView2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(ScaleWidth(100));
make.centerX.equalTo(self);
make.top.equalTo(self.compereView.mas_bottom);
make.height.mas_equalTo(seatHeight);
}];
self.seatView1 = [[QXRoomSeatBarSeatView alloc] init];
self.seatView1.contentView.number = 1;
self.seatView1.delegate = self;
[self addSubview:self.seatView1];
[self.seatView1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.seatView2.mas_left).offset(-seatSpace);
make.top.width.height.equalTo(self.seatView2);
}];
self.seatView3 = [[QXRoomSeatBarSeatView alloc] init];
self.seatView3.contentView.number = 3;
self.seatView3.delegate = self;
[self addSubview:self.seatView3];
[self.seatView3 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.seatView2.mas_right).offset(seatSpace);
make.top.width.height.equalTo(self.seatView2);
}];
self.seatView5 = [[QXRoomSeatBarSeatView alloc] init];
self.seatView5.contentView.number = 5;
self.seatView5.delegate = self;
[self addSubview:self.seatView5];
[self.seatView5 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.seatView2.mas_bottom);
make.centerX.width.height.equalTo(self.seatView2);
}];
self.seatView4 = [[QXRoomSeatBarSeatView alloc] init];
self.seatView4.contentView.number = 4;
self.seatView4.delegate = self;
[self addSubview:self.seatView4];
[self.seatView4 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.seatView5);
make.width.height.equalTo(self.seatView2);
make.centerX.equalTo(self.seatView1);
}];
self.seatView6 = [[QXRoomSeatBarSeatView alloc] init];
self.seatView6.contentView.number = 6;
self.seatView6.delegate = self;
[self addSubview:self.seatView6];
[self.seatView6 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.seatView5);
make.width.height.equalTo(self.seatView2);
make.centerX.equalTo(self.seatView3);
}];
[self.seatArray addObject:self.seatView1];
[self.seatArray addObject:self.seatView2];
[self.seatArray addObject:self.seatView3];
[self.seatArray addObject:self.seatView4];
[self.seatArray addObject:self.seatView5];
[self.seatArray addObject:self.seatView6];
///7 号麦 (占位)
[self.seatArray addObject:[QXRoomSeatContentView new]];
///8 号麦 (占位)
[self.seatArray addObject:[QXRoomSeatContentView new]];
///9 号麦 (占位)
[self.seatArray addObject:self.compereView];
[self.seatArray addObject:self.guestView];
self.seaKingBtn = [[UIButton alloc] init];
[self.seaKingBtn setBackgroundImage:[UIImage imageNamed:@"bar_room_sea_king"] forState:(UIControlStateNormal)];
[self.seaKingBtn addTarget:self action:@selector(everyOneFollowMe) forControlEvents:(UIControlEventTouchUpInside)];
[self addSubview:self.seaKingBtn];
[self.seaKingBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.seatView6.mas_bottom).offset(10);
make.centerX.equalTo(self);
make.width.mas_equalTo(ScaleWidth(128));
make.height.mas_equalTo(ScaleWidth(32));
}];
}
- (void)startCheckTimer {
self.checkTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(checkAllSeatTime)
userInfo:nil
repeats:YES];
}
-(void)checkAllSeatTime{
for (int i = 0; i < 6;i++ ) {
QXRoomSeatBarSeatView *seatView = self.seatArray[i];
QXRoomPitModel *model = seatView.pitModel;
if (model.user_id.longLongValue > 0) {
NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
// 将秒转换为毫秒
long long milliseconds = (long long)(timeInterval);
NSInteger timeDown = model.end_time.longLongValue - milliseconds;
if (timeDown <= 0) {
seatView.timeLabel.text = @"00:00";
}else{
seatView.timeLabel.text = [NSString stringWithFormat:@"%02ld:%02ld",timeDown/60,timeDown%60];
}
}
}
}
-(void)timeAction{
QXRoomBarSetTimeView *setTimeView = [[QXRoomBarSetTimeView alloc] init];
setTimeView.roomId = self.roomModel.room_info.room_id;
[setTimeView showInView:self.viewController.view];
}
-(void)giftAction{
QXRoomBarSetGiftView *giftView = [[QXRoomBarSetGiftView alloc] init];
giftView.roomId = self.roomModel.room_info.room_id;
giftView.isLikeGift = NO;
[giftView showInView:self.viewController.view];
}
-(void)ruleAction{
NSString *server = QXGlobal.shareGlobal.currentServer;
NSString *urlString = [NSString stringWithFormat:@"%@api/Page/page_show?id=%@",server,@"36"];
QXBaseWebViewController *vc = [[QXBaseWebViewController alloc] init];
vc.urlStr = urlString;
[self.viewController.navigationController pushViewController:vc animated:YES];
}
-(void)everyOneFollowMe{
NSInteger count = 0;
for (int i = 0 ; i < 6;i++) {
id object = self.seatArray[i];
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
// QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
// if (contentView.pitModel.user_id.longLongValue > 0 && ![contentView.pitModel.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
// }
continue;
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
if (contentView.contentView.pitModel.user_id.longLongValue > 0 && ![contentView.contentView.pitModel.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
count++;
}
continue;
}
}
if (count == 0) {
showToast(@"请等待用户上麦");
return;
}
QXCustomAlertView *alert = [[QXCustomAlertView alloc] init];
__weak typeof(self) weakSelf = self;
alert.commitBlock = ^{
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) return;
[strongSelf everyOneComeOn];
};
[alert showInView:self.viewController.view title:@"温馨提示" message:[NSString stringWithFormat:@"确定要撩一撩台上全部嘉宾吗? 共计需要 %ld个 金币",self.roomModel.room_info.sexy_coin.integerValue*count] cancleTitle:@"取消" commitTitle:@"确定"];
}
-(void)everyOneComeOn{
[QXMineNetwork roomSeductionWithRoomId:self.roomModel.room_info.room_id to_user_id:@"" type:@"2" successBlock:^(NSDictionary * _Nonnull dict) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
}
-(void)setRoomModel:(QXRoomModel *)roomModel{
_roomModel = roomModel;
for (int i = 0 ; i < roomModel.room_info.pit_list.count;i++) {
QXRoomPitModel *pitModel = roomModel.room_info.pit_list[i];
id object = self.seatArray[i];
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
contentView.pitModel = pitModel;
[contentView hideCharm];
continue;
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
contentView.pitModel = pitModel;
[contentView.contentView hideCharm];
continue;
}
}
self.myPitNumber = roomModel.user_info.pit_number.integerValue;
[self startCheckTimer];
}
-(void)seductionUserWithPitModel:(QXRoomPitModel *)pitModel{
BOOL closeAlert = [[NSUserDefaults standardUserDefaults] boolForKey:kIsCloseSeductionAlert];
if (closeAlert) {
[QXMineNetwork roomSeductionWithRoomId:self.roomModel.room_info.room_id to_user_id:pitModel.user_id type:@"1" successBlock:^(NSDictionary * _Nonnull dict) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
}else{
QXSeductionAlertView *seductionView = [[QXSeductionAlertView alloc] init];
seductionView.alertType = QXSeductionAlertTypeSeduction;
seductionView.roomId = self.roomModel.room_info.room_id;
seductionView.sexy_coin = self.roomModel.room_info.sexy_coin;
seductionView.pitModel = pitModel;
[seductionView showInView:self.viewController.view];
}
}
-(void)askUserWithPitModel:(QXRoomPitModel *)pitModel{
QXBarAskAlertView *askView = [[QXBarAskAlertView alloc] init];
askView.roomId = self.roomModel.room_info.room_id;
askView.pitModel = pitModel;
askView.delegate = self;
[askView showInView:self.viewController.view];
}
-(void)sendGiftWithPitModel:(QXRoomPitModel *)pitModel{
QXRoomBarSendCustomGiftView *giftView = [[QXRoomBarSendCustomGiftView alloc] init];
giftView.roomId = self.roomModel.room_info.room_id;
giftView.pitModel = pitModel;
[giftView showInView:self.viewController.view];
}
#pragma mark - QXBarAskAlertViewDelegate
-(void)askViewDidRecharge:(QXBarAskAlertView *)alertView{
[alertView hide];
QXRechargeViewcController *vc = [[QXRechargeViewcController alloc] init];
[self.viewController.navigationController pushViewController:vc animated:YES];
}
-(void)askViewDidSend:(QXBarAskAlertView *)alertView pitModel:(nonnull QXRoomPitModel *)pitModel giftInfo:(nonnull QXGiftModel *)giftInfo{
[alertView hide];
[QXMineNetwork roomBarAskWithRoomId:self.roomModel.room_info.room_id user_id:pitModel.user_id gift_id:giftInfo.gift_id successBlock:^(NSDictionary * _Nonnull dict) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
}
#pragma mark - QXRoomBarSetGiftViewDelegate
-(void)setGiftModelIsLikeGift:(BOOL)isLikeGift giftModel:(QXGiftModel *)giftModel pitNumber:(nonnull NSString *)pitNumber setGiftView:(nonnull QXRoomBarSetGiftView *)setGiftView{
/// 自由麦请求
[setGiftView hide];
__weak typeof(self) weakSelf = self;
[QXMineNetwork roomUpSeatWithRoomId:self.roomModel.room_info.room_id pit_number:pitNumber gift_id:giftModel.gift_id isUpSeat:YES successBlock:^(NSDictionary * _Nonnull dict) {
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) return;
if (strongSelf.delegate && [strongSelf.delegate respondsToSelector:@selector(upSeatFinish)]) {
[strongSelf.delegate upSeatFinish];
}
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
}
#pragma mark - QXRoomSeatBarViewDelagate
-(void)barRoomSeductionEffectWithModel:(QXRoomChatListModel *)model{
int count = 0;
for (int i = 0;i < 6 ; i++) {
QXRoomSeatBarSeatView *seatView = self.seatArray[i];
for (QXUserHomeModel*user in model.ToUserInfos) {
if ([user.user_id isEqualToString:seatView.pitModel.user_id]) {
count++;
if (count == 1) {
[seatView playSeductionEffectWithPlayImage:model.GiftInfo.play_image isMute:NO];
}else{
[seatView playSeductionEffectWithPlayImage:model.GiftInfo.play_image isMute:YES];
}
}
}
}
}
-(void)barRoomSetCustomGiftWithUserId:(NSString *)userId had_custom_gift:(BOOL)had_custom_gift{
for (int i = 0;i < 6 ; i++) {
QXRoomSeatBarSeatView *seatView = self.seatArray[i];
if ([seatView.pitModel.user_id isEqualToString:userId]) {
seatView.pitModel.had_custom_gift = had_custom_gift?1:0;
seatView.giftBtn.hidden = !had_custom_gift;
}
}
}
-(void)barRoomJoinCabinRoomWithRoomId:(NSString *)room_id user_id:(NSString *)user_id meet_user_id:(NSString *)meet_user_id{
if ([QXGlobal.shareGlobal.loginModel.user_id isEqualToString:user_id] || [QXGlobal.shareGlobal.loginModel.user_id isEqualToString:meet_user_id]) {
QXGlobal.shareGlobal.superRoomId = self.roomModel.room_info.room_id;
[[QXGlobal shareGlobal] joinRoomWithRoomId:room_id isRejoin:NO navagationController:self.viewController.navigationController];
}
}
-(void)didUpDownSeatWithUser:(QXUserHomeModel *)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number isPK:(BOOL)isPK end_time:(NSString *)end_time{
if (pit_number > 10) {
return;
}
UIView *objectV = self.seatArray[pit_number-1];
QXRoomPitModel *model;
if ([objectV isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)objectV;
model = contentView.pitModel;
}else{
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)objectV;
model = contentView.pitModel;
}
if (isUpSeat) {
model.user_id = user.user_id;
model.avatar = user.avatar;
model.dress = user.dress;
model.sex = user.sex;
model.nickname = user.nickname;
model.user_code = user.user_code;
model.charm = user.charm;
model.nobility_image = user.nobility_image;
model.nickname_color = user.nickname_color;
model.mic_cycle = user.mic_cycle;
model.had_custom_gift = user.had_custom_gift;
model.end_time = end_time;
}else{
model.user_id = @"0";
model.avatar = @"";
model.dress = @"";
model.sex = @"";
model.nickname = @"";
model.user_code = @"";
model.charm = @"";
model.nobility_image = @"";
model.nickname_color = @"";
model.mic_cycle = @"";
model.had_custom_gift = 0;
model.end_time = @"0";
if ([objectV isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)objectV;
[contentView stopHWDMP4];
[contentView stopAudioAnimation];
}else{
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)objectV;
[contentView stopHWDMP4];
[contentView.contentView stopAudioAnimation];
}
}
if ([user.user_id isEqualToString:[QXGlobal shareGlobal].loginModel.user_id]) {
if (isUpSeat) {
self.myPitNumber = pit_number;
}else{
self.myPitNumber = -1;
}
if (self.myPitNumber == 9) {
self.leftSettingView.hidden = NO;
}else{
self.leftSettingView.hidden = YES;
}
}
if ([objectV isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)objectV;
contentView.pitModel = model;
[contentView hideCharm];
}else{
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)objectV;
contentView.pitModel = model;
[contentView.contentView hideCharm];
}
}
-(void)didClickUserHeaderWithPitModel:(QXRoomPitModel *)pitModel seatView:(QXRoomSeatContentView *)seatView{
NSString *pit_number = [NSString stringWithFormat:@"%ld",seatView.number] ;
QXLOG(@"点击了%ld麦位",seatView.number);
if (seatView.pitModel.user_id.longLongValue > 0) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickUserHeaderWithPitModel:userModel:isPkRoom:pkRoomId:isNoTakeOff:)]) {
[self.delegate didClickUserHeaderWithPitModel:seatView.pitModel userModel:nil isPkRoom:NO pkRoomId:@"" isNoTakeOff:NO];
}
}else{
if (seatView.number == 9) {
/// 麦位没人时点9号麦直接请求上麦
[QXMineNetwork roomUpSeatWithRoomId:self.roomModel.room_info.room_id pit_number:pit_number gift_id:@"" isUpSeat:YES successBlock:^(NSDictionary * _Nonnull dict) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
return;
}else if (seatView.number == 10) {
if (self.myPitNumber == 9 || self.roomModel.user_info.is_room_owner.intValue == 1 || self.roomModel.user_info.is_management.intValue == 1) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didHugSeatWithPitNumber:)]) {
[self.delegate didHugSeatWithPitNumber:@"10"];
}
}else{
showToast(@"请等待主持抱麦");
}
return;
}else{
if (self.myPitNumber == 9) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didHugSeatWithPitNumber:)]) {
[self.delegate didHugSeatWithPitNumber:pitModel.pit_number];
}
}else{
if (self.roomModel.room_info.room_up_pit_type.intValue == 2) {
if (self.myPitNumber > 0) {
if (self.myPitNumber == 10) {
// [self barRoomUpseatActionWithPitNumber:pit_number];
QXLOG(@"嘉宾不允许换麦");
}else{
id object = self.seatArray[seatView.number];
QXRoomPitModel *pitModel;
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
pitModel = contentView.pitModel;
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
pitModel = contentView.pitModel;
}
[QXMineNetwork roomUpSeatWithRoomId:self.roomModel.room_info.room_id pit_number:pit_number gift_id:@"" isUpSeat:YES successBlock:^(NSDictionary * _Nonnull dict) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
}
}else{
[self barRoomUpseatActionWithPitNumber:pit_number];
}
}else{
// 排麦模式 弹出上麦
if (self.myPitNumber == 9 || self.roomModel.user_info.is_room_owner.intValue == 1 || self.roomModel.user_info.is_management.intValue == 1 || self.roomModel.user_info.is_host.intValue == 1) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didHugSeatWithPitNumber:)]) {
[self.delegate didHugSeatWithPitNumber:pitModel.pit_number];
}
}
}
}
}
}
}
-(void)barRoomUpseatActionWithPitNumber:(NSString*)pit_number{
QXRoomBarSetGiftView *giftView = [[QXRoomBarSetGiftView alloc] init];
giftView.roomId = self.roomModel.room_info.room_id;
giftView.pitNumber = pit_number;
giftView.isLikeGift = YES;
giftView.delegate = self;
[giftView showInView:self.viewController.view];
}
-(void)previewRoomUserCharmListWithUserId:(NSString *)userId{
if (self.delegate && [self.delegate respondsToSelector:@selector(previewRoomUserCharmListWithUserId:)]) {
[self.delegate previewRoomUserCharmListWithUserId:userId];
}
}
-(void)clearCharm{
for (id object in self.seatArray) {
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
QXRoomPitModel *model = contentView.pitModel;
if (model) {
model.charm = @"0";
[contentView updateUserCharm:model.charm];
}
continue;
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
[contentView updateUserCharm:contentView.pitModel.charm];
continue;
}
}
}
-(void)roomClearUserCharmWithUserId:(NSString *)userId{
for (id object in self.seatArray) {
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
QXRoomPitModel *model = contentView.pitModel;
if ([model.user_id isEqualToString:userId]) {
model.charm = @"0";
[contentView updateUserCharm:model.charm];
break;
}
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
QXRoomPitModel *model = contentView.pitModel;
if ([model.user_id isEqualToString:userId]) {
[contentView updateUserCharm:model.charm];
break;
}
}
}
}
-(void)roomSeatExchangedWithFromPitNumber:(NSInteger)fromPitNumber toPitNumber:(NSInteger)toPitNumber userInfo:(QXUserHomeModel*)userInfo isPK:(BOOL)isPK{
if (fromPitNumber == 0 || toPitNumber == 0) {
return;
}
if (toPitNumber > 10 || toPitNumber == 7 || toPitNumber == 8) {
return;
}
UIView *fromSeatView = self.seatArray[fromPitNumber-1];
UIView *toSeatView = self.seatArray[toPitNumber-1];
QXRoomPitModel *fromPitModel;
QXRoomPitModel *totModel;
if (fromPitNumber>6) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)fromSeatView;
fromPitModel = contentView.pitModel;
}else{
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)fromSeatView;
fromPitModel = contentView.pitModel;
}
if (toPitNumber>6) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)toSeatView;
totModel = contentView.pitModel;
}else{
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)toSeatView;
totModel = contentView.pitModel;
}
NSString* tmpPitNum = [NSString stringWithFormat:@"%@",fromPitModel.pit_number];
fromPitModel.pit_number = totModel.pit_number;
totModel.pit_number = tmpPitNum;
NSMutableArray*arr = [NSMutableArray arrayWithArray:self.roomModel.room_info.pit_list];
if (toPitNumber <= arr.count) {
[arr exchangeObjectAtIndex:fromPitNumber-1 withObjectAtIndex:toPitNumber-1];
}
self.roomModel.room_info.pit_list = arr;
if (fromPitNumber>6) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)fromSeatView;
contentView.pitModel = totModel;
[contentView hideCharm];
}else{
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)fromSeatView;
contentView.pitModel = totModel;
[contentView.contentView hideCharm];
}
if (toPitNumber>6) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)toSeatView;
contentView.pitModel = fromPitModel;
[contentView hideCharm];
}else{
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)toSeatView;
contentView.pitModel = fromPitModel;
[contentView.contentView hideCharm];
}
if ([userInfo.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
self.myPitNumber = toPitNumber;
if (self.myPitNumber == 9) {
self.leftSettingView.hidden = NO;
}else{
self.leftSettingView.hidden = YES;
}
}
}
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model{
for (id object in self.seatArray) {
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
QXRoomPitModel *md = contentView.pitModel;
if ([model.user_id isEqualToString:md.user_id]) {
model.charm = @"0";
[contentView updateUserCharm:model.charm];
break;
}
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
QXRoomPitModel *md = contentView.pitModel;
if ([model.user_id isEqualToString:md.user_id]) {
[contentView updateUserCharm:model.charm];
break;
}
}
}
}
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel *> *)users{
for (QXUserHomeModel*model in users) {
[self setSeatCharmWithUser:model];
}
}
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user{
for (id object in self.seatArray) {
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
QXRoomPitModel *md = contentView.pitModel;
if ([user.user_id isEqualToString:md.user_id]) {
md.dress = user.dress;
md.nickname = user.nickname;
md.sex = user.sex;
md.avatar = user.avatar;
md.nobility_image = user.nobility_image;
md.nickname_color = user.nickname_color;
md.mic_cycle = user.mic_cycle;
contentView.pitModel = md;
[contentView hideCharm];
break;
}
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
QXRoomPitModel *md = contentView.pitModel;
if ([user.user_id isEqualToString:md.user_id]) {
md.dress = user.dress;
md.nickname = user.nickname;
md.sex = user.sex;
md.avatar = user.avatar;
md.nobility_image = user.nobility_image;
md.nickname_color = user.nickname_color;
md.mic_cycle = user.mic_cycle;
contentView.pitModel = md;
[contentView.contentView hideCharm];
break;
}
}
}
}
-(void)stopHWDMP4{
for (id object in self.seatArray) {
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
QXRoomPitModel *md = contentView.pitModel;
if (md) {
[contentView stopHWDMP4];
}
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
QXRoomPitModel *md = contentView.pitModel;
if (md) {
[contentView.contentView stopHWDMP4];
}
}
}
}
-(void)playHWDMP4{
for (id object in self.seatArray) {
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
QXRoomPitModel *md = contentView.pitModel;
if (md) {
[contentView playHWDMP4];
}
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
QXRoomPitModel *md = contentView.pitModel;
if (md) {
[contentView.contentView playHWDMP4];
}
}
}
}
-(void)destroyViews{
[self.compereView destroyViews];
[self.compereView destroyViews];
for (id object in self.seatArray) {
if ([object isKindOfClass:[QXRoomSeatContentView class] ]) {
QXRoomSeatContentView *contentView = (QXRoomSeatContentView*)object;
[contentView destroyViews];
}
if ([object isKindOfClass:[QXRoomSeatBarSeatView class] ]) {
QXRoomSeatBarSeatView *contentView = (QXRoomSeatBarSeatView*)object;
QXRoomPitModel *md = contentView.pitModel;
if (md) {
[contentView destroyViews];
}
}
}
[self.checkTimer invalidate];
self.checkTimer = nil;
}
-(NSMutableArray *)seatArray{
if (!_seatArray) {
_seatArray = [NSMutableArray array];
}
return _seatArray;
}
@end
@implementation QXRoomSeatBarSeatView
- (instancetype)init
{
self = [super init];
if (self) {
[self initSubviews];
}
return self;
}
-(void)didClickUserHeaderWithPitModel:(QXRoomPitModel *)pitModel seatView:(QXRoomSeatContentView *)seatView{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickUserHeaderWithPitModel:seatView:)]) {
[self.delegate didClickUserHeaderWithPitModel:pitModel seatView:seatView];
}
}
-(void)previewRoomUserCharmListWithUserId:(NSString *)userId{
if (self.delegate && [self.delegate respondsToSelector:@selector(previewRoomUserCharmListWithUserId:)]) {
[self.delegate previewRoomUserCharmListWithUserId:userId];
}
}
-(void)setPitModel:(QXRoomPitModel *)pitModel{
_pitModel = pitModel;
if (pitModel.user_id.longLongValue>0) {
self.timeView.hidden = NO;
self.optionView.hidden = NO;
self.sexImageView.hidden = NO;
if (pitModel.had_custom_gift == 1) {
self.giftBtn.hidden = NO;
}else{
self.giftBtn.hidden = YES;
}
if ([pitModel.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
self.optionView.hidden = YES;
self.giftBtn.hidden = YES;
}
}else{
self.timeView.hidden = YES;
self.optionView.hidden = YES;
self.sexImageView.hidden = YES;
self.giftBtn.hidden = YES;
}
self.sexImageView.image = [UIImage imageNamed:pitModel.sex.intValue == 1?@"user_sex_boy":@"user_sex_girl"];
self.contentView.pitModel = pitModel;
}
-(void)updateUserCharm:(NSString *)charm{
[self.contentView updateUserCharm:charm];
}
-(void)giftAction{
if (self.delegate && [self.delegate respondsToSelector:@selector(sendGiftWithPitModel:)]) {
[self.delegate sendGiftWithPitModel:self.pitModel];
}
}
-(void)seductionAction{
if (self.delegate && [self.delegate respondsToSelector:@selector(seductionUserWithPitModel:)]) {
[self.delegate seductionUserWithPitModel:self.pitModel];
}
}
-(void)askAction{
if (self.delegate && [self.delegate respondsToSelector:@selector(askUserWithPitModel:)]) {
[self.delegate askUserWithPitModel:self.pitModel];
}
}
-(void)initSubviews{
self.timeView = [[UIView alloc] init];
[self addSubview:self.timeView];
[self.timeView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self);
make.width.mas_equalTo(ScaleWidth(55));
make.centerX.equalTo(self);
make.height.mas_equalTo(ScaleWidth(16));
}];
self.timeBgImageView = [[UIImageView alloc] init];
self.timeBgImageView.backgroundColor = RGB16(0x000000);
[self.timeBgImageView addRoundedCornersWithRadius:ScaleWidth(8)];
self.timeBgImageView.layer.borderWidth = 1;
self.timeBgImageView.layer.borderColor = RGB16A(0xffffff, 0.2).CGColor;
self.timeBgImageView.contentMode = UIViewContentModeScaleToFill;
[self.timeView addSubview:self.timeBgImageView];
[self.timeBgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.timeView);
}];
self.timeLabel = [[UILabel alloc] init];
self.timeLabel.font = [UIFont systemFontOfSize:10];
self.timeLabel.textColor = RGB16(0xffffff);
self.timeLabel.text = @"00:00";
[self.timeView addSubview:self.timeLabel];
[self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self).offset(ScaleWidth(8));
make.top.bottom.equalTo(self.timeView);
}];
self.timeImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bar_room_time_icon"]];
[self.timeView addSubview:self.timeImageView];
[self.timeImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.timeLabel.mas_left).offset(-3);
make.height.width.mas_equalTo(12);
make.centerY.equalTo(self.timeView);
}];
self.contentView = [[QXRoomSeatContentView alloc] init];
self.contentView.delegate = self;
[self addSubview:self.contentView];
[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.timeView.mas_bottom).offset(-10);
make.width.mas_equalTo(ScaleWidth(60));
make.height.mas_equalTo(ScaleWidth(60-10)+51-ScaleWidth(15)-5);
make.centerX.mas_equalTo(self);
}];
self.optionView = [[UIView alloc] init];
[self addSubview:self.optionView];
[self.optionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self);
make.centerX.equalTo(self);
make.height.mas_equalTo(ScaleWidth(14));
make.width.mas_equalTo(100);
}];
self.askBtn = [[UIButton alloc] init];
// self.askBtn.titleLabel.font = [UIFont systemFontOfSize:12];
// [self.askBtn setTitle:@"约TA" forState:(UIControlStateNormal)];
// [self.askBtn addRoundedCornersWithRadius:12.5];
// [self.askBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateNormal)];
// self.askBtn.backgroundColor = QXConfig.themeColor;
[self.askBtn addTarget:self action:@selector(askAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.askBtn setBackgroundImage:[UIImage imageNamed:@"bar_room_ask_ta"] forState:(UIControlStateNormal)];
[self.optionView addSubview:self.askBtn];
[self.askBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.optionView).offset(ScaleWidth(-21.5));
make.width.mas_equalTo(ScaleWidth(38));
make.top.bottom.equalTo(self.optionView);
}];
self.seductionBtn = [[UIButton alloc] init];
// [self.seductionBtn setTitle:@"撩TA" forState:(UIControlStateNormal)];
// self.seductionBtn.titleLabel.font = [UIFont systemFontOfSize:12];
// [self.seductionBtn addRoundedCornersWithRadius:12.5];
// [self.seductionBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateNormal)];
// self.seductionBtn.backgroundColor = QXConfig.themeColor;
[self.seductionBtn setBackgroundImage:[UIImage imageNamed:@"bar_room_seduction_ta"] forState:(UIControlStateNormal)];
[self.seductionBtn addTarget:self action:@selector(seductionAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.optionView addSubview:self.seductionBtn];
[self.seductionBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.askBtn.mas_right).offset(5);
make.width.mas_equalTo(ScaleWidth(38));
make.top.bottom.equalTo(self.optionView);
}];
[self bringSubviewToFront:self.timeView];
self.sexImageView = [[UIImageView alloc] init];
[self addSubview:self.sexImageView];
[self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(15);
make.right.equalTo(self.contentView).offset(-5);
make.top.equalTo(self.contentView).offset(ScaleWidth(40));
}];
self.giftBtn = [[UIButton alloc] init];
[self.giftBtn setImage:[UIImage imageNamed:@"bar_room_custom_gift"] forState:(UIControlStateNormal)];
[self.giftBtn addTarget:self action:@selector(giftAction) forControlEvents:(UIControlEventTouchUpInside)];
[self addSubview:self.giftBtn];
[self.giftBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self);
make.right.equalTo(self.contentView.mas_left);
make.height.mas_equalTo(30);
make.top.equalTo(self.contentView).offset(12);
}];
[self addSubview:self.mp4View];
[self.mp4View mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self).offset(ScaleWidth(30));
make.width.mas_equalTo(ScaleWidth(100));
make.height.mas_equalTo(ScaleWidth(100/9*16));
make.top.equalTo(self.contentView).offset(-ScaleWidth((100/9*16)/2)+ScaleWidth(40));
}];
}
-(void)viewDidFinishPlayMP4:(NSInteger)totalFrameCount view:(VAPView *)container{
dispatch_async(dispatch_get_main_queue(), ^{
self->_mp4View.hidden = YES;
[self->_mp4View stopHWDMP4];
});
}
-(void)viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container{
dispatch_async(dispatch_get_main_queue(), ^{
self->_mp4View.hidden = YES;
});
}
-(void)playSeductionEffectWithPlayImage:(NSString *)playImage isMute:(BOOL)isMute{
MJWeakSelf
if ([playImage hasPrefix:@"http"] || [playImage hasPrefix:@"https"]) {
[weakSelf.mp4View stopHWDMP4];
[[QXRequset shareInstance] downloadVideoPlayerWithUrl:playImage completion:^(BOOL result, NSString * _Nonnull fileName) {
NSString *videoPath = [QXFileManager getGiftVideoPath:playImage.lastPathComponent];
weakSelf.mp4View.hidden = NO;
[weakSelf.mp4View setMute:isMute];
[weakSelf.mp4View playHWDMP4:videoPath repeatCount:1 delegate:self];
}];
// self.mp4View.hidden = NO;
// NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"zizi" ofType:@"mp4"];
// [self.mp4View playHWDMP4:videoPath repeatCount:1 delegate:self];
}
}
- (VAPView *)mp4View {
if (!_mp4View) {
_mp4View = [[VAPView alloc] initWithFrame:CGRectZero];
_mp4View.hwd_enterBackgroundOP = HWDMP4EBOperationTypePauseAndResume;
_mp4View.contentMode = UIViewContentModeScaleAspectFit;
_mp4View.userInteractionEnabled = NO;
_mp4View.backgroundColor = [UIColor clearColor];
_mp4View.hidden = YES;
_mp4View.hwd_Delegate = self;
}
return _mp4View;
}
-(void)destroyViews{
[self.mp4View stopHWDMP4];
[self.contentView destroyViews];
}
@end