finish:1.0.17

This commit is contained in:
eggmanQQQ
2024-10-15 20:56:25 +08:00
parent 0b14b6bf5f
commit f576d9c3cf
32 changed files with 629 additions and 86 deletions

View File

@@ -540,6 +540,8 @@
54C3895F2C2189DD00FD47B1 /* XPHomeMinePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895E2C2189DD00FD47B1 /* XPHomeMinePresenter.m */; };
54C389622C23BD1600FD47B1 /* HomeRankAvatarModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C389612C23BD1600FD47B1 /* HomeRankAvatarModel.m */; };
54C389672C24464600FD47B1 /* HomeMineRoomModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C389662C24464600FD47B1 /* HomeMineRoomModel.m */; };
54C608522CBE0BEB003DD5D2 /* game_floating_bg.svga in Resources */ = {isa = PBXBuildFile; fileRef = 54C608502CBE0BEB003DD5D2 /* game_floating_bg.svga */; };
54C608552CBE1EC7003DD5D2 /* GameUniversalBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C608542CBE1EC7003DD5D2 /* GameUniversalBannerView.m */; };
54C9A10D2C3D2FD300C6D970 /* XPMineDataGameMateTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C9A10C2C3D2FD300C6D970 /* XPMineDataGameMateTableViewCell.m */; };
54C9A1102C3D3E1700C6D970 /* XPMineGameMateOrderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C9A10F2C3D3E1700C6D970 /* XPMineGameMateOrderView.m */; };
54C9A1132C3D5A2300C6D970 /* XPGameOrdersListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C9A1122C3D5A2300C6D970 /* XPGameOrdersListViewController.m */; };
@@ -2638,6 +2640,9 @@
54C389642C24448900FD47B1 /* XPHomeMineProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMineProtocol.h; sourceTree = "<group>"; };
54C389652C24464600FD47B1 /* HomeMineRoomModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeMineRoomModel.h; sourceTree = "<group>"; };
54C389662C24464600FD47B1 /* HomeMineRoomModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeMineRoomModel.m; sourceTree = "<group>"; };
54C608502CBE0BEB003DD5D2 /* game_floating_bg.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = game_floating_bg.svga; sourceTree = "<group>"; };
54C608532CBE1EC7003DD5D2 /* GameUniversalBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GameUniversalBannerView.h; sourceTree = "<group>"; };
54C608542CBE1EC7003DD5D2 /* GameUniversalBannerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GameUniversalBannerView.m; sourceTree = "<group>"; };
54C9A10B2C3D2FD300C6D970 /* XPMineDataGameMateTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDataGameMateTableViewCell.h; sourceTree = "<group>"; };
54C9A10C2C3D2FD300C6D970 /* XPMineDataGameMateTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDataGameMateTableViewCell.m; sourceTree = "<group>"; };
54C9A10E2C3D3E1700C6D970 /* XPMineGameMateOrderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGameMateOrderView.h; sourceTree = "<group>"; };
@@ -6530,6 +6535,14 @@
path = SubViews;
sourceTree = "<group>";
};
54C608512CBE0BEB003DD5D2 /* game */ = {
isa = PBXGroup;
children = (
54C608502CBE0BEB003DD5D2 /* game_floating_bg.svga */,
);
path = game;
sourceTree = "<group>";
};
54E82E9B2CA684A600C931D9 /* Features */ = {
isa = PBXGroup;
children = (
@@ -8145,6 +8158,8 @@
E80E09B22A42071D00CD2BE7 /* XPRoomStarKitchenBannerView.m */,
238A90052BA9729200828123 /* PIUniversalBannerView.h */,
238A90062BA9729200828123 /* PIUniversalBannerView.m */,
54C608532CBE1EC7003DD5D2 /* GameUniversalBannerView.h */,
54C608542CBE1EC7003DD5D2 /* GameUniversalBannerView.m */,
54E4D52E2C9048E1009E1FEA /* LuckyGiftWinningFlagView.h */,
54E4D52F2C9048E1009E1FEA /* LuckyGiftWinningFlagView.m */,
54E4D5312C90658C009E1FEA /* LuckyGiftWinningBannerView.h */,
@@ -10058,6 +10073,7 @@
E8A1E45C276220B100B294CA /* Resources */ = {
isa = PBXGroup;
children = (
54C608512CBE0BEB003DD5D2 /* game */,
54FFD3802C9BD12600DE61E5 /* cp */,
54F179062C8EA48C00CB5219 /* Combo_Boom.svga */,
23EE96F12B9FF6BE00475D69 /* pi_crazy_zoo.svga */,
@@ -11331,6 +11347,7 @@
54FFD3832C9BD12600DE61E5 /* 5.svga in Resources */,
54FFD3842C9BD12600DE61E5 /* 3.svga in Resources */,
54FFD3852C9BD12600DE61E5 /* 2.svga in Resources */,
54C608522CBE0BEB003DD5D2 /* game_floating_bg.svga in Resources */,
E80EC8A828ACD84100D133C5 /* emoji_76@2x.png in Resources */,
2368ECCF2BC38F9800EDF4C9 /* InfoPlist.strings in Resources */,
E80EC88E28ACD84000D133C5 /* emoji_142@2x.png in Resources */,
@@ -12839,6 +12856,7 @@
1427218829A75F6F00C7C423 /* HTTPErrorResponse.m in Sources */,
E85E7B032A4EB0D200B6D00A /* XPGuildIncomePresenter.m in Sources */,
E8A30BF928534E48003B4873 /* XPSessionFindNewEmptyTableViewCell.m in Sources */,
54C608552CBE1EC7003DD5D2 /* GameUniversalBannerView.m in Sources */,
545888362C1C306B00897585 /* XPRoomPKPaneAvatarView.m in Sources */,
E896EFB22771C93B00AD2CC1 /* XPMineFriendNumberView.m in Sources */,
14EB640D29A5C16000A4A00B /* XPMomentsSimpleDetailNav.m in Sources */,

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "go@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -137,8 +137,13 @@ typedef NS_ENUM(NSInteger, BackMusicPlayState) {
///背景人声的音量大小
- (void)updateUserSound:(int)soundVol;
///用户调整麦位状态时触发,不持久化数值
- (void)updateUserSoundWithUserInMic:(int)soundVol;
- (NSInteger)loadUserSound;
- (void)resetToDefault;
@property (nonatomic,assign) BOOL broadcast;
@end

View File

@@ -11,6 +11,9 @@
#import "ZegoRtcImpl.h"
#import "TRTCRtcImpl.h"
UIKIT_EXTERN NSString * kRoomBackMusicAudioMixingVolumeKey;
UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
@interface RtcManager()<RtcImplDelegate>
@property (nonatomic, strong) id<RtcInterface> engine;
@@ -132,18 +135,35 @@
///
- (void)updateMusicSound:(int)soundVol {
[[NSUserDefaults standardUserDefaults] setInteger:soundVol forKey:kRoomBackMusicAudioMixingVolumeKey];
[[NSUserDefaults standardUserDefaults] synchronize];
[self.engine updateMusicSound:soundVol];
}
///
- (void)updateUserSound:(int)soundVol {
[[NSUserDefaults standardUserDefaults] setInteger:soundVol forKey:kRoomBackMusicCaptureVolumeKey];
[[NSUserDefaults standardUserDefaults] synchronize];
[self.engine updateUserSound:soundVol];
}
- (void)updateUserSoundWithUserInMic:(int)soundVol {
[self.engine updateUserSound:soundVol];
}
- (NSInteger)loadUserSound {
// recEngine 50
if ([self.engine loadUserSound] == 0) {
[self updateUserSound:50];
return [[NSUserDefaults standardUserDefaults] integerForKey:kRoomBackMusicCaptureVolumeKey];
}
return [self.engine loadUserSound];
}
- (void)resetToDefault {
[self.engine updateUserSound:50];
}
- (void)usersSpeaking:(NSMutableArray *)uids {
if (self.engineDelegate) {
[self.engineDelegate usersSpeaking:uids];

View File

@@ -125,9 +125,6 @@
@property (nonatomic, strong) UIImageView *progressBar;
@property (nonatomic, strong) UIView *rankingView;
//@property (nonatomic, strong) UIImageView *wear_1;
//@property (nonatomic, strong) UIImageView *wear_2;
//@property (nonatomic, strong) UIImageView *wear_3;
@property (nonatomic, strong) NetImageView *rankAvatar_1;
@property (nonatomic, strong) NetImageView *rankAvatar_2;
@property (nonatomic, strong) NetImageView *rankAvatar_3;
@@ -269,11 +266,15 @@
}];
_vapView = [[VAPView alloc] init];
_vapView.contentMode = UIViewContentModeScaleAspectFill;
_vapView.contentMode = UIViewContentModeScaleAspectFit;
[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);
if (iPhoneXSeries) {
make.top.mas_equalTo(self.view).offset(kGetScaleWidth(170) - kSafeAreaBottomHeight);
} else {
make.top.mas_equalTo(self.view).offset(kGetScaleWidth(40) - kSafeAreaBottomHeight);
}
make.width.mas_equalTo(kGetScaleWidth(211));
make.height.mas_equalTo(kGetScaleWidth(489));
}];
@@ -306,7 +307,7 @@
[self.giftsView addSubview:helpButton];
[helpButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(jackpotBackgroundImageView).offset(-8);
make.trailing.mas_equalTo(jackpotBackgroundImageView).offset(-3);
make.trailing.mas_equalTo(jackpotBackgroundImageView).offset(-5);
make.width.height.mas_equalTo(43);
}];
@@ -319,7 +320,6 @@
[jackpotTitleImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(jackpotBackgroundImageView);
make.centerY.mas_equalTo(helpButton);
// make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(166), kGetScaleWidth(52)));
make.height.mas_equalTo(kGetScaleWidth(52));
make.leading.mas_equalTo(jackpotTitleLabel).offset(-40);
make.trailing.mas_equalTo(jackpotTitleLabel).offset(40);
@@ -335,7 +335,6 @@
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];
@@ -414,15 +413,15 @@
[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.width.mas_equalTo(57);
make.height.mas_equalTo(kGetScaleWidth(240));
}];
[progressBG addSubview:self.progressBar];
[self.progressBar mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(progressBG).offset(kGetScaleWidth(21.5));
make.leading.mas_equalTo(progressBG).offset(21);
make.bottom.mas_equalTo(progressBG).offset(kGetScaleWidth(-35));
make.width.mas_equalTo(kGetScaleWidth(18));
make.width.mas_equalTo(18);
make.height.mas_equalTo(kGetScaleWidth(180)).multipliedBy(1);
}];
@@ -430,8 +429,8 @@
[self.view addSubview:progressNumberBG];
[progressNumberBG mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(progressBG).offset(kGetScaleWidth(-13));
make.leading.mas_equalTo(progressBG).offset(11);
make.width.height.mas_equalTo(kGetScaleWidth(43));
make.centerX.mas_equalTo(self.progressBar);
make.width.height.mas_equalTo(43);
}];
[self.view addSubview:self.progressLabel];
@@ -679,9 +678,10 @@
self.progressLabel.text = @(boom.speed).stringValue;
CGFloat progress = boom.speed * 1.0 / 100.0;
if (progress == 0) {
progress = 0.05;
progress = 0.1;
}
[UIView animateWithDuration:0.3 animations:^{
[UIView animateWithDuration:0.2 animations:^{
[self.progressBar mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(kGetScaleWidth(180) * progress); //
}];
@@ -797,7 +797,10 @@
#pragma mark -
- (UILabel *)progressLabel {
if (!_progressLabel) {
_progressLabel = [UILabel labelInitWithText:@"99" font:kFontMedium(15) textColor:UIColorFromRGB(0xF0E7BA)];
_progressLabel = [UILabel labelInitWithText:@""
font:kFontMedium(15)
textColor:UIColorFromRGB(0xF0E7BA)];
_progressLabel.textAlignment = NSTextAlignmentCenter;
}
return _progressLabel;
}
@@ -810,7 +813,7 @@
- (UIImageView *)backgroundImageView {
UIImageView *bg = [[UIImageView alloc] initWithImage:kImage(@"room_boom_progress_bg")];
bg.contentMode = UIViewContentModeScaleAspectFit;
bg.contentMode = UIViewContentModeScaleAspectFill;
bg.userInteractionEnabled = YES;
return bg;
}
@@ -862,6 +865,7 @@
- (UILabel *)jackpotTipsLabel {
UILabel *label = [UILabel labelInitWithText:YMLocalizedString(@"RoomBoom_10") font:kFontRegular(10) textColor:UIColorFromRGB(0xCBA1FF)];
label.textAlignment = NSTextAlignmentCenter;
label.numberOfLines = 2;
return label;
}
@@ -889,7 +893,7 @@
}
- (UIImageView *)rankingTitleBG {
UIImage *image = [kImage(@"room_boom_result_top_bg") resizableImageWithCapInsets:UIEdgeInsetsMake(0, 40, 0, 40) resizingMode:UIImageResizingModeStretch];
UIImage *image = [kImage(@"room_boom_result_top_bg") resizableImageWithCapInsets:UIEdgeInsetsMake(0, 40, 0, 40) resizingMode:UIImageResizingModeTile];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
return imageView;
}
@@ -1100,10 +1104,11 @@
- (UIImageView *)progressBar {
if (!_progressBar) {
UIImage *progressImage = [kImage(@"room_boom_progress_bar") resizableImageWithCapInsets:UIEdgeInsetsMake(10, 0, 10, 0) resizingMode:UIImageResizingModeStretch];
UIImage *progressImage = [kImage(@"room_boom_progress_bar") resizableImageWithCapInsets:UIEdgeInsetsMake(40, 0, 0, 0) resizingMode:UIImageResizingModeTile];
_progressBar = [[UIImageView alloc] initWithImage:progressImage];
_progressBar.userInteractionEnabled = YES;
_progressBar.hidden = NO;
_progressBar.clipsToBounds = YES;
}
return _progressBar;
}

View File

@@ -15,6 +15,7 @@
#import "RoomHostDelegate.h"
#import "XPRoomViewController.h"
#import "XCCurrentVCStackManager.h"
#import "XPSkillCardPlayerManager.h"
@interface RoomBoomBannerAnimation ()
@@ -25,7 +26,6 @@
@property (nonatomic, strong) Boom632Model *model;
//@property (nonatomic, copy) void(^didTapGo)(void);
@property (nonatomic, assign) BOOL needHandleTap;
@end
@@ -54,7 +54,7 @@
[UIView animateWithDuration:0.25 animations:^{
bannerView.center = CGPointMake(superView.center.x, height/2 + 80);
} completion:^(BOOL finished) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
bannerView.frame = CGRectMake(-KScreenWidth, 80, width, height);
} completion:^(BOOL finished) {
@@ -90,14 +90,12 @@
if (roomVC) {
//
if ([roomVC getRoomInfo].uid == self.model.roomUid) {
if ([roomVC getRoomInfo].uid == [[XPSkillCardPlayerManager shareInstance] roomUid].integerValue) {
return;
}
__block NSString *targetRoomUid = @(self.model.roomUid).stringValue;
@kWeakify(self);
[TTPopup alertWithMessage:YMLocalizedString(@"Combo_10") confirmHandler:^{
// @kStrongify(self);
[roomVC exitRoom];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[XPRoomViewController openRoom:targetRoomUid
@@ -169,7 +167,7 @@
make.top.mas_equalTo(self.titleLabel.mas_bottom);
make.left.mas_equalTo(self.rocket.mas_right).offset(4);
make.right.mas_equalTo(goButton.mas_left);
make.height.mas_offset(17);
// make.height.mas_offset(17);
}];
}
return self;
@@ -207,6 +205,7 @@
_titleLabel = [UILabel labelInitWithText:@""
font:kFontMedium(12)
textColor:[UIColor whiteColor]];
_titleLabel.shadowColor = [UIColor grayColor];
_titleLabel.shadowOffset = CGSizeMake(2, 2);
}
@@ -218,6 +217,7 @@
_contentLabel = [UILabel labelInitWithText:@""
font:kFontMedium(10)
textColor:[UIColor whiteColor]];
_contentLabel.numberOfLines = 2;
NSAttributedString *as_2 = [[NSAttributedString alloc] initWithString:@"Boom"
attributes:@{NSFontAttributeName: kFontMedium(10),
NSForegroundColorAttributeName: UIColorFromRGB(0xFFE018)}];
@@ -225,8 +225,15 @@
attributes:@{NSFontAttributeName: kFontMedium(10),
NSForegroundColorAttributeName: [UIColor whiteColor]}];
NSMutableAttributedString *content = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"RoomBoom_3") attributes:@{NSFontAttributeName: kFontMedium(10), NSForegroundColorAttributeName: [UIColor whiteColor]}];
[content appendAttributedString:as_2];
[content appendAttributedString:as_3];
if (isMSRTL()) {
[content appendAttributedString:as_3];
} else if (isMSZH()) {
[content appendAttributedString:as_2];
[content appendAttributedString:as_3];
} else {
[content insertAttributedString:as_2 atIndex:0];
}
_contentLabel.attributedText = content;
}
return _contentLabel;

