@@ -521,6 +521,7 @@
|
||||
23FF42792AA6E19C0055733C /* HomeMenuSourceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF42782AA6E19C0055733C /* HomeMenuSourceModel.m */; };
|
||||
23FF428E2AAB2D3A0055733C /* XPCandyTreeBuyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF428D2AAB2D3A0055733C /* XPCandyTreeBuyView.m */; };
|
||||
545888332C1AFFB500897585 /* XPRoomPKPanelView.m in Sources */ = {isa = PBXBuildFile; fileRef = 545888322C1AFFB500897585 /* XPRoomPKPanelView.m */; };
|
||||
545888362C1C306B00897585 /* XPRoomPKPaneAvatarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 545888352C1C306B00897585 /* XPRoomPKPaneAvatarView.m */; };
|
||||
73FFADDC93E195344047A2EC /* Pods_YuMi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_YuMi.framework */; };
|
||||
9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* AnchorStageView.m */; };
|
||||
9B0086CA27BA4F570032BD2B /* AnchorMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C927BA4F570032BD2B /* AnchorMicroView.m */; };
|
||||
@@ -2562,6 +2563,8 @@
|
||||
23FF428D2AAB2D3A0055733C /* XPCandyTreeBuyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeBuyView.m; sourceTree = "<group>"; };
|
||||
545888312C1AFFB500897585 /* XPRoomPKPanelView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKPanelView.h; sourceTree = "<group>"; };
|
||||
545888322C1AFFB500897585 /* XPRoomPKPanelView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPanelView.m; sourceTree = "<group>"; };
|
||||
545888342C1C306B00897585 /* XPRoomPKPaneAvatarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKPaneAvatarView.h; sourceTree = "<group>"; };
|
||||
545888352C1C306B00897585 /* XPRoomPKPaneAvatarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPaneAvatarView.m; sourceTree = "<group>"; };
|
||||
7DB00EC07F1D0ADFF900B38D /* Pods-YuMi.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YuMi.debug.xcconfig"; path = "Target Support Files/Pods-YuMi/Pods-YuMi.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
9B0086C427BA392B0032BD2B /* AnchorStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorStageView.h; sourceTree = "<group>"; };
|
||||
9B0086C527BA392B0032BD2B /* AnchorStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorStageView.m; sourceTree = "<group>"; };
|
||||
@@ -7165,6 +7168,8 @@
|
||||
E81AF32727F1EE69003B9E43 /* XPRoomPKPanelUserView.m */,
|
||||
E84843B027F5A0740050D365 /* XPRomPKResultTitleLabel.h */,
|
||||
E84843B127F5A0740050D365 /* XPRomPKResultTitleLabel.m */,
|
||||
545888342C1C306B00897585 /* XPRoomPKPaneAvatarView.h */,
|
||||
545888352C1C306B00897585 /* XPRoomPKPaneAvatarView.m */,
|
||||
);
|
||||
path = SubViews;
|
||||
sourceTree = "<group>";
|
||||
@@ -12563,6 +12568,7 @@
|
||||
1427218829A75F6F00C7C423 /* HTTPErrorResponse.m in Sources */,
|
||||
E85E7B032A4EB0D200B6D00A /* XPGuildIncomePresenter.m in Sources */,
|
||||
E8A30BF928534E48003B4873 /* XPSessionFindNewEmptyTableViewCell.m in Sources */,
|
||||
545888362C1C306B00897585 /* XPRoomPKPaneAvatarView.m in Sources */,
|
||||
E896EFB22771C93B00AD2CC1 /* XPMineFriendNumberView.m in Sources */,
|
||||
14EB640D29A5C16000A4A00B /* XPMomentsSimpleDetailNav.m in Sources */,
|
||||
E80EC80E28ACD84000D133C5 /* QKeyboardBaseManager.m in Sources */,
|
||||
|
22
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_blue.imageset/Contents.json
vendored
Normal file
22
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_blue.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_pk_avatar_bg_blue@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_pk_avatar_bg_blue@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_blue.imageset/room_pk_avatar_bg_blue@2x.png
vendored
Normal file
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_blue.imageset/room_pk_avatar_bg_blue@2x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_blue.imageset/room_pk_avatar_bg_blue@3x.png
vendored
Normal file
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_blue.imageset/room_pk_avatar_bg_blue@3x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.7 KiB |
22
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_red.imageset/Contents.json
vendored
Normal file
22
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_red.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_pk_avatar_bg_red@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_pk_avatar_bg_red@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_red.imageset/room_pk_avatar_bg_red@2x.png
vendored
Normal file
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_red.imageset/room_pk_avatar_bg_red@2x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_red.imageset/room_pk_avatar_bg_red@3x.png
vendored
Normal file
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_avatar_bg_red.imageset/room_pk_avatar_bg_red@3x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.9 KiB |
22
YuMi/Assets.xcassets/yna/RoomPK/room_pk_clock_icon.imageset/Contents.json
vendored
Normal file
22
YuMi/Assets.xcassets/yna/RoomPK/room_pk_clock_icon.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_pk_clock_icon@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_pk_clock_icon@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_clock_icon.imageset/room_pk_clock_icon@2x.png
vendored
Normal file
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_clock_icon.imageset/room_pk_clock_icon@2x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 964 B |
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_clock_icon.imageset/room_pk_clock_icon@3x.png
vendored
Normal file
BIN
YuMi/Assets.xcassets/yna/RoomPK/room_pk_clock_icon.imageset/room_pk_clock_icon@3x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
@@ -5,7 +5,7 @@
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>MoliStar</string>
|
||||
<string>MoliStar Debug</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
|
@@ -99,6 +99,8 @@
|
||||
#import "XPLittleGameRoomListView.h"
|
||||
#import "MSRoomOnLineView.h"
|
||||
|
||||
#import "XPRoomPKPanelView.h"
|
||||
|
||||
@interface XPRoomFunctionContainerView ()<XPAcrossRoomPKPanelViewDelegate, XPAnchorPkPanelViewDelegate, XPRoomBackMusicPlayerViewDelegate, XPRoomNewUserGreetViewDelegate, XPWishGiftViewControllerDelegate,XPRoomLittleGameListViewDelegate>
|
||||
///host 代理
|
||||
@property (nonatomic,weak) id<RoomHostDelegate>delegate;
|
||||
@@ -159,6 +161,8 @@
|
||||
///在线人数
|
||||
@property(nonatomic,strong) MSRoomOnLineView *onlineView;
|
||||
|
||||
@property(nonatomic, strong) XPRoomPKPanelView *pkPanelView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPRoomFunctionContainerView
|
||||
@@ -437,10 +441,30 @@
|
||||
}
|
||||
|
||||
#pragma mark - 房间PK
|
||||
// MARL: ----- 修改开始
|
||||
- (void)showPKPanel_ {
|
||||
if (NO == [TTPopup hasShowPopup]) {
|
||||
[TTPopup popupView:self.pkPanelView style:TTPopupStyleAlert];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)updateIsRoomManagerState {
|
||||
self.pkPanelView.isManager = self.roompkPanelView.isManager;
|
||||
}
|
||||
|
||||
- (void)removePKPanel_ {
|
||||
if (_pkPanelView) {
|
||||
[self.pkPanelView removeFromSuperview];
|
||||
self.pkPanelView = nil;
|
||||
}
|
||||
}
|
||||
// MARL: ----- 修改结束
|
||||
- (void)configRoomPKPanelView:(BOOL)isEnter {
|
||||
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
|
||||
if (roomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
|
||||
[self showPKPanel_];
|
||||
self.roompkPanelView.roomInfo = roomInfo;
|
||||
self.pkPanelView.roomInfo = roomInfo;
|
||||
if (!self.roompkPanelView.superview) {
|
||||
[self addSubview:self.roompkPanelView];
|
||||
[self.roompkPanelView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
@@ -461,10 +485,12 @@
|
||||
}else {
|
||||
self.roompkPanelView.isManager = NO;
|
||||
}
|
||||
|
||||
if (isEnter) {
|
||||
[self.roompkPanelView enterRoomGetRoomPKDetailInfo];
|
||||
[self.pkPanelView enterRoomGetRoomPKDetailInfo];
|
||||
}
|
||||
|
||||
[self updateIsRoomManagerState];
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
@@ -991,6 +1017,7 @@
|
||||
break;
|
||||
|
||||
}
|
||||
[self updateIsRoomManagerState];
|
||||
}
|
||||
|
||||
- (void)onMicroQueueUpdate:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue {
|
||||
@@ -998,6 +1025,7 @@
|
||||
[self.littleGameMiniView needRefreshPosition:queue];
|
||||
} else if(self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
|
||||
self.roompkPanelView.micQueue = queue;
|
||||
self.pkPanelView.micQueue = queue;
|
||||
}else {
|
||||
MicroQueueModel * currentUserModel;
|
||||
NSString * uid = [AccountInfoStorage instance].getUid;
|
||||
@@ -1894,6 +1922,13 @@
|
||||
return _musicPlayView;
|
||||
}
|
||||
|
||||
- (XPRoomPKPanelView *)pkPanelView {
|
||||
if (!_pkPanelView) {
|
||||
_pkPanelView = [[XPRoomPKPanelView alloc] initWithFrame:CGRectMake(0, 0, 309, 379)];
|
||||
}
|
||||
return _pkPanelView;
|
||||
}
|
||||
|
||||
- (XPRoomPKProgressView *)roompkPanelView {
|
||||
if (!_roompkPanelView) {
|
||||
_roompkPanelView = [[XPRoomPKProgressView alloc] init];
|
||||
|
@@ -270,17 +270,13 @@
|
||||
case RoomMoreMenuType_Room_Across_PK_Open:{
|
||||
if (roomInfo.roomModeType == RoomModeType_Open_Blind) {
|
||||
[self showErrorToast:YMLocalizedString(@"XPRoomMoreMenuViewController13")];
|
||||
return;
|
||||
}
|
||||
|
||||
if (roomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
|
||||
} else if (roomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
|
||||
[self showErrorToast:YMLocalizedString(@"XPRoomMoreMenuViewController14")];
|
||||
return;
|
||||
} else {
|
||||
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openAcrossPk"}];
|
||||
XPAcrossRoomPKViewController *acrossRoomPKVC = [[XPAcrossRoomPKViewController alloc] initWithRoomUid:[NSString stringWithFormat:@"%ld", roomInfo.uid]];
|
||||
[self.hostDelegate.getCurrentNav presentViewController:acrossRoomPKVC animated:YES completion:nil];
|
||||
}
|
||||
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openAcrossPk"}];
|
||||
XPAcrossRoomPKViewController *acrossRoomPKVC = [[XPAcrossRoomPKViewController alloc] initWithRoomUid:[NSString stringWithFormat:@"%ld", roomInfo.uid]];
|
||||
[self.hostDelegate.getCurrentNav presentViewController:acrossRoomPKVC animated:YES completion:nil];
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -329,15 +325,13 @@
|
||||
|
||||
-(void)ms_didSelectItemAtIndexPath:(id)model {
|
||||
self.gameView.hidden = YES;
|
||||
|
||||
if ([model isKindOfClass:[XPRoomMoreItemModel class]]) {
|
||||
// TODO: 跳转到 PK
|
||||
[self handleMoreItem:(XPRoomMoreItemModel *)model];
|
||||
} else if ([model isKindOfClass:[ActivityInfoModel class]]) {
|
||||
[self handleActivityInfo:(ActivityInfoModel *)model];
|
||||
}
|
||||
|
||||
[self dismissViewControllerAnimated:YES completion:nil];
|
||||
[self dismissViewControllerAnimated:YES completion:^{
|
||||
if ([model isKindOfClass:[XPRoomMoreItemModel class]]) {
|
||||
[self handleMoreItem:(XPRoomMoreItemModel *)model];
|
||||
} else if ([model isKindOfClass:[ActivityInfoModel class]]) {
|
||||
[self handleActivityInfo:(ActivityInfoModel *)model];
|
||||
}
|
||||
}];
|
||||
}
|
||||
-(void)clickGameVC:(ActivityInfoModel *)model{
|
||||
if ([self.hostDelegate isKindOfClass:[XPRoomViewController class]]){
|
||||
|
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// XPRoomPKPaneAvatarView.h
|
||||
// YuMi
|
||||
//
|
||||
// Created by P on 2024/6/14.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
typedef NS_ENUM(NSInteger,XPRoomPKPaneAvatarType) {
|
||||
XPRoomPKPaneAvatarType_Red = 1,
|
||||
XPRoomPKPaneAvatarType_Blue,
|
||||
XPRoomPKPaneAvatarType_Leader_Red,
|
||||
XPRoomPKPaneAvatarType_Leader_Blue,
|
||||
// XPRoomPKPaneAvatarType_Red_Default,
|
||||
// XPRoomPKPaneAvatarType_Blue_Default,
|
||||
// XPRoomPKPaneAvatarType_Leader_Red_Default,
|
||||
// XPRoomPKPaneAvatarType_Leader_Blue_Default,
|
||||
};
|
||||
|
||||
@interface XPRoomPKPaneAvatarView : UIView
|
||||
|
||||
@property (nonatomic,assign) XPRoomPKPaneAvatarType type;
|
||||
@property (nonatomic, copy) void (^didTapAvatar)(XPRoomPKPaneAvatarType type);
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// XPRoomPKPaneAvatarView.m
|
||||
// YuMi
|
||||
//
|
||||
// Created by P on 2024/6/14.
|
||||
//
|
||||
|
||||
#import "XPRoomPKPaneAvatarView.h"
|
||||
|
||||
@interface XPRoomPKPaneAvatarView()
|
||||
|
||||
@property (nonatomic, strong) UIImageView *avatarBackgroundImageView;
|
||||
@property (nonatomic, strong) NetImageView *avatarImageView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPRoomPKPaneAvatarView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
self.clipsToBounds = NO;
|
||||
[self setupUI];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)setupUI {
|
||||
[self addSubview:self.avatarBackgroundImageView];
|
||||
[self.avatarBackgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self);
|
||||
}];
|
||||
|
||||
[self addSubview:self.avatarImageView];
|
||||
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.center.mas_equalTo(self.avatarBackgroundImageView);
|
||||
make.width.equalTo(self.avatarBackgroundImageView.mas_width).offset(-4);
|
||||
make.height.equalTo(self.avatarBackgroundImageView.mas_height).offset(-4);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)setupGesture {
|
||||
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
|
||||
action:@selector(handleTapGesture)];
|
||||
[self addGestureRecognizer:tap];
|
||||
}
|
||||
|
||||
- (void)handleTapGesture {
|
||||
if (_didTapAvatar) {
|
||||
_didTapAvatar(self.type);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setType:(XPRoomPKPaneAvatarType)type {
|
||||
_type = type;
|
||||
switch (type) {
|
||||
case XPRoomPKPaneAvatarType_Red:
|
||||
self.avatarBackgroundImageView.image = [UIImage imageNamed:@"room_pk_avatar_bg_red"];
|
||||
self.avatarImageView.hidden = YES;
|
||||
self.avatarImageView.layer.cornerRadius = 15;
|
||||
break;
|
||||
case XPRoomPKPaneAvatarType_Blue:
|
||||
self.avatarBackgroundImageView.image = [UIImage imageNamed:@"room_pk_avatar_bg_blue"];
|
||||
self.avatarImageView.hidden = YES;
|
||||
self.avatarImageView.layer.cornerRadius = 15;
|
||||
break;
|
||||
case XPRoomPKPaneAvatarType_Leader_Red:
|
||||
self.avatarBackgroundImageView.image = [UIImage imageNamed:@"room_pk_avatar_bg_red"];
|
||||
self.avatarImageView.layer.cornerRadius = 31;
|
||||
break;
|
||||
case XPRoomPKPaneAvatarType_Leader_Blue:
|
||||
self.avatarBackgroundImageView.image = [UIImage imageNamed:@"room_pk_avatar_bg_blue"];
|
||||
self.avatarImageView.layer.cornerRadius = 31;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
- (UIImageView *)avatarBackgroundImageView {
|
||||
if (!_avatarBackgroundImageView) {
|
||||
_avatarBackgroundImageView = [[UIImageView alloc] init];
|
||||
_avatarBackgroundImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
_avatarBackgroundImageView.clipsToBounds = NO;
|
||||
}
|
||||
return _avatarBackgroundImageView;
|
||||
}
|
||||
|
||||
- (NetImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.imageType = ImageTypeUserIcon;
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_avatarImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_avatarImageView.layer.masksToBounds = YES;
|
||||
}
|
||||
return _avatarImageView;
|
||||
}
|
||||
|
||||
@end
|
@@ -7,10 +7,24 @@
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class MicroQueueModel, AttachmentModel, RoomInfoModel, RoomPKChooseUserModel;
|
||||
@interface XPRoomPKPanelView : UIView
|
||||
|
||||
@property (nonatomic, strong) NSMutableDictionary<NSString *, MicroQueueModel *> *micQueue;
|
||||
///房间信息
|
||||
@property (nonatomic, strong) RoomInfoModel *roomInfo;
|
||||
///是否是管理员
|
||||
@property (nonatomic, assign) BOOL isManager;
|
||||
|
||||
///红色的
|
||||
@property (nonatomic,strong, readonly) NSArray<RoomPKChooseUserModel *> *redChooseArray;
|
||||
///蓝色的
|
||||
@property (nonatomic,strong, readonly) NSArray<RoomPKChooseUserModel *> *blueChooseArray;
|
||||
|
||||
- (void)enterRoomGetRoomPKDetailInfo;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -6,15 +6,668 @@
|
||||
//
|
||||
|
||||
#import "XPRoomPKPanelView.h"
|
||||
#import "XPRoomPKPaneAvatarView.h"
|
||||
|
||||
@implementation XPRoomPKPanelView
|
||||
#import "Api+RoomPK.h"
|
||||
#import "UserInfoModel.h"
|
||||
#import "MicroQueueModel.h"
|
||||
#import "RoomInfoModel.h"
|
||||
#import "RoomPKDetailInfoModel.h"
|
||||
#import "RoomPKChooseUserModel.h"
|
||||
|
||||
/*
|
||||
// Only override drawRect: if you perform custom drawing.
|
||||
// An empty implementation adversely affects performance during animation.
|
||||
- (void)drawRect:(CGRect)rect {
|
||||
// Drawing code
|
||||
}
|
||||
*/
|
||||
#import "XPRoomPKSelectUserView.h"
|
||||
|
||||
@interface XPRoomPKPanelView() <XPRoomPKSelectUserViewDelegate>
|
||||
///pk详情
|
||||
@property (nonatomic,strong) RoomPKInfoModel *pkInfo;
|
||||
///是否正在进行中
|
||||
@property (nonatomic,assign) BOOL isPlaying;
|
||||
///红队的分数
|
||||
@property (nonatomic,assign) long redTeamScore;
|
||||
///蓝的分数
|
||||
@property (nonatomic,assign) long blueTeamScore;
|
||||
///红色的
|
||||
@property (nonatomic,strong) NSArray<RoomPKChooseUserModel *> *redChooseArray;
|
||||
///蓝色的
|
||||
@property (nonatomic,strong) NSArray<RoomPKChooseUserModel *> *blueChooseArray;
|
||||
|
||||
@property (nonatomic, strong) UIImageView *backgroundImageView;
|
||||
@property (nonatomic, strong) UIImageView *topImageView;
|
||||
@property (nonatomic, strong) UIButton *minionButton;
|
||||
|
||||
@property (nonatomic, strong) XPRoomPKPaneAvatarView *leaderRed;
|
||||
@property (nonatomic, strong) XPRoomPKPaneAvatarView *leaderBlue;
|
||||
|
||||
@property (nonatomic, strong) XPRoomPKPaneAvatarView *memberRed_1;
|
||||
@property (nonatomic, strong) XPRoomPKPaneAvatarView *memberRed_2;
|
||||
@property (nonatomic, strong) XPRoomPKPaneAvatarView *memberRed_3;
|
||||
@property (nonatomic, strong) XPRoomPKPaneAvatarView *memberBlue_1;
|
||||
@property (nonatomic, strong) XPRoomPKPaneAvatarView *memberBlue_2;
|
||||
@property (nonatomic, strong) XPRoomPKPaneAvatarView *memberBlue_3;
|
||||
|
||||
@property (nonatomic, strong) UIStackView *redTeamStackView;
|
||||
@property (nonatomic, strong) UIStackView *blueTeamStackView;
|
||||
|
||||
@property (nonatomic, strong) UILabel *countDownLabel;
|
||||
|
||||
@property (nonatomic, strong) UIButton *actionButton;
|
||||
|
||||
///红方的进度图片
|
||||
@property (nonatomic, strong) UIImageView *redCountImageView;
|
||||
///红方的礼物值
|
||||
@property (nonatomic, strong) UILabel *redCountLabel;
|
||||
///蓝方的进度图片
|
||||
@property (nonatomic, strong) UIImageView *blueCountImageView;
|
||||
///蓝方的礼物值
|
||||
@property (nonatomic, strong) UILabel *blueCountLabel;
|
||||
@property (nonatomic, strong) UIImageView *fireImageView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPRoomPKPanelView
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
self.backgroundColor = [UIColor colorWithWhite:1 alpha:0.6];
|
||||
[self setupUI];
|
||||
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)setupUI {
|
||||
[self addSubview:self.backgroundImageView];
|
||||
[self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self);
|
||||
}];
|
||||
|
||||
[self addSubview:self.topImageView];
|
||||
[self.topImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
make.centerY.mas_equalTo(self.mas_top);
|
||||
make.size.mas_equalTo(CGSizeMake(375, 120));
|
||||
}];
|
||||
|
||||
[self setupCenterVSMark];
|
||||
|
||||
[self addSubview:self.minionButton];
|
||||
[self.minionButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self).offset(12);
|
||||
make.right.mas_equalTo(self).offset(-12);
|
||||
make.size.mas_equalTo(CGSizeMake(30, 30));
|
||||
}];
|
||||
|
||||
[self addSubview:self.leaderRed];
|
||||
[self.leaderRed mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.topImageView.mas_bottom).offset(21);
|
||||
make.left.mas_equalTo(self).offset(12.5);
|
||||
make.size.mas_equalTo(CGSizeMake(68, 68));
|
||||
}];
|
||||
|
||||
[self addSubview:self.leaderBlue];
|
||||
[self.leaderBlue mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.topImageView.mas_bottom).offset(21);
|
||||
make.right.mas_equalTo(self).offset(-12.5);
|
||||
make.size.mas_equalTo(CGSizeMake(68, 68));
|
||||
}];
|
||||
|
||||
[self addSubview:self.redTeamStackView];
|
||||
[self.redTeamStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self).offset(4);
|
||||
make.top.mas_equalTo(self.leaderRed.mas_bottom).offset(36);
|
||||
make.size.mas_equalTo(CGSizeMake(110, 36));
|
||||
}];
|
||||
[self.redTeamStackView addArrangedSubview:self.memberRed_1];
|
||||
[self.redTeamStackView addArrangedSubview:self.memberRed_2];
|
||||
[self.redTeamStackView addArrangedSubview:self.memberRed_3];
|
||||
|
||||
[self addSubview:self.blueTeamStackView];
|
||||
[self.blueTeamStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(self).offset(-4);
|
||||
make.top.mas_equalTo(self.leaderRed.mas_bottom).offset(36);
|
||||
make.size.mas_equalTo(CGSizeMake(110, 36));
|
||||
}];
|
||||
[self.blueTeamStackView addArrangedSubview:self.memberBlue_1];
|
||||
[self.blueTeamStackView addArrangedSubview:self.memberBlue_2];
|
||||
[self.blueTeamStackView addArrangedSubview:self.memberBlue_3];
|
||||
|
||||
[self setupCountDownView];
|
||||
|
||||
[self setupProgressArea];
|
||||
|
||||
[self addSubview:self.actionButton];
|
||||
[self.actionButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
make.bottom.mas_equalTo(self).offset(-26.5);
|
||||
make.size.mas_equalTo(CGSizeMake(144, 32.5));
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)setupCallBack {
|
||||
self.leaderRed.didTapAvatar = ^(XPRoomPKPaneAvatarType type) {
|
||||
|
||||
};
|
||||
|
||||
self.leaderBlue.didTapAvatar = ^(XPRoomPKPaneAvatarType type) {
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
- (void)handleTapAvatar {
|
||||
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
- (void)enterRoomGetRoomPKDetailInfo {
|
||||
NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid];
|
||||
@kWeakify(self);
|
||||
[Api getRoomPKDetail:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
@kStrongify(self);
|
||||
if (code == 200) {
|
||||
RoomPKDetailInfoModel * pkDetailInfo = [RoomPKDetailInfoModel modelWithDictionary:data.data];
|
||||
self.pkInfo = pkDetailInfo.roomPK;
|
||||
[self handleRoomPKInfoChangeState];
|
||||
if (self.pkInfo.pkStatus == RoomPKStatusType_Playing) {
|
||||
[self updateCountDown];
|
||||
}
|
||||
|
||||
///配置一下麦序的信息
|
||||
NSMutableArray * redArray = [NSMutableArray array];
|
||||
NSMutableArray * blueArray = [NSMutableArray array];
|
||||
if (self.pkInfo.pkStatus == RoomPKStatusType_Playing) {
|
||||
for (int i = 0; i < self.pkInfo.teams.count; i++) {
|
||||
RoomPKTeamModel * teamInfo = [self.pkInfo.teams safeObjectAtIndex1:i];
|
||||
if (teamInfo.team == GroupType_Red) {
|
||||
self.redTeamScore = teamInfo.score;
|
||||
for (int i = 0; i < teamInfo.teamMembers.count; i++) {
|
||||
RoomPKTeamUserModel * teamUserModel = [teamInfo.teamMembers safeObjectAtIndex1:i];
|
||||
RoomPKChooseUserModel * redInfo = [[RoomPKChooseUserModel alloc] init];
|
||||
redInfo.avatar = teamUserModel.avatar;
|
||||
redInfo.uid = teamUserModel.uid;
|
||||
redInfo.groupType = GroupType_Red;
|
||||
redInfo.position = [self findMicroInfoByUid:teamUserModel.uid].microState.position;
|
||||
redInfo.nick = teamUserModel.nick;
|
||||
[redArray addObject:redInfo];
|
||||
}
|
||||
} else if(teamInfo.team == GroupType_Blue) {
|
||||
self.blueTeamScore = teamInfo.score;
|
||||
for (int i = 0; i < teamInfo.teamMembers.count; i++) {
|
||||
RoomPKTeamUserModel * teamUserModel = [teamInfo.teamMembers safeObjectAtIndex1:i];
|
||||
RoomPKChooseUserModel * blueInfo = [[RoomPKChooseUserModel alloc] init];
|
||||
blueInfo.avatar = teamUserModel.avatar;
|
||||
blueInfo.uid = teamUserModel.uid;
|
||||
blueInfo.groupType = GroupType_Blue;
|
||||
blueInfo.position = [self findMicroInfoByUid:teamUserModel.uid].microState.position;
|
||||
blueInfo.nick = teamUserModel.nick;
|
||||
[blueArray addObject:blueInfo];
|
||||
}
|
||||
}
|
||||
}
|
||||
[self configRedTeamScore:self.redTeamScore blueTeamScore:self.blueTeamScore];
|
||||
} else {
|
||||
NSMutableDictionary * queue = self.micQueue;
|
||||
for (int i = 0 ; i < queue.allValues.count; i++) {
|
||||
MicroQueueModel * micModel = [queue.allValues safeObjectAtIndex1:i];
|
||||
if (micModel.userInfo && micModel.userInfo.uid > 0) {
|
||||
UserInfoModel * userInfo = micModel.userInfo;
|
||||
if (userInfo.groupType == GroupType_Red) {
|
||||
RoomPKChooseUserModel * redInfo = [[RoomPKChooseUserModel alloc] init];
|
||||
redInfo.avatar = userInfo.avatar;
|
||||
redInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid];
|
||||
redInfo.groupType = userInfo.groupType;
|
||||
redInfo.position = micModel.microState.position;
|
||||
redInfo.nick = userInfo.nick;
|
||||
[redArray addObject:redInfo];
|
||||
} else if(userInfo.groupType == GroupType_Blue) {
|
||||
RoomPKChooseUserModel * blueInfo = [[RoomPKChooseUserModel alloc] init];
|
||||
blueInfo.avatar = userInfo.avatar;
|
||||
blueInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid];
|
||||
blueInfo.groupType = userInfo.groupType;
|
||||
blueInfo.position = micModel.microState.position;
|
||||
blueInfo.nick = userInfo.nick;
|
||||
[blueArray addObject:blueInfo];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
self.redChooseArray = redArray.copy;
|
||||
self.blueChooseArray = blueArray.copy;
|
||||
} else {
|
||||
[XNDJTDDLoadingTool showErrorWithMessage:msg];
|
||||
}
|
||||
} roomUid:roomUid];
|
||||
}
|
||||
|
||||
- (void)handleRoomPKInfoChangeState {
|
||||
self.isPlaying = NO;
|
||||
if (self.pkInfo) {
|
||||
switch (self.pkInfo.pkStatus) {
|
||||
case RoomPKStatusType_End:
|
||||
// [self handleBeginButtonState];
|
||||
break;
|
||||
case RoomPKStatusType_Playing: {
|
||||
[TTPopup dismiss];
|
||||
// [self handleBeginButtonState];
|
||||
self.isPlaying = YES;
|
||||
// self.roomPKPlayingView.pkDetailInfo = self.roomPKInfo;
|
||||
// self.roomPKPlayingView.redChooseArray = self.redChooseArray;
|
||||
// self.roomPKPlayingView.blueChooseArray = self.blueChooseArray;
|
||||
// [self.roomPKPlayingView configRedTeamScore:self.redTeamScore blueTeamScore:self.blueTeamScore];
|
||||
// [TTPopup popupView:self.roomPKPlayingView style:TTPopupStyleAlert];
|
||||
}
|
||||
break;
|
||||
case RoomPKStatusType_ReStart:
|
||||
case RoomPKStatusType_NonStart: {
|
||||
// [self handleBeginButtonState];
|
||||
// [self clearRoomPKTeamData];
|
||||
// [self stopRoomPKCountDown];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)updateCountDown {
|
||||
// [self startRoomPKCountDown:(self.roomPKInfo.endTime - pkDetailInfo.now) / 1000];
|
||||
}
|
||||
|
||||
- (void)startRoomPKCountDown:(CGFloat)time {
|
||||
__block long tempTime = time; //倒计时时间
|
||||
__weak typeof(self) weakSelf = self;
|
||||
// self.currentTime = tempTime;
|
||||
// if (self.timer != nil) {
|
||||
// dispatch_source_cancel(self.timer);
|
||||
// }
|
||||
// dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
|
||||
// self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
|
||||
// dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
|
||||
// dispatch_source_set_event_handler(self.timer, ^{
|
||||
// typeof(weakSelf) self = weakSelf;
|
||||
// if(tempTime <= 0){ //倒计时结束,关闭
|
||||
// self.currentTime = 0;
|
||||
// dispatch_source_cancel(self.timer);
|
||||
// dispatch_async(dispatch_get_main_queue(), ^{
|
||||
// [self checkRoomPKResult];
|
||||
// });
|
||||
// } else {
|
||||
// dispatch_async(dispatch_get_main_queue(), ^{
|
||||
// //设置按钮显示读秒效果
|
||||
// NSInteger minute = tempTime / 60;
|
||||
// NSInteger second = (tempTime % 60);
|
||||
// NSString *timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second];
|
||||
// self.timeLabel.text= timeStr;
|
||||
// self.roomPKPlayingView.currentTime = timeStr;
|
||||
// });
|
||||
// tempTime--;
|
||||
// self.currentTime = tempTime;
|
||||
// }
|
||||
// });
|
||||
// dispatch_resume(self.timer);
|
||||
}
|
||||
|
||||
- (MicroQueueModel *)findMicroInfoByUid:(NSString *)uid {
|
||||
for (MicroQueueModel *model in self.micQueue.allValues) {
|
||||
if (model.userInfo && model.userInfo.uid == uid.intValue) {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
- (void)configRedTeamScore:(long)redTeamScore
|
||||
blueTeamScore:(long)blueTeamScore {
|
||||
self.redTeamScore = redTeamScore;
|
||||
self.blueTeamScore = blueTeamScore;
|
||||
// self.redScoreLabel.text = [NSString stringWithFormat:@"%ld", redTeamScore];
|
||||
// self.blueScoreLabel.text = [NSString stringWithFormat:@"%ld", blueTeamScore];
|
||||
if (redTeamScore > 0 || blueTeamScore > 0) {
|
||||
CGFloat redScale = (CGFloat)redTeamScore / (CGFloat)(redTeamScore + blueTeamScore);
|
||||
if (redScale == 1) {
|
||||
redScale = 0.99;
|
||||
}
|
||||
// [self.redProgressView mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
// make.width.mas_equalTo(85 * 2 * redScale);
|
||||
// }];
|
||||
}
|
||||
// [self.roomPKPlayingView configRedTeamScore:redTeamScore blueTeamScore:blueTeamScore];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
- (void)showSelectUserPanelWith:(GroupType)type {
|
||||
XPRoomPKSelectUserView * chooseUserView = [[XPRoomPKSelectUserView alloc] init];
|
||||
chooseUserView.delegate = self;
|
||||
chooseUserView.redUserArray = self.redChooseArray;
|
||||
chooseUserView.blueUserArray = self.blueChooseArray;
|
||||
chooseUserView.groupType = type;
|
||||
chooseUserView.microQueueArray = self.micQueue.allValues;
|
||||
[TTPopup popupView:chooseUserView style:TTPopupStyleAlert];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
- (void)setIsManager:(BOOL)isManager {
|
||||
_isManager = isManager;
|
||||
self.frame = [self roomFrame];
|
||||
self.backgroundImageView.image = [self backgroundImage];
|
||||
}
|
||||
|
||||
- (void)setMicQueue:(NSMutableDictionary<NSString *,MicroQueueModel *> *)micQueue {
|
||||
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
- (void)didTapMinion {
|
||||
// TODO: 最小化
|
||||
}
|
||||
|
||||
- (void)didTapActionButton {
|
||||
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
- (CGRect)roomFrame {
|
||||
return CGRectMake(0, 0, 309, self.isManager ? 379 : 324);
|
||||
}
|
||||
|
||||
- (UIImage *)backgroundImage {
|
||||
return self.isManager ? [UIImage imageNamed:@"room_pk_panel_bg_manager"] : [UIImage imageNamed:@"room_pk_panel_bg_normal"];
|
||||
}
|
||||
|
||||
- (UIImageView *)backgroundImageView {
|
||||
if (!_backgroundImageView) {
|
||||
_backgroundImageView = [[UIImageView alloc] init];
|
||||
_backgroundImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _backgroundImageView;
|
||||
}
|
||||
|
||||
- (void)setupCenterVSMark {
|
||||
UIImageView *vs = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pk_vs_mark_big"]];
|
||||
[self addSubview:vs];
|
||||
[vs mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
make.top.mas_equalTo(self.topImageView.mas_bottom).offset(32.5);
|
||||
make.size.mas_equalTo(CGSizeMake(112.5, 60.5));
|
||||
}];
|
||||
}
|
||||
|
||||
- (UIImageView *)topImageView {
|
||||
if (!_topImageView) {
|
||||
_topImageView = [[UIImageView alloc] init];
|
||||
_topImageView.image = [UIImage imageNamed:@"room_pk_panel_top"];
|
||||
_topImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
}
|
||||
return _topImageView;
|
||||
}
|
||||
|
||||
- (UIButton *)minionButton {
|
||||
if (!_minionButton) {
|
||||
_minionButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_minionButton setBackgroundImage:[UIImage imageNamed:@"room_pk_panel_be_mini_icon"]
|
||||
forState:UIControlStateNormal];
|
||||
[_minionButton addTarget:self
|
||||
action:@selector(didTapMinion)
|
||||
forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _minionButton;
|
||||
}
|
||||
|
||||
- (XPRoomPKPaneAvatarView *)leaderRed {
|
||||
if (!_leaderRed) {
|
||||
_leaderRed = [[XPRoomPKPaneAvatarView alloc] initWithFrame:CGRectMake(0, 0, 112.5, 60.5)];
|
||||
_leaderRed.type = XPRoomPKPaneAvatarType_Leader_Red;
|
||||
}
|
||||
return _leaderRed;
|
||||
}
|
||||
|
||||
- (XPRoomPKPaneAvatarView *)memberRed_1 {
|
||||
if (!_memberRed_1) {
|
||||
_memberRed_1 = [[XPRoomPKPaneAvatarView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
|
||||
_memberRed_1.type = XPRoomPKPaneAvatarType_Red;
|
||||
}
|
||||
return _memberRed_1;
|
||||
}
|
||||
|
||||
- (XPRoomPKPaneAvatarView *)memberRed_2 {
|
||||
if (!_memberRed_2) {
|
||||
_memberRed_2 = [[XPRoomPKPaneAvatarView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
|
||||
_memberRed_2.type = XPRoomPKPaneAvatarType_Red;
|
||||
}
|
||||
return _memberRed_2;
|
||||
}
|
||||
|
||||
- (XPRoomPKPaneAvatarView *)memberRed_3 {
|
||||
if (!_memberRed_3) {
|
||||
_memberRed_3 = [[XPRoomPKPaneAvatarView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
|
||||
_memberRed_3.type = XPRoomPKPaneAvatarType_Red;
|
||||
}
|
||||
return _memberRed_3;
|
||||
}
|
||||
|
||||
- (XPRoomPKPaneAvatarView *)leaderBlue {
|
||||
if (!_leaderBlue) {
|
||||
_leaderBlue = [[XPRoomPKPaneAvatarView alloc] initWithFrame:CGRectMake(0, 0, 112.5, 60.5)];
|
||||
_leaderBlue.type = XPRoomPKPaneAvatarType_Leader_Blue;
|
||||
}
|
||||
return _leaderBlue;
|
||||
}
|
||||
|
||||
- (XPRoomPKPaneAvatarView *)memberBlue_1 {
|
||||
if (!_memberBlue_1) {
|
||||
_memberBlue_1 = [[XPRoomPKPaneAvatarView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
|
||||
_memberBlue_1.type = XPRoomPKPaneAvatarType_Blue;
|
||||
}
|
||||
return _memberBlue_1;
|
||||
}
|
||||
|
||||
- (XPRoomPKPaneAvatarView *)memberBlue_2 {
|
||||
if (!_memberBlue_2) {
|
||||
_memberBlue_2 = [[XPRoomPKPaneAvatarView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
|
||||
_memberBlue_2.type = XPRoomPKPaneAvatarType_Blue;
|
||||
}
|
||||
return _memberBlue_2;
|
||||
}
|
||||
|
||||
- (XPRoomPKPaneAvatarView *)memberBlue_3 {
|
||||
if (!_memberBlue_3) {
|
||||
_memberBlue_3 = [[XPRoomPKPaneAvatarView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
|
||||
_memberBlue_3.type = XPRoomPKPaneAvatarType_Blue;
|
||||
}
|
||||
return _memberBlue_3;
|
||||
}
|
||||
|
||||
- (UIStackView *)redTeamStackView {
|
||||
if (!_redTeamStackView) {
|
||||
_redTeamStackView = [[UIStackView alloc] init];
|
||||
_redTeamStackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_redTeamStackView.distribution = UIStackViewDistributionFillEqually;
|
||||
_redTeamStackView.alignment = UIStackViewAlignmentLeading;
|
||||
_redTeamStackView.spacing = 4;
|
||||
}
|
||||
return _redTeamStackView;
|
||||
}
|
||||
|
||||
- (UIStackView *)blueTeamStackView {
|
||||
if (!_blueTeamStackView) {
|
||||
_blueTeamStackView = [[UIStackView alloc] init];
|
||||
_blueTeamStackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_blueTeamStackView.distribution = UIStackViewDistributionFillEqually;
|
||||
_blueTeamStackView.alignment = UIStackViewAlignmentTrailing;
|
||||
_blueTeamStackView.spacing = 4;
|
||||
}
|
||||
return _blueTeamStackView;
|
||||
}
|
||||
|
||||
- (void)setupCountDownView {
|
||||
UIView *transparentRoundedCornersBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 122, 30)];
|
||||
transparentRoundedCornersBackgroundView.layer.cornerRadius = 14.5;
|
||||
transparentRoundedCornersBackgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.7];
|
||||
[self addSubview:transparentRoundedCornersBackgroundView];
|
||||
[transparentRoundedCornersBackgroundView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
make.top.mas_equalTo(self.redTeamStackView.mas_bottom).offset(8);
|
||||
make.size.mas_equalTo(CGSizeMake(122, 30));
|
||||
}];
|
||||
|
||||
UIImageView *clockImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_pk_clock_icon"]];
|
||||
[transparentRoundedCornersBackgroundView addSubview:clockImageView];
|
||||
[clockImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.mas_equalTo(transparentRoundedCornersBackgroundView);
|
||||
make.left.mas_equalTo(transparentRoundedCornersBackgroundView).offset(12);
|
||||
make.size.mas_equalTo(CGSizeMake(13, 13));
|
||||
}];
|
||||
|
||||
UILabel *titleLabel = [UILabel labelInitWithText:@"倒计时"
|
||||
font:[UIFont systemFontOfSize:11 weight:UIFontWeightMedium]
|
||||
textColor:[UIColor colorWithWhite:1 alpha:0.7]];
|
||||
[transparentRoundedCornersBackgroundView addSubview:titleLabel];
|
||||
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.mas_equalTo(transparentRoundedCornersBackgroundView);
|
||||
make.left.mas_equalTo(clockImageView.mas_right).offset(6);
|
||||
}];
|
||||
|
||||
[transparentRoundedCornersBackgroundView addSubview:self.countDownLabel];
|
||||
[self.countDownLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.mas_equalTo(transparentRoundedCornersBackgroundView);
|
||||
make.left.mas_equalTo(titleLabel.mas_right).offset(6);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)setupProgressArea {
|
||||
UIView *progressArea = [[UIView alloc] init];
|
||||
progressArea.backgroundColor = [UIColor colorWithWhite:1 alpha:0.6];
|
||||
[self addSubview:progressArea];
|
||||
[progressArea mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.redTeamStackView.mas_bottom).offset(28.5);
|
||||
make.left.mas_equalTo(self.leaderRed.mas_left).offset(-4.5);
|
||||
make.right.mas_equalTo(self.leaderBlue.mas_right).offset(4.5);
|
||||
make.height.mas_equalTo(56.5);
|
||||
}];
|
||||
|
||||
UIImageView *redPinImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_pk_panel_red_mark"]];
|
||||
[progressArea addSubview:redPinImageView];
|
||||
[redPinImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.left.mas_equalTo(progressArea);
|
||||
make.size.mas_equalTo(CGSizeMake(47.5, 56.5));
|
||||
}];
|
||||
|
||||
UIImageView *bluePinImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_pk_panel_blue_mark"]];
|
||||
[progressArea addSubview:bluePinImageView];
|
||||
[bluePinImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.right.mas_equalTo(progressArea);
|
||||
make.size.mas_equalTo(CGSizeMake(47.5, 56.5));
|
||||
}];
|
||||
|
||||
[progressArea insertSubview:self.redCountImageView belowSubview:redPinImageView];
|
||||
[self.redCountImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.center.mas_equalTo(progressArea);
|
||||
make.left.mas_equalTo(progressArea).offset(47.5);
|
||||
make.right.mas_equalTo(progressArea).offset(-47.5);
|
||||
make.height.mas_equalTo(14);
|
||||
}];
|
||||
|
||||
[progressArea addSubview:self.fireImageView];
|
||||
[self.fireImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(progressArea).offset(0);
|
||||
make.centerY.mas_equalTo(progressArea);
|
||||
make.height.mas_equalTo(35);
|
||||
make.width.mas_equalTo(24);
|
||||
}];
|
||||
|
||||
[progressArea insertSubview:self.blueCountImageView aboveSubview:self.redCountImageView];
|
||||
[self.blueCountImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(progressArea).offset(-47.5);
|
||||
make.centerY.mas_equalTo(progressArea);
|
||||
make.leading.mas_equalTo(self.fireImageView.mas_centerX);
|
||||
make.height.mas_equalTo(14);
|
||||
}];
|
||||
|
||||
UILabel *giftLabel_red = [UILabel labelInitWithText:@"Gift"
|
||||
font:[UIFont systemFontOfSize:15 weight:UIFontWeightBold]
|
||||
textColor:[UIColor whiteColor]];
|
||||
[redPinImageView addSubview:giftLabel_red];
|
||||
[giftLabel_red mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(redPinImageView);
|
||||
make.bottom.mas_equalTo(redPinImageView).offset(-12);
|
||||
}];
|
||||
UILabel *giftLabel_blue = [UILabel labelInitWithText:@"Gift"
|
||||
font:[UIFont systemFontOfSize:15 weight:UIFontWeightBold]
|
||||
textColor:[UIColor whiteColor]];
|
||||
[bluePinImageView addSubview:giftLabel_blue];
|
||||
[giftLabel_blue mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(bluePinImageView);
|
||||
make.bottom.mas_equalTo(bluePinImageView).offset(-12);
|
||||
}];
|
||||
}
|
||||
|
||||
- (UILabel *)countDownLabel {
|
||||
if (!_countDownLabel) {
|
||||
_countDownLabel = [UILabel labelInitWithText:@"00:00"
|
||||
font:[UIFont systemFontOfSize:15 weight:UIFontWeightBold]
|
||||
textColor:[UIColor whiteColor]];
|
||||
}
|
||||
return _countDownLabel;
|
||||
}
|
||||
|
||||
- (UIImageView *)redCountImageView {
|
||||
if (!_redCountImageView) {
|
||||
_redCountImageView = [[UIImageView alloc] init];
|
||||
_redCountImageView.image = [[UIImage imageNamed:@"pk_progress_red"]
|
||||
resizableImageWithCapInsets:UIEdgeInsetsZero
|
||||
resizingMode:UIImageResizingModeTile];
|
||||
}
|
||||
return _redCountImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)redCountLabel {
|
||||
if (!_redCountLabel) {
|
||||
_redCountLabel = [UILabel labelInitWithText:@"0"
|
||||
font:[UIFont boldSystemFontOfSize:12]
|
||||
textColor:[UIColor whiteColor]];
|
||||
_redCountLabel.textAlignment = NSTextAlignmentLeft;
|
||||
}
|
||||
return _redCountLabel;
|
||||
}
|
||||
- (UIImageView *)blueCountImageView {
|
||||
if (!_blueCountImageView) {
|
||||
_blueCountImageView = [[UIImageView alloc] init];
|
||||
_blueCountImageView.image = [[UIImage imageNamed:@"pk_progress_blue"]
|
||||
resizableImageWithCapInsets:UIEdgeInsetsZero
|
||||
resizingMode:UIImageResizingModeTile];
|
||||
}
|
||||
return _blueCountImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)blueCountLabel {
|
||||
if (!_blueCountLabel) {
|
||||
_blueCountLabel = [UILabel labelInitWithText:@"0"
|
||||
font:[UIFont boldSystemFontOfSize:12]
|
||||
textColor:[UIColor whiteColor]];
|
||||
_blueCountLabel.textAlignment = NSTextAlignmentRight;
|
||||
}
|
||||
return _blueCountLabel;
|
||||
}
|
||||
|
||||
- (UIImageView *)fireImageView {
|
||||
if (!_fireImageView) {
|
||||
_fireImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pk_progress_fire_icon"]];
|
||||
_fireImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
}
|
||||
return _fireImageView;
|
||||
}
|
||||
|
||||
- (UIButton *)actionButton {
|
||||
if (!_actionButton) {
|
||||
_actionButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_actionButton setBackgroundImage:[UIImage imageNamed:@"room_pk_panel_button_bg"]
|
||||
forState:UIControlStateNormal];
|
||||
[_actionButton addTarget:self
|
||||
action:@selector(didTapActionButton)
|
||||
forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _actionButton;
|
||||
}
|
||||
|
||||
@end
|
||||
|
Reference in New Issue
Block a user