242 lines
7.5 KiB
Objective-C
242 lines
7.5 KiB
Objective-C
//
|
|
// MsRoomMessageMainView.m
|
|
// YuMi
|
|
//
|
|
// Created by duoban on 2024/5/10.
|
|
//
|
|
#import "MsRoomMessageMainView.h"
|
|
|
|
#import "ClientConfig.h"
|
|
#import "UserInfoModel.h"
|
|
#import <NIMSDK/NIMSDK.h>
|
|
#import "Api+Message.h"
|
|
#import "AttachmentModel.h"
|
|
#import "RoomInfoModel.h"
|
|
#import "BoomInfoModel.h"
|
|
#import "XPSkillCardPlayerManager.h"
|
|
|
|
@interface MsRoomMessageMainView()<XPRoomMessageContainerViewDelegate, NIMBroadcastManagerDelegate>
|
|
|
|
|
|
|
|
///房间的代理
|
|
@property (nonatomic,weak) id<RoomHostDelegate> hostDelegate;
|
|
///是否是大的 只有在小游戏的时候有用
|
|
@property (nonatomic,assign) BOOL isLarge;
|
|
|
|
@property (nonatomic, strong) UIButton *buttonRoom;
|
|
@property (nonatomic, strong) UIButton *buttonChat;
|
|
@property (nonatomic, strong) UIButton *buttonGift;
|
|
@property (nonatomic, strong) UIImageView *selectedMark;
|
|
|
|
@end
|
|
|
|
@implementation MsRoomMessageMainView
|
|
|
|
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate {
|
|
self = [super init];
|
|
if (self) {
|
|
self.hostDelegate = delegate;
|
|
self.hidden = YES;
|
|
[self installUI];
|
|
[self installConstraints];
|
|
|
|
[[NIMSDK sharedSDK].broadcastManager addDelegate:self];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)dealloc {
|
|
[[NIMSDK sharedSDK].broadcastManager removeDelegate:self];
|
|
}
|
|
|
|
-(void)installUI{
|
|
[self addSubview:self.buttonRoom];
|
|
[self addSubview:self.buttonChat];
|
|
[self addSubview:self.buttonGift];
|
|
[self addSubview:self.selectedMark];
|
|
[self addSubview:self.messageListView];
|
|
}
|
|
-(void)installConstraints{
|
|
[self.buttonRoom mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.mas_equalTo(self);
|
|
make.leading.mas_equalTo(self).offset(15);
|
|
make.height.mas_equalTo(20);
|
|
}];
|
|
|
|
[self.buttonChat mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.mas_equalTo(self);
|
|
make.leading.mas_equalTo(self.buttonRoom.mas_trailing).offset(20);
|
|
make.height.mas_equalTo(20);
|
|
}];
|
|
|
|
[self.buttonGift mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.mas_equalTo(self);
|
|
make.leading.mas_equalTo(self.buttonChat.mas_trailing).offset(20);
|
|
make.height.mas_equalTo(20);
|
|
}];
|
|
|
|
[self.selectedMark mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.mas_equalTo(self).offset(19);
|
|
make.centerX.mas_equalTo(self.buttonRoom);
|
|
make.size.mas_equalTo(CGSizeMake(9, 3));
|
|
}];
|
|
|
|
[self.messageListView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.mas_equalTo(self.buttonRoom.mas_bottom).offset(16);
|
|
make.leading.bottom.trailing.mas_equalTo(self);
|
|
}];
|
|
}
|
|
- (void)showUserCard:(NSInteger)uid{
|
|
[self.messageListView showUserCard:uid];
|
|
}
|
|
|
|
- (void)didTapButton:(UIButton *)sender {
|
|
[self.messageListView changeType:sender.tag - 100];
|
|
|
|
[UIView animateWithDuration:0.2 animations:^{
|
|
[self.selectedMark mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.mas_equalTo(self).offset(19);
|
|
if (sender.tag == 101) {
|
|
make.centerX.mas_equalTo(self.buttonRoom);
|
|
} else if (sender.tag == 102) {
|
|
make.centerX.mas_equalTo(self.buttonChat);
|
|
} else {
|
|
make.centerX.mas_equalTo(self.buttonGift);
|
|
}
|
|
make.size.mas_equalTo(CGSizeMake(10, 3));
|
|
}];
|
|
[self layoutIfNeeded];
|
|
}];
|
|
}
|
|
|
|
#pragma mark - RoomGuestDelegate
|
|
- (void)handleNIMCustomMessage:(NIMMessage *)message {
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
[self.messageListView handleNIMCustomMessage:message];
|
|
});
|
|
}
|
|
|
|
- (void)handleNIMNotificationMessage:(NIMMessage *)message {
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
[self.messageListView handleNIMNotificationMessage:message];
|
|
});
|
|
}
|
|
|
|
- (void)handleNIMTextMessage:(NIMMessage *)message {
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
[self.messageListView handleNIMTextMessage:message];
|
|
});
|
|
}
|
|
|
|
- (void)handleNIMImageMessage:(NIMMessage *)message {
|
|
|
|
}
|
|
|
|
- (void)onRoomMiniEntered {
|
|
self.hidden = NO;
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
[self.messageListView onRoomMiniEntered];
|
|
});
|
|
}
|
|
|
|
- (void)onRoomEntered {
|
|
self.hidden = NO;
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
[self.messageListView onRoomEntered];
|
|
});
|
|
}
|
|
|
|
- (void)onRoomUpdate {
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
[self.messageListView onRoomUpdate];
|
|
});
|
|
}
|
|
#pragma mark - XPRoomMessageContainerViewDelegate
|
|
- (void)xPRoomMessageContainerViewlDidTapEmpty:(XPRoomMessageContainerView *)view{
|
|
if (self.hostDelegate.getRoomInfo.type == RoomType_MiniGame) {
|
|
self.isLarge = !self.isLarge;
|
|
CGFloat height = self.isLarge ? 200 : (iPhoneXSeries ? 100 : 80);
|
|
[self mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
make.height.mas_equalTo(height);
|
|
}];
|
|
}
|
|
}
|
|
|
|
#pragma mark -
|
|
- (void)onReceiveBroadcastMessage:(NIMBroadcastMessage *)broadcastMessage {
|
|
if ([AccountInfoStorage instance].getUid.length == 0) {
|
|
return;
|
|
}
|
|
if (broadcastMessage.content) {
|
|
NSDictionary *msgDictionary = [broadcastMessage.content toJSONObject];
|
|
AttachmentModel *attachment = [AttachmentModel modelWithJSON:msgDictionary[@"body"]];
|
|
Boom632Model *m = [Boom632Model modelWithJSON:[attachment data]];
|
|
if (m.roomUid != [XPSkillCardPlayerManager shareInstance].roomUid.integerValue) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
[self.messageListView handleBroadcastMessage:broadcastMessage];
|
|
});
|
|
}
|
|
|
|
#pragma mark - 懒加载
|
|
- (NSInteger)type{
|
|
return 0;
|
|
}
|
|
|
|
- (XPRoomMessageContainerView *)messageListView{
|
|
if(!_messageListView){
|
|
_messageListView = [[XPRoomMessageContainerView alloc] initWithDelegate:self.hostDelegate];
|
|
_messageListView.delegate = self;
|
|
}
|
|
return _messageListView;
|
|
}
|
|
|
|
- (UIButton *)buttonRoom {
|
|
if (!_buttonRoom) {
|
|
_buttonRoom = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
_buttonRoom.tag = 101;
|
|
[_buttonRoom.titleLabel setFont:kFontMedium(14)];
|
|
[_buttonRoom setTitle:YMLocalizedString(@"RoomMessageTitle_0") forState:UIControlStateNormal];
|
|
[_buttonRoom addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _buttonRoom;
|
|
}
|
|
|
|
- (UIButton *)buttonChat {
|
|
if (!_buttonChat) {
|
|
_buttonChat = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
_buttonChat.tag = 102;
|
|
[_buttonChat.titleLabel setFont:kFontMedium(14)];
|
|
[_buttonChat setTitle:YMLocalizedString(@"RoomMessageTitle_1") forState:UIControlStateNormal];
|
|
[_buttonChat addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _buttonChat;
|
|
}
|
|
|
|
- (UIButton *)buttonGift {
|
|
if (!_buttonGift) {
|
|
_buttonGift = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
_buttonGift.tag = 103;
|
|
[_buttonGift.titleLabel setFont:kFontMedium(14)];
|
|
[_buttonGift setTitle:YMLocalizedString(@"RoomMessageTitle_2") forState:UIControlStateNormal];
|
|
[_buttonGift addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _buttonGift;
|
|
}
|
|
|
|
- (UIImageView *)selectedMark {
|
|
if (!_selectedMark) {
|
|
_selectedMark = [[UIImageView alloc] init];
|
|
_selectedMark.backgroundColor = UIColorFromRGB(0x04D5C6);
|
|
_selectedMark.layer.cornerRadius = 1;
|
|
_selectedMark.layer.masksToBounds = YES;
|
|
}
|
|
return _selectedMark;
|
|
}
|
|
|
|
@end
|