View File

@@ -26,6 +26,7 @@
@kStrongify(self);
self.icon.imageUrl = boomModel.pic;
CGFloat progress = boomModel.speed * 1.0 / 100.0;
if (progress == 0) {
self.progress.hidden = YES;
} else {
@@ -79,7 +80,7 @@
- (UIImageView *)progress {
if (!_progress) {
UIImage *progressImage = [kImage(@"room_boom_entry_progress_bar") resizableImageWithCapInsets:UIEdgeInsetsMake(0, 3, 0, 3) resizingMode:UIImageResizingModeStretch];
UIImage *progressImage = [kImage(@"room_boom_entry_progress_bar") resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 3) resizingMode:UIImageResizingModeTile];
_progress = [[UIImageView alloc] initWithImage:progressImage];
_progress.userInteractionEnabled = YES;
_progress.hidden = NO;

View File

@@ -261,9 +261,13 @@
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.itemSize = CGSizeMake(kGetScaleWidth(88), kGetScaleWidth(88)); // item
layout.minimumLineSpacing = 20; //
layout.minimumInteritemSpacing = 11.5; //
if (iPhoneXSeries) {
layout.minimumInteritemSpacing = 11.5; //
} else {
layout.minimumInteritemSpacing = 4;
}
layout.scrollDirection = UICollectionViewScrollDirectionVertical; //
// layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10); //
_giftsCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero
collectionViewLayout:layout];

View File

@@ -50,6 +50,9 @@ typedef NS_ENUM(NSInteger, ActivityType) {
@property(nonatomic,strong) ActivityInfoItemModel *gameModel;
///游戏链接
@property(nonatomic,copy) NSString *gameUrl;
///配置资源位 id
@property (nonatomic, assign) NSInteger id;
@end

View File

@@ -290,8 +290,6 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView;
RoomBottomEntranceModel *model = roomInfo.rightBottomIconConfig;
if (model) {
@kWeakify(self);
model.skipUrl = @"https://api.hfighting.com/molistar/modules/smashEggs/index.html";
model.icon1Url = @"https://image.pekolive.com/egg.png";
if (model.icon2Url.length > 0) {
if (!_loader_url_2) {
@@ -658,8 +656,7 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView;
- (void)didTapConfigEntranceButton {
RoomInfoModel *roomInfo = self.hostDelegate.getRoomInfo;
RoomBottomEntranceModel *model = roomInfo.rightBottomIconConfig;
model.skipUrl = @"https://api.molistar.xyz/molistar/modules/smashEggs/index.html";
model.icon1Url = @"https://image.pekolive.com/egg.png";
if (!model) {
return;
}

View File

@@ -0,0 +1,26 @@
//
// GameUniversalBannerView.h
// YuMi
//
// Created by P on 2024/10/15.
//
#import <UIKit/UIKit.h>
@class SVGAVideoEntity, PIUniversalBannerModel, AttachmentModel;
NS_ASSUME_NONNULL_BEGIN
@interface GameUniversalBannerView : UIView
@property (nonatomic, strong) SVGAVideoEntity *entity;
@property (nonatomic, strong) PIUniversalBannerModel *model;
+ (void)display:(UIView *)superView
with:(AttachmentModel *)attachment
complete:(void(^)(void))complete
goToGame:(void(^)(NSInteger gameID))go;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,290 @@
//
// GameUniversalBannerView.m
// YuMi
//
// Created by P on 2024/10/15.
//
#import "GameUniversalBannerView.h"
#import <SVGA.h>
#import "AttachmentModel.h"
#import "PIUniversalBannerModel.h"
@interface GameUniversalBannerView ()
@property (nonatomic, strong) NetImageView *bgImageView;
@property (nonatomic, strong) SVGAImageView *bgSVGA;
@property (nonatomic, strong) NetImageView *gameIcon;
@property (nonatomic, strong) NetImageView *avatarIcon;
@property (nonatomic, strong) UILabel *titleLabel;
@property (nonatomic, strong) UIButton *goButton;
@property (nonatomic, assign) NSString *gameID;
@property (nonatomic, strong) SVGAParser *parser;
@property (nonatomic, copy) void(^completeDisplay)(void);
@property (nonatomic, copy) void(^didTapGo)(NSInteger gameID);
@end
@implementation GameUniversalBannerView
+ (void)display:(UIView *)superView
with:(AttachmentModel *)attachment
complete:(void(^)(void))complete
goToGame:(void(^)(NSInteger gameID))go {
CGFloat width = KScreenWidth;
CGFloat height = kGetScaleWidth(70);
PIUniversalBannerModel *model = [PIUniversalBannerModel modelWithDictionary:attachment.data];
GameUniversalBannerView *bannerView = [[GameUniversalBannerView alloc] initWithFrame:CGRectMake(KScreenWidth, 80, width, height)];
bannerView.model = model;
bannerView.completeDisplay = complete;
bannerView.didTapGo = go;
bannerView.gameID = model.skipContent;
[superView addSubview:bannerView];
@kWeakify(bannerView);
[UIView animateWithDuration:0.25 animations:^{
bannerView.center = CGPointMake(superView.center.x, height/2 + 80);
} completion:^(BOOL finished) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
bannerView.frame = CGRectMake(-KScreenWidth, 80, width, height);
} completion:^(BOOL finished) {
@kStrongify(bannerView);
[bannerView removeFromSuperview];
if (bannerView.completeDisplay) {
bannerView.completeDisplay();
}
}];
});
}];
}
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self addSubview:self.bgSVGA];
[self.bgSVGA mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self);
}];
[self addSubview:self.gameIcon];
[self.gameIcon mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(44);
make.height.mas_equalTo(44);
make.centerY.mas_equalTo(self);
make.leading.mas_equalTo(35);
}];
[self addSubview:self.avatarIcon];
[self.avatarIcon mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(28);
make.height.mas_equalTo(28);
make.centerY.mas_equalTo(self);
make.leading.mas_equalTo(self.gameIcon.mas_trailing).offset(5);
}];
[self addSubview:self.goButton];
[self.goButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(self);
make.trailing.mas_equalTo(-36);
make.size.mas_equalTo(CGSizeMake(35, 20));
}];
[self addSubview:self.titleLabel];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(117);
make.trailing.mas_equalTo(-80);
make.height.mas_equalTo(70);
}];
}
return self;
}
- (void)setEntity:(SVGAVideoEntity *)entity {
_entity = entity;
self.bgSVGA.videoItem = entity;
[self.bgSVGA autoPlay];
}
- (void)setModel:(PIUniversalBannerModel *)model {
_model = model;
NSDictionary *textDic = model.template;
if(textDic.allKeys.count == 0) {
return ;
}
NSString *key = [NSBundle uploadLanguageText];
NSString *title = textDic[key] == nil ? textDic[textDic.allKeys.firstObject] : textDic[key];
if(title.length == 0) {
return;
}
[title stringByReplacingOccurrencesOfString:@"\n" withString:@""];
if (_model.fontSize <= 0){
_model.fontSize = 12;
}
CGFloat font = _model.fontSize;
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title
attributes:@{
NSFontAttributeName:[UIFont systemFontOfSize:font],
NSForegroundColorAttributeName:[DJDKMIMOMColor colorWithHexString:_model.textColor]}];
for (PIUniversalBannerItemModel *model in _model.contents) {
if([model.type isEqualToString:@"TEXT"]){
NSDictionary *subTextDic = model.text;
if(subTextDic.allKeys.count > 0){
NSString *subText = subTextDic[key] == nil ? subTextDic[subTextDic.allKeys.firstObject] : subTextDic[key];
NSAttributedString *attText = [[NSAttributedString alloc]initWithString:subText attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor colorWithHexString:model.textColor],NSFontAttributeName:[UIFont systemFontOfSize:font]}];
if ([attribute.string containsString:[NSString stringWithFormat:@"{%@}",model.key]]){
[attribute replaceCharactersInRange:[attribute.string rangeOfString:[NSString stringWithFormat:@"{%@}",model.key]] withAttributedString:attText];
}
}
} else if ([model.type isEqualToString:@"IMAGE"]) {
if ([model.key isEqualToString:@"avatar"]) {
[self.avatarIcon loadImageWithUrl:model.image completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) {
if (!image) {
[self.avatarIcon mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(0);
}];
} else {
self.avatarIcon.image = image;
}
}];
} else if ([model.key isEqualToString:@"gameIcon"]) {
[self.gameIcon loadImageWithUrl:model.image completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) {
if (!image) {
[self.gameIcon mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(0);
}];
} else {
self.gameIcon.image = image;
}
}];
}
if ([attribute.string containsString:[NSString stringWithFormat:@"{%@}",model.key]]){
[attribute replaceCharactersInRange:[attribute.string rangeOfString:[NSString stringWithFormat:@"{%@}",model.key]] withAttributedString:[NSAttributedString new]];
}
}
}
self.titleLabel.attributedText = attribute;
BOOL isSvga = [model.resourceType.uppercaseString isEqualToString:@"SVGA"];
@kWeakify(self);
if (isSvga == YES) {
self.bgSVGA.hidden = NO;
self.bgImageView.hidden = YES;
if (!_parser) {
_parser = [SVGAParser new];
}
[self.parser parseWithURL:[NSURL URLWithString:model.resourceContent] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
@kStrongify(self);
self.bgSVGA.videoItem = videoItem;
} failureBlock:^(NSError * _Nonnull error) {
@kStrongify(self);
[self loadLocalSVGA];
}];
}else{
self.bgSVGA.hidden = YES;
self.bgImageView.hidden = NO;
self.bgImageView.imageUrl = model.resourceContent;
}
}
- (void)loadLocalSVGA {
self.bgSVGA.hidden = NO;
self.bgImageView.hidden = YES;
@kWeakify(self);
[self.parser parseWithNamed:@"game_floating_bg"
inBundle:[NSBundle mainBundle]
completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
@kStrongify(self);
self.bgSVGA.videoItem = videoItem;
} failureBlock:^(NSError * _Nonnull error) {
}];
}
- (void)setupNotification {
}
- (void)handleTapGo {
if (self.didTapGo) {
self.didTapGo(self.gameID.integerValue);
}
}
#pragma mark -
- (NetImageView *)bgImageView {
if (_bgImageView) {
_bgImageView = [[NetImageView alloc] init];
_bgImageView.layer.cornerRadius = 2;
_bgImageView.layer.masksToBounds = YES;
}
return _bgImageView;
}
- (SVGAImageView *)bgSVGA {
if (!_bgSVGA) {
_bgSVGA = [[SVGAImageView alloc] init];
_bgSVGA.autoPlay = YES;
_bgSVGA.loops = -1;
}
return _bgSVGA;
}
- (NetImageConfig *)avatarConfig {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.imageType = ImageTypeUserIcon;
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
return config;
}
- (NetImageView *)gameIcon {
if (!_gameIcon) {
_gameIcon = [[NetImageView alloc] initWithConfig:[self avatarConfig]];
_gameIcon.layer.cornerRadius = 2;
_gameIcon.layer.masksToBounds = YES;
}
return _gameIcon;
}
- (NetImageView *)avatarIcon {
if (!_avatarIcon) {
_avatarIcon = [[NetImageView alloc] initWithConfig:[self avatarConfig]];
_avatarIcon.layer.cornerRadius = 28/2;
_avatarIcon.layer.masksToBounds = YES;
}
return _avatarIcon;
}
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [[UILabel alloc] init];
_titleLabel.textAlignment = NSTextAlignmentCenter;
_titleLabel.numberOfLines = 0;
_titleLabel.adjustsFontSizeToFitWidth = YES;
_titleLabel.minimumScaleFactor = 0.5;
}
return _titleLabel;
}
- (UIButton *)goButton {
if (!_goButton) {
_goButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_goButton setImage:kImage(@"game_banner_go")
forState:UIControlStateNormal];
[_goButton addTarget:self
action:@selector(handleTapGo)
forControlEvents:UIControlEventTouchUpInside];
}
return _goButton;
}
@end

