diff --git a/xplan-ios.xcodeproj/project.pbxproj b/xplan-ios.xcodeproj/project.pbxproj index 55d4d56f..aee5f2ff 100644 --- a/xplan-ios.xcodeproj/project.pbxproj +++ b/xplan-ios.xcodeproj/project.pbxproj @@ -424,6 +424,9 @@ E80DE40A277568D300BE5BCB /* ThemeColor+FirstRecharge.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE409277568D300BE5BCB /* ThemeColor+FirstRecharge.m */; }; E80DE40D2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE40C2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.m */; }; E80DE4102775C34E00BE5BCB /* XPFirstRechargeSuccessView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE40F2775C34E00BE5BCB /* XPFirstRechargeSuccessView.m */; }; + E80E236F299A195F0013FD40 /* XPStarredKitchenGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E236E299A195F0013FD40 /* XPStarredKitchenGiftView.m */; }; + E80E2372299A1C380013FD40 /* XPStarredKitchenModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E2371299A1C380013FD40 /* XPStarredKitchenModel.m */; }; + E80E2374299A20050013FD40 /* starred_kitchen_bg.svga in Resources */ = {isa = PBXBuildFile; fileRef = E80E2373299A20050013FD40 /* starred_kitchen_bg.svga */; }; E80E900C27E0358900434B90 /* XPRoomTopicAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E900B27E0358900434B90 /* XPRoomTopicAlertView.m */; }; E80EC80A28ACD84000D133C5 /* QEmotionBoardView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC74C28ACD84000D133C5 /* QEmotionBoardView.m */; }; E80EC80B28ACD84000D133C5 /* QInputBarViewConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC74E28ACD84000D133C5 /* QInputBarViewConfiguration.m */; }; @@ -710,7 +713,6 @@ E8395339276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8395338276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.m */; }; E839533C276A0CCD00CF2F24 /* XPMineCarTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E839533B276A0CCD00CF2F24 /* XPMineCarTableViewCell.m */; }; E839533F276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E839533E276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.m */; }; - E839806829027D4A0084BFC8 /* room_wish_gift_sendCelebrate.svga in Resources */ = {isa = PBXBuildFile; fileRef = E839806729027D4A0084BFC8 /* room_wish_gift_sendCelebrate.svga */; }; E839806B290288660084BFC8 /* XPMessageInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E839806A290288660084BFC8 /* XPMessageInfoModel.m */; }; E83ABEF6280E9AD800322EE4 /* MessageContentUnSupportView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEF5280E9AD800322EE4 /* MessageContentUnSupportView.m */; }; E83ABEF9280EAF3F00322EE4 /* MessageContentOpenLiveView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEF8280EAF3F00322EE4 /* MessageContentOpenLiveView.m */; }; @@ -1075,6 +1077,7 @@ E8AEAEF027141C430017FCE0 /* XPRoomMenuContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEEF27141C430017FCE0 /* XPRoomMenuContainerView.m */; }; E8AEAEF327141C7C0017FCE0 /* XPRoomMessageContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF227141C7C0017FCE0 /* XPRoomMessageContainerView.m */; }; E8AEAEF927141CA30017FCE0 /* RoomHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF827141CA30017FCE0 /* RoomHeaderView.m */; }; + E8B2B5C129C9C96000C7AD19 /* room_wish_gift_sendCelebrate.svga in Resources */ = {isa = PBXBuildFile; fileRef = E8B2B5C029C9C95F00C7AD19 /* room_wish_gift_sendCelebrate.svga */; }; E8B3E7FE28489232009746AB /* XPNewUserGreetRoomAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B3E7FD28489232009746AB /* XPNewUserGreetRoomAlertView.m */; }; E8B3E8092848B871009746AB /* InviteUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B3E8082848B871009746AB /* InviteUserInfoModel.m */; }; E8B3E80C2848BA40009746AB /* NewUserGreetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B3E80B2848BA40009746AB /* NewUserGreetModel.m */; }; @@ -2139,6 +2142,11 @@ E80DE40C2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPFirstRechargeFlowLayout.m; sourceTree = ""; }; E80DE40E2775C34E00BE5BCB /* XPFirstRechargeSuccessView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPFirstRechargeSuccessView.h; sourceTree = ""; }; E80DE40F2775C34E00BE5BCB /* XPFirstRechargeSuccessView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPFirstRechargeSuccessView.m; sourceTree = ""; }; + E80E236D299A195F0013FD40 /* XPStarredKitchenGiftView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPStarredKitchenGiftView.h; sourceTree = ""; }; + E80E236E299A195F0013FD40 /* XPStarredKitchenGiftView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPStarredKitchenGiftView.m; sourceTree = ""; }; + E80E2370299A1C380013FD40 /* XPStarredKitchenModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPStarredKitchenModel.h; sourceTree = ""; }; + E80E2371299A1C380013FD40 /* XPStarredKitchenModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPStarredKitchenModel.m; sourceTree = ""; }; + E80E2373299A20050013FD40 /* starred_kitchen_bg.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = starred_kitchen_bg.svga; sourceTree = ""; }; E80E900A27E0358900434B90 /* XPRoomTopicAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTopicAlertView.h; sourceTree = ""; }; E80E900B27E0358900434B90 /* XPRoomTopicAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomTopicAlertView.m; sourceTree = ""; }; E80EC74C28ACD84000D133C5 /* QEmotionBoardView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QEmotionBoardView.m; sourceTree = ""; }; @@ -2544,7 +2552,6 @@ E839533B276A0CCD00CF2F24 /* XPMineCarTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineCarTableViewCell.m; sourceTree = ""; }; E839533D276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNameplateTableViewCell.h; sourceTree = ""; }; E839533E276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNameplateTableViewCell.m; sourceTree = ""; }; - E839806729027D4A0084BFC8 /* room_wish_gift_sendCelebrate.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = room_wish_gift_sendCelebrate.svga; sourceTree = ""; }; E8398069290288660084BFC8 /* XPMessageInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMessageInfoModel.h; sourceTree = ""; }; E839806A290288660084BFC8 /* XPMessageInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMessageInfoModel.m; sourceTree = ""; }; E83ABEF4280E9AD800322EE4 /* MessageContentUnSupportView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentUnSupportView.h; sourceTree = ""; }; @@ -3286,6 +3293,7 @@ E8AEAEF227141C7C0017FCE0 /* XPRoomMessageContainerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMessageContainerView.m; sourceTree = ""; }; E8AEAEF727141CA30017FCE0 /* RoomHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomHeaderView.h; sourceTree = ""; }; E8AEAEF827141CA30017FCE0 /* RoomHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomHeaderView.m; sourceTree = ""; }; + E8B2B5C029C9C95F00C7AD19 /* room_wish_gift_sendCelebrate.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = room_wish_gift_sendCelebrate.svga; sourceTree = ""; }; E8B3E7FC28489232009746AB /* XPNewUserGreetRoomAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNewUserGreetRoomAlertView.h; sourceTree = ""; }; E8B3E7FD28489232009746AB /* XPNewUserGreetRoomAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNewUserGreetRoomAlertView.m; sourceTree = ""; }; E8B3E8072848B871009746AB /* InviteUserInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InviteUserInfoModel.h; sourceTree = ""; }; @@ -6445,6 +6453,8 @@ 9BC9DAEE27E33B3F009EE409 /* XPRoomGiftAnimationParser.m */, F1D8556D2931FC86008C418F /* XPRoomYearActivityView.h */, F1D8556E2931FC86008C418F /* XPRoomYearActivityView.m */, + E80E236D299A195F0013FD40 /* XPStarredKitchenGiftView.h */, + E80E236E299A195F0013FD40 /* XPStarredKitchenGiftView.m */, ); path = AnimationView; sourceTree = ""; @@ -6594,6 +6604,8 @@ E86F6184284F4E4800E8EC9A /* RoomHalfHourRankModel.m */, 9B8DE0DF289CF02900FB6EC2 /* XPGiftCompoundModel.h */, 9B8DE0E0289CF02900FB6EC2 /* XPGiftCompoundModel.m */, + E80E2370299A1C380013FD40 /* XPStarredKitchenModel.h */, + E80E2371299A1C380013FD40 /* XPStarredKitchenModel.m */, ); path = Model; sourceTree = ""; @@ -7555,12 +7567,13 @@ E8A1E45C276220B100B294CA /* Sources */ = { isa = PBXGroup; children = ( + E8B2B5C029C9C95F00C7AD19 /* room_wish_gift_sendCelebrate.svga */, 1497CCE229C1E1FB0015D135 /* sailing_prize_cowry.svga */, 1497CCE329C1E1FB0015D135 /* sailing_prize.svga */, 14A0CF3A29C014B400B2375A /* moment_living.svga */, 14B65C6A29BF439E00EC02EF /* home_living.svga */, E887531529BB1B4F0017A41A /* candy_tree.mp4 */, - E839806729027D4A0084BFC8 /* room_wish_gift_sendCelebrate.svga */, + E80E2373299A20050013FD40 /* starred_kitchen_bg.svga */, 9B8DE0E7289CFE8100FB6EC2 /* compound_gift_banner.svga */, E852D7372862C615001465ED /* room_lucky_gift_bg.svga */, 145EC95B29C86A0B003D69B1 /* login_logo.svga */, @@ -9369,6 +9382,7 @@ E80EC85C28ACD84000D133C5 /* emoji_77@2x.png in Resources */, E8937AC7276C3EDE00B2C7E1 /* svga_member_in_lv40.svga in Resources */, E80EC85528ACD84000D133C5 /* emoji_118@2x.png in Resources */, + E80E2374299A20050013FD40 /* starred_kitchen_bg.svga in Resources */, E80EC8B728ACD84100D133C5 /* emoji_119@2x.png in Resources */, E80EC86228ACD84000D133C5 /* emoji_22@2x.png in Resources */, E8A1E461276220DA00B294CA /* candyTree.svga in Resources */, @@ -9430,7 +9444,6 @@ 14A0CF3B29C014B400B2375A /* moment_living.svga in Resources */, E80EC89528ACD84000D133C5 /* emoji_99@2x.png in Resources */, E80EC89128ACD84000D133C5 /* emoji_133@2x.png in Resources */, - E839806829027D4A0084BFC8 /* room_wish_gift_sendCelebrate.svga in Resources */, E80EC87F28ACD84000D133C5 /* emoji_137@2x.png in Resources */, E80EC8B028ACD84100D133C5 /* emoji_152@2x.png in Resources */, E80EC85728ACD84000D133C5 /* emoji_130@2x.png in Resources */, @@ -9542,6 +9555,7 @@ E80EC82728ACD84000D133C5 /* emoji_73@2x.png in Resources */, 145EC95C29C86A0B003D69B1 /* login_logo.svga in Resources */, E80EC85928ACD84000D133C5 /* emoji_122@2x.png in Resources */, + E8B2B5C129C9C96000C7AD19 /* room_wish_gift_sendCelebrate.svga in Resources */, E80EC86E28ACD84000D133C5 /* emoji_48@2x.png in Resources */, E80EC86A28ACD84000D133C5 /* emoji_27@2x.png in Resources */, E80EC88228ACD84000D133C5 /* emoji_13@2x.png in Resources */, @@ -9688,6 +9702,7 @@ E8AB633628AE54A40023B0D2 /* XPSailingPrizeCollectionViewCell.m in Sources */, E824543A26F5880E00BE8163 /* XPLoginVerifBindPhoneProtocol.h in Sources */, E8E20BE2281695800033B688 /* XPMineLoginPasswordViewController.m in Sources */, + E80E236F299A195F0013FD40 /* XPStarredKitchenGiftView.m in Sources */, E86E79D628A4EA0C006DAF48 /* SessionRiskCache.m in Sources */, E824543826F5820A00BE8163 /* XPLoginVerifBindPhonePresenter.m in Sources */, E8B846BF26FD827900A777FE /* XPMineUserInfoAlbumViewController.m in Sources */, @@ -9757,6 +9772,7 @@ E8C6FFD42754AA87004DC9F0 /* XPNoteView.m in Sources */, 9BD8D4E328911E9900AE03FF /* XPMineCollectRoomListViewController.m in Sources */, 9B2EA7C628041EFC00ED17BF /* XPAnchorPkPanelView.m in Sources */, + E80E2372299A1C380013FD40 /* XPStarredKitchenModel.m in Sources */, E84150BB27747BAF00A7F548 /* XPFirstRechargePresenter.m in Sources */, 14A0CF4D29C0511200B2375A /* XPMineRechargeFooterReusableView.m in Sources */, E800806B27FD42B00055A8AB /* XPClanRoomCollectionViewCell.m in Sources */, diff --git a/xplan-ios/Assets.xcassets/Room/Kitchen/Contents.json b/xplan-ios/Assets.xcassets/Room/Kitchen/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/xplan-ios/Assets.xcassets/Room/Kitchen/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/Room/Kitchen/room_starred_kitchen_large_gift_bg.imageset/Contents.json b/xplan-ios/Assets.xcassets/Room/Kitchen/room_starred_kitchen_large_gift_bg.imageset/Contents.json new file mode 100644 index 00000000..7d782d22 --- /dev/null +++ b/xplan-ios/Assets.xcassets/Room/Kitchen/room_starred_kitchen_large_gift_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_starred_kitchen_large_gift_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_starred_kitchen_large_gift_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/Room/Kitchen/room_starred_kitchen_large_gift_bg.imageset/room_starred_kitchen_large_gift_bg@2x.png b/xplan-ios/Assets.xcassets/Room/Kitchen/room_starred_kitchen_large_gift_bg.imageset/room_starred_kitchen_large_gift_bg@2x.png new file mode 100644 index 00000000..8c02860b Binary files /dev/null and b/xplan-ios/Assets.xcassets/Room/Kitchen/room_starred_kitchen_large_gift_bg.imageset/room_starred_kitchen_large_gift_bg@2x.png differ diff --git a/xplan-ios/Assets.xcassets/Room/Kitchen/room_starred_kitchen_large_gift_bg.imageset/room_starred_kitchen_large_gift_bg@3x.png b/xplan-ios/Assets.xcassets/Room/Kitchen/room_starred_kitchen_large_gift_bg.imageset/room_starred_kitchen_large_gift_bg@3x.png new file mode 100644 index 00000000..02029b31 Binary files /dev/null and b/xplan-ios/Assets.xcassets/Room/Kitchen/room_starred_kitchen_large_gift_bg.imageset/room_starred_kitchen_large_gift_bg@3x.png differ diff --git a/xplan-ios/Main/IM/Model/AttachmentModel.h b/xplan-ios/Main/IM/Model/AttachmentModel.h index 335339b2..a268fd5e 100644 --- a/xplan-ios/Main/IM/Model/AttachmentModel.h +++ b/xplan-ios/Main/IM/Model/AttachmentModel.h @@ -100,6 +100,8 @@ typedef NS_ENUM(NSUInteger, CustomMessageType) { CustomMessageType_Graffiti_Gift = 94, ///心愿礼物 CustomMessageType_Wish_Gift = 95, + ///星级厨房 + CustomMessageType_Starred_Kitchen = 96, }; @@ -535,6 +537,14 @@ typedef NS_ENUM(NSInteger, CustomMessageWishGift) { Custom_Message_Sub_Wish_Gift_Close = 955, }; +///星级厨房 CustomMessageType_Starred_Kitchen = 96, +typedef NS_ENUM(NSInteger, CustomMessageStarredKitchen) { + ///星级厨房礼物房间飘屏通知(静态) + Custom_Message_Sub_Starred_Kitchen_Banner_Static = 960, + ///星级厨房礼物房间飘屏通知动态) + Custom_Message_Sub_Starred_Kitchen_Banner_Dynamic = 961 , +}; + @interface AttachmentModel : NSObject @property (nonatomic,assign) int first; @property (nonatomic,assign) int second; diff --git a/xplan-ios/Main/Room/View/AnimationView/Model/XPStarredKitchenModel.h b/xplan-ios/Main/Room/View/AnimationView/Model/XPStarredKitchenModel.h new file mode 100644 index 00000000..e38f1922 --- /dev/null +++ b/xplan-ios/Main/Room/View/AnimationView/Model/XPStarredKitchenModel.h @@ -0,0 +1,29 @@ +// +// XPStarredKitchenModel.h +// xplan-ios +// +// Created by 冯硕 on 2023/2/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPStarredKitchenModel : NSObject +///送礼物的人 +@property(nonatomic, copy) NSString *nick; +///uid +@property(nonatomic, copy) NSString *uid; +///房主的Uid +@property(nonatomic, copy) NSString *roomUid; +///倍数 +@property (nonatomic,assign) NSInteger itemMultiple; +///钻石 +@property (nonatomic,assign) NSInteger diamonds; +///跳转的地址 +@property (nonatomic,copy) NSString *skipUrl; +///需要的等级 +@property (nonatomic,assign) NSInteger needLevel; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/AnimationView/Model/XPStarredKitchenModel.m b/xplan-ios/Main/Room/View/AnimationView/Model/XPStarredKitchenModel.m new file mode 100644 index 00000000..45ac2bd9 --- /dev/null +++ b/xplan-ios/Main/Room/View/AnimationView/Model/XPStarredKitchenModel.m @@ -0,0 +1,12 @@ +// +// XPStarredKitchenModel.m +// xplan-ios +// +// Created by 冯硕 on 2023/2/13. +// + +#import "XPStarredKitchenModel.h" + +@implementation XPStarredKitchenModel + +@end diff --git a/xplan-ios/Main/Room/View/AnimationView/XPRoomAnimationHitView.m b/xplan-ios/Main/Room/View/AnimationView/XPRoomAnimationHitView.m index bf9207cb..cd5a95f7 100644 --- a/xplan-ios/Main/Room/View/AnimationView/XPRoomAnimationHitView.m +++ b/xplan-ios/Main/Room/View/AnimationView/XPRoomAnimationHitView.m @@ -13,6 +13,9 @@ - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { for (NSInteger i = (self.subviews.count - 1) ; i >= 0 ; i--) { UIView * subView = [self.subviews safeObjectAtIndex1:i]; + if (subView.subviews.count <= 0) { + continue; + } CGPoint convertPoint = [subView convertPoint:point fromView:self]; if (CGRectContainsPoint(subView.bounds, convertPoint)) { return [subView hitTest:convertPoint withEvent:event]; diff --git a/xplan-ios/Main/Room/View/AnimationView/XPRoomAnimationView.m b/xplan-ios/Main/Room/View/AnimationView/XPRoomAnimationView.m index e2702604..be3bc1d4 100644 --- a/xplan-ios/Main/Room/View/AnimationView/XPRoomAnimationView.m +++ b/xplan-ios/Main/Room/View/AnimationView/XPRoomAnimationView.m @@ -39,6 +39,7 @@ #import "DatingInfoModel.h" #import "AcrossRoomPKPrizeModel.h" #import "RoomHalfHourRankModel.h" +#import "XPStarredKitchenModel.h" ///View #import "XPRoomGiftBannerView.h" #import "XPRoomGiftBroadcastView.h" @@ -55,8 +56,10 @@ #import "XPRoomGiftCompoundView.h" #import "XPSailingAnimationView.h" #import "XPRoomGraffitiGiftAnimationView.h" +#import "XPStarredKitchenGiftView.h" +#import "XPWebViewController.h" -@interface XPRoomAnimationView () +@interface XPRoomAnimationView () ///展示的不同层级 ///最底层的 @property (nonatomic,strong) XPRoomAnimationHitView * lowLevelView; @@ -287,6 +290,8 @@ [self receiveRoomGraffitiGift:attachment]; } else if(attachment.first == CustomMessageType_Wish_Gift && attachment.second == Custom_Message_Sub_Wish_Gift_Gelebrate) { [self receiveRoomWishGiftCelebrate:attachment]; + } else if(attachment.first == CustomMessageType_Starred_Kitchen && (attachment.second == Custom_Message_Sub_Starred_Kitchen_Banner_Dynamic || attachment.second == Custom_Message_Sub_Starred_Kitchen_Banner_Static)) { + [self receiveStarredKitchenGift:attachment]; } } } @@ -1624,6 +1629,63 @@ }]; } +#pragma mark - 星级厨房 +- (void)receiveStarredKitchenGift:(AttachmentModel *)attatchment { + if ([self isInSudGame]) {return;} + if (self.candyTreegiftQueue.count == 0) { + [self createStarredKitchenBannerAnimation:attatchment]; + } + [self.candyTreegiftQueue addObject:attatchment]; +} + +- (void)createStarredKitchenBannerAnimation:(AttachmentModel *)attatchment { + CGFloat kscale = (CGFloat)60 / (CGFloat)375; + XPStarredKitchenGiftView *kitchenView = [[XPStarredKitchenGiftView alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, KScreenWidth , KScreenWidth * kscale)]; + kitchenView.delegate = self; + kitchenView.isMaxLargeGift = attatchment.second == Custom_Message_Sub_Starred_Kitchen_Banner_Dynamic; + kitchenView.starredKitchenDic = attatchment.data; + [self.middleLevelView addSubview:kitchenView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:kitchenView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(kitchenView.frame.size.width / 2, kitchenView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, kitchenView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, kitchenView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [kitchenView removeFromSuperview]; + if (self.candyTreegiftQueue.count > 0) { + [self.candyTreegiftQueue removeObjectAtIndex:0]; + } + if (self.candyTreegiftQueue.count > 0) { + [self createStarredKitchenBannerAnimation:self.candyTreegiftQueue.firstObject]; + } + } + }]; + [kitchenView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [kitchenView pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; +} + +- (void)xPStarredKitchenGiftView:(XPStarredKitchenGiftView *)view didClickEnter:(XPStarredKitchenModel *)model { + if (model &&model.needLevel < self.delegate.getUserInfo.userLevelVo.experLevelSeq && model.skipUrl.length > 0) { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = model.skipUrl; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + } +} + #pragma mark - HWDMP4PlayDelegate //即将开始播放时询问,true马上开始播放,false放弃播放 - (BOOL)shouldStartPlayMP4:(VAPView *)container config:(QGVAPConfigModel *)config { @@ -1803,6 +1865,7 @@ _middleLevelView = [[XPRoomAnimationHitView alloc] init]; _middleLevelView.backgroundColor = [UIColor clearColor]; _middleLevelView.userInteractionEnabled = YES; + _middleLevelView.tag = 1001; } return _middleLevelView; } @@ -1948,6 +2011,4 @@ return _wishGiftEffectView; } - - @end diff --git a/xplan-ios/Main/Room/View/AnimationView/XPStarredKitchenGiftView.h b/xplan-ios/Main/Room/View/AnimationView/XPStarredKitchenGiftView.h new file mode 100644 index 00000000..29ba33e7 --- /dev/null +++ b/xplan-ios/Main/Room/View/AnimationView/XPStarredKitchenGiftView.h @@ -0,0 +1,27 @@ +// +// XPStarredKitchenGiftView.h +// xplan-ios +// +// Created by 冯硕 on 2023/2/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPStarredKitchenGiftView, XPStarredKitchenModel; +@protocol XPStarredKitchenGiftViewDelegate + +- (void)xPStarredKitchenGiftView:(XPStarredKitchenGiftView *)view didClickEnter:(XPStarredKitchenModel *)model; + +@end + +@interface XPStarredKitchenGiftView : UIView +///代理 +@property (nonatomic,weak) id delegate; +///星级厨房数据 +@property (nonatomic,strong) NSDictionary *starredKitchenDic; +///是不是动态礼物 +@property (nonatomic,assign) BOOL isMaxLargeGift; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/AnimationView/XPStarredKitchenGiftView.m b/xplan-ios/Main/Room/View/AnimationView/XPStarredKitchenGiftView.m new file mode 100644 index 00000000..3a65cd42 --- /dev/null +++ b/xplan-ios/Main/Room/View/AnimationView/XPStarredKitchenGiftView.m @@ -0,0 +1,191 @@ +// +// XPStarredKitchenGiftView.m +// xplan-ios +// +// Created by 冯硕 on 2023/2/13. +// +///星级厨房 +#import "XPStarredKitchenGiftView.h" +///Third +#import +#import +#import "XPSVGAPlayer.h" +#import "XPMacro.h" +#import "ThemeColor+Room.h" +#import "XPStarredKitchenModel.h" +#import "NSObject+MJExtension.h" +#import "XCCurrentVCStackManager.h" +#import "XPWebViewController.h" +@interface XPStarredKitchenGiftView () +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///糖果树特效 +@property (nonatomic,strong) XPSVGAPlayer *candyTreeView; +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///容器 +@property (nonatomic,strong) UIView *titleView; +///显示文本内容 +@property (nonatomic,strong) UILabel *titleLabel; +/// +@property (nonatomic,strong) XPStarredKitchenModel *kitchenModel; +///点击事件 +@property (nonatomic,strong) UIButton *actionButton; +@end + +@implementation XPStarredKitchenGiftView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.candyTreeView]; + [self addSubview:self.backImageView]; + [self addSubview:self.actionButton]; + [self.backImageView addSubview:self.titleView]; + + [self.titleView addSubview:self.titleLabel]; +} + +- (void)recognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPStarredKitchenGiftView:didClickEnter:)]) { + [self.delegate xPStarredKitchenGiftView:self didClickEnter:self.kitchenModel]; + } +} + +- (void)initSubViewConstraints { + [self.actionButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + + [self.candyTreeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(260); + make.height.mas_equalTo(28); + make.top.mas_equalTo(self.backImageView).offset(23); + make.centerX.mas_equalTo(self.backImageView); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.titleView); + make.centerY.mas_equalTo(self.titleView); + }]; +} + +- (NSAttributedString *)createAttribute:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize { + NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; + return attr; +} + +#pragma mark - Getters And Setters +- (void)setStarredKitchenDic:(NSDictionary *)starredKitchenDic{ + if (starredKitchenDic) { + XPStarredKitchenModel * giftInfo = [XPStarredKitchenModel modelWithDictionary:starredKitchenDic]; + self.kitchenModel = giftInfo; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + CGFloat fontSize = self.isMaxLargeGift ? 22 : 13; + [attribute appendAttributedString:[self createAttribute:@"恭喜" color:[UIColor whiteColor] fontSize:fontSize]]; + NSString * nick = giftInfo.nick; + if (nick.length > 6) { + nick = [nick substringToIndex:6]; + } + [attribute appendAttributedString:[self createAttribute:nick color:[ThemeColor colorWithHexString:@"#FEF23E"] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:@"在星级厨房抽中 " color:[UIColor whiteColor] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@"%ld", giftInfo.itemMultiple] color:[ThemeColor colorWithHexString:@"#00EAFF"] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:@"倍奖励,获得" color:[ThemeColor colorWithHexString:@"#FEF23E"] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@" %ld", giftInfo.diamonds] color:[ThemeColor colorWithHexString:@"#00EAFF"] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:@"钻石" color:[UIColor whiteColor] fontSize:fontSize]]; + NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; + paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; + paragraphStyle.lineSpacing = 4.0f;//行间距 + paragraphStyle.alignment = NSTextAlignmentCenter; + paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight; + [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attribute.length)]; + [self.candyTreeView setAttributedText:attribute forKey:@"noble_text_tx"]; + if (self.isMaxLargeGift) { + self.backImageView.hidden = YES; + self.candyTreeView.hidden = NO; + @kWeakify(self); + [self.parser parseWithNamed:@"starred_kitchen_bg" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.candyTreeView.loops = 1; + self.candyTreeView.clearsAfterStop = NO; + self.candyTreeView.videoItem = videoItem; + + [self.candyTreeView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; + } else { + self.backImageView.hidden = NO; + self.candyTreeView.hidden = YES; + self.titleLabel.attributedText = attribute; + self.titleLabel.textAlignment = NSTextAlignmentCenter; + } + } +} + +- (XPSVGAPlayer *)candyTreeView { + if (!_candyTreeView) { + _candyTreeView = [[XPSVGAPlayer alloc]init]; + _candyTreeView.backgroundColor = [UIColor clearColor]; + _candyTreeView.userInteractionEnabled = YES; + } + return _candyTreeView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +- (UIView *)titleView { + if (!_titleView) { + _titleView = [[UIView alloc] init]; + _titleView.backgroundColor = [UIColor clearColor]; + } + return _titleView; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_starred_kitchen_large_gift_bg"]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.numberOfLines = 2; + } + return _titleLabel; +} + +- (UIButton *)actionButton { + if (!_actionButton) { + _actionButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_actionButton addTarget:self action:@selector(recognizer) forControlEvents:UIControlEventTouchUpInside]; + } + return _actionButton; +} + +@end diff --git a/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageFilter.m b/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageFilter.m index b55b9619..92d2e9ff 100644 --- a/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageFilter.m +++ b/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageFilter.m @@ -119,6 +119,11 @@ @(CustomMessageType_Wish_Gift): [NSSet setWithObjects: @(Custom_Message_Sub_Wish_Gift_Finish), + nil], + @(CustomMessageType_Starred_Kitchen): + [NSSet setWithObjects: + @(Custom_Message_Sub_Starred_Kitchen_Banner_Dynamic), + @(Custom_Message_Sub_Starred_Kitchen_Banner_Static), nil] }; diff --git a/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageParser.m b/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageParser.m index 56150f78..83ca12b4 100644 --- a/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageParser.m +++ b/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageParser.m @@ -21,6 +21,7 @@ #import "NSArray+Safe.h" #import "UIView+Corner.h" #import "Api+Room.h" +#import "XCCurrentVCStackManager.h" ///Model #import "XPMessageRemoteExtModel.h" #import "AttachmentModel.h" @@ -42,13 +43,14 @@ #import "RoomSailingPrizeModel.h" #import "XPOpenRedPacketModel.h" #import "XPMessageInfoModel.h" - +#import "XPStarredKitchenModel.h" #import "NetImageView.h" #import "XPUserCardViewController.h" #import "XPRoomTopicAlertView.h" #import "XPRoomSendTextView.h" #import "XPRoomPKResultView.h" +#import "XPWebViewController.h" @implementation XPRoomMessageParser @@ -124,9 +126,11 @@ return [self createRoomSailingAttribute:attachment messageInfo:messageInfo]; } else if (first == CustomMessageType_RedPacket && attachment.second == Custom_Message_Sub_OpenRedPacketSuccess) { return [self createRedPacketAttribute:attachment messageInfo:messageInfo]; - } else if (first == CustomMessageType_Wish_Gift) { + } else if (first == CustomMessageType_Wish_Gift) { return [self createWishGiftAttribute:attachment messageInfo:messageInfo]; -} + } else if (first == CustomMessageType_Starred_Kitchen) { + return [self createStarredKitchenAttribute:attachment messageInfo:messageInfo]; + } return nil; } @@ -336,7 +340,7 @@ return nil; } -#pragma mark - 心愿礼物 +#pragma mark - 星级厨房 - (XPMessageInfoModel *)createWishGiftAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ UIImageView *imaveView = [[UIImageView alloc]init]; imaveView.image = [UIImage imageNamed:@"room_wish_gift_mesage_finish"]; @@ -360,6 +364,40 @@ return messageInfo; } +#pragma mark - 心愿礼物 +- (XPMessageInfoModel *)createStarredKitchenAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + XPStarredKitchenModel * giftInfo = [XPStarredKitchenModel modelWithDictionary:attachment.data]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + CGFloat fontSize = 13; + [attribute appendAttributedString:[self createTextAttribute:@"恭喜" color:[UIColor whiteColor] font:fontSize]]; + NSString * nick = giftInfo.nick; + if (nick.length > 6) { + nick = [nick substringToIndex:6]; + } + [attribute appendAttributedString:[self createTextAttribute:nick color:[ThemeColor colorWithHexString:@"#FEF23E"] font:fontSize]]; + [attribute appendAttributedString:[self createTextAttribute:@"在深海奇缘抽中 " color:[UIColor whiteColor] font:fontSize]]; + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%ld", giftInfo.itemMultiple] color:[ThemeColor colorWithHexString:@"#00EAFF"] font:fontSize]]; + [attribute appendAttributedString:[self createTextAttribute:@"倍奖励,获得" color:[UIColor whiteColor] font:fontSize]]; + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@" %ld", giftInfo.diamonds] color:[ThemeColor colorWithHexString:@"#00EAFF"] font:fontSize]]; + [attribute appendAttributedString:[self createTextAttribute:@"钻石" color:[UIColor whiteColor] font:fontSize]]; + NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; + paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; + paragraphStyle.lineSpacing = 4.0f;//行间距 + paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight; + [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attribute.length)]; + @kWeakify(self); + [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @kStrongify(self); + if (giftInfo &&giftInfo.needLevel < self.hostDelegate.getUserInfo.userLevelVo.experLevelSeq && giftInfo.skipUrl.length > 0) { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = giftInfo.skipUrl; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + } + }]; + messageInfo.content = attribute; + return messageInfo; +} + #pragma mark - 红包 - (XPMessageInfoModel *)createRedPacketAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ XPOpenRedPacketModel *info = [XPOpenRedPacketModel modelWithDictionary:attachment.data]; diff --git a/xplan-ios/Sources/starred_kitchen_bg.svga b/xplan-ios/Sources/starred_kitchen_bg.svga new file mode 100644 index 00000000..8a2c4a48 Binary files /dev/null and b/xplan-ios/Sources/starred_kitchen_bg.svga differ