diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index 5b7d0736..b410ff59 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -510,6 +510,7 @@ 545831A62C2C085C00364026 /* ArabMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 545831A52C2C085C00364026 /* ArabMicroView.m */; }; 545888332C1AFFB500897585 /* XPRoomPKPanelView.m in Sources */ = {isa = PBXBuildFile; fileRef = 545888322C1AFFB500897585 /* XPRoomPKPanelView.m */; }; 545888362C1C306B00897585 /* XPRoomPKPaneAvatarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 545888352C1C306B00897585 /* XPRoomPKPaneAvatarView.m */; }; + 5468995D2C8AFE4C0049136A /* GiftComboFlagView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5468995C2C8AFE4C0049136A /* GiftComboFlagView.m */; }; 547853A12C258F2A00F45E60 /* XPMineUserViewHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 547853A02C258F2A00F45E60 /* XPMineUserViewHeader.m */; }; 548E01C52C3F78360071C83D /* FeedBackViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 548E01C22C3F78360071C83D /* FeedBackViewController.xib */; }; 548E01C62C3F78360071C83D /* FeedBackViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 548E01C42C3F78360071C83D /* FeedBackViewController.m */; }; @@ -528,6 +529,8 @@ 54C9A11F2C3DA08000C6D970 /* XPMineGamePartnerInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C9A11E2C3DA08000C6D970 /* XPMineGamePartnerInfoModel.m */; }; 54C9A1222C3E6C3200C6D970 /* MessageGameOrderModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C9A1212C3E6C3200C6D970 /* MessageGameOrderModel.m */; }; 54C9A1252C3E74AE00C6D970 /* MessageGameOrderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C9A1242C3E74AE00C6D970 /* MessageGameOrderView.m */; }; + 54F179072C8EA48C00CB5219 /* Combo_Boom.svga in Resources */ = {isa = PBXBuildFile; fileRef = 54F179062C8EA48C00CB5219 /* Combo_Boom.svga */; }; + 54F1790A2C8EDDF400CB5219 /* CountdownRingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F179092C8EDDF400CB5219 /* CountdownRingView.m */; }; 54F469352C29711400A83655 /* XPMomentUserDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F469342C29711400A83655 /* XPMomentUserDataViewController.m */; }; 54F469382C29C3B400A83655 /* XPMineAlbumTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F469372C29C3B400A83655 /* XPMineAlbumTableViewCell.m */; }; 54F4693B2C2A984D00A83655 /* MedalModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F4693A2C2A984D00A83655 /* MedalModel.m */; }; @@ -2550,6 +2553,8 @@ 545888322C1AFFB500897585 /* XPRoomPKPanelView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPanelView.m; sourceTree = ""; }; 545888342C1C306B00897585 /* XPRoomPKPaneAvatarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKPaneAvatarView.h; sourceTree = ""; }; 545888352C1C306B00897585 /* XPRoomPKPaneAvatarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPaneAvatarView.m; sourceTree = ""; }; + 5468995B2C8AFE4C0049136A /* GiftComboFlagView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftComboFlagView.h; sourceTree = ""; }; + 5468995C2C8AFE4C0049136A /* GiftComboFlagView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiftComboFlagView.m; sourceTree = ""; }; 5478539F2C258F2A00F45E60 /* XPMineUserViewHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserViewHeader.h; sourceTree = ""; }; 547853A02C258F2A00F45E60 /* XPMineUserViewHeader.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserViewHeader.m; sourceTree = ""; }; 548E01C22C3F78360071C83D /* FeedBackViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FeedBackViewController.xib; sourceTree = ""; }; @@ -2586,6 +2591,9 @@ 54C9A1212C3E6C3200C6D970 /* MessageGameOrderModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageGameOrderModel.m; sourceTree = ""; }; 54C9A1232C3E74AE00C6D970 /* MessageGameOrderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageGameOrderView.h; sourceTree = ""; }; 54C9A1242C3E74AE00C6D970 /* MessageGameOrderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageGameOrderView.m; sourceTree = ""; }; + 54F179062C8EA48C00CB5219 /* Combo_Boom.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = Combo_Boom.svga; sourceTree = ""; }; + 54F179082C8EDDF400CB5219 /* CountdownRingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CountdownRingView.h; sourceTree = ""; }; + 54F179092C8EDDF400CB5219 /* CountdownRingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CountdownRingView.m; sourceTree = ""; }; 54F469332C29711400A83655 /* XPMomentUserDataViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMomentUserDataViewController.h; sourceTree = ""; }; 54F469342C29711400A83655 /* XPMomentUserDataViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMomentUserDataViewController.m; sourceTree = ""; }; 54F469362C29C3B400A83655 /* XPMineAlbumTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAlbumTableViewCell.h; sourceTree = ""; }; @@ -9277,6 +9285,10 @@ E8D4DE432940462C00EC788D /* XPGiftTwelveStarBroadcastView.m */, 540EC1CE2C89925F00F3BF0D /* GiftComboView.h */, 540EC1CF2C89925F00F3BF0D /* GiftComboView.m */, + 54F179082C8EDDF400CB5219 /* CountdownRingView.h */, + 54F179092C8EDDF400CB5219 /* CountdownRingView.m */, + 5468995B2C8AFE4C0049136A /* GiftComboFlagView.h */, + 5468995C2C8AFE4C0049136A /* GiftComboFlagView.m */, ); path = View; sourceTree = ""; @@ -9900,6 +9912,7 @@ E8A1E45C276220B100B294CA /* Resources */ = { isa = PBXGroup; children = ( + 54F179062C8EA48C00CB5219 /* Combo_Boom.svga */, 23EE96F12B9FF6BE00475D69 /* pi_crazy_zoo.svga */, 237701182BD6143700D661F1 /* pi_happy_egg_smash.svga */, 23A03F2C2B4408CD0094227A /* pi_room_lucky_gift.svga */, @@ -11218,6 +11231,7 @@ E80EC8A228ACD84100D133C5 /* emoji_09@2x.png in Resources */, E80EC89228ACD84000D133C5 /* emoji_87@2x.png in Resources */, E80EC81828ACD84000D133C5 /* emoji_149@2x.png in Resources */, + 54F179072C8EA48C00CB5219 /* Combo_Boom.svga in Resources */, E80EC83928ACD84000D133C5 /* emoji_100@2x.png in Resources */, E80EC83028ACD84000D133C5 /* emoji_12@2x.png in Resources */, E80EC8AE28ACD84100D133C5 /* emoji_131@2x.png in Resources */, @@ -11846,6 +11860,7 @@ 2331C1B42A60F32D00E1D940 /* XPCandyTreeRankTableViewCell.m in Sources */, 9B85B6DA279FDC5200A0A1AC /* XPUserCardSkillCollectionViewCell.m in Sources */, E85E7B0D2A4EB0D200B6D00A /* GuildSuperAdminInfoModel.m in Sources */, + 54F1790A2C8EDDF400CB5219 /* CountdownRingView.m in Sources */, 189DD68426E1FDBB00AB55B1 /* XNDJTDDLoadingTool.m in Sources */, 9B1B72AF280031F8003FACE9 /* XPAnchorPKSelectRoomView.m in Sources */, 5412E0FD2C52512100FDD668 /* RoomBottomEntranceModel.m in Sources */, @@ -12415,6 +12430,7 @@ E88B5CC126FB407B00DA9178 /* XPMineUserInfoViewController.m in Sources */, 2331C1AC2A60F32D00E1D940 /* CandyTreeRecordModel.m in Sources */, 540EC1D32C89998500F3BF0D /* GiftComboManager.m in Sources */, + 5468995D2C8AFE4C0049136A /* GiftComboFlagView.m in Sources */, E81E09CF290F750800A1F410 /* AdvertiseModel.m in Sources */, 2305F3472AD94E9D00AD403C /* XPMaskManagerCell.m in Sources */, E852D74428633A08001465ED /* MonentsCommentModel.m in Sources */, diff --git a/YuMi/Assets.xcassets/1.0.15/Contents.json b/YuMi/Assets.xcassets/1.0.15/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.15/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_purchase_coin.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.15/luck_gift_flag.imageset/Contents.json similarity index 86% rename from YuMi/Assets.xcassets/Vip Center/vip_center_purchase_coin.imageset/Contents.json rename to YuMi/Assets.xcassets/1.0.15/luck_gift_flag.imageset/Contents.json index f514c3c7..ae75efad 100644 --- a/YuMi/Assets.xcassets/Vip Center/vip_center_purchase_coin.imageset/Contents.json +++ b/YuMi/Assets.xcassets/1.0.15/luck_gift_flag.imageset/Contents.json @@ -5,11 +5,11 @@ "scale" : "1x" }, { + "filename" : "luck_gift_flag@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "金币 1@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/1.0.15/luck_gift_flag.imageset/luck_gift_flag@2x.png b/YuMi/Assets.xcassets/1.0.15/luck_gift_flag.imageset/luck_gift_flag@2x.png new file mode 100644 index 00000000..1aa20e7b Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.15/luck_gift_flag.imageset/luck_gift_flag@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_game_gold_icon.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.15/luck_gift_gold.imageset/Contents.json similarity index 84% rename from YuMi/Assets.xcassets/jm/mine_game_gold_icon.imageset/Contents.json rename to YuMi/Assets.xcassets/1.0.15/luck_gift_gold.imageset/Contents.json index a29077d1..587c6f31 100644 --- a/YuMi/Assets.xcassets/jm/mine_game_gold_icon.imageset/Contents.json +++ b/YuMi/Assets.xcassets/1.0.15/luck_gift_gold.imageset/Contents.json @@ -9,7 +9,7 @@ "scale" : "2x" }, { - "filename" : "mine_game_gold_icon@3x.png", + "filename" : "luck_gift_gold@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/1.0.15/luck_gift_gold.imageset/luck_gift_gold@3x.png b/YuMi/Assets.xcassets/1.0.15/luck_gift_gold.imageset/luck_gift_gold@3x.png new file mode 100644 index 00000000..d68ab059 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.15/luck_gift_gold.imageset/luck_gift_gold@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.15/luck_gift_pruple.imageset/Contents.json similarity index 80% rename from YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin.imageset/Contents.json rename to YuMi/Assets.xcassets/1.0.15/luck_gift_pruple.imageset/Contents.json index 7ebea92f..fbbe1e66 100644 --- a/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin.imageset/Contents.json +++ b/YuMi/Assets.xcassets/1.0.15/luck_gift_pruple.imageset/Contents.json @@ -9,7 +9,7 @@ "scale" : "2x" }, { - "filename" : "ms_room_message_chat_hall_head_coin@3x.png", + "filename" : "luck_gift_pruple@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/1.0.15/luck_gift_pruple.imageset/luck_gift_pruple@3x.png b/YuMi/Assets.xcassets/1.0.15/luck_gift_pruple.imageset/luck_gift_pruple@3x.png new file mode 100644 index 00000000..587890f7 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.15/luck_gift_pruple.imageset/luck_gift_pruple@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.15/moli_money_icon.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.15/moli_money_icon.imageset/Contents.json new file mode 100644 index 00000000..c1b6cafe --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.15/moli_money_icon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "moli_money_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.15/moli_money_icon.imageset/moli_money_icon@3x.png b/YuMi/Assets.xcassets/1.0.15/moli_money_icon.imageset/moli_money_icon@3x.png new file mode 100644 index 00000000..41552d8d Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.15/moli_money_icon.imageset/moli_money_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/5.imageset/5@3x.png b/YuMi/Assets.xcassets/5.imageset/5@3x.png deleted file mode 100644 index 054e6cce..00000000 Binary files a/YuMi/Assets.xcassets/5.imageset/5@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_begin_coin.imageset/Contents.json b/YuMi/Assets.xcassets/RoomGame/ms_room_game_begin_coin.imageset/Contents.json deleted file mode 100644 index b352e86e..00000000 --- a/YuMi/Assets.xcassets/RoomGame/ms_room_game_begin_coin.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "ms_room_game_begin_coin@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "ms_room_game_begin_coin@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_begin_coin.imageset/ms_room_game_begin_coin@2x.png b/YuMi/Assets.xcassets/RoomGame/ms_room_game_begin_coin.imageset/ms_room_game_begin_coin@2x.png deleted file mode 100644 index fccce650..00000000 Binary files a/YuMi/Assets.xcassets/RoomGame/ms_room_game_begin_coin.imageset/ms_room_game_begin_coin@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_begin_coin.imageset/ms_room_game_begin_coin@3x.png b/YuMi/Assets.xcassets/RoomGame/ms_room_game_begin_coin.imageset/ms_room_game_begin_coin@3x.png deleted file mode 100644 index 73326dba..00000000 Binary files a/YuMi/Assets.xcassets/RoomGame/ms_room_game_begin_coin.imageset/ms_room_game_begin_coin@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_coin_icon.imageset/Contents.json b/YuMi/Assets.xcassets/RoomGame/ms_room_game_coin_icon.imageset/Contents.json deleted file mode 100644 index 00ef9fab..00000000 --- a/YuMi/Assets.xcassets/RoomGame/ms_room_game_coin_icon.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "ms_room_game_coin_icon@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "ms_room_game_coin_icon@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_coin_icon.imageset/ms_room_game_coin_icon@2x.png b/YuMi/Assets.xcassets/RoomGame/ms_room_game_coin_icon.imageset/ms_room_game_coin_icon@2x.png deleted file mode 100644 index fccce650..00000000 Binary files a/YuMi/Assets.xcassets/RoomGame/ms_room_game_coin_icon.imageset/ms_room_game_coin_icon@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_coin_icon.imageset/ms_room_game_coin_icon@3x.png b/YuMi/Assets.xcassets/RoomGame/ms_room_game_coin_icon.imageset/ms_room_game_coin_icon@3x.png deleted file mode 100644 index 73326dba..00000000 Binary files a/YuMi/Assets.xcassets/RoomGame/ms_room_game_coin_icon.imageset/ms_room_game_coin_icon@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_underwa_coin.imageset/Contents.json b/YuMi/Assets.xcassets/RoomGame/ms_room_game_underwa_coin.imageset/Contents.json deleted file mode 100644 index 066eaf40..00000000 --- a/YuMi/Assets.xcassets/RoomGame/ms_room_game_underwa_coin.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "ms_room_game_underwa_coin@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "ms_room_game_underwa_coin@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_underwa_coin.imageset/ms_room_game_underwa_coin@2x.png b/YuMi/Assets.xcassets/RoomGame/ms_room_game_underwa_coin.imageset/ms_room_game_underwa_coin@2x.png deleted file mode 100644 index 7dc9871a..00000000 Binary files a/YuMi/Assets.xcassets/RoomGame/ms_room_game_underwa_coin.imageset/ms_room_game_underwa_coin@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_underwa_coin.imageset/ms_room_game_underwa_coin@3x.png b/YuMi/Assets.xcassets/RoomGame/ms_room_game_underwa_coin.imageset/ms_room_game_underwa_coin@3x.png deleted file mode 100644 index 9be1f0f3..00000000 Binary files a/YuMi/Assets.xcassets/RoomGame/ms_room_game_underwa_coin.imageset/ms_room_game_underwa_coin@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_victory_coin.imageset/Contents.json b/YuMi/Assets.xcassets/RoomGame/ms_room_game_victory_coin.imageset/Contents.json deleted file mode 100644 index 455018c0..00000000 --- a/YuMi/Assets.xcassets/RoomGame/ms_room_game_victory_coin.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "ms_room_game_victory_coin@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "ms_room_game_victory_coin@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_victory_coin.imageset/ms_room_game_victory_coin@2x.png b/YuMi/Assets.xcassets/RoomGame/ms_room_game_victory_coin.imageset/ms_room_game_victory_coin@2x.png deleted file mode 100644 index bf4cadd3..00000000 Binary files a/YuMi/Assets.xcassets/RoomGame/ms_room_game_victory_coin.imageset/ms_room_game_victory_coin@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/RoomGame/ms_room_game_victory_coin.imageset/ms_room_game_victory_coin@3x.png b/YuMi/Assets.xcassets/RoomGame/ms_room_game_victory_coin.imageset/ms_room_game_victory_coin@3x.png deleted file mode 100644 index ca659fa5..00000000 Binary files a/YuMi/Assets.xcassets/RoomGame/ms_room_game_victory_coin.imageset/ms_room_game_victory_coin@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_purchase_coin.imageset/金币 1@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_purchase_coin.imageset/金币 1@3x.png deleted file mode 100644 index 55420cab..00000000 Binary files a/YuMi/Assets.xcassets/Vip Center/vip_center_purchase_coin.imageset/金币 1@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin.imageset/ms_room_message_chat_hall_head_coin@3x.png b/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin.imageset/ms_room_message_chat_hall_head_coin@3x.png deleted file mode 100644 index 90019827..00000000 Binary files a/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin.imageset/ms_room_message_chat_hall_head_coin@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin_bg.imageset/Contents.json b/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin_bg.imageset/Contents.json deleted file mode 100644 index bff9b8ac..00000000 --- a/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin_bg.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "ms_room_message_chat_hall_head_coin_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin_bg.imageset/ms_room_message_chat_hall_head_coin_bg@3x.png b/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin_bg.imageset/ms_room_message_chat_hall_head_coin_bg@3x.png deleted file mode 100644 index 072528b4..00000000 Binary files a/YuMi/Assets.xcassets/chat/ms_room_message_chat_hall_head_coin_bg.imageset/ms_room_message_chat_hall_head_coin_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/Contents.json deleted file mode 100644 index c72a09c6..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "exchange_gold_icon@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "exchange_gold_icon@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@2x.png deleted file mode 100644 index 44ff8221..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@3x.png deleted file mode 100644 index 270985be..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_exchange_coin_icon.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/ms_exchange_coin_icon.imageset/Contents.json deleted file mode 100644 index 53c8baca..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_exchange_coin_icon.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "ms_exchange_coin_icon@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "ms_exchange_coin_icon@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_exchange_coin_icon.imageset/ms_exchange_coin_icon@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/ms_exchange_coin_icon.imageset/ms_exchange_coin_icon@2x.png deleted file mode 100644 index 056dacb1..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_exchange_coin_icon.imageset/ms_exchange_coin_icon@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_exchange_coin_icon.imageset/ms_exchange_coin_icon@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/ms_exchange_coin_icon.imageset/ms_exchange_coin_icon@3x.png deleted file mode 100644 index d95628a1..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_exchange_coin_icon.imageset/ms_exchange_coin_icon@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_income_record_coin.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/ms_income_record_coin.imageset/Contents.json deleted file mode 100644 index 69c60b88..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_income_record_coin.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "ms_income_record_coin@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "ms_income_record_coin@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_income_record_coin.imageset/ms_income_record_coin@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/ms_income_record_coin.imageset/ms_income_record_coin@2x.png deleted file mode 100644 index 8208b44b..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_income_record_coin.imageset/ms_income_record_coin@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_income_record_coin.imageset/ms_income_record_coin@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/ms_income_record_coin.imageset/ms_income_record_coin@3x.png deleted file mode 100644 index 11559a05..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/ms_income_record_coin.imageset/ms_income_record_coin@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/mine_game_gold_icon.imageset/mine_game_gold_icon@3x.png b/YuMi/Assets.xcassets/jm/mine_game_gold_icon.imageset/mine_game_gold_icon@3x.png deleted file mode 100644 index ec831947..00000000 Binary files a/YuMi/Assets.xcassets/jm/mine_game_gold_icon.imageset/mine_game_gold_icon@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/5.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_combo_flag_bg.imageset/Contents.json similarity index 87% rename from YuMi/Assets.xcassets/5.imageset/Contents.json rename to YuMi/Assets.xcassets/middle/gift_combo_flag_bg.imageset/Contents.json index 21354d0c..822c11e8 100644 --- a/YuMi/Assets.xcassets/5.imageset/Contents.json +++ b/YuMi/Assets.xcassets/middle/gift_combo_flag_bg.imageset/Contents.json @@ -9,7 +9,7 @@ "scale" : "2x" }, { - "filename" : "5@3x.png", + "filename" : "飘窗bg@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/middle/gift_combo_flag_bg.imageset/飘窗bg@3x.png b/YuMi/Assets.xcassets/middle/gift_combo_flag_bg.imageset/飘窗bg@3x.png new file mode 100644 index 00000000..acf6f641 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_combo_flag_bg.imageset/飘窗bg@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/pi_gift_gold.imageset/Contents.json b/YuMi/Assets.xcassets/middle/pi_gift_gold.imageset/Contents.json deleted file mode 100644 index 17e5adb1..00000000 --- a/YuMi/Assets.xcassets/middle/pi_gift_gold.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "pi_gift_gold@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "pi_gift_gold@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/middle/pi_gift_gold.imageset/pi_gift_gold@2x.png b/YuMi/Assets.xcassets/middle/pi_gift_gold.imageset/pi_gift_gold@2x.png deleted file mode 100644 index 4d60b4c4..00000000 Binary files a/YuMi/Assets.xcassets/middle/pi_gift_gold.imageset/pi_gift_gold@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/pi_gift_gold.imageset/pi_gift_gold@3x.png b/YuMi/Assets.xcassets/middle/pi_gift_gold.imageset/pi_gift_gold@3x.png deleted file mode 100644 index 2ad2a7c8..00000000 Binary files a/YuMi/Assets.xcassets/middle/pi_gift_gold.imageset/pi_gift_gold@3x.png and /dev/null differ diff --git a/YuMi/Modules/YMMessage/Model/AttachmentModel.h b/YuMi/Modules/YMMessage/Model/AttachmentModel.h index ec1fb341..bde7189c 100644 --- a/YuMi/Modules/YMMessage/Model/AttachmentModel.h +++ b/YuMi/Modules/YMMessage/Model/AttachmentModel.h @@ -126,6 +126,10 @@ typedef NS_ENUM(NSUInteger, CustomMessageType) { CustomMessageType_Chat_Room_Game = 109, ///家族新协议 CustomMessageType_New_Hall = 110, + + ///房间流水 + CustomMessageType_MoneyFlow = 111, + ///游戏陪玩开黑 CustomMessageType_Game_Order = 112, }; @@ -691,12 +695,17 @@ typedef NS_ENUM(NSUInteger, CustomMessageTypeNewHall) { }; ///开黑邀请 -//first = 103, typedef NS_ENUM(NSUInteger, CustomMessageTypeGameOrder) { ///所有房间 Custom_Message_Sub_Game_order = 1121, }; +/// 房间流水 +typedef NS_ENUM(NSUInteger, CustomMessageTypeMoneyFlow) { + ///所有房间 + Custom_Message_Sub_Money_Flow = 1110, +}; + @interface AttachmentModel : PIBaseModel @property (nonatomic,assign) int first; @property (nonatomic,assign) int second; diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGameMateTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGameMateTableViewCell.m index 80a3b3f8..3e577e2c 100644 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGameMateTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGameMateTableViewCell.m @@ -46,7 +46,7 @@ - (void)updatePriceContent { NSTextAttachment *coinAttachment = [[NSTextAttachment alloc] init]; - coinAttachment.image = kImage(@"mine_game_gold_icon"); + coinAttachment.image = kImage(@"moli_money_icon"); coinAttachment.bounds = CGRectMake(0, -0.5, 9, 9); NSAttributedString *coin = [NSAttributedString attributedStringWithAttachment:coinAttachment]; NSAttributedString *price = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@ ", @(self.cellModel.price)] @@ -104,7 +104,7 @@ priceStack.distribution = UIStackViewDistributionFill; priceStack.alignment = UIStackViewAlignmentCenter; - UIImageView *coinIcon = [[UIImageView alloc] initWithImage:kImage(@"mine_game_gold_icon")]; + UIImageView *coinIcon = [[UIImageView alloc] initWithImage:kImage(@"moli_money_icon")]; coinIcon.frame = CGRectMake(0, 0, 12, 12); [priceStack addArrangedSubview:self.priceLabel]; [priceStack addArrangedSubview:coinIcon]; diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineGameMateOrderView.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineGameMateOrderView.m index f76765d9..624210bd 100644 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineGameMateOrderView.m +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineGameMateOrderView.m @@ -73,7 +73,7 @@ - (void)updateBalanceContent { NSTextAttachment *coinAttachment = [[NSTextAttachment alloc] init]; - coinAttachment.image = kImage(@"mine_game_gold_icon"); + coinAttachment.image = kImage(@"moli_money_icon"); coinAttachment.bounds = CGRectMake(2, -0.5, 10, 10); NSAttributedString *coin = [NSAttributedString attributedStringWithAttachment:coinAttachment]; NSAttributedString *price = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@:%ld ", YMLocalizedString(@"GameOrderContent_21"),(long)self.currentCoin] @@ -166,7 +166,7 @@ priceStack.distribution = UIStackViewDistributionFill; priceStack.alignment = UIStackViewAlignmentCenter; - UIImageView *coinIcon = [[UIImageView alloc] initWithImage:kImage(@"mine_game_gold_icon")]; + UIImageView *coinIcon = [[UIImageView alloc] initWithImage:kImage(@"moli_money_icon")]; coinIcon.frame = CGRectMake(0, 0, 12, 12); [priceStack addArrangedSubview:self.priceLabel]; [priceStack addArrangedSubview:coinIcon]; diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m index 431e77ed..bac25443 100644 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m @@ -103,7 +103,7 @@ _giftNumberLabel.text = [NSString stringWithFormat:@"X%ld", _giftInfo.reciveCount]; NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %ld",_giftInfo.giftPrice] attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x6D6B89)}]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(_priceView.font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); attachment.image = iconImage; [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0]; diff --git a/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.m index 4b8d0d33..33744a2c 100644 --- a/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.m @@ -105,7 +105,7 @@ if (!_coinImageView) { _coinImageView = [[UIImageView alloc] init]; _coinImageView.userInteractionEnabled = YES; - _coinImageView.image = [UIImage imageNamed:@"exchange_gold_icon"]; + _coinImageView.image = [UIImage imageNamed:@"moli_money_icon"]; } return _coinImageView; } diff --git a/YuMi/Modules/YMMine/View/Cell/XPGameOrdersListTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/XPGameOrdersListTableViewCell.m index 4c4b0202..f54135f1 100644 --- a/YuMi/Modules/YMMine/View/Cell/XPGameOrdersListTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/XPGameOrdersListTableViewCell.m @@ -57,7 +57,7 @@ - (void)updatePriceContent { NSTextAttachment *coinAttachment = [[NSTextAttachment alloc] init]; - coinAttachment.image = kImage(@"mine_game_gold_icon"); + coinAttachment.image = kImage(@"moli_money_icon"); coinAttachment.bounds = CGRectMake(4, 0.5, 9, 9); NSAttributedString *coin = [NSAttributedString attributedStringWithAttachment:coinAttachment]; NSAttributedString *price = [[NSAttributedString alloc] initWithString:@(self.model.amount).stringValue @@ -148,7 +148,7 @@ // [priceStack addArrangedSubview:[self titleLabel:YMLocalizedString(@"GameOrderContent_12")]]; // [priceStack addArrangedSubview:self.gamePriceLabel]; - UIImageView *coinIcon = [[UIImageView alloc] initWithImage:kImage(@"mine_game_gold_icon")]; + UIImageView *coinIcon = [[UIImageView alloc] initWithImage:kImage(@"moli_money_icon")]; coinIcon.contentMode = UIViewContentModeScaleAspectFit; [coinIcon setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [coinIcon setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.m index 2413455c..4fea7abe 100644 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.m +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.m @@ -207,7 +207,7 @@ - (UIImageView *)diamondImageView { if (!_diamondImageView) { _diamondImageView = [[UIImageView alloc] init]; - _diamondImageView.image = [UIImage imageNamed:@"exchange_gold_icon"]; + _diamondImageView.image = [UIImage imageNamed:@"moli_money_icon"]; } return _diamondImageView; } diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.m index 9787d281..9000783c 100644 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.m +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.m @@ -188,7 +188,7 @@ - (UIImageView *)diamondImageView { if (!_diamondImageView) { _diamondImageView = [[UIImageView alloc] init]; - _diamondImageView.image = [UIImage imageNamed:@"exchange_gold_icon"]; + _diamondImageView.image = [UIImage imageNamed:@"moli_money_icon"]; } return _diamondImageView; } diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.m index 47959a92..4e8f41ef 100644 --- a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.m +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.m @@ -366,7 +366,7 @@ - (UIImageView *)diamondImageView { if (!_diamondImageView) { _diamondImageView = [[UIImageView alloc] init]; - _diamondImageView.image = [UIImage imageNamed:@"exchange_gold_icon"]; + _diamondImageView.image = [UIImage imageNamed:@"moli_money_icon"]; } return _diamondImageView; } diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.m index ffb69b72..3740955a 100644 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.m +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.m @@ -370,7 +370,7 @@ -(UIImageView *)numIcon{ if (!_numIcon){ _numIcon = [UIImageView new]; - _numIcon.image = [UIImage imageNamed:@"exchange_gold_icon"]; + _numIcon.image = [UIImage imageNamed:@"moli_money_icon"]; } return _numIcon; } @@ -408,7 +408,7 @@ -(UIImageView *)myDiamondIcon{ if (!_myDiamondIcon){ _myDiamondIcon = [UIImageView new]; - _myDiamondIcon.image = [UIImage imageNamed:@"exchange_gold_icon"]; + _myDiamondIcon.image = [UIImage imageNamed:@"moli_money_icon"]; } return _myDiamondIcon; } diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.m index eb687e41..3c5f649c 100644 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.m +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.m @@ -121,7 +121,7 @@ if(_type == 2){ NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:@(_inputDiamonds).stringValue attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium],NSForegroundColorAttributeName:[DJDKMIMOMColor inputTextColor]}]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(self.numView.font.capHeight - 24)/2.f, 24, 24); attachment.image =iconImage; NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; @@ -134,7 +134,7 @@ _titleView.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineConfirmGiveDiamondView1"),_giveDiamondModel.targetNick]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:@(self.inputDiamonds).stringValue attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium],NSForegroundColorAttributeName:[DJDKMIMOMColor inputTextColor]}]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(self.numView.font.capHeight - 24)/2.f, 24, 24); attachment.image =iconImage; diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.m index 127269c5..071626c7 100644 --- a/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.m +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.m @@ -231,7 +231,7 @@ _model = model; if(self.type == IncomeRecord_Gold){ _titleNumView.text = [NSString stringWithFormat:YMLocalizedString(@"XPExchangeDiamondsItemView0"),@(_model.golds)]; - UIImage *image = [UIImage imageNamed:@"ms_exchange_coin_icon"]; + UIImage *image = [UIImage imageNamed:@"moli_money_icon"]; [_iconView setImage:image forState:UIControlStateNormal]; }else{ @@ -309,7 +309,7 @@ } -(UIButton *)iconView{ if (!_iconView){ - UIImage *image = self.type == IncomeRecord_Gold ? [UIImage imageNamed:@"ms_exchange_coin_icon"] : [UIImage imageNamed:@"exchange_new_diamonds_icon"]; + UIImage *image = self.type == IncomeRecord_Gold ? [UIImage imageNamed:@"moli_money_icon"] : [UIImage imageNamed:@"exchange_new_diamonds_icon"]; _iconView = [UIButton buttonWithType:UIButtonTypeCustom]; [_iconView setImage:image forState:UIControlStateNormal]; } diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m index 67950e02..5bc8ae25 100644 --- a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m @@ -140,7 +140,7 @@ - (UIImageView *)coinView{ if(!_coinView){ _coinView = [UIImageView new]; - _coinView.image = self.type == IncomeRecord_Gold ? [UIImage imageNamed:@"ms_income_record_coin"]:[UIImage imageNamed:@"ms_income_recorddiamond"]; + _coinView.image = self.type == IncomeRecord_Gold ? [UIImage imageNamed:@"moli_money_icon"]:[UIImage imageNamed:@"ms_income_recorddiamond"]; } return _coinView; } diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.m index 5d622a26..50e662a3 100644 --- a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.m +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.m @@ -90,7 +90,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ XPNobleCenterPayCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPNobleCenterPayCell class]) forIndexPath:indexPath]; cell.isChoose = indexPath.row == self.path.row; - cell.iconImage = indexPath.row == 0 ? kImage( @"exchange_gold_icon") : kImage(@"noble_open_btn"); + cell.iconImage = indexPath.row == 0 ? kImage( @"moli_money_icon") : kImage(@"noble_open_btn"); NSString *num = [NSString stringWithFormat:@"(%@%@)",self.diamonds,YMLocalizedString(@"XPNobleCenterPayView1")]; NSString *text = indexPath.row == 0 ? [NSString stringWithFormat:@"%@%@",self.listData[indexPath.row],num] : self.listData[indexPath.row]; diff --git a/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.m b/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.m index 62bc532d..c695fb11 100644 --- a/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.m +++ b/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.m @@ -639,7 +639,7 @@ make.width.mas_equalTo(kGetScaleWidth(146)); }]; - UIImageView *coin = [[UIImageView alloc] initWithImage:kImage(@"vip_center_purchase_coin")]; + UIImageView *coin = [[UIImageView alloc] initWithImage:kImage(@"moli_money_icon")]; [_purchaseContainer addSubview:coin]; [coin mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(10); diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.m b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.m index c53c9ba7..453db77a 100644 --- a/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.m +++ b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.m @@ -110,7 +110,7 @@ if (!_coinImageView) { _coinImageView = [[UIImageView alloc] init]; _coinImageView.userInteractionEnabled = YES; - _coinImageView.image = [UIImage imageNamed:@"exchange_gold_icon"]; + _coinImageView.image = [UIImage imageNamed:@"moli_money_icon"]; } return _coinImageView; } diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m index 286518b1..35907364 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m @@ -65,7 +65,9 @@ #import "PIRoomGiftBroadcastWindow.h" #import "PIUniversalBannerModel.h" #import "PIUniversalBannerView.h" +#import "GiftComboFlagView.h" +#import "GiftComboManager.h" @interface XPRoomAnimationView () ///展示的不同层级 @@ -268,7 +270,7 @@ if (attachment.first == CustomMessageType_Gift) { GiftReceiveInfoModel * receiveInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; receiveInfo.isLuckyBagGift = attachment.second == Custom_Message_Sub_Gift_LuckySend; - receiveInfo.isBatch = YES; + receiveInfo.isBatch = (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); [self receiveGiftHandleSendGiftAnimation:attachment]; if (receiveInfo.isLuckyBagGift) { if (!self.delegate.getRoomInfo.hasAnimationEffect) {return;} @@ -292,7 +294,7 @@ GiftReceiveInfoModel * receiveInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; receiveInfo.isLuckyBagGift = (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); receiveInfo.isBatch = (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); - [self receiveGiftHandleSendGiftAnimation:attachment]; + [self receiveGiftHandleSendGiftAnimation:attachment]; if (receiveInfo.isLuckyBagGift) { if (!self.delegate.getRoomInfo.hasAnimationEffect) {return;} if (receiveInfo.viewUrl.length > 0) { @@ -303,7 +305,6 @@ if (luckyGiftSvgaUrl.absoluteString.length > 0) { [self playLuckyGiftEffect:luckyGiftSvgaUrl]; } - } dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self receiveGift:receiveInfo]; @@ -1500,8 +1501,18 @@ } endPoint = [self getGiftAnimationPoint:userId isEnd:YES]; dispatch_time_t timer = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC); + + BOOL isCombing = [[GiftComboManager sharedManager] isGiftCombing] && + [sendUid isEqualToString:[AccountInfoStorage instance].getUid]; + + if (isCombing) { + timer = dispatch_time(DISPATCH_TIME_NOW, 0.25 * NSEC_PER_SEC); + } dispatch_after(timer, dispatch_get_main_queue(), ^{ - [self beginGiftAnimation:giftInfo.giftUrl startPoint:starPoint endPoint:endPoint]; + [self beginGiftAnimation:giftInfo.giftUrl + startPoint:starPoint + endPoint:endPoint + isGiftCombing:isCombing]; }); } } @@ -1517,10 +1528,20 @@ point = CGPointMake([UIScreen mainScreen].bounds.size.width / 2, 44 + kSafeAreaTopHeight); } } + + if ([[GiftComboManager sharedManager] isGiftCombing] && + [uid isEqualToString:[AccountInfoStorage instance].getUid] && + isEnd == false) { + point = CGPointMake([UIScreen mainScreen].bounds.size.width - 60, [UIScreen mainScreen].bounds.size.height - kSafeAreaTopHeight - 60); + } + return point; } -- (void)beginGiftAnimation:(NSString *)giftUrl startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint { +- (void)beginGiftAnimation:(NSString *)giftUrl + startPoint:(CGPoint)startPoint + endPoint:(CGPoint)endPoint + isGiftCombing:(BOOL)isGiftCombing { NetImageView * giftImageView = [self.giftReuseArray anyObject]; if (giftImageView == nil) { giftImageView = [[NetImageView alloc]initWithFrame:CGRectMake(0, 0 , 55, 55)]; @@ -1536,14 +1557,61 @@ giftImageView.imageUrl = giftUrl; [self.lowLevelView addSubview:giftImageView]; CAAnimationGroup *group = [self createGiftAnimationStartPoint:startPoint endPoint:endPoint]; + if (isGiftCombing) { + group = [self createGiftComboAnimationStartPoint:startPoint endPoint:endPoint]; + } + // 确保视图在动画开始前设置到 startPoint 位置 + giftImageView.layer.position = startPoint; [giftImageView.layer addAnimation:group forKey:@"giftDisplayViewAnimation"]; [self performSelector:@selector(aniationDidFinish:) withObject:giftImageView afterDelay:(3.2+0.25)]; } +- (CAAnimationGroup *)createGiftComboAnimationStartPoint:(CGPoint)startPoint + endPoint:(CGPoint)endPoint { + // 缩放动画1: 动画开始时缩放至 0.4 + CAKeyframeAnimation *scaleAnimation1 = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; + scaleAnimation1.duration = 0.1; + scaleAnimation1.values = @[@1.0, @0.4]; + scaleAnimation1.repeatCount = 1; + scaleAnimation1.calculationMode = kCAAnimationCubic; + scaleAnimation1.removedOnCompletion = NO; + scaleAnimation1.fillMode = kCAFillModeForwards; + + // 位移动画: 0.5秒内从起点移动到目标点 + CAKeyframeAnimation *positionAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; + positionAnimation.duration = 0.5; + positionAnimation.beginTime = 0.1; // 缩放结束后开始位移 + positionAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + positionAnimation.values = @[[NSValue valueWithCGPoint:startPoint], [NSValue valueWithCGPoint:endPoint]]; + positionAnimation.repeatCount = 1; + positionAnimation.removedOnCompletion = NO; + positionAnimation.fillMode = kCAFillModeForwards; + + // 缩放动画2: 在位移的过程中逐渐变大到 1.2 + CAKeyframeAnimation *scaleAnimation2 = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; + scaleAnimation2.duration = 0.5; + scaleAnimation2.beginTime = 0.1; // 同时与位移动画进行 + scaleAnimation2.values = @[@0.4, @2]; + scaleAnimation2.repeatCount = 1; + scaleAnimation2.calculationMode = kCAAnimationCubic; + scaleAnimation2.removedOnCompletion = NO; + scaleAnimation2.fillMode = kCAFillModeForwards; + + // 创建动画组 + CAAnimationGroup *group = [CAAnimationGroup animation]; + group.duration = 0.6; // 总时间为 0.1 (缩放) + 0.5 (位移与缩放) + group.animations = @[scaleAnimation1, positionAnimation, scaleAnimation2]; + group.repeatCount = 1; + group.removedOnCompletion = NO; + group.fillMode = kCAFillModeForwards; + + return group; +} + /// 图片运动的动画组 /// @param startPoint 开始的点 /// @param endPoint 结束的点 -- (CAAnimationGroup *)createGiftAnimationStartPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint{ +- (CAAnimationGroup *)createGiftAnimationStartPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint { CGPoint centerPoint = CGPointMake(KScreenWidth / 2, KScreenHeight / 2); CAKeyframeAnimation *animation0 = [CAKeyframeAnimation animation]; animation0.duration = 0.8; @@ -1563,8 +1631,7 @@ animation1.calculationMode = kCAAnimationCubic; animation1.removedOnCompletion = NO; animation1.fillMode = kCAFillModeForwards; - - + CAKeyframeAnimation *animation2 = [CAKeyframeAnimation animation]; animation2.duration = 0.8; animation2.beginTime = 0.8; @@ -1853,11 +1920,53 @@ } } +#pragma mark - 连击效果 +- (void)receiveCombo:(GiftReceiveInfoModel *)receiveInfo { + [[GiftComboManager sharedManager] receiveGiftInfoForDisplayComboFlags:receiveInfo + container:self]; +} + +- (void)startAnimation:(UIView *)animatedView { + // 计算屏幕左边的目标位置 + CGFloat leftPosition = -animatedView.frame.size.width; + + // 动画步骤1:从屏幕右边移入屏幕中间 + [UIView animateWithDuration:0.25 + delay:0 + options:UIViewAnimationOptionCurveEaseInOut + animations:^{ + // 将视图移动到屏幕的中间左侧位置 + animatedView.center = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2); + } completion:^(BOOL finished) { + // 停顿 2 秒后,继续动画移出屏幕左侧 + [self continueAnimationToLeft:leftPosition view:animatedView]; + }]; +} + +// 动画步骤2:移出到屏幕左边 +- (void)continueAnimationToLeft:(CGFloat)leftPosition view:(UIView *)animatedView { + // 停顿 2 秒后开始动画 + [UIView animateWithDuration:0.25 + delay:500.0 + options:UIViewAnimationOptionCurveEaseInOut + animations:^{ + // 将视图移出屏幕左侧 + animatedView.center = CGPointMake(leftPosition, self.bounds.size.height / 2); + } completion:^(BOOL finished) { + // 移除视图,释放内存 + [animatedView removeFromSuperview]; + }]; +} + #pragma mark - 普通礼物 ///收到了礼物 - (void)receiveGift:(GiftReceiveInfoModel *)receiveInfo { - if ([self isInSudGame]) {return;} - if(receiveInfo.isHomeShow == YES)return; + if ([self isInSudGame] || receiveInfo.isHomeShow == YES) { + return; + } + + [self receiveCombo:receiveInfo]; + ///CPU警告的时候 需要停止接收动画 RoomInfoModel * roomInfo = [self.delegate getRoomInfo]; if (receiveInfo.isLuckyBagGift) { diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m index 536de224..8e06ef29 100644 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m @@ -679,7 +679,7 @@ } - (void)updateContributeEnterViewTitle:(AttachmentModel *)attachment { - if (attachment.first == 111 && attachment.second == 1110) { + if (attachment.first == CustomMessageType_MoneyFlow && attachment.second == Custom_Message_Sub_Money_Flow) { NSNumber *num = [attachment.data objectForKey:@"serialValue"]; if (num) { self.contributeEnterView.title = num.stringValue; diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.m b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.m index e9afdccb..cfab27e0 100644 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.m +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.m @@ -165,7 +165,7 @@ - (UIImageView *)coinImageView { if (!_coinImageView) { _coinImageView = [[UIImageView alloc] init]; - _coinImageView.image = [UIImage imageNamed:@"exchange_gold_icon"]; + _coinImageView.image = [UIImage imageNamed:@"moli_money_icon"]; } return _coinImageView; } diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeConfirmBuyView.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeConfirmBuyView.m index 396d5c51..210d55b1 100644 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeConfirmBuyView.m +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeConfirmBuyView.m @@ -248,7 +248,7 @@ NSString *getPrice = @(self.price.integerValue * self.loveNum.integerValue).stringValue; NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",getPrice] attributes:@{NSFontAttributeName:self.numView.font,NSForegroundColorAttributeName:UIColorFromRGB(0xFF9A1F)}]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(self.numView.font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); attachment.image = iconImage; [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0]; diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.m index 93fbf073..77b47973 100644 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.m +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.m @@ -145,7 +145,7 @@ - (UIImageView *)diamondsImage{ if(!_diamondsImage){ _diamondsImage = [UIImageView new]; - _diamondsImage.image = kImage(@"exchange_gold_icon"); + _diamondsImage.image = kImage(@"moli_money_icon"); } return _diamondsImage; } diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/PIRoomMessagePhotoAlbumView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/View/PIRoomMessagePhotoAlbumView.m index 7e5f1a54..3764dfb1 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/View/PIRoomMessagePhotoAlbumView.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/View/PIRoomMessagePhotoAlbumView.m @@ -174,7 +174,7 @@ - (UIImageView *)diamondView{ if(!_diamondView){ _diamondView = [UIImageView new]; - _diamondView.image = kImage(@"exchange_gold_icon"); + _diamondView.image = kImage(@"moli_money_icon"); } return _diamondView; } diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/PIRoomMessageUnlockPhotoAlbumView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/View/PIRoomMessageUnlockPhotoAlbumView.m index 98c10d83..667b4e81 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/View/PIRoomMessageUnlockPhotoAlbumView.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/View/PIRoomMessageUnlockPhotoAlbumView.m @@ -94,7 +94,7 @@ _giftNameVeiw.text = _albumModel.giftName; NSMutableAttributedString *numText = [[NSMutableAttributedString alloc]initWithString:_albumModel.totalGoldPrice attributes:@{NSFontAttributeName:kFontRegular(14),NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F)}]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(_giftNumView.font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); attachment.image =iconImage; @@ -153,7 +153,7 @@ _giftNumView.textAlignment = NSTextAlignmentCenter; NSMutableAttributedString *numText = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSFontAttributeName:kFontRegular(14),NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F)}]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(_giftNumView.font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); attachment.image =iconImage; diff --git a/YuMi/Modules/YMRoom/View/RoomGame/View/Cell/MSRoomGameVictoryCell.m b/YuMi/Modules/YMRoom/View/RoomGame/View/Cell/MSRoomGameVictoryCell.m index 839d2df0..fd87f5e3 100644 --- a/YuMi/Modules/YMRoom/View/RoomGame/View/Cell/MSRoomGameVictoryCell.m +++ b/YuMi/Modules/YMRoom/View/RoomGame/View/Cell/MSRoomGameVictoryCell.m @@ -141,7 +141,7 @@ - (UIImageView *)coinView{ if(!_coinView){ _coinView = [UIImageView new]; - _coinView.image = kImage(@"ms_room_game_victory_coin"); + _coinView.image = kImage(@"moli_money_icon"); } return _coinView; } diff --git a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameHeadView.m b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameHeadView.m index 038ade41..21b10dc3 100644 --- a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameHeadView.m +++ b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameHeadView.m @@ -227,7 +227,7 @@ - (UIImageView *)coinView{ if(!_coinView){ _coinView = [UIImageView new]; - _coinView.image = kImage(@"ms_room_game_underwa_coin"); + _coinView.image = kImage(@"moli_money_icon"); } return _coinView; } diff --git a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSTabbarBeginGameView.m b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSTabbarBeginGameView.m index a08e00f7..6484ca06 100644 --- a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSTabbarBeginGameView.m +++ b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSTabbarBeginGameView.m @@ -133,7 +133,7 @@ - (UIImageView *)coinImageView{ if(!_coinImageView){ _coinImageView = [UIImageView new]; - _coinImageView.image = kImage(@"ms_room_game_begin_coin"); + _coinImageView.image = kImage(@"moli_money_icon"); } return _coinImageView; } diff --git a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSTabbarRoomGameHeadView.m b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSTabbarRoomGameHeadView.m index 34169663..6e34be92 100644 --- a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSTabbarRoomGameHeadView.m +++ b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSTabbarRoomGameHeadView.m @@ -114,7 +114,7 @@ - (UIImageView *)iconView{ if(!_iconView){ _iconView = [UIImageView new]; - _iconView.image = kImage(@"ms_room_game_coin_icon"); + _iconView.image = kImage(@"moli_money_icon"); } return _iconView; } diff --git a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/Cell/PIRoomPhotoAlbumChooseGiftCell.m b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/Cell/PIRoomPhotoAlbumChooseGiftCell.m index 6729ebcd..4ceae53d 100644 --- a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/Cell/PIRoomPhotoAlbumChooseGiftCell.m +++ b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/Cell/PIRoomPhotoAlbumChooseGiftCell.m @@ -58,7 +58,7 @@ _giftNameVeiw.text = _giftModel.giftName; NSMutableAttributedString *numText = [[NSMutableAttributedString alloc]initWithString:@(_giftModel.goldPrice).stringValue attributes:@{NSFontAttributeName:kFontRegular(14),NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F)}]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(_giftNumView.font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); attachment.image =iconImage; @@ -90,7 +90,7 @@ _giftNumView.textAlignment = NSTextAlignmentCenter; NSMutableAttributedString *numText = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSFontAttributeName:kFontRegular(14),NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F)}]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(_giftNumView.font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); attachment.image =iconImage; diff --git a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/Cell/PIRoomPhotoAlbumItemCell.m b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/Cell/PIRoomPhotoAlbumItemCell.m index fc621543..1ba7ce79 100644 --- a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/Cell/PIRoomPhotoAlbumItemCell.m +++ b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/Cell/PIRoomPhotoAlbumItemCell.m @@ -161,7 +161,7 @@ - (UIImageView *)diamondView{ if(!_diamondView){ _diamondView = [UIImageView new]; - _diamondView.image = kImage(@"exchange_gold_icon"); + _diamondView.image = kImage(@"moli_money_icon"); } return _diamondView; } diff --git a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoGiftView.m b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoGiftView.m index 77018ebd..83c074cb 100644 --- a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoGiftView.m +++ b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoGiftView.m @@ -141,7 +141,7 @@ - (UIImageView *)diamondView{ if(!_diamondView){ _diamondView = [UIImageView new]; - _diamondView.image = kImage(@"exchange_gold_icon"); + _diamondView.image = kImage(@"moli_money_icon"); } return _diamondView; } diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.m b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.m index 50b5bc8f..76afa406 100644 --- a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.m +++ b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.m @@ -160,7 +160,7 @@ if (!_diamondImageView) { _diamondImageView = [[UIImageView alloc] init]; _diamondImageView.userInteractionEnabled = YES; - _diamondImageView.image = [UIImage imageNamed:@"exchange_gold_icon"]; + _diamondImageView.image = [UIImage imageNamed:@"moli_money_icon"]; } return _diamondImageView; } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.h b/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.h index 41dbe52b..77ab5a63 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.h +++ b/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.h @@ -8,14 +8,22 @@ #import #import "GiftInfoModel.h" +#import "GiftComboView.h" -@class GiftReceiveInfoModel, UserInfoModel; +@class GiftReceiveInfoModel, UserInfoModel, GiftReceiveInfoModel; typedef enum : NSUInteger { ComboAction_ShowPanel, - ComboAction_RemovePanel + ComboAction_RemovePanel, + ComboAction_Combo_Count_Update, } ComboActionType; +typedef enum : NSUInteger { + ComboFlagAction_, +// ComboAction_RemovePanel, +// ComboAction_Combo_Count_Update, +} ComboFlagActionType; + NS_ASSUME_NONNULL_BEGIN @@ -26,7 +34,6 @@ NS_ASSUME_NONNULL_BEGIN - (void)registerActions:(void(^ _Nullable)(ComboActionType type))action; - - (void)saveSendGiftTo:(NSArray *)UIDs; - (void)saveGiftSourceType:(GiftSourceType)type; - (void)saveSendGiftInfo:(GiftInfoModel *)model; @@ -37,6 +44,14 @@ NS_ASSUME_NONNULL_BEGIN - (void)saveSessionID:(NSString *)sessionID; - (void)resetCombo; +- (void)sendGift; +- (void)forceRemove; + +- (NSInteger)loadComboCount; +- (BOOL)isGiftCombing; + +- (void)receiveGiftInfoForDisplayComboFlags:(GiftReceiveInfoModel *)receiveInfo + container:(UIView *)container; @end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m b/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m index db4fa64a..d7b9710a 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m @@ -8,18 +8,24 @@ #import "GiftComboManager.h" +#import "Api+Gift.h" + #import "UserInfoModel.h" #import "AttachmentModel.h" #import "GiftReceiveInfoModel.h" #import "XPMessageRemoteExtModel.h" -#import "Api+Gift.h" +#import "GiftComboFlagView.h" @interface GiftComboManager () // 用来存储 GiftReceiveInfoModel 和 NSDictionary 的元数据队列 @property (nonatomic, strong) NSMutableArray *giftComboQueue; +@property (nonatomic, strong) NSMutableArray *comboFlagQueue; +@property (nonatomic, strong) NSTimer *comboFlagTimer; +@property (nonatomic, strong) UIView *containerView; + // 定时器,处理请求的调度器 @property (nonatomic, strong) dispatch_source_t timer; @@ -33,6 +39,15 @@ @property (nonatomic, copy) NSString *sessionID; @property (nonatomic, assign) NSInteger combo; +@property (nonatomic, assign) bool isCombing; + +@property (nonatomic, copy) void (^actionCallback)(ComboActionType type); + +@property (nonatomic, strong) NSTimer *comboFlagTimer_1; +@property (nonatomic, strong) NSTimer *comboFlagTimer_2; + +@property (nonatomic, strong) NSMutableArray *activeViews; // 用于存储最多2个活跃的动画视图 +//@property (nonatomic, strong) NSMutableArray *activeModels; // 存储活跃的模型数据 @end @@ -46,6 +61,9 @@ dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; sharedInstance.giftComboQueue = [NSMutableArray array]; + sharedInstance.activeViews = [NSMutableArray array]; + sharedInstance.comboFlagQueue = [NSMutableArray array]; + [sharedInstance startProcessingGiftComboFlagQueue]; }); return sharedInstance; } @@ -77,10 +95,150 @@ // 开始连击,重置 - (void)resetCombo { _combo = 1; + + if (self.actionCallback) { + self.actionCallback(ComboAction_ShowPanel); + } + + self.isCombing = YES; } -// MARK: Logic is 连击面板出现后,每点击一次,就触发一次面板最后的请求,请求成功后,构造云信消息体,消息体进入队列并按 0.2s 一次的频率发送消息 +- (void)registerActions:(void (^)(ComboActionType))action { + self.actionCallback = action; +} +- (void)forceRemove { + if (self.actionCallback) { + self.actionCallback(ComboAction_RemovePanel); + } + self.isCombing = NO; +} + +- (NSInteger)loadComboCount { + return self.combo; +} + +- (BOOL)isGiftCombing { + return self.isCombing; +} + +#pragma mark - 处理飘屏逻辑 +- (void)receiveGiftInfoForDisplayComboFlags:(GiftReceiveInfoModel *)receiveInfo + container:(UIView *)container { + self.containerView = container; + [self.giftComboQueue addObject:receiveInfo]; + [self startProcessingGiftComboFlagQueue]; +} + +- (void)startProcessingGiftComboFlagQueue { + self.comboFlagTimer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(processGiftFlagQueue) userInfo:nil repeats:YES]; +} + +- (void)stopProcessingGiftComboFlagQueue { + [self.comboFlagTimer invalidate]; + self.comboFlagTimer = nil; +} + +- (void)processGiftFlagQueue { + if (self.giftComboQueue.count == 0) { + return; + } + + GiftReceiveInfoModel *receiveInfo = [self.giftComboQueue firstObject]; + [self.giftComboQueue removeObjectAtIndex:0]; + [self handleGiftInfo:receiveInfo]; +} + +- (void)handleGiftInfo:(GiftReceiveInfoModel *)receiveInfo { + if ([self updateExistingViewWithModel:receiveInfo]) { + // 如果更新了现有视图,就不需要创建新视图 + return; + } + + [self allCurrentFlagMoveDown]; + + if (self.activeViews.count >= 2) { + GiftComboFlagView *oldestView = [self.activeViews firstObject]; + [self animateRemoveView:oldestView]; + } + + CGFloat positionY = kGetScaleWidth(380); + CGFloat positionX = isMSRTL() ? -self.containerView.bounds.size.width : self.containerView.bounds.size.width; + GiftComboFlagView *flagView = [[GiftComboFlagView alloc] initWithFrame:CGRectMake(positionX, + positionY, + kGetScaleWidth(300), + 50)]; + @kWeakify(self); + @kWeakify(flagView); + [flagView setTimerEnd:^{ + @kStrongify(self); + @kStrongify(flagView); + if ([self.activeViews containsObject:flagView]) { + [self.activeViews removeObject:flagView]; + } + }]; + [flagView updateReceiveInfoModel:receiveInfo animationType:0]; + + [self.activeViews addObject:flagView]; + + [self.containerView addSubview:flagView]; + [self animateView:flagView positionY:positionY]; +} + +- (void)allCurrentFlagMoveDown { + [self.activeViews enumerateObjectsUsingBlock:^(GiftComboFlagView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + CGRect rect = obj.frame; + rect.origin.y += 50; + obj.frame = rect; + }]; +} + +- (void)animateView:(GiftComboFlagView *)flagView positionY:(CGFloat)positionY { + [UIView animateWithDuration:0.1 + animations:^{ + if (isMSRTL()) { + // 获取屏幕宽度 + CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width; + + // 计算新的 x 坐标:屏幕宽度 - 视图宽度 - 右边距 + CGFloat newX = screenWidth - 20 - kGetScaleWidth(300); + + // 更新 flagView 的 frame,使右边距离屏幕右边 20 像素 + flagView.frame = CGRectMake(newX, positionY, kGetScaleWidth(300), 50); + } else { + flagView.frame = CGRectMake(20, positionY, kGetScaleWidth(300), 50); + } + }]; +} + +- (void)animateRemoveView:(GiftComboFlagView *)flagView { + [flagView removeFromSuperview]; + if ([self.activeViews containsObject:flagView]) { + [self.activeViews removeObject:flagView]; + flagView = nil; + } +} + +// 更新现有 View 的数据,如果存在相同的 ID +- (BOOL)updateExistingViewWithModel:(GiftReceiveInfoModel *)model { + NSInteger index = 0; + for (GiftComboFlagView *existingFlag in self.activeViews) { + if ([existingFlag.receiveInfo isEqual:model]) { + [self updateComboFlag:existingFlag with:model]; + return YES; + } + index++; + } + + return NO; +} + +- (void)updateComboFlag:(GiftComboFlagView *)flagView with:(GiftReceiveInfoModel *)model { + [flagView updateReceiveInfoModel:model animationType:1]; +} + + +// MARK: Logic is 连击面板出现后,每点击一次,就触发一次面板最后的请求,请求成功后,构造云信消息体,消息体进入队列并按 0.2s 一次的频率发送消息 #pragma mark - 管理队列 // 开始处理队列 @@ -202,13 +360,18 @@ sendType:[NSString stringWithFormat:@"%ld", GiftSendType_OnMic] giftId:[NSString stringWithFormat:@"%ld", self.giftInfo.giftId] giftSource:[NSString stringWithFormat:@"%ld", self.giftSourceType] - giftType:[NSString stringWithFormat:@"%ld", self.giftInfo.giftType] + giftType:[NSString stringWithFormat:@"%ld", self.roomSendGiftType] roomUid:self.roomUID msg:@"" uid:[AccountInfoStorage instance].getUid]; } - (void)handleSendGiftSuccess:(BaseModel *)response { + self.combo = self.combo + 1; + if (self.actionCallback) { + self.actionCallback(ComboAction_Combo_Count_Update); + } + GiftReceiveInfoModel *receive = [GiftReceiveInfoModel modelWithJSON:response.data]; if (!receive) { return; @@ -219,7 +382,7 @@ [data addEntriesFromDictionary:tempDic]; AttachmentModel *attachment = [[AttachmentModel alloc] init]; - switch (receive.roomSendGiftType) { + switch (self.roomSendGiftType) { case RoomSendGiftType_AllMic: { attachment.first = CustomMessageType_AllMicroSend; attachment.second = Custom_Message_Sub_AllMicroSend; @@ -249,8 +412,7 @@ } if (attachment) { - - // TODO: 添加到队列 + [attachment.data setObject:@(self.combo) forKey:@"comboCount"]; [self sendCustomMessage:attachment]; } } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.h index 9688f7dd..c0112b45 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.h +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.h @@ -55,7 +55,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic,copy) NSString *targetAvatar; ///目标的昵称 @property (nonatomic,copy) NSString *targetNick; -@property (nonatomic,strong) NSArray *targetUids; +@property (nonatomic,strong) NSArray *targetUids; ///礼物信息 @property (nonatomic,strong) GiftInfoModel *gift; ///礼物信息 @@ -130,6 +130,10 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, strong) i18nGiftNameMap *i18nGiftNameMap; +@property (nonatomic, assign) NSInteger comboCount; + +- (NSInteger)receiveUserCount; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.m index 44700a9d..3a9234f7 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.m @@ -41,4 +41,43 @@ }; } +- (BOOL)isEqual:(id)other +{ + if (other == self) { + return YES; + } + + GiftReceiveInfoModel *otherInfo = (GiftReceiveInfoModel *)other; + if ([self.uid isEqualToString:otherInfo.uid] +// && [self.giftId isEqualToString:otherInfo.giftId] +// && [self isEqualUIDs:otherInfo] + ) { + return YES; + } + + return NO; +} + +- (BOOL)isEqualUIDs:(GiftReceiveInfoModel *)other { + if ([self.targetUid isEqualToString:other.targetUid]) { + return YES; + } + if ([self.targetUids isEqualToArray:other.targetUids]) { + return YES; + } + return NO; +} + +- (NSUInteger)hash +{ + return self.uid.hash ^ self.giftId.hash;// ^ self.targetUid.hash ^ self.targetUids.hash; +} + +- (NSInteger)receiveUserCount { + if (self.targetUids.count > 0) { + return self.targetUids.count; + } + return 1; +} + @end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m index 94c2e7b5..cd93e5c4 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m @@ -257,7 +257,7 @@ - (UIImageView *)logoImageView { if (!_logoImageView) { - _logoImageView = [self createImageView:@"exchange_gold_icon"]; + _logoImageView = [self createImageView:@"moli_money_icon"]; } return _logoImageView; } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/CountdownRingView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/CountdownRingView.h new file mode 100644 index 00000000..41e1a4f3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/CountdownRingView.h @@ -0,0 +1,21 @@ +// +// CountdownRingView.h +// YuMi +// +// Created by P on 2024/9/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface CountdownRingView : UIView + +- (instancetype)initWithFrame:(CGRect)frame duration:(NSInteger)duration; +- (void)startCountdown; +- (void)resetCountdown; // 重置功能 +- (void)setCompletionHandler:(void (^__nullable)(void))completionHandler; // 计时结束的回调 + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/CountdownRingView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/CountdownRingView.m new file mode 100644 index 00000000..eb067f67 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/CountdownRingView.m @@ -0,0 +1,142 @@ +// +// CountdownRingView.m +// YuMi +// +// Created by P on 2024/9/9. +// + +#import "CountdownRingView.h" + +@interface CountdownRingView () + +@property (nonatomic, strong) CAShapeLayer *backgroundLayer; +@property (nonatomic, strong) CAShapeLayer *foregroundLayer; +@property (nonatomic, strong) UILabel *countdownLabel; +@property (nonatomic, strong) NSTimer *timer; +@property (nonatomic, assign) CGFloat remainingTime; +@property (nonatomic, assign) NSInteger totalDuration; +@property (nonatomic, copy) void (^completionHandler)(void); + +@end + +@implementation CountdownRingView + +- (void)dealloc +{ + self.completionHandler = nil; + [self.timer invalidate]; + self.timer = nil; +} + +- (instancetype)initWithFrame:(CGRect)frame duration:(NSInteger)duration { + self = [super initWithFrame:frame]; + if (self) { + self.userInteractionEnabled = NO; + self.remainingTime = duration; + self.totalDuration = duration; + [self setupLayers]; + [self setupLabel]; + } + return self; +} + +// 设置背景和前景的环形图层 +- (void)setupLayers { + // 环形路径 + CGPoint center = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2); + CGFloat radius = (self.bounds.size.width - 10) / 2; // 内边距 5 + UIBezierPath *circularPath = [UIBezierPath bezierPathWithArcCenter:center + radius:radius + startAngle:-M_PI_2 + endAngle:(M_PI * 2) - M_PI_2 + clockwise:YES]; + + // 背景圆环 +// self.backgroundLayer = [CAShapeLayer layer]; +// self.backgroundLayer.path = circularPath.CGPath; +// self.backgroundLayer.strokeColor = UIColorFromRGB(0x04D5C6).CGColor; +// self.backgroundLayer.lineWidth = 7; +// self.backgroundLayer.fillColor = [UIColor clearColor].CGColor; +// [self.layer addSublayer:self.backgroundLayer]; + + // 前景倒计时圆环 + self.foregroundLayer = [CAShapeLayer layer]; + self.foregroundLayer.path = circularPath.CGPath; + self.foregroundLayer.strokeColor = UIColorFromRGB(0x04D5C6).CGColor; + self.foregroundLayer.lineWidth = 10; + self.foregroundLayer.fillColor = [UIColor clearColor].CGColor; + self.foregroundLayer.strokeEnd = 1.0; + [self.layer addSublayer:self.foregroundLayer]; +} + +// 设置倒计时标签 +- (void)setupLabel { + self.countdownLabel = [[UILabel alloc] initWithFrame:self.bounds]; + self.countdownLabel.textColor = UIColorFromRGB(0xFFCB3F); + self.countdownLabel.textAlignment = NSTextAlignmentCenter; + self.countdownLabel.font = kFontSemibold(13); + self.countdownLabel.text = @"Combo"; + [self addSubview:self.countdownLabel]; +} + +// 开始倒计时 +- (void)startCountdown { + [self animateRing]; + + self.countdownLabel.transform = CGAffineTransformIdentity; + [UIView animateWithDuration:0.25 + animations:^{ + self.countdownLabel.transform = CGAffineTransformMakeScale(2, 2); + } completion:^(BOOL finished) { + self.countdownLabel.transform = CGAffineTransformIdentity; + }]; + + self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1 + target:self + selector:@selector(updateCountdown) + userInfo:nil + repeats:YES]; +} + +// 重置倒计时 +- (void)resetCountdown { + // 停止当前定时器 + [self.timer invalidate]; + self.timer = nil; + + // 重置时间 + self.remainingTime = self.totalDuration; + + // 重置前景环形图层 + self.foregroundLayer.strokeEnd = 1.0; + + // 重启倒计时 + [self startCountdown]; +} + +// 更新倒计时标签 +- (void)updateCountdown { + self.remainingTime -= 0.1; + + if (self.remainingTime <= 0) { + [self.timer invalidate]; + self.timer = nil; + + if (self.completionHandler) { + self.completionHandler(); + } + } +} + +// 环形倒计时动画 +- (void)animateRing { + CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; + animation.duration = self.remainingTime; // 动画时长与倒计时一致 + animation.fromValue = @1.0; + animation.toValue = @0.0; + animation.fillMode = kCAFillModeForwards; + animation.removedOnCompletion = NO; + [self.foregroundLayer addAnimation:animation forKey:@"ringAnimation"]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboFlagView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboFlagView.h new file mode 100644 index 00000000..f23e647a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboFlagView.h @@ -0,0 +1,27 @@ +// +// GiftComboFlagView.h +// YuMi +// +// Created by P on 2024/9/6. +// + +#import + +@class GiftReceiveInfoModel; + +NS_ASSUME_NONNULL_BEGIN + +@interface GiftComboFlagView : UIView + +@property (nonatomic, strong) GiftReceiveInfoModel *receiveInfo; +@property (nonatomic, copy) void(^timerEnd)(void); + +/// 更新飘屏 +/// - Parameters: +/// - model: 接收到的礼物数据 +/// - type: 飘屏动画类型:0-不做动画;1-数字抖动 +- (void)updateReceiveInfoModel:(GiftReceiveInfoModel *)model animationType:(NSInteger)type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboFlagView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboFlagView.m new file mode 100644 index 00000000..e7db7da1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboFlagView.m @@ -0,0 +1,223 @@ +// +// GiftComboFlagView.m +// YuMi +// +// Created by P on 2024/9/6. +// + +#import "GiftComboFlagView.h" + +#import "GiftReceiveInfoModel.h" + +@interface GiftComboFlagView() + + + +@property (nonatomic, strong) UIImageView *backgroundImageView; +@property (nonatomic, strong) NetImageView *giftGiverAvatar; +@property (nonatomic, strong) NetImageView *giftIcon; +@property (nonatomic, strong) UILabel *giftGiverNameLabel; +@property (nonatomic, strong) UILabel *actionTitleLabel; +@property (nonatomic, strong) UILabel *giftReceiverNameLabel; +@property (nonatomic, strong) UILabel *giftCountLabel; + +@property (nonatomic, assign) NSInteger totalCount; + +@property (nonatomic, strong) NSTimer *timer; +@end + +@implementation GiftComboFlagView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self setupUI]; + } + return self; +} + +- (void)dealloc +{ + [self endTimer]; +} + +- (void)startTimer { + if (_timer) { + [self endTimer]; + } + @kWeakify(self); + _timer = [NSTimer scheduledTimerWithTimeInterval:5.0 repeats:NO block:^(NSTimer * _Nonnull timer) { + @kStrongify(self); + [self removeFromSuperview]; + if (self.timerEnd) { + self.timerEnd(); + } + }]; +} + +- (void)endTimer { + [_timer invalidate]; + _timer = nil; +} + +- (void)updateReceiveInfoModel:(GiftReceiveInfoModel *)model + animationType:(NSInteger)type { + + if (model.comboCount < 1) { + return; + } + + _receiveInfo = model; + + self.giftGiverAvatar.imageUrl = model.avatar; + self.giftIcon.imageUrl = model.gift.giftUrl; + self.giftGiverNameLabel.text = model.nick; + + if (model.isBatch) { + self.giftReceiverNameLabel.text = @"All mic"; + } else { + if (model.targetUids.count == 1) { + self.giftReceiverNameLabel.text = model.targetNick; + } else if (model.targetUids.count > 1) { + self.giftReceiverNameLabel.text = [NSString stringWithFormat:@"%ld guys", model.targetUids.count]; + } else { + self.giftReceiverNameLabel.text = model.targetNick; + } + } + + NSString *countStr = [NSString stringWithFormat:@"x%ld", (long)model.comboCount * model.receiveUserCount]; + NSShadow *shadow = [[NSShadow alloc] init]; + shadow.shadowBlurRadius = 3; + shadow.shadowColor = [UIColor colorWithRed:255/255.0 green:153./255.0 blue:0/255.0 alpha:1]; + shadow.shadowOffset =CGSizeMake(0,1); + NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:countStr + attributes: @{NSFontAttributeName: kFontSemibold(30), + NSForegroundColorAttributeName: UIColorFromRGB(0xFFE07B), + NSShadowAttributeName: shadow}]; + self.giftCountLabel.attributedText = string; + if (type == 1) { + CGFloat scale = 1.1 + (0.1 * model.comboCount * model.receiveUserCount); + scale = MIN(3.0, scale); + + self.giftCountLabel.transform = CGAffineTransformIdentity; + [UIView animateWithDuration:0.25 + animations:^{ + self.giftCountLabel.transform = CGAffineTransformMakeScale(scale, scale); + } completion:^(BOOL finished) { + self.giftCountLabel.transform = CGAffineTransformIdentity; + }]; + } + + [self startTimer]; +} + +- (void)setupUI { + [self addSubview:self.backgroundImageView]; + [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.top.mas_equalTo(self); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(208), kGetScaleWidth(38))); + }]; + + [self addSubview:self.giftGiverAvatar]; + [self.giftGiverAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.backgroundImageView); + make.leading.mas_equalTo(self).offset(4); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(30), kGetScaleWidth(30))); + }]; + + [self addSubview:self.giftGiverNameLabel]; + [self.giftGiverNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.giftGiverAvatar.mas_trailing).offset(6); + make.top.mas_equalTo(self).offset(5); + }]; + + [self addSubview:self.actionTitleLabel]; + [self.actionTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.giftGiverAvatar.mas_trailing).offset(6); + make.bottom.mas_equalTo(self.backgroundImageView).offset(-5); + }]; + + [self addSubview:self.giftReceiverNameLabel]; + [self.giftReceiverNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.actionTitleLabel.mas_trailing).offset(6); + make.centerY.mas_equalTo(self.actionTitleLabel); + }]; + + [self addSubview:self.giftIcon]; + [self.giftIcon mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.giftReceiverNameLabel.mas_trailing).offset(8); + make.bottom.mas_equalTo(self.backgroundImageView); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(48), kGetScaleWidth(48))); + }]; + + [self addSubview:self.giftCountLabel]; + [self.giftCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.backgroundImageView); + make.leading.mas_equalTo(self.giftIcon.mas_trailing).offset(22); + }]; +} + +#pragma mark - +- (UIImageView *)backgroundImageView { + if (!_backgroundImageView) { + _backgroundImageView = [[UIImageView alloc] initWithImage:[kImage(@"gift_combo_flag_bg") ms_SetImageForRTL]]; + _backgroundImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _backgroundImageView; +} + +- (NetImageView *)giftGiverAvatar { + if (!_giftGiverAvatar) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeCornerAvatar; + _giftGiverAvatar = [[NetImageView alloc] initWithConfig:config]; + _giftGiverAvatar.backgroundColor = [UIColor clearColor]; + _giftGiverAvatar.contentMode = UIViewContentModeScaleAspectFit; + _giftGiverAvatar.layer.cornerRadius = kGetScaleWidth(15); + _giftGiverAvatar.layer.masksToBounds = YES; + _giftGiverAvatar.clipsToBounds = YES; + } + return _giftGiverAvatar; +} + +- (NetImageView *)giftIcon { + if (!_giftIcon) { + _giftIcon = [[NetImageView alloc] init]; + _giftIcon.contentMode = UIViewContentModeScaleAspectFit; + _giftIcon.layer.cornerRadius = kGetScaleWidth(24); + _giftIcon.layer.masksToBounds = YES; + _giftIcon.clipsToBounds = YES; + } + return _giftIcon; +} + +- (UILabel *)giftGiverNameLabel { + if (!_giftGiverNameLabel) { + _giftGiverNameLabel = [UILabel labelInitWithText:@"" font:kFontSemibold(10) textColor:UIColorFromRGB(0xFFE995)]; + } + return _giftGiverNameLabel; +} + +- (UILabel *)actionTitleLabel { + if (!_actionTitleLabel) { + _actionTitleLabel = [UILabel labelInitWithText:@"Send" font:kFontSemibold(10) textColor:UIColorFromRGB(0xFFffff)]; + } + return _actionTitleLabel; +} + +- (UILabel *)giftReceiverNameLabel { + if (!_giftReceiverNameLabel) { + _giftReceiverNameLabel = [UILabel labelInitWithText:@"" font:kFontSemibold(10) textColor:UIColorFromRGB(0xFFE995)]; + } + return _giftReceiverNameLabel; +} + + +- (UILabel *)giftCountLabel { + if (!_giftCountLabel) { + _giftCountLabel = [UILabel labelInitWithText:@"X 1" font:kFontSemibold(36) textColor:UIColorFromRGB(0xFFE07B)]; + } + return _giftCountLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.h index d0c66897..97c6b32f 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.h +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.h @@ -7,10 +7,14 @@ #import + + NS_ASSUME_NONNULL_BEGIN @interface GiftComboView : UIView +- (void)updateCount; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m index 43efb174..1dd1cda4 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m @@ -6,14 +6,155 @@ // #import "GiftComboView.h" +#import "GiftComboManager.h" +#import "CountdownRingView.h" + +#import + +@interface GiftComboView () + +@property (nonatomic, strong) UIView *container; +@property (nonatomic, strong) UILabel *comboCountLabel; +@property (nonatomic, strong) SVGAImageView *playImageView; +@property (nonatomic, strong) SVGAVideoEntity *svgaVideoEntity; +@property (nonatomic, strong) CountdownRingView *countdownRingView; + +@end @implementation GiftComboView - (instancetype)init { if (self = [super init]) { + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapSpace)]; + [self addGestureRecognizer:tap]; + + [self setupUI]; + [self setupTimer]; + [self updateCount]; + + SVGAParser *_parser = [SVGAParser new]; + @kWeakify(self); + [_parser parseWithNamed:@"Combo_Boom" + inBundle:nil + completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.svgaVideoEntity = videoItem; + self.playImageView.loops = 1; + self.playImageView.clearsAfterStop = NO; + self.playImageView.videoItem = videoItem; + } failureBlock:^(NSError * _Nullable error) { + NSLog(@"%@", error); + }]; } return self; } +- (void)updateCount { + NSString *countStr = [NSString stringWithFormat:@"x%ld", [[GiftComboManager sharedManager] loadComboCount]]; + NSShadow *shadow = [[NSShadow alloc] init]; + shadow.shadowBlurRadius = 3; + shadow.shadowColor = [UIColor colorWithRed:255/255.0 green:153./255.0 blue:0/255.0 alpha:1]; + shadow.shadowOffset =CGSizeMake(0,1); + NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:countStr + attributes: @{NSFontAttributeName: kFontSemibold(30), + NSForegroundColorAttributeName: UIColorFromRGB(0xFFE07B), + NSShadowAttributeName: shadow}]; + self.comboCountLabel.attributedText = string; +} + +- (void)setupUI { + [self addSubview:self.container]; + [self.container mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(self).offset(-16); + make.bottom.mas_equalTo(self).offset(-20); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(170), kGetScaleWidth(310))); + }]; + + [self.container addSubview:self.playImageView]; + [self.playImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.trailing.mas_equalTo(self.container); + make.width.mas_equalTo(kGetScaleWidth(150)); + make.height.mas_equalTo(kGetScaleWidth(300)); + }]; + + [self.container addSubview:self.comboCountLabel]; + [self.comboCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.playImageView.mas_leading); + make.bottom.mas_equalTo(self.playImageView).offset(-100); + }]; + + [self addSubview:self.countdownRingView]; + [self.countdownRingView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.playImageView); + make.bottom.mas_equalTo(self.playImageView).offset(-6); + make.width.height.mas_equalTo(kGetScaleWidth(90)); + }]; +} + +- (void)setupTimer { + @kWeakify(self); + [self.countdownRingView setCompletionHandler:^{ + @kStrongify(self); + self.userInteractionEnabled = NO; + [[GiftComboManager sharedManager] forceRemove]; + }]; + [self.countdownRingView startCountdown]; +} + +- (void)handleTap { + [[GiftComboManager sharedManager] sendGift]; + [self.playImageView startAnimation]; + [self.countdownRingView resetCountdown]; +} + +- (void)handleTapSpace { + +} + +// SVGAPlayerDelegate: 当动画播放完毕时调用 +- (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player { + [self.playImageView stepToPercentage:0 andPlay:NO]; +} + + +- (UIView *)container { + if (!_container) { + _container = [[UIView alloc] init]; + _container.backgroundColor = [UIColor clearColor]; + + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap)]; + [_container addGestureRecognizer:tap]; + } + return _container; +} + +- (UILabel *)comboCountLabel { + if (!_comboCountLabel) { + _comboCountLabel = [UILabel labelInitWithText:@"" + font:kFontSemibold(30) + textColor:UIColorFromRGB(0xFFE07B)]; + _comboCountLabel.transform = isMSRTL() ? CGAffineTransformMakeRotation(M_PI_4) : CGAffineTransformMakeRotation(-M_PI_4); + } + return _comboCountLabel; +} + +- (SVGAImageView *)playImageView { + if (_playImageView == nil) { + _playImageView = [[SVGAImageView alloc]init]; + _playImageView.contentMode = UIViewContentModeScaleAspectFit; + _playImageView.hidden = NO; + _playImageView.delegate = self; + } + return _playImageView; +} + +- (CountdownRingView *)countdownRingView { + if (!_countdownRingView) { + _countdownRingView = [[CountdownRingView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) + duration:5]; + } + return _countdownRingView; +} + @end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m index 18211927..036345b1 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m @@ -340,7 +340,7 @@ highlightColor = [DJDKMIMOMColor giftNameSelectColor]; } NSTextAttachment * diamondAtt = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; diamondAtt.bounds = CGRectMake(0, roundf(self.balanceLabel.font.capHeight - 16)/2.f, 16, 16); diamondAtt.image = iconImage; NSAttributedString *diamondAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)diamondAtt]; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m index 9e23bb90..972478d6 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m @@ -103,6 +103,8 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; @property (nonatomic, strong) NSMutableArray *sendGiftMessageArray; +@property (nonatomic, strong) GiftComboView *comboView; + @end @implementation XPSendGiftView @@ -131,8 +133,43 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; [self initSubViews]; [self initSubViewConstraints]; [self initHttpRequest]; + + @kWeakify(self); + [[GiftComboManager sharedManager] registerActions:^(ComboActionType type) { + @kStrongify(self); + switch (type) { + case ComboAction_ShowPanel: { + self.contentView.hidden = YES; + [self.view addSubview:self.comboView]; + [self.comboView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + } + + break; + case ComboAction_RemovePanel:{ + self.contentView.hidden = NO; + [self.comboView removeFromSuperview]; + self.comboView = nil; + } + break; + case ComboAction_Combo_Count_Update: { + [self.comboView updateCount]; + } + default: + break; + } + }]; } +- (GiftComboView *)comboView { + if (!_comboView) { + _comboView = [[GiftComboView alloc] init]; + } + return _comboView; +} + + #pragma mark - Private Method - (void)initSubViews { [self.view addSubview:self.topView]; @@ -334,6 +371,9 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; NSString *sessionID = self.usingplaceType == SendGiftType_User ? [NSString stringWithFormat:@"%ld", self.userArray.firstObject.uid] : [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId]; NIMMessage *message = [[NIMMessage alloc]init]; NIMCustomObject *object = [[NIMCustomObject alloc] init]; + + [attachment.data setObject:@([[GiftComboManager sharedManager] loadComboCount]) forKey:@"comboCount"]; + object.attachment = attachment; message.messageObject = object; @@ -437,6 +477,9 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; GiftInfoModel * giftInfo = self.giftInfoView.lastSelectGift; if (self.usingplaceType == SendGiftType_Room) { if (uids.count > 0) { + + [self readyForCombo:giftCount]; + ///送礼物的人 NSString * uidString = [self dealSendGiftUids:uids]; ///送礼物的个数 @@ -814,8 +857,8 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; dispatch_after(delayTime, dispatch_get_main_queue(), ^{ @kStrongify(self); if (self) { - [self sendCustomMessage:receiveInfo oringinDic:originDic]; [[GiftComboManager sharedManager] resetCombo]; + [self sendCustomMessage:receiveInfo oringinDic:originDic]; } }); @@ -830,6 +873,10 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; ///送礼物失败 - (void)sendGiftFailWithCode:(NSInteger)code msg:(NSString *)msg { +#if DEBUG + [[GiftComboManager sharedManager] resetCombo]; +// [self sendCustomMessage:nil oringinDic:nil]; +#endif self.giftBarView.sendButtonIsEnable = YES; if (code == 31005) {// 余额不足 [self showNotSufficientFundsWithToast:msg]; @@ -917,7 +964,6 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; maskLayer.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); maskLayer.path = maskPath.CGPath; _contentView.layer.mask = maskLayer; - } return _contentView; } diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.m index 85bdd409..27b242ff 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.m @@ -168,7 +168,7 @@ - (UIImageView *)coinImageView { if (!_coinImageView) { _coinImageView = [[UIImageView alloc] init]; - [_coinImageView setImage:[UIImage imageNamed:@"exchange_gold_icon"]]; + [_coinImageView setImage:[UIImage imageNamed:@"moli_money_icon"]]; } return _coinImageView; } diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.m b/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.m index ef4db6d8..21957a81 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.m @@ -52,7 +52,7 @@ NSMutableAttributedString *numText = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSFontAttributeName:kFontMedium(32),NSForegroundColorAttributeName:UIColorFromRGB(0xFF285C)}]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(kFontMedium(32).capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); attachment.image =iconImage; @@ -132,7 +132,7 @@ if (_resultModel.redEnvelopeState == RedPacketState_Success) {//抢到红包 NSMutableAttributedString *numText = [[NSMutableAttributedString alloc]initWithString:_resultModel.currentUserAmount attributes:@{NSFontAttributeName:kFontMedium(32),NSForegroundColorAttributeName:UIColorFromRGB(0xFF285C)}]; NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"exchange_gold_icon"];; + UIImage *iconImage = [UIImage imageNamed:@"moli_money_icon"];; attachment.bounds = CGRectMake(0, roundf(kFontMedium(32).capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); attachment.image =iconImage; diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomSendRedPacketVC.m b/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomSendRedPacketVC.m index afada148..67edfbeb 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomSendRedPacketVC.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomSendRedPacketVC.m @@ -290,7 +290,7 @@ - (UIImageView *)diamondIconView{ if(!_diamondIconView){ _diamondIconView = [UIImageView new]; - _diamondIconView.image = kImage(@"exchange_gold_icon"); + _diamondIconView.image = kImage(@"moli_money_icon"); } return _diamondIconView; } diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.m b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.m index 851f8994..373d2971 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.m @@ -138,7 +138,7 @@ - (UIImageView *)diamondImage { if (!_diamondImage) { - _diamondImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"exchange_gold_icon"]]; + _diamondImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"moli_money_icon"]]; } return _diamondImage; } diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.m b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.m index 8461ef15..6f11d68f 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.m @@ -681,7 +681,7 @@ - (UIImageView *)diamondImage { if (!_diamondImage) { - _diamondImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"exchange_gold_icon"]]; + _diamondImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"moli_money_icon"]]; } return _diamondImage; } diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.m b/YuMi/Modules/YMRoom/View/XPRoomViewController.m index 38087935..044f6285 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomViewController.m +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.m @@ -331,7 +331,6 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myGiftEffectUpdate:) name:kRoomGiftEffectUpdateNotificationKey object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showRoomFirstChargeWindowFormNot:) name:kShowFirstRechargeView object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(openRedPacketNotification:) name:@"kOpenRedPacketNotification" object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showSendheadlineView:) name:@"kShowSendheadlineView" object:nil]; @kWeakify(self); [[NSNotificationCenter defaultCenter] addObserverForName:@"kExchangeRoomAnimationViewAndGameViewIndex" @@ -360,23 +359,6 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [[NIMSDK sharedSDK].broadcastManager addDelegate:self]; } -- (void)setupComboManager { - // TODO: 测试发送礼物后唤起 test view/ 处理连击倒计时 & 消息发送 - [[GiftComboManager sharedManager] registerActions:^(ComboActionType type) { - switch (type) { - case ComboAction_ShowPanel: - - break; - case ComboAction_RemovePanel: - - break; - - default: - break; - } - }]; -} - - (void)removeComboManager { [[GiftComboManager sharedManager] registerActions:nil]; } @@ -1646,6 +1628,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 continue; } + NSLog(@" --- Message Raw Attach Content: %@", message.rawAttachContent); + if (message.messageType == NIMMessageTypeNotification) { NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; @@ -1744,7 +1728,6 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 if (content.source.userId.integerValue != [AccountInfoStorage instance].getUid.integerValue && self.userInfo.platformRole != 1) { onLineNumber += 1; }else { - ///如果是自己的话 如果有坐骑的话 [self userEnterRoomSuccess]; ///在活动页面 判断是否显示 相亲加入的按钮 所以需要等用户进房成功之后才能获取 房间角色 diff --git a/YuMi/Resources/Combo_Boom.svga b/YuMi/Resources/Combo_Boom.svga new file mode 100644 index 00000000..6bd65f08 Binary files /dev/null and b/YuMi/Resources/Combo_Boom.svga differ