View File

@@ -16,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN
@property(nonatomic,copy) NSString *resourceType;
@property(nonatomic,copy) NSString *resourceContent;
@property(nonatomic,assign) int skipType;
@property(nonatomic,copy) NSString *skipContent;
@property(nonatomic,copy) NSString *skipContent; // 当 skip 为 7 时skipContent 内容为游戏 id
@property(nonatomic,copy) NSString *svgaTextKey;
@property(nonatomic,copy) NSArray<PIUniversalBannerItemModel *> *contents;
@property(nonatomic,assign) CGFloat resourceWidth;
@@ -24,6 +24,7 @@ NS_ASSUME_NONNULL_BEGIN
@property(nonatomic,strong) SVGAVideoEntity *videoItem;
@property(nonatomic,strong) UIImage *image;
@property(nonatomic,assign) CGFloat resourceTop;
@property (nonatomic, assign) NSInteger partitionId;
@end
@@ -35,5 +36,8 @@ NS_ASSUME_NONNULL_BEGIN
@property(nonatomic,copy) NSDictionary *text;
@property(nonatomic,assign) int skipType;
@property(nonatomic,copy) NSString *skipContent;
@property (nonatomic, assign) NSInteger height;
@property (nonatomic, assign) NSInteger width;
@property (nonatomic, copy) NSString *image;
@end
NS_ASSUME_NONNULL_END

View File

@@ -41,6 +41,7 @@
#import "AcrossRoomPKPrizeModel.h"
#import "RoomHalfHourRankModel.h"
#import "ClientConfig.h"
#import "ActivityInfoModel.h"
///View
#import "XPRoomGiftBroadcastView.h"
@@ -75,6 +76,9 @@
#import "CPLevelUpAnimation.h"
#import "CPBindingAnimation.h"
#import "MSRoomGameWebVC.h"
#import "GameUniversalBannerView.h"
@interface XPRoomAnimationView ()<
SVGAPlayerDelegate,
NIMBroadcastManagerDelegate,
@@ -175,6 +179,7 @@ HWDMP4PlayDelegate>
@property (nonatomic, copy) NSString *GiftDynamicEffectListPath;
/// banner CP banner CP
/// 1.0.17 banner
@property (nonatomic, strong) NSMutableArray *roomEffectModelsQueueV2;
@property (nonatomic, assign) BOOL isRoomEffectV2Displaying;
@@ -282,7 +287,8 @@ HWDMP4PlayDelegate>
[self receiveTarotBanner:attachment];
}else if (attachment.first == CustomMessageType_Common_H5 &&(attachment.second == Custom_Message_Sub_Common_H5_Novice || attachment.second == Custom_Message_Sub_Common_H5_Advanced)){
[self receiveCommonH5Banner:attachment];
}else if (attachment.first == CustomMessageType_General_Floating_Screen && attachment.second == Custom_Message_Sub_General_Floating_Screen_All_Room ){
}else if (attachment.first == CustomMessageType_General_Floating_Screen &&
(attachment.second == Custom_Message_Sub_General_Floating_Screen_One_Room || attachment.second == Custom_Message_Sub_General_Floating_Screen_All_Room)){
[self receiveRoomGeneralFloatingScreen:attachment];
}
}
@@ -412,6 +418,45 @@ HWDMP4PlayDelegate>
}
}
#pragma mark -
- (void)receiveGameBanner:(AttachmentModel *)attachment {
[self.roomEffectModelsQueueV2 addObject:attachment];
if (!self.isRoomEffectV2Displaying) {
[self processNextRoomEffectAttachment];
}
}
- (void)playGameBanner:(AttachmentModel *)attachment {
@kWeakify(self);
[GameUniversalBannerView display:self with:attachment complete:^{
@kStrongify(self);
[self processNextRoomEffectAttachment];
} goToGame:^(NSInteger gameID) {
@kStrongify(self);
NSArray *baishunList = [self.delegate getPlayList];
for (ActivityInfoModel *model in baishunList) {
if (model.id == gameID) {
if ([self.delegate isKindOfClass:[XPRoomViewController class]]){
MSRoomGameWebVC *vc = [[MSRoomGameWebVC alloc]initWithDelegate:self.delegate gameModel:model];
vc.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight);
XPRoomViewController *roomVC = (XPRoomViewController *)self.delegate;
[roomVC addChildViewController:vc];
XPRoomAnimationView *animationView;
for (id obj in self.delegate.getSuperView.subviews) {
if ([obj isKindOfClass:[XPRoomAnimationView class]]){
animationView = obj;
break;
}
}
[self.delegate.getSuperView addSubview:vc.view];
vc.view.tag = 913;
}
return;
}
}
}];
}
#pragma mark -
- (void)receiveLuckGiftWinning:(AttachmentModel *)attachment {
RoomInfoModel *roomInfo = self.delegate.getRoomInfo;
@@ -445,6 +490,10 @@ HWDMP4PlayDelegate>
self.isRoomEffectV2Displaying = YES;
switch (nextAttachment.second) {
case Custom_Message_Sub_General_Floating_Screen_One_Room:
case Custom_Message_Sub_General_Floating_Screen_All_Room:
[self playGameBanner:nextAttachment];
break;
case Custom_Message_Sub_Super_Gift_Winning_Coins_ALL_Room:
[self playLuckyWinningBanner:nextAttachment];
break;
@@ -487,16 +536,27 @@ HWDMP4PlayDelegate>
roomGraffiti.type = GiftBannerType_General_Floating_Screen;
roomGraffiti.first = attachment.first;
roomGraffiti.second = attachment.second;
if(self.animationListB.count == 0 && self.isPlayOfB == NO){
[self createGeneralFloatingScreenAnimation:roomGraffiti];
PIUniversalBannerModel *model = [PIUniversalBannerModel modelWithDictionary:attachment.data];
if (model.skipType == 7 &&
(attachment.second == Custom_Message_Sub_General_Floating_Screen_One_Room ||
attachment.second == Custom_Message_Sub_General_Floating_Screen_All_Room)) {
[self receiveGameBanner:attachment];
} else {
if(self.animationListB.count == 0 && self.isPlayOfB == NO){
[self createGeneralFloatingScreenAnimation:roomGraffiti bannerModel:model];
}
[self.animationListB addObject:roomGraffiti];
}
[self.animationListB addObject:roomGraffiti];
}
- (void)createGeneralFloatingScreenAnimation:(PIBaseAnimationViewModel *)attachment{
- (void)createGeneralFloatingScreenAnimation:(PIBaseAnimationViewModel *)attachment bannerModel:(PIUniversalBannerModel *)model {
self.isPlayOfB = YES;
CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15);
PIUniversalBannerModel *model = [PIUniversalBannerModel modelWithDictionary:attachment.data];
if (!model) {
model = [PIUniversalBannerModel modelWithDictionary:attachment.data];
}
BOOL isSvga = [model.resourceType.uppercaseString isEqualToString:@"SVGA"];
__block PIUniversalBannerView *bannerView;
@kWeakify(self);
@@ -509,6 +569,7 @@ HWDMP4PlayDelegate>
if(videoItem.videoSize.width > 0){
height = KScreenWidth * videoItem.videoSize.height / videoItem.videoSize.width;
}
bannerView = [[PIUniversalBannerView alloc]initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth, height)];
[self showGeneralFloatingScreenView:bannerView model:model];
} failureBlock:^(NSError * _Nonnull error) {
@@ -1980,7 +2041,6 @@ HWDMP4PlayDelegate>
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self createGiftBannerViewAnimation:self.animationListA.firstObject];
});
}
return;
}
@@ -2009,7 +2069,7 @@ HWDMP4PlayDelegate>
}else if(model.type == GiftBannerType_Magic_House){
[self createGiftCompoundBannerAnimation:model];
}else if (model.type == GiftBannerType_General_Floating_Screen){
[self createGeneralFloatingScreenAnimation:model];
[self createGeneralFloatingScreenAnimation:model bannerModel:nil];
}
}

View File

@@ -174,7 +174,7 @@ UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicOrderKey;
[self playNextMusic:index];
}
}];
[[RtcManager instance] updateUserSound:captureVolum];
[[RtcManager instance] updateMusicSound:musicVolum];
}

View File

@@ -92,6 +92,7 @@
make.width.mas_equalTo(40);
}];
}
#pragma mark - Event Response
- (void)userVolumeSliderValueChange:(UISlider *)slider {
if (slider == self.userVolumeSlider) {
@@ -109,11 +110,13 @@
- (void)setMusicVolum:(NSInteger)musicVolum {
_musicVolum = musicVolum;
self.musicVolumeSlider.value = musicVolum;
self.musicVoiceLabel.text = [[NSString stringWithFormat:@"%ld", musicVolum] stringByAppendingString:@"%"];
}
- (void)setCaptureVolum:(NSInteger)captureVolum {
_captureVolum = captureVolum;
self.userVolumeSlider.value = captureVolum;
self.userVoiceLabel.text = [[NSString stringWithFormat:@"%ld",(NSInteger)captureVolum] stringByAppendingString:@"%"];
}
- (UIStackView *)stackView {

View File

@@ -74,7 +74,7 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
musicVolum = musicVolum > 0 ? musicVolum : 50;
self.voiceSettingView.musicVolum = musicVolum;
NSInteger captureVolum = [[RtcManager instance] loadUserSound]; //[defaults integerForKey:kRoomBackMusicCaptureVolumeKey];
NSInteger captureVolum = [defaults integerForKey:kRoomBackMusicCaptureVolumeKey];
captureVolum = captureVolum > 0 ? captureVolum : 50;
self.voiceSettingView.captureVolum = captureVolum;
}
@@ -258,15 +258,11 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
switch (slider.tag) {
case MusicVoiceSettingType_User:
{
[[NSUserDefaults standardUserDefaults] setInteger:slider.value forKey:kRoomBackMusicCaptureVolumeKey];
[[NSUserDefaults standardUserDefaults] synchronize];
[[RtcManager instance] updateUserSound:(int)slider.value];
}
break;
case MusicVoiceSettingType_Music:
{
[[NSUserDefaults standardUserDefaults] setInteger:slider.value forKey:kRoomBackMusicAudioMixingVolumeKey];
[[NSUserDefaults standardUserDefaults] synchronize];
[[RtcManager instance] updateMusicSound:(int)slider.value];
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMusicLibraryViewController:backMusicVolum:)]) {

View File

@@ -443,7 +443,6 @@
[self.view removeFromSuperview]; //2
[self removeFromParentViewController]; //3
}];
}
#pragma mark - XPCandyTreeBuyViewDelegate

View File

@@ -314,7 +314,6 @@
}
}
[self.hostDelegate.getSuperView addSubview:vc.view];
// [self.hostDelegate.getSuperView bringSubviewToFront:animationView];
vc.view.tag = 913;
}
}

View File

@@ -20,6 +20,10 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;
-(void)showInputView:(NSString *)text;
- (void)menuResignFirstResponder;
- (void)recheckMicState;
- (NSInteger)micState;
@end
NS_ASSUME_NONNULL_END

View File

@@ -36,6 +36,8 @@
#import "MSRoomMenuGameVC.h"
#import "SVGA.h"
#import "XPRoomMiniManager.h"
UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
@interface XPRoomMenuContainerView ()<XPRoomMessageBubbleViewDelegate>
@@ -77,6 +79,8 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
@property (nonatomic, assign) BOOL isDisplayMicStatusControl;
@property (nonatomic, assign) NSInteger micStateType;
@end
@@ -86,8 +90,8 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
self = [super init];
if (self) {
self.clipsToBounds = NO;
self.defaultVoiceVolume = [[RtcManager instance] loadUserSound] > 0 ? [[RtcManager instance] loadUserSound] : 50;
self.defaultVoiceVolume = [[RtcManager instance] loadUserSound];
self.delegate = delegate;
[self initSubViews];
[self initSubViewConstraints];
@@ -276,8 +280,11 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
}
- (void)handleMicControl:(UIButton *)sender {
NSString *message = @"";
switch (sender.tag) {
case 1: {
message = YMLocalizedString(@"RoomMicState_0");
self.defaultVoiceVolume = [[RtcManager instance] loadUserSound];
[RtcManager instance].localMuted = NO;
[[RtcManager instance] updateUserSound:(int)self.defaultVoiceVolume];
for (MicroQueueModel *sequence in [self.delegate getMicroQueue].allValues) {
@@ -288,15 +295,14 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
}
break;
case 2: {
message = YMLocalizedString(@"RoomMicState_2");
[RtcManager instance].localMuted = YES;
}
break;
case 3: {
// self.defaultVoiceVolume = [[RtcManager instance] loadUserSound];
message = YMLocalizedString(@"RoomMicState_1");
[RtcManager instance].localMuted = NO;
[[RtcManager instance] updateUserSound:0];
// [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:kRoomBackMusicCaptureVolumeKey];
// [[NSUserDefaults standardUserDefaults] synchronize];
[[RtcManager instance] updateUserSoundWithUserInMic:0];
}
break;
@@ -306,9 +312,11 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
[self micButtonUpdate:sender.tag];
[self hideMicControlMenu];
[XNDJTDDLoadingTool showErrorWithMessage:message];
}
- (void)micButtonUpdate:(NSInteger)type {
self.micStateType = type;
switch (type) {
case 1:
//
@@ -328,6 +336,17 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
}
}
- (void)recheckMicState {
if (self.micStateType == 3) {
[RtcManager instance].localMuted = NO;
[[RtcManager instance] updateUserSoundWithUserInMic:0];
}
}
- (NSInteger)micState {
return self.micStateType;
}
#pragma mark - notification
- (void)showGiftView:(NSNotification *)noti {
NSDictionary *dict = noti.object;
@@ -504,11 +523,20 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
MicroQueueModel *model = [self findMySelfMicro:queue];
if (model) {
self.micButton.hidden = NO;
if (model.microState.micState == MicroMicStateType_Close || [RtcManager instance].isLocalMuted) {
if ([RtcManager instance].isLocalMuted) {
[self micButtonUpdate:2];
} else {
[self micButtonUpdate:1];
}
//
NSInteger miniRoomMicState = [[XPRoomMiniManager shareManager] loadMicState];
if (miniRoomMicState != -1) {
[self micButtonUpdate:miniRoomMicState];
}
self.micButton.enabled = model.microState.micState == MicroMicStateType_Open;
self.faceButton.hidden = NO;
} else {
self.micButton.hidden = YES;

View File

@@ -168,9 +168,13 @@
if ([AccountInfoStorage instance].getUid.length == 0) {
return;
}
if ([XPSkillCardPlayerManager shareInstance].roomUid != broadcastMessage.sender) {
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;
}
}
[self.messageListView handleBroadcastMessage:broadcastMessage];

View File

@@ -13,6 +13,7 @@ NS_ASSUME_NONNULL_BEGIN
///最小化时,免费礼物的倒计时还在,用来判断是否弹出获得免费礼物弹窗
@property (nonatomic,copy) NSString *_Nullable curState;
+ (instancetype)shareManager;
- (RoomInfoModel *)getRoomInfo;
@@ -34,6 +35,9 @@ NS_ASSUME_NONNULL_BEGIN
- (BOOL)musicPlaying;
///最小化的时候也要保存一下当前播放的歌曲
- (void)configCurrentMusic:(Music * _Nullable)roomInfo isPlaying:(BOOL)isPlaying;
- (void)saveMicState:(NSInteger)type;
- (NSInteger)loadMicState;
@end
NS_ASSUME_NONNULL_END

View File

@@ -19,15 +19,18 @@
@property (nonatomic,assign) BOOL isPlaying;
///
@property (nonatomic,strong) UserInfoModel *userInfo;
@property (nonatomic, assign) NSInteger micState;
@end
@implementation XPRoomMiniManager
+ (instancetype)shareManager {
static dispatch_once_t onceToken = 0;
static id instance;
static XPRoomMiniManager *instance;
dispatch_once(&onceToken, ^{
instance = [[XPRoomMiniManager alloc] init];
instance.micState = -1;
});
return instance;
}
@@ -78,6 +81,7 @@
- (void)resetLocalMessage {
[self.messageArray removeAllObjects];
self.micState = -1;
}
- (NSMutableArray *)messageArray {
@@ -87,4 +91,15 @@
return _messageArray;
}
- (void)saveMicState:(NSInteger)type {
self.micState = type;
}
- (NSInteger)loadMicState {
NSInteger state = self.micState;
self.micState = -1;
return state;
}
@end

View File

@@ -350,7 +350,6 @@ XPCandyTreeInsufficientBalanceViewDelegate>
[self setupForBoom];
//#if DEBUG
// UIButton *b = [UIButton buttonWithType:UIButtonTypeInfoLight];
// b.frame = CGRectMake(100, 100, 100, 100);
@@ -488,6 +487,8 @@ XPCandyTreeInsufficientBalanceViewDelegate>
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
[self.menuContainerView recheckMicState];
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
@@ -574,12 +575,17 @@ XPCandyTreeInsufficientBalanceViewDelegate>
}
[self.quickMessageContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.view).offset(- 52 - kSafeAreaBottomHeight);
// make.bottom.mas_equalTo(self.menuContainerView.mas_top);
make.height.mas_equalTo(0);
make.leading.trailing.mas_equalTo(self.view);
}];
[self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.trailing.bottom.mas_equalTo(self.view);
make.leading.trailing.mas_equalTo(self.view);
if (iPhoneXSeries) {
make.bottom.mas_equalTo(self.view);
} else {
make.bottom.mas_equalTo(-10);
}
make.height.mas_equalTo(52 + kSafeAreaBottomHeight);
}];
@@ -1143,6 +1149,7 @@ XPCandyTreeInsufficientBalanceViewDelegate>
[self.messageContainerView onRoomMiniEntered];
[self.functionView onRoomMiniEntered];
[self.functionView onRoomEntered];
[[RtcManager instance] setLocalMuted:YES];
}
[[XPRoomMiniManager shareManager] configRoomInfo:nil];
[[XPRoomMiniManager shareManager] configUserInfo:nil];
@@ -1213,6 +1220,7 @@ XPCandyTreeInsufficientBalanceViewDelegate>
[self.messageContainerView onRoomMiniEntered];
[self.functionView onRoomMiniEntered];
[self.functionView onRoomEntered];
[[RtcManager instance] setLocalMuted:YES];
}
[[XPRoomMiniManager shareManager] configRoomInfo:nil];
[[XPRoomMiniManager shareManager] configUserInfo:nil];
@@ -1307,6 +1315,7 @@ XPCandyTreeInsufficientBalanceViewDelegate>
}
[self.messageContainerView onRoomMiniEntered];
[[RtcManager instance] setLocalMuted:YES];
}
[self cleanMiniRoomStatues];
@@ -1603,6 +1612,7 @@ XPCandyTreeInsufficientBalanceViewDelegate>
[self.messageContainerView onRoomMiniEntered];
[self.functionView onRoomMiniEntered];
[self.functionView onRoomEntered];
[[RtcManager instance] setLocalMuted:YES];
}
[self cleanMiniRoomStatues];
@@ -2315,6 +2325,9 @@ XPCandyTreeInsufficientBalanceViewDelegate>
if(self.freeModel != nil){
[XPRoomMiniManager shareManager].curState = self.freeModel.curStage;
}
[[XPRoomMiniManager shareManager] saveMicState:[self.menuContainerView micState]];
[self.menuContainerView menuResignFirstResponder];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showRoomFirstChargeWindow) object:nil];
NSDictionary *roomInfoDic = self.roomInfo.model2dictionary != nil ? self.roomInfo.model2dictionary : @{};
@@ -2510,6 +2523,7 @@ XPCandyTreeInsufficientBalanceViewDelegate>
[self.messageContainerView onRoomMiniEntered];
[self.functionView onRoomMiniEntered];
[self.functionView onRoomEntered];
[[RtcManager instance] setLocalMuted:YES];
}
[[XPRoomMiniManager shareManager] configRoomInfo:nil];
[[XPRoomMiniManager shareManager] configUserInfo:nil];
@@ -2613,7 +2627,6 @@ XPCandyTreeInsufficientBalanceViewDelegate>
[_menuContainerView setUpdateHeight:^(CGFloat height) {
@kStrongify(self);
[self.menuContainerView mas_updateConstraints:^(MASConstraintMaker *make) {
// make.leading.trailing.bottom.mas_equalTo(self.view);
make.height.mas_equalTo(height + kSafeAreaBottomHeight);
}];
}];

View File

@@ -676,9 +676,10 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
// if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return;
// [self.roomAnimation receiveNobleLevelUp:attachment];
}else if (attachment.first == CustomMessageType_General_Floating_Screen && attachment.second == Custom_Message_Sub_General_Floating_Screen_All_Room){
if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES) {
return;
}
return;
// if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES) {
// return;
// }
//
// [self.roomAnimation receiveRoomGeneralFloatingScreen:attachment];
}

Binary file not shown.

View File

@@ -3909,15 +3909,15 @@ ineHeadView12" = "الحمل";
"Combo_9" = "مرة";
"Combo_10" = "هل أنت متأكد أنك تريد الذهاب إلى هذه الغرفة؟";
"UserDetail_0" = "النقابة";
"UserDetail_1" = "نيك النقابة";
"UserDetail_2" = "معرّف النقابة:";
"UserDetail_3" = "معرّف العميل";
"UserDetail_0" = "الوكالة";
"UserDetail_1" = "اسم الوكالة";
"UserDetail_2" = "معرّف الوكالة:";
"UserDetail_3" = "معرّف الوكيل";
"UserDetail_4" = "CP";
"UserDetail_5" = "المعيشة";
"UserDetail_5" = "البث المباشر";
"UserDetail_Setting_0" = "عرض الرسوم المتحركة للصفحة الرئيسية - CP";
"UserDetail_Setting_1" = "عرض الصور الرمزية للصفحة الرئيسية- CP";
"UserDetail_CP_List_0" = "تحتاج إلى %@ للترقية";
"UserDetail_CP_List_0" = "تحتاج إلى للترقية%@";
"UserDetail_CP_List_1" = "Waiting for love";
"UserDetail_CP_Toast_0" = "نصيحة";
"UserDetail_CP_Toast_1" = "هل أنت متأكد من أنك تريد إنفاق %@ قطعة نقدية لإلغاء CP الخاص بك مع %@؟";
@@ -3934,9 +3934,9 @@ ineHeadView12" = "الحمل";
"RoomBoom_0" = "لسوء الحظ! لم تحصل على مكافأة، يرجى مواصلة العمل الجيد";
"RoomBoom_1" = "تهانينا على حصولك على الجوائز التالية في هذه الجولة من Boom";
"RoomBoom_2" = "قدم الهدايا واربح جوائز كبرى";
"RoomBoom_3" = "触发了";
"RoomBoom_4" = ",前去圍觀";
"RoomBoom_5" = "لقب الغرفة:";
"RoomBoom_3" = "";
"RoomBoom_4" = "تم تشغيل بوم وذهب للمشاهدة";
"RoomBoom_5" = "";//"لقب الغرفة:";
"RoomBoom_6" = "Reset time: 0:00 (GMT+3) daily";
"RoomBoom_7" = "تصنيف الداعمين";
"RoomBoom_8" = "الجائزة الكبرى";
@@ -3948,3 +3948,8 @@ ineHeadView12" = "الحمل";
"RoomMessageTitle_2" = "إرسال";
"RoomMessageBoom_0" = "تهانينا! ";
"RoomMessageBoom_1" = " إطلاق الجائزة الكبرى السوبر بووم، ستتم مكافأة جميع المستخدمين في الغرفة!";
"RoomMicState_0" = "لقد قمت بتشغيل الميكروفون والموسيقى.";
"RoomMicState_1" = "لقد قمت بتشغيل الموسيقى ولكنك أوقفت الميكروفون.";
"RoomMicState_2" = "لقد أوقفت الموسيقى والميكروفون.";

View File

@@ -3730,9 +3730,9 @@
"RoomBoom_0" = "Unfortunately! You did not receive reward, please keep up the good work!";
"RoomBoom_1" = "Congratulations on being awarded the following prizes in this round of Boom";
"RoomBoom_2" = "Give gifts and win super prizes";
"RoomBoom_3" = "触发了";
"RoomBoom_4" = ",前去圍觀";
"RoomBoom_5" = "Room name";
"RoomBoom_3" = "";
"RoomBoom_4" = "was triggered, go and watch";
"RoomBoom_5" = "";//"Room name";
"RoomBoom_6" = "Reset time: 0:00 (GMT+3) daily";
"RoomBoom_7" = " Supporter Ranking";
"RoomBoom_8" = "Super Jackpot";
@@ -3744,3 +3744,7 @@
"RoomMessageTitle_2" = "Gift";
"RoomMessageBoom_0" = "Congratulations! ";
"RoomMessageBoom_1" = " has triggered the super jackpot BOOM, and all users in the room will receive rewards!";
"RoomMicState_0" = "You turned on the mic and the music.";
"RoomMicState_1" = "You turned on the music but turned off the mic.";
"RoomMicState_2" = "You turned off the music and the mic.";

View File

@@ -3394,9 +3394,9 @@
"RoomBoom_0" = "很遺憾 您沒有獲得獎品,請繼續努力!";
"RoomBoom_1" = "恭喜您在本輪 Boom 中獲得以下獎励。";
"RoomBoom_2" = "送禮物,贏取超級獎品";
"RoomBoom_3" = "触发了";
"RoomBoom_3" = "觸發了";
"RoomBoom_4" = ",前去圍觀";
"RoomBoom_5" = "房間暱稱:";
"RoomBoom_5" = "";//房間暱稱:";
"RoomBoom_6" = "Reset time: 0:00 (GMT+3) daily";
"RoomBoom_7" = "支持者排名";
"RoomBoom_8" = "超大獎";
@@ -3409,3 +3409,6 @@
"RoomMessageBoom_0" = "恭喜!";
"RoomMessageBoom_1" = "触发超级大奖BOOM所有在房用户将获得奖励";
"RoomMicState_0" = "你打開了麥克風和音樂。";
"RoomMicState_1" = "您打開了音樂但關閉了麥克風。";
"RoomMicState_2" = "你關掉了音樂和麥克風。";

View File

@@ -3386,9 +3386,9 @@
"RoomBoom_0" = "很遺憾 您沒有獲得獎品,請繼續努力!";
"RoomBoom_1" = "恭喜您在本輪 Boom 中獲得以下獎励。";
"RoomBoom_2" = "送禮物,贏取超級獎品";
"RoomBoom_3" = "触发了";
"RoomBoom_3" = "觸發了";
"RoomBoom_4" = ",前去圍觀";
"RoomBoom_5" = "房間暱稱:";
"RoomBoom_5" = "";//房間暱稱:";
"RoomBoom_6" = "Reset time: 0:00 (GMT+3) daily";
"RoomBoom_7" = "支持者排名";
"RoomBoom_8" = "超大獎";
@@ -3401,3 +3401,7 @@
"RoomMessageBoom_0" = "恭喜!";
"RoomMessageBoom_1" = "触发超级大奖BOOM所有在房用户将获得奖励";
"RoomMicState_0" = "你打開了麥克風和音樂。";
"RoomMicState_1" = "您打開了音樂但關閉了麥克風。";
"RoomMicState_2" = "你關掉了音樂和麥克風。";