Compare commits
10 Commits
ea849eba1a
...
3a817bb947
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3a817bb947 | ||
![]() |
ae0f1993e3 | ||
![]() |
024936570c | ||
![]() |
33e42234ca | ||
![]() |
11795a57a1 | ||
![]() |
55e78cade4 | ||
![]() |
651db0121b | ||
![]() |
22c7cdb1e8 | ||
![]() |
ddd54b96c5 | ||
![]() |
888098e2a5 |
@@ -264,66 +264,6 @@
|
||||
237FD35D2C0F187B00B5335C /* pi_app_logo_new_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 237FD35C2C0F187B00B5335C /* pi_app_logo_new_bg.png */; };
|
||||
238A90072BA9729200828123 /* PIUniversalBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238A90062BA9729200828123 /* PIUniversalBannerView.m */; };
|
||||
238A900A2BA9756600828123 /* PIUniversalBannerModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238A90092BA9756600828123 /* PIUniversalBannerModel.m */; };
|
||||
238B37A32AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37242AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.m */; };
|
||||
238B37A42AC55A2C00BFC9D5 /* TreasureFairyLimitModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B372B2AC55A2C00BFC9D5 /* TreasureFairyLimitModel.m */; };
|
||||
238B37A52AC55A2C00BFC9D5 /* TreasureFailyKeyInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B372C2AC55A2C00BFC9D5 /* TreasureFailyKeyInfoModel.m */; };
|
||||
238B37A62AC55A2C00BFC9D5 /* TreasureFairySendRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B372E2AC55A2C00BFC9D5 /* TreasureFairySendRecordModel.m */; };
|
||||
238B37A72AC55A2C00BFC9D5 /* TreasureFairyRewardModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B372F2AC55A2C00BFC9D5 /* TreasureFairyRewardModel.m */; };
|
||||
238B37A82AC55A2C00BFC9D5 /* TreasureFairyTrialsRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37302AC55A2C00BFC9D5 /* TreasureFairyTrialsRecordModel.m */; };
|
||||
238B37A92AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37322AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.m */; };
|
||||
238B37AA2AC55A2C00BFC9D5 /* TreasureFairyInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37362AC55A2C00BFC9D5 /* TreasureFairyInfoModel.m */; };
|
||||
238B37AB2AC55A2C00BFC9D5 /* TreasureFairyConvertRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37372AC55A2C00BFC9D5 /* TreasureFairyConvertRecordModel.m */; };
|
||||
238B37AC2AC55A2C00BFC9D5 /* TreasureFailryMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37382AC55A2C00BFC9D5 /* TreasureFailryMessageModel.m */; };
|
||||
238B37AD2AC55A2C00BFC9D5 /* TreasureFairyBallInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37392AC55A2C00BFC9D5 /* TreasureFairyBallInfoModel.m */; };
|
||||
238B37AE2AC55A2C00BFC9D5 /* TreasureFairyFragmentModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B373D2AC55A2C00BFC9D5 /* TreasureFairyFragmentModel.m */; };
|
||||
238B37AF2AC55A2C00BFC9D5 /* XPTreasureFairyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37402AC55A2C00BFC9D5 /* XPTreasureFairyViewController.m */; };
|
||||
238B37B02AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37422AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultCell.m */; };
|
||||
238B37B12AC55A2C00BFC9D5 /* XPTreasureFairyFriendCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37462AC55A2C00BFC9D5 /* XPTreasureFairyFriendCell.m */; };
|
||||
238B37B22AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37472AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolCell.m */; };
|
||||
238B37B32AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37482AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordCell.m */; };
|
||||
238B37B42AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B374B2AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonCell.m */; };
|
||||
238B37B52AC55A2C00BFC9D5 /* XPTreasureFailyResultGiftCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B374D2AC55A2C00BFC9D5 /* XPTreasureFailyResultGiftCell.m */; };
|
||||
238B37B62AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B374E2AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordCell.m */; };
|
||||
238B37B72AC55A2C00BFC9D5 /* XPTreasureFairySendRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37502AC55A2C00BFC9D5 /* XPTreasureFairySendRecordCell.m */; };
|
||||
238B37B82AC55A2C00BFC9D5 /* XPTreasureFairyShopingExchangeCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37542AC55A2C00BFC9D5 /* XPTreasureFairyShopingExchangeCell.m */; };
|
||||
238B37B92AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37552AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordCell.m */; };
|
||||
238B37BA2AC55A2C00BFC9D5 /* XPTreasureFairyFriendView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37582AC55A2C00BFC9D5 /* XPTreasureFairyFriendView.m */; };
|
||||
238B37BB2AC55A2C00BFC9D5 /* XPTreasureFairySummonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37592AC55A2C00BFC9D5 /* XPTreasureFairySummonView.m */; };
|
||||
238B37BC2AC55A2C00BFC9D5 /* XPTreasureFairySendView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B375A2AC55A2C00BFC9D5 /* XPTreasureFairySendView.m */; };
|
||||
238B37BD2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B375F2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsContentView.m */; };
|
||||
238B37BE2AC55A2C00BFC9D5 /* XPTreasureFairyBottomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37612AC55A2C00BFC9D5 /* XPTreasureFairyBottomView.m */; };
|
||||
238B37BF2AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37662AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultView.m */; };
|
||||
238B37C02AC55A2C00BFC9D5 /* XPTreasureFairyPoolRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37682AC55A2C00BFC9D5 /* XPTreasureFairyPoolRecordView.m */; };
|
||||
238B37C12AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37692AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonView.m */; };
|
||||
238B37C22AC55A2C00BFC9D5 /* XPTreasureFairyDrawSubView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B376C2AC55A2C00BFC9D5 /* XPTreasureFairyDrawSubView.m */; };
|
||||
238B37C32AC55A2C00BFC9D5 /* XPTreasureFairyMessageSendView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B376E2AC55A2C00BFC9D5 /* XPTreasureFairyMessageSendView.m */; };
|
||||
238B37C42AC55A2C00BFC9D5 /* XPTreasureFairyBallContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B376F2AC55A2C00BFC9D5 /* XPTreasureFairyBallContentView.m */; };
|
||||
238B37C52AC55A2C00BFC9D5 /* XPTreasureFairyMoreView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37712AC55A2C00BFC9D5 /* XPTreasureFairyMoreView.m */; };
|
||||
238B37C62AC55A2C00BFC9D5 /* XPTreasureFairyMyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37722AC55A2C00BFC9D5 /* XPTreasureFairyMyView.m */; };
|
||||
238B37C72AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37732AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordView.m */; };
|
||||
238B37C82AC55A2C00BFC9D5 /* XPTreasureFailyPrizeGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37742AC55A2C00BFC9D5 /* XPTreasureFailyPrizeGiftView.m */; };
|
||||
238B37C92AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultSmallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37752AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultSmallView.m */; };
|
||||
238B37CA2AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37772AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolView.m */; };
|
||||
238B37CB2AC55A2C00BFC9D5 /* XPTreasureFairyWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37782AC55A2C00BFC9D5 /* XPTreasureFairyWebView.m */; };
|
||||
238B37CC2AC55A2C00BFC9D5 /* XPTreasureFairyPrizeSubView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37792AC55A2C00BFC9D5 /* XPTreasureFairyPrizeSubView.m */; };
|
||||
238B37CD2AC55A2C00BFC9D5 /* XPTreasureFailyResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B377A2AC55A2C00BFC9D5 /* XPTreasureFailyResultView.m */; };
|
||||
238B37CE2AC55A2C00BFC9D5 /* XPTreasureFairyDrawView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B377B2AC55A2C00BFC9D5 /* XPTreasureFairyDrawView.m */; };
|
||||
238B37CF2AC55A2C00BFC9D5 /* XPTreasureFairySendRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B377C2AC55A2C00BFC9D5 /* XPTreasureFairySendRecordView.m */; };
|
||||
238B37D02AC55A2C00BFC9D5 /* XPTreasureFairySummonGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B377D2AC55A2C00BFC9D5 /* XPTreasureFairySummonGiftView.m */; };
|
||||
238B37D12AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordSubView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37812AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordSubView.m */; };
|
||||
238B37D22AC55A2C00BFC9D5 /* XPTreasureFairyExchangeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37832AC55A2C00BFC9D5 /* XPTreasureFairyExchangeView.m */; };
|
||||
238B37D32AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37842AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordView.m */; };
|
||||
238B37D42AC55A2C00BFC9D5 /* XPTreasureFailrySummonBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37862AC55A2C00BFC9D5 /* XPTreasureFailrySummonBallView.m */; };
|
||||
238B37D52AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37872AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardView.m */; };
|
||||
238B37D62AC55A2C00BFC9D5 /* XPTreasureFairyTrialsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37882AC55A2C00BFC9D5 /* XPTreasureFairyTrialsView.m */; };
|
||||
238B37D72AC55A2C00BFC9D5 /* XPTreasureFairyTrialsBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B378A2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsBallView.m */; };
|
||||
238B37D82AC55A2C00BFC9D5 /* XPTreasureFairyShopingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B378B2AC55A2C00BFC9D5 /* XPTreasureFairyShopingView.m */; };
|
||||
238B37D92AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B378E2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordView.m */; };
|
||||
238B37DA2AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardInputNumView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37912AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardInputNumView.m */; };
|
||||
238B37DB2AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardSuccessView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37932AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardSuccessView.m */; };
|
||||
238B37DC2AC55A2C00BFC9D5 /* XPTreasureFairyBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37942AC55A2C00BFC9D5 /* XPTreasureFairyBallView.m */; };
|
||||
238B37DD2AC55A2C00BFC9D5 /* XPTreasureFairyStoreView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B379A2AC55A2C00BFC9D5 /* XPTreasureFairyStoreView.m */; };
|
||||
238B37DE2AC55A2C00BFC9D5 /* Api+TreasureFairy.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37A12AC55A2C00BFC9D5 /* Api+TreasureFairy.m */; };
|
||||
238ED83A2AE2891D0014EF9D /* PIRoomEnterRedPacketView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238ED8392AE2891D0014EF9D /* PIRoomEnterRedPacketView.m */; };
|
||||
239141C62AE129F700322CA9 /* PIInputScrollingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 239141C52AE129F700322CA9 /* PIInputScrollingView.m */; };
|
||||
239141C92AE1358F00322CA9 /* PIInputEntireServerScrollingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 239141C82AE1358F00322CA9 /* PIInputEntireServerScrollingView.m */; };
|
||||
@@ -427,9 +367,6 @@
|
||||
23E9E9AA2A80FDF100B792F2 /* XPNewMineHallIncomeCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 23E9E9A92A80FDF100B792F2 /* XPNewMineHallIncomeCell.m */; };
|
||||
23E9E9B72A82200500B792F2 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 23E9E9B62A82200500B792F2 /* GoogleService-Info.plist */; };
|
||||
23E9EA6B2A83808000B792F2 /* ContentTreasureFairyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23E9EA6A2A83808000B792F2 /* ContentTreasureFairyModel.m */; };
|
||||
23E9EA792A8385CC00B792F2 /* XPTreasureFairyGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23E9EA772A8385CB00B792F2 /* XPTreasureFairyGiftView.m */; };
|
||||
23E9EA7C2A83977400B792F2 /* MessageContentTreasureFairyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23E9EA7B2A83977400B792F2 /* MessageContentTreasureFairyView.m */; };
|
||||
23E9EA7F2A839B2F00B792F2 /* MessageTreasureFairyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23E9EA7E2A839B2F00B792F2 /* MessageTreasureFairyModel.m */; };
|
||||
23E9EA842A84B6FD00B792F2 /* XPMineUserInfoTagModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23E9EA802A84B6FC00B792F2 /* XPMineUserInfoTagModel.m */; };
|
||||
23E9EA852A84B6FD00B792F2 /* XPSoundCardModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23E9EA832A84B6FD00B792F2 /* XPSoundCardModel.m */; };
|
||||
23E9EA882A84B75900B792F2 /* XPMineUserInfoHeaderTagView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23E9EA862A84B75900B792F2 /* XPMineUserInfoHeaderTagView.m */; };
|
||||
@@ -2226,127 +2163,6 @@
|
||||
238A90062BA9729200828123 /* PIUniversalBannerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIUniversalBannerView.m; sourceTree = "<group>"; };
|
||||
238A90082BA9756600828123 /* PIUniversalBannerModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIUniversalBannerModel.h; sourceTree = "<group>"; };
|
||||
238A90092BA9756600828123 /* PIUniversalBannerModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIUniversalBannerModel.m; sourceTree = "<group>"; };
|
||||
238B37242AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailyPresenter.m; sourceTree = "<group>"; };
|
||||
238B37252AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyPresenter.h; sourceTree = "<group>"; };
|
||||
238B37272AC55A2C00BFC9D5 /* XPTreasureFailyProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyProtocol.h; sourceTree = "<group>"; };
|
||||
238B37292AC55A2C00BFC9D5 /* TreasureFairyConvertRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyConvertRecordModel.h; sourceTree = "<group>"; };
|
||||
238B372A2AC55A2C00BFC9D5 /* TreasureFairyInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyInfoModel.h; sourceTree = "<group>"; };
|
||||
238B372B2AC55A2C00BFC9D5 /* TreasureFairyLimitModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyLimitModel.m; sourceTree = "<group>"; };
|
||||
238B372C2AC55A2C00BFC9D5 /* TreasureFailyKeyInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFailyKeyInfoModel.m; sourceTree = "<group>"; };
|
||||
238B372D2AC55A2C00BFC9D5 /* TreasureFailryMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFailryMessageModel.h; sourceTree = "<group>"; };
|
||||
238B372E2AC55A2C00BFC9D5 /* TreasureFairySendRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairySendRecordModel.m; sourceTree = "<group>"; };
|
||||
238B372F2AC55A2C00BFC9D5 /* TreasureFairyRewardModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyRewardModel.m; sourceTree = "<group>"; };
|
||||
238B37302AC55A2C00BFC9D5 /* TreasureFairyTrialsRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyTrialsRecordModel.m; sourceTree = "<group>"; };
|
||||
238B37312AC55A2C00BFC9D5 /* TreasureFairyBallInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyBallInfoModel.h; sourceTree = "<group>"; };
|
||||
238B37322AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyUserInfoModel.m; sourceTree = "<group>"; };
|
||||
238B37332AC55A2C00BFC9D5 /* TreasureFairyFragmentModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyFragmentModel.h; sourceTree = "<group>"; };
|
||||
238B37342AC55A2C00BFC9D5 /* TreasureFailyKeyInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFailyKeyInfoModel.h; sourceTree = "<group>"; };
|
||||
238B37352AC55A2C00BFC9D5 /* TreasureFairyLimitModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyLimitModel.h; sourceTree = "<group>"; };
|
||||
238B37362AC55A2C00BFC9D5 /* TreasureFairyInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyInfoModel.m; sourceTree = "<group>"; };
|
||||
238B37372AC55A2C00BFC9D5 /* TreasureFairyConvertRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyConvertRecordModel.m; sourceTree = "<group>"; };
|
||||
238B37382AC55A2C00BFC9D5 /* TreasureFailryMessageModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFailryMessageModel.m; sourceTree = "<group>"; };
|
||||
238B37392AC55A2C00BFC9D5 /* TreasureFairyBallInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyBallInfoModel.m; sourceTree = "<group>"; };
|
||||
238B373A2AC55A2C00BFC9D5 /* TreasureFairyTrialsRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyTrialsRecordModel.h; sourceTree = "<group>"; };
|
||||
238B373B2AC55A2C00BFC9D5 /* TreasureFairyRewardModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyRewardModel.h; sourceTree = "<group>"; };
|
||||
238B373C2AC55A2C00BFC9D5 /* TreasureFairySendRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairySendRecordModel.h; sourceTree = "<group>"; };
|
||||
238B373D2AC55A2C00BFC9D5 /* TreasureFairyFragmentModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyFragmentModel.m; sourceTree = "<group>"; };
|
||||
238B373E2AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyUserInfoModel.h; sourceTree = "<group>"; };
|
||||
238B37402AC55A2C00BFC9D5 /* XPTreasureFairyViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyViewController.m; sourceTree = "<group>"; };
|
||||
238B37422AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyStoreResultCell.m; sourceTree = "<group>"; };
|
||||
238B37432AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingRecordCell.h; sourceTree = "<group>"; };
|
||||
238B37442AC55A2C00BFC9D5 /* XPTreasureFailyResultGiftCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyResultGiftCell.h; sourceTree = "<group>"; };
|
||||
238B37452AC55A2C00BFC9D5 /* XPTreasureFairySendRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySendRecordCell.h; sourceTree = "<group>"; };
|
||||
238B37462AC55A2C00BFC9D5 /* XPTreasureFairyFriendCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyFriendCell.m; sourceTree = "<group>"; };
|
||||
238B37472AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizePoolCell.m; sourceTree = "<group>"; };
|
||||
238B37482AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizeRecordCell.m; sourceTree = "<group>"; };
|
||||
238B37492AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsRecordCell.h; sourceTree = "<group>"; };
|
||||
238B374A2AC55A2C00BFC9D5 /* XPTreasureFairyShopingExchangeCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingExchangeCell.h; sourceTree = "<group>"; };
|
||||
238B374B2AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyNewSummonCell.m; sourceTree = "<group>"; };
|
||||
238B374C2AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyStoreResultCell.h; sourceTree = "<group>"; };
|
||||
238B374D2AC55A2C00BFC9D5 /* XPTreasureFailyResultGiftCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailyResultGiftCell.m; sourceTree = "<group>"; };
|
||||
238B374E2AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingRecordCell.m; sourceTree = "<group>"; };
|
||||
238B374F2AC55A2C00BFC9D5 /* XPTreasureFairyFriendCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyFriendCell.h; sourceTree = "<group>"; };
|
||||
238B37502AC55A2C00BFC9D5 /* XPTreasureFairySendRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySendRecordCell.m; sourceTree = "<group>"; };
|
||||
238B37512AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizeRecordCell.h; sourceTree = "<group>"; };
|
||||
238B37522AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizePoolCell.h; sourceTree = "<group>"; };
|
||||
238B37532AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyNewSummonCell.h; sourceTree = "<group>"; };
|
||||
238B37542AC55A2C00BFC9D5 /* XPTreasureFairyShopingExchangeCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingExchangeCell.m; sourceTree = "<group>"; };
|
||||
238B37552AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsRecordCell.m; sourceTree = "<group>"; };
|
||||
238B37572AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordSubView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingRecordSubView.h; sourceTree = "<group>"; };
|
||||
238B37582AC55A2C00BFC9D5 /* XPTreasureFairyFriendView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyFriendView.m; sourceTree = "<group>"; };
|
||||
238B37592AC55A2C00BFC9D5 /* XPTreasureFairySummonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySummonView.m; sourceTree = "<group>"; };
|
||||
238B375A2AC55A2C00BFC9D5 /* XPTreasureFairySendView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySendView.m; sourceTree = "<group>"; };
|
||||
238B375B2AC55A2C00BFC9D5 /* XPTreasureFairySendRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySendRecordView.h; sourceTree = "<group>"; };
|
||||
238B375C2AC55A2C00BFC9D5 /* XPTreasureFairySummonGiftView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySummonGiftView.h; sourceTree = "<group>"; };
|
||||
238B375D2AC55A2C00BFC9D5 /* XPTreasureFairyDrawView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyDrawView.h; sourceTree = "<group>"; };
|
||||
238B375E2AC55A2C00BFC9D5 /* XPTreasureFairyShopingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingView.h; sourceTree = "<group>"; };
|
||||
238B375F2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsContentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsContentView.m; sourceTree = "<group>"; };
|
||||
238B37602AC55A2C00BFC9D5 /* XPTreasureFairyTrialsBallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsBallView.h; sourceTree = "<group>"; };
|
||||
238B37612AC55A2C00BFC9D5 /* XPTreasureFairyBottomView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyBottomView.m; sourceTree = "<group>"; };
|
||||
238B37622AC55A2C00BFC9D5 /* XPTreasureFairyTrialsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsView.h; sourceTree = "<group>"; };
|
||||
238B37632AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PITreasureFairyBuyElfShardView.h; sourceTree = "<group>"; };
|
||||
238B37642AC55A2C00BFC9D5 /* XPTreasureFailrySummonBallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailrySummonBallView.h; sourceTree = "<group>"; };
|
||||
238B37652AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingRecordView.h; sourceTree = "<group>"; };
|
||||
238B37662AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyStoreResultView.m; sourceTree = "<group>"; };
|
||||
238B37672AC55A2C00BFC9D5 /* XPTreasureFairyExchangeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyExchangeView.h; sourceTree = "<group>"; };
|
||||
238B37682AC55A2C00BFC9D5 /* XPTreasureFairyPoolRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPoolRecordView.m; sourceTree = "<group>"; };
|
||||
238B37692AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyNewSummonView.m; sourceTree = "<group>"; };
|
||||
238B376A2AC55A2C00BFC9D5 /* XPTreasureFairyBallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyBallView.h; sourceTree = "<group>"; };
|
||||
238B376B2AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardSuccessView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PITreasureFairyBuyElfShardSuccessView.h; sourceTree = "<group>"; };
|
||||
238B376C2AC55A2C00BFC9D5 /* XPTreasureFairyDrawSubView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyDrawSubView.m; sourceTree = "<group>"; };
|
||||
238B376D2AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardInputNumView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PITreasureFairyBuyElfShardInputNumView.h; sourceTree = "<group>"; };
|
||||
238B376E2AC55A2C00BFC9D5 /* XPTreasureFairyMessageSendView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyMessageSendView.m; sourceTree = "<group>"; };
|
||||
238B376F2AC55A2C00BFC9D5 /* XPTreasureFairyBallContentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyBallContentView.m; sourceTree = "<group>"; };
|
||||
238B37702AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsRecordView.h; sourceTree = "<group>"; };
|
||||
238B37712AC55A2C00BFC9D5 /* XPTreasureFairyMoreView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyMoreView.m; sourceTree = "<group>"; };
|
||||
238B37722AC55A2C00BFC9D5 /* XPTreasureFairyMyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyMyView.m; sourceTree = "<group>"; };
|
||||
238B37732AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizeRecordView.m; sourceTree = "<group>"; };
|
||||
238B37742AC55A2C00BFC9D5 /* XPTreasureFailyPrizeGiftView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailyPrizeGiftView.m; sourceTree = "<group>"; };
|
||||
238B37752AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultSmallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyStoreResultSmallView.m; sourceTree = "<group>"; };
|
||||
238B37762AC55A2C00BFC9D5 /* XPTreasureFairyStoreView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyStoreView.h; sourceTree = "<group>"; };
|
||||
238B37772AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizePoolView.m; sourceTree = "<group>"; };
|
||||
238B37782AC55A2C00BFC9D5 /* XPTreasureFairyWebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyWebView.m; sourceTree = "<group>"; };
|
||||
238B37792AC55A2C00BFC9D5 /* XPTreasureFairyPrizeSubView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizeSubView.m; sourceTree = "<group>"; };
|
||||
238B377A2AC55A2C00BFC9D5 /* XPTreasureFailyResultView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailyResultView.m; sourceTree = "<group>"; };
|
||||
238B377B2AC55A2C00BFC9D5 /* XPTreasureFairyDrawView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyDrawView.m; sourceTree = "<group>"; };
|
||||
238B377C2AC55A2C00BFC9D5 /* XPTreasureFairySendRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySendRecordView.m; sourceTree = "<group>"; };
|
||||
238B377D2AC55A2C00BFC9D5 /* XPTreasureFairySummonGiftView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySummonGiftView.m; sourceTree = "<group>"; };
|
||||
238B377E2AC55A2C00BFC9D5 /* XPTreasureFairySendView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySendView.h; sourceTree = "<group>"; };
|
||||
238B377F2AC55A2C00BFC9D5 /* XPTreasureFairySummonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySummonView.h; sourceTree = "<group>"; };
|
||||
238B37802AC55A2C00BFC9D5 /* XPTreasureFairyFriendView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyFriendView.h; sourceTree = "<group>"; };
|
||||
238B37812AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordSubView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingRecordSubView.m; sourceTree = "<group>"; };
|
||||
238B37822AC55A2C00BFC9D5 /* XPTreasureFairyPoolRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPoolRecordView.h; sourceTree = "<group>"; };
|
||||
238B37832AC55A2C00BFC9D5 /* XPTreasureFairyExchangeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyExchangeView.m; sourceTree = "<group>"; };
|
||||
238B37842AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingRecordView.m; sourceTree = "<group>"; };
|
||||
238B37852AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyStoreResultView.h; sourceTree = "<group>"; };
|
||||
238B37862AC55A2C00BFC9D5 /* XPTreasureFailrySummonBallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailrySummonBallView.m; sourceTree = "<group>"; };
|
||||
238B37872AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PITreasureFairyBuyElfShardView.m; sourceTree = "<group>"; };
|
||||
238B37882AC55A2C00BFC9D5 /* XPTreasureFairyTrialsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsView.m; sourceTree = "<group>"; };
|
||||
238B37892AC55A2C00BFC9D5 /* XPTreasureFairyBottomView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyBottomView.h; sourceTree = "<group>"; };
|
||||
238B378A2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsBallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsBallView.m; sourceTree = "<group>"; };
|
||||
238B378B2AC55A2C00BFC9D5 /* XPTreasureFairyShopingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingView.m; sourceTree = "<group>"; };
|
||||
238B378C2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsContentView.h; sourceTree = "<group>"; };
|
||||
238B378D2AC55A2C00BFC9D5 /* XPTreasureFairyMoreView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyMoreView.h; sourceTree = "<group>"; };
|
||||
238B378E2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsRecordView.m; sourceTree = "<group>"; };
|
||||
238B378F2AC55A2C00BFC9D5 /* XPTreasureFairyBallContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyBallContentView.h; sourceTree = "<group>"; };
|
||||
238B37902AC55A2C00BFC9D5 /* XPTreasureFairyMessageSendView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyMessageSendView.h; sourceTree = "<group>"; };
|
||||
238B37912AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardInputNumView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PITreasureFairyBuyElfShardInputNumView.m; sourceTree = "<group>"; };
|
||||
238B37922AC55A2C00BFC9D5 /* XPTreasureFairyDrawSubView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyDrawSubView.h; sourceTree = "<group>"; };
|
||||
238B37932AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardSuccessView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PITreasureFairyBuyElfShardSuccessView.m; sourceTree = "<group>"; };
|
||||
238B37942AC55A2C00BFC9D5 /* XPTreasureFairyBallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyBallView.m; sourceTree = "<group>"; };
|
||||
238B37952AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyNewSummonView.h; sourceTree = "<group>"; };
|
||||
238B37962AC55A2C00BFC9D5 /* XPTreasureFairyPrizeSubView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizeSubView.h; sourceTree = "<group>"; };
|
||||
238B37972AC55A2C00BFC9D5 /* XPTreasureFailyResultView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyResultView.h; sourceTree = "<group>"; };
|
||||
238B37982AC55A2C00BFC9D5 /* XPTreasureFairyWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyWebView.h; sourceTree = "<group>"; };
|
||||
238B37992AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizePoolView.h; sourceTree = "<group>"; };
|
||||
238B379A2AC55A2C00BFC9D5 /* XPTreasureFairyStoreView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyStoreView.m; sourceTree = "<group>"; };
|
||||
238B379B2AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultSmallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyStoreResultSmallView.h; sourceTree = "<group>"; };
|
||||
238B379C2AC55A2C00BFC9D5 /* XPTreasureFailyPrizeGiftView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyPrizeGiftView.h; sourceTree = "<group>"; };
|
||||
238B379D2AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizeRecordView.h; sourceTree = "<group>"; };
|
||||
238B379E2AC55A2C00BFC9D5 /* XPTreasureFairyMyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyMyView.h; sourceTree = "<group>"; };
|
||||
238B379F2AC55A2C00BFC9D5 /* XPTreasureFairyViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyViewController.h; sourceTree = "<group>"; };
|
||||
238B37A12AC55A2C00BFC9D5 /* Api+TreasureFairy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+TreasureFairy.m"; sourceTree = "<group>"; };
|
||||
238B37A22AC55A2C00BFC9D5 /* Api+TreasureFairy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+TreasureFairy.h"; sourceTree = "<group>"; };
|
||||
238ED8382AE2891D0014EF9D /* PIRoomEnterRedPacketView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIRoomEnterRedPacketView.h; sourceTree = "<group>"; };
|
||||
238ED8392AE2891D0014EF9D /* PIRoomEnterRedPacketView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIRoomEnterRedPacketView.m; sourceTree = "<group>"; };
|
||||
239141C42AE129F700322CA9 /* PIInputScrollingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIInputScrollingView.h; sourceTree = "<group>"; };
|
||||
@@ -2543,12 +2359,6 @@
|
||||
23E9E9B62A82200500B792F2 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
23E9EA692A83808000B792F2 /* ContentTreasureFairyModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentTreasureFairyModel.h; sourceTree = "<group>"; };
|
||||
23E9EA6A2A83808000B792F2 /* ContentTreasureFairyModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContentTreasureFairyModel.m; sourceTree = "<group>"; };
|
||||
23E9EA772A8385CB00B792F2 /* XPTreasureFairyGiftView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyGiftView.m; sourceTree = "<group>"; };
|
||||
23E9EA782A8385CC00B792F2 /* XPTreasureFairyGiftView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyGiftView.h; sourceTree = "<group>"; };
|
||||
23E9EA7A2A83977300B792F2 /* MessageContentTreasureFairyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageContentTreasureFairyView.h; sourceTree = "<group>"; };
|
||||
23E9EA7B2A83977400B792F2 /* MessageContentTreasureFairyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageContentTreasureFairyView.m; sourceTree = "<group>"; };
|
||||
23E9EA7D2A839B2F00B792F2 /* MessageTreasureFairyModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageTreasureFairyModel.h; sourceTree = "<group>"; };
|
||||
23E9EA7E2A839B2F00B792F2 /* MessageTreasureFairyModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageTreasureFairyModel.m; sourceTree = "<group>"; };
|
||||
23E9EA802A84B6FC00B792F2 /* XPMineUserInfoTagModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoTagModel.m; sourceTree = "<group>"; };
|
||||
23E9EA812A84B6FC00B792F2 /* XPSoundCardModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPSoundCardModel.h; sourceTree = "<group>"; };
|
||||
23E9EA822A84B6FC00B792F2 /* XPMineUserInfoTagModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoTagModel.h; sourceTree = "<group>"; };
|
||||
@@ -5649,8 +5459,6 @@
|
||||
18F403A72758B67900A6C548 /* Content */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
23E9EA7A2A83977300B792F2 /* MessageContentTreasureFairyView.h */,
|
||||
23E9EA7B2A83977400B792F2 /* MessageContentTreasureFairyView.m */,
|
||||
E81060D62987613E00B772F0 /* SesssionModel */,
|
||||
18F403A32758B5F900A6C548 /* MessageContentProtocol.h */,
|
||||
E885D53A2977FBFD004DC088 /* MessageTimeView.h */,
|
||||
@@ -6312,190 +6120,6 @@
|
||||
path = Api;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
238B37222AC55A2C00BFC9D5 /* TreasureFairy */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
238B37232AC55A2C00BFC9D5 /* Presenter */,
|
||||
238B37262AC55A2C00BFC9D5 /* Protocol */,
|
||||
238B37282AC55A2C00BFC9D5 /* Model */,
|
||||
238B373F2AC55A2C00BFC9D5 /* View */,
|
||||
238B37A02AC55A2C00BFC9D5 /* Api */,
|
||||
);
|
||||
path = TreasureFairy;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
238B37232AC55A2C00BFC9D5 /* Presenter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
238B37242AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.m */,
|
||||
238B37252AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.h */,
|
||||
);
|
||||
path = Presenter;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
238B37262AC55A2C00BFC9D5 /* Protocol */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
238B37272AC55A2C00BFC9D5 /* XPTreasureFailyProtocol.h */,
|
||||
);
|
||||
path = Protocol;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
238B37282AC55A2C00BFC9D5 /* Model */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
238B37292AC55A2C00BFC9D5 /* TreasureFairyConvertRecordModel.h */,
|
||||
238B372A2AC55A2C00BFC9D5 /* TreasureFairyInfoModel.h */,
|
||||
238B372B2AC55A2C00BFC9D5 /* TreasureFairyLimitModel.m */,
|
||||
238B372C2AC55A2C00BFC9D5 /* TreasureFailyKeyInfoModel.m */,
|
||||
238B372D2AC55A2C00BFC9D5 /* TreasureFailryMessageModel.h */,
|
||||
238B372E2AC55A2C00BFC9D5 /* TreasureFairySendRecordModel.m */,
|
||||
238B372F2AC55A2C00BFC9D5 /* TreasureFairyRewardModel.m */,
|
||||
238B37302AC55A2C00BFC9D5 /* TreasureFairyTrialsRecordModel.m */,
|
||||
238B37312AC55A2C00BFC9D5 /* TreasureFairyBallInfoModel.h */,
|
||||
238B37322AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.m */,
|
||||
238B37332AC55A2C00BFC9D5 /* TreasureFairyFragmentModel.h */,
|
||||
238B37342AC55A2C00BFC9D5 /* TreasureFailyKeyInfoModel.h */,
|
||||
238B37352AC55A2C00BFC9D5 /* TreasureFairyLimitModel.h */,
|
||||
238B37362AC55A2C00BFC9D5 /* TreasureFairyInfoModel.m */,
|
||||
238B37372AC55A2C00BFC9D5 /* TreasureFairyConvertRecordModel.m */,
|
||||
238B37382AC55A2C00BFC9D5 /* TreasureFailryMessageModel.m */,
|
||||
238B37392AC55A2C00BFC9D5 /* TreasureFairyBallInfoModel.m */,
|
||||
238B373A2AC55A2C00BFC9D5 /* TreasureFairyTrialsRecordModel.h */,
|
||||
238B373B2AC55A2C00BFC9D5 /* TreasureFairyRewardModel.h */,
|
||||
238B373C2AC55A2C00BFC9D5 /* TreasureFairySendRecordModel.h */,
|
||||
238B373D2AC55A2C00BFC9D5 /* TreasureFairyFragmentModel.m */,
|
||||
238B373E2AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.h */,
|
||||
);
|
||||
path = Model;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
238B373F2AC55A2C00BFC9D5 /* View */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
238B37412AC55A2C00BFC9D5 /* Cell */,
|
||||
238B37562AC55A2C00BFC9D5 /* View */,
|
||||
238B379F2AC55A2C00BFC9D5 /* XPTreasureFairyViewController.h */,
|
||||
238B37402AC55A2C00BFC9D5 /* XPTreasureFairyViewController.m */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
238B37412AC55A2C00BFC9D5 /* Cell */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
238B37442AC55A2C00BFC9D5 /* XPTreasureFailyResultGiftCell.h */,
|
||||
238B374D2AC55A2C00BFC9D5 /* XPTreasureFailyResultGiftCell.m */,
|
||||
238B374F2AC55A2C00BFC9D5 /* XPTreasureFairyFriendCell.h */,
|
||||
238B37462AC55A2C00BFC9D5 /* XPTreasureFairyFriendCell.m */,
|
||||
238B37532AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonCell.h */,
|
||||
238B374B2AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonCell.m */,
|
||||
238B37522AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolCell.h */,
|
||||
238B37472AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolCell.m */,
|
||||
238B37512AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordCell.h */,
|
||||
238B37482AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordCell.m */,
|
||||
238B37452AC55A2C00BFC9D5 /* XPTreasureFairySendRecordCell.h */,
|
||||
238B37502AC55A2C00BFC9D5 /* XPTreasureFairySendRecordCell.m */,
|
||||
238B374A2AC55A2C00BFC9D5 /* XPTreasureFairyShopingExchangeCell.h */,
|
||||
238B37542AC55A2C00BFC9D5 /* XPTreasureFairyShopingExchangeCell.m */,
|
||||
238B37432AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordCell.h */,
|
||||
238B374E2AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordCell.m */,
|
||||
238B374C2AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultCell.h */,
|
||||
238B37422AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultCell.m */,
|
||||
238B37492AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordCell.h */,
|
||||
238B37552AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordCell.m */,
|
||||
);
|
||||
path = Cell;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
238B37562AC55A2C00BFC9D5 /* View */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
238B376D2AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardInputNumView.h */,
|
||||
238B37912AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardInputNumView.m */,
|
||||
238B376B2AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardSuccessView.h */,
|
||||
238B37932AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardSuccessView.m */,
|
||||
238B37632AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardView.h */,
|
||||
238B37872AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardView.m */,
|
||||
238B37642AC55A2C00BFC9D5 /* XPTreasureFailrySummonBallView.h */,
|
||||
238B37862AC55A2C00BFC9D5 /* XPTreasureFailrySummonBallView.m */,
|
||||
238B379C2AC55A2C00BFC9D5 /* XPTreasureFailyPrizeGiftView.h */,
|
||||
238B37742AC55A2C00BFC9D5 /* XPTreasureFailyPrizeGiftView.m */,
|
||||
238B37972AC55A2C00BFC9D5 /* XPTreasureFailyResultView.h */,
|
||||
238B377A2AC55A2C00BFC9D5 /* XPTreasureFailyResultView.m */,
|
||||
238B378F2AC55A2C00BFC9D5 /* XPTreasureFairyBallContentView.h */,
|
||||
238B376F2AC55A2C00BFC9D5 /* XPTreasureFairyBallContentView.m */,
|
||||
238B376A2AC55A2C00BFC9D5 /* XPTreasureFairyBallView.h */,
|
||||
238B37942AC55A2C00BFC9D5 /* XPTreasureFairyBallView.m */,
|
||||
238B37892AC55A2C00BFC9D5 /* XPTreasureFairyBottomView.h */,
|
||||
238B37612AC55A2C00BFC9D5 /* XPTreasureFairyBottomView.m */,
|
||||
238B37922AC55A2C00BFC9D5 /* XPTreasureFairyDrawSubView.h */,
|
||||
238B376C2AC55A2C00BFC9D5 /* XPTreasureFairyDrawSubView.m */,
|
||||
238B375D2AC55A2C00BFC9D5 /* XPTreasureFairyDrawView.h */,
|
||||
238B377B2AC55A2C00BFC9D5 /* XPTreasureFairyDrawView.m */,
|
||||
238B37672AC55A2C00BFC9D5 /* XPTreasureFairyExchangeView.h */,
|
||||
238B37832AC55A2C00BFC9D5 /* XPTreasureFairyExchangeView.m */,
|
||||
238B37802AC55A2C00BFC9D5 /* XPTreasureFairyFriendView.h */,
|
||||
238B37582AC55A2C00BFC9D5 /* XPTreasureFairyFriendView.m */,
|
||||
238B37902AC55A2C00BFC9D5 /* XPTreasureFairyMessageSendView.h */,
|
||||
238B376E2AC55A2C00BFC9D5 /* XPTreasureFairyMessageSendView.m */,
|
||||
238B378D2AC55A2C00BFC9D5 /* XPTreasureFairyMoreView.h */,
|
||||
238B37712AC55A2C00BFC9D5 /* XPTreasureFairyMoreView.m */,
|
||||
238B379E2AC55A2C00BFC9D5 /* XPTreasureFairyMyView.h */,
|
||||
238B37722AC55A2C00BFC9D5 /* XPTreasureFairyMyView.m */,
|
||||
238B37952AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonView.h */,
|
||||
238B37692AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonView.m */,
|
||||
238B37822AC55A2C00BFC9D5 /* XPTreasureFairyPoolRecordView.h */,
|
||||
238B37682AC55A2C00BFC9D5 /* XPTreasureFairyPoolRecordView.m */,
|
||||
238B37992AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolView.h */,
|
||||
238B37772AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolView.m */,
|
||||
238B379D2AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordView.h */,
|
||||
238B37732AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordView.m */,
|
||||
238B37962AC55A2C00BFC9D5 /* XPTreasureFairyPrizeSubView.h */,
|
||||
238B37792AC55A2C00BFC9D5 /* XPTreasureFairyPrizeSubView.m */,
|
||||
238B375B2AC55A2C00BFC9D5 /* XPTreasureFairySendRecordView.h */,
|
||||
238B377C2AC55A2C00BFC9D5 /* XPTreasureFairySendRecordView.m */,
|
||||
238B377E2AC55A2C00BFC9D5 /* XPTreasureFairySendView.h */,
|
||||
238B375A2AC55A2C00BFC9D5 /* XPTreasureFairySendView.m */,
|
||||
238B37572AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordSubView.h */,
|
||||
238B37812AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordSubView.m */,
|
||||
238B37652AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordView.h */,
|
||||
238B37842AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordView.m */,
|
||||
238B375E2AC55A2C00BFC9D5 /* XPTreasureFairyShopingView.h */,
|
||||
238B378B2AC55A2C00BFC9D5 /* XPTreasureFairyShopingView.m */,
|
||||
238B379B2AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultSmallView.h */,
|
||||
238B37752AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultSmallView.m */,
|
||||
238B37852AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultView.h */,
|
||||
238B37662AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultView.m */,
|
||||
238B37762AC55A2C00BFC9D5 /* XPTreasureFairyStoreView.h */,
|
||||
238B379A2AC55A2C00BFC9D5 /* XPTreasureFairyStoreView.m */,
|
||||
238B375C2AC55A2C00BFC9D5 /* XPTreasureFairySummonGiftView.h */,
|
||||
238B377D2AC55A2C00BFC9D5 /* XPTreasureFairySummonGiftView.m */,
|
||||
238B377F2AC55A2C00BFC9D5 /* XPTreasureFairySummonView.h */,
|
||||
238B37592AC55A2C00BFC9D5 /* XPTreasureFairySummonView.m */,
|
||||
238B37602AC55A2C00BFC9D5 /* XPTreasureFairyTrialsBallView.h */,
|
||||
238B378A2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsBallView.m */,
|
||||
238B378C2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsContentView.h */,
|
||||
238B375F2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsContentView.m */,
|
||||
238B37702AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordView.h */,
|
||||
238B378E2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordView.m */,
|
||||
238B37622AC55A2C00BFC9D5 /* XPTreasureFairyTrialsView.h */,
|
||||
238B37882AC55A2C00BFC9D5 /* XPTreasureFairyTrialsView.m */,
|
||||
238B37982AC55A2C00BFC9D5 /* XPTreasureFairyWebView.h */,
|
||||
238B37782AC55A2C00BFC9D5 /* XPTreasureFairyWebView.m */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
238B37A02AC55A2C00BFC9D5 /* Api */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
238B37A12AC55A2C00BFC9D5 /* Api+TreasureFairy.m */,
|
||||
238B37A22AC55A2C00BFC9D5 /* Api+TreasureFairy.h */,
|
||||
);
|
||||
path = Api;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
239D0F932BFB3284002977CE /* MSRoomOnLineView */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -8243,8 +7867,6 @@
|
||||
E81060ED2987C35700B772F0 /* MessageTextClickModel.m */,
|
||||
E81060EF2987C52B00B772F0 /* MessageGuildModel.h */,
|
||||
E81060F02987C52B00B772F0 /* MessageGuildModel.m */,
|
||||
23E9EA7D2A839B2F00B792F2 /* MessageTreasureFairyModel.h */,
|
||||
23E9EA7E2A839B2F00B792F2 /* MessageTreasureFairyModel.m */,
|
||||
E81060F22987C6B200B772F0 /* MessageOpenLiveModel.h */,
|
||||
E81060F32987C6B200B772F0 /* MessageOpenLiveModel.m */,
|
||||
E81060F52987C8A700B772F0 /* MessageApplicationShareModel.h */,
|
||||
@@ -8743,8 +8365,6 @@
|
||||
4C71C6A12D06DB3D00ECCA24 /* GiftAnimationManager.m */,
|
||||
4C71C69D2D069D2B00ECCA24 /* GiftAnimationHelper.h */,
|
||||
4C71C69E2D069D2B00ECCA24 /* GiftAnimationHelper.m */,
|
||||
23E9EA782A8385CC00B792F2 /* XPTreasureFairyGiftView.h */,
|
||||
23E9EA772A8385CB00B792F2 /* XPTreasureFairyGiftView.m */,
|
||||
E8E21A9928B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.h */,
|
||||
E8E21A9A28B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.m */,
|
||||
9BC9DAED27E33B3F009EE409 /* XPRoomGiftAnimationParser.h */,
|
||||
@@ -10842,7 +10462,6 @@
|
||||
9BA812D328BF52A500783EA7 /* SendRedPacket */,
|
||||
E8412F9A2779BAC2006E1101 /* Setting */,
|
||||
2305EEE62AD677D300AD403C /* RoomPhotoAlbum */,
|
||||
238B37222AC55A2C00BFC9D5 /* TreasureFairy */,
|
||||
E8AEAEEA27141ACC0017FCE0 /* StageView */,
|
||||
9BFE0D8F289903F600F53C24 /* TaskTip */,
|
||||
180806F92729A354001FD836 /* ThemeColor+Room.h */,
|
||||
@@ -12195,7 +11814,6 @@
|
||||
E87DF4C22A42C900009C1185 /* XPNoteView.m in Sources */,
|
||||
E8AB631328ADDCF20023B0D2 /* XPMonentsTopicHeaderView.m in Sources */,
|
||||
4C84A9C22E5ED593002C10FC /* GameBannerGestureManager.m in Sources */,
|
||||
238B37B52AC55A2C00BFC9D5 /* XPTreasureFailyResultGiftCell.m in Sources */,
|
||||
23E9E9982A80C3A100B792F2 /* XPMineGuildPersonalBillStatisVC.m in Sources */,
|
||||
9B86D886281942D200494FCD /* SocialMicroView.m in Sources */,
|
||||
54E8C4D62CC78DA900646C44 /* VipSettingViewController.m in Sources */,
|
||||
@@ -12236,7 +11854,6 @@
|
||||
E89D60BD271D647A001F8895 /* XPRoomPresenter.m in Sources */,
|
||||
E8751E5C28A62A530056EF44 /* XPSailingViewController.m in Sources */,
|
||||
9B7D904D287BC5E20033A45E /* AnchorRoomScrollView.m in Sources */,
|
||||
238B37D12AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordSubView.m in Sources */,
|
||||
E8899C822785A694007944BE /* DatingInfoModel.m in Sources */,
|
||||
9BB89DC327FE7F3A00586A83 /* XPAnchorFansRelationModel.m in Sources */,
|
||||
E8AC723226F49710007D6E91 /* XPMineNotificationTableViewCell.m in Sources */,
|
||||
@@ -12250,14 +11867,12 @@
|
||||
23D321E82ADFED10006B259C /* PIRoomSendRedPacketItemVC.m in Sources */,
|
||||
E85E7B2A2A4EB0D300B6D00A /* XPGuildTimeMonthPickerView.m in Sources */,
|
||||
E87E62782A3F5907002F68C9 /* XPNewHomePartyTableViewCell.m in Sources */,
|
||||
238B37B72AC55A2C00BFC9D5 /* XPTreasureFairySendRecordCell.m in Sources */,
|
||||
E8950183282CAC6A007E459A /* XPMomentsPhotoView.m in Sources */,
|
||||
E8AC721E26F472BF007D6E91 /* XPMineSettingProtocol.h in Sources */,
|
||||
E8F63CB4298B563D00B338BA /* Api+SayHello.m in Sources */,
|
||||
E81E09C9290F71BF00A1F410 /* XPAdvertiseView.m in Sources */,
|
||||
4CD15D912D7E902800D9279F /* LoginViewController.m in Sources */,
|
||||
2305F3412AD94D5200AD403C /* XPMaskManagerVC.m in Sources */,
|
||||
238B37D32AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordView.m in Sources */,
|
||||
4CFFEFD02D3A5E130035D016 /* Api+SuperAdmin.m in Sources */,
|
||||
9BC5C91F277C902B007C8719 /* XPReleaseRadioView.m in Sources */,
|
||||
E84843AF27F59E7E0050D365 /* XPRoomPKResultView.m in Sources */,
|
||||
@@ -12288,7 +11903,6 @@
|
||||
E87DF4CC2A42C960009C1185 /* HomeBannerInfoModel.m in Sources */,
|
||||
235714892BECC38F004C81D6 /* MessageHeadlinesTextModel.m in Sources */,
|
||||
E8664EDF27E45EC7000171BA /* XPRoomPKRecordPresenter.m in Sources */,
|
||||
238B37B62AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordCell.m in Sources */,
|
||||
23FF25762ABD66B90064E904 /* XPFreeGiftsObtainView.m in Sources */,
|
||||
E81C27A226EF23490031E639 /* YUMINNNN.h in Sources */,
|
||||
E80E900C27E0358900434B90 /* XPRoomTopicAlertView.m in Sources */,
|
||||
@@ -12302,7 +11916,6 @@
|
||||
4C6E1F752CEAEC3C0073D0A3 /* ShoppingMallTagView.m in Sources */,
|
||||
E8A88D2D27E81E8700CA8837 /* RoomPKChooseUserModel.m in Sources */,
|
||||
E82325F9274E2E42003A3332 /* Api+UserCard.m in Sources */,
|
||||
238B37A62AC55A2C00BFC9D5 /* TreasureFairySendRecordModel.m in Sources */,
|
||||
E8AB632F28AE19DE0023B0D2 /* XPMomentMinePresenter.m in Sources */,
|
||||
E85E7B042A4EB0D200B6D00A /* XPGuildIncomeDetailPresenter.m in Sources */,
|
||||
54B9C6F32C9D27F3003F1CC5 /* XPMineMultipleContentTableViewCell.m in Sources */,
|
||||
@@ -12310,7 +11923,6 @@
|
||||
4C886BEB2E014AE5006F0BA7 /* MedalsPresenter.m in Sources */,
|
||||
9BD9A17C27A0EE24004186FE /* XPMineVisitorViewController.m in Sources */,
|
||||
2369F9912A89CE0E00563B48 /* PIUserSexView.m in Sources */,
|
||||
238B37D92AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordView.m in Sources */,
|
||||
239D0FAB2BFCB88D002977CE /* XPRoomFunctionContainerView.m in Sources */,
|
||||
E82109B026F1D83500FC3319 /* LoginBindPhonePresent.m in Sources */,
|
||||
E81C1B1F27705F7A0020D1E4 /* XPArrangeMicViewController.m in Sources */,
|
||||
@@ -12342,7 +11954,6 @@
|
||||
E86507EB281A88A9006951B0 /* MessageContentSkillCardView.m in Sources */,
|
||||
E8B825CA26EA1231009E8E9F /* LoginVerifCodeViewController.m in Sources */,
|
||||
189DD76226E60DDC00AB55B1 /* Api+Login.m in Sources */,
|
||||
238B37B82AC55A2C00BFC9D5 /* XPTreasureFairyShopingExchangeCell.m in Sources */,
|
||||
E8412FA62779BED1006E1101 /* XPRoomSettingTableViewCell.m in Sources */,
|
||||
9B7D80502753AA9D003DAC0C /* UITableView+NIMScrollToBottom.m in Sources */,
|
||||
E8AFF7E3298CA1E500FBDE32 /* SessionSayHelloCountModel.m in Sources */,
|
||||
@@ -12366,7 +11977,6 @@
|
||||
4C7F2A672E0BE0AB002F5058 /* FirstRechargeModel.m in Sources */,
|
||||
54F469382C29C3B400A83655 /* XPMineAlbumTableViewCell.m in Sources */,
|
||||
23E9EAA12A84C53900B792F2 /* TTNewAlertView.m in Sources */,
|
||||
238B37BC2AC55A2C00BFC9D5 /* XPTreasureFairySendView.m in Sources */,
|
||||
544B19B02CA1299500885BEB /* CPBindingAnimation.m in Sources */,
|
||||
E8DEC9A12764A5D20078CB70 /* XPRoomMoreItemModel.m in Sources */,
|
||||
E80EC81028ACD84000D133C5 /* QExtendBoardView.m in Sources */,
|
||||
@@ -12381,10 +11991,8 @@
|
||||
9BD9A17927A0EC57004186FE /* XPMineVisitorPresenter.m in Sources */,
|
||||
E8BD0F8828A9E9E400DE050D /* RoomSailingPrizeModel.m in Sources */,
|
||||
4CFFEFCD2D3A4E410035D016 /* AppOfficalManagerActionsViewController.m in Sources */,
|
||||
238B37B32AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordCell.m in Sources */,
|
||||
23CEFC512AFB8FC100576D89 /* SystemUtil.m in Sources */,
|
||||
E8659909273E800D00EE349D /* XPGiftCollectionViewFlowLayout.m in Sources */,
|
||||
238B37BD2AC55A2C00BFC9D5 /* XPTreasureFairyTrialsContentView.m in Sources */,
|
||||
E85E7B262A4EB0D300B6D00A /* XPMineGuildViewController.m in Sources */,
|
||||
E86596512701A1C000846EBD /* StatisticsService.m in Sources */,
|
||||
54E82EAB2CA9261000C931D9 /* Api+Boom.m in Sources */,
|
||||
@@ -12433,9 +12041,7 @@
|
||||
E81C1B2F277071670020D1E4 /* XPArrangeMicInfoModel.m in Sources */,
|
||||
9B0086CA27BA4F570032BD2B /* AnchorMicroView.m in Sources */,
|
||||
E83ABF00280EC45700322EE4 /* MessageContentApplicationShareView.m in Sources */,
|
||||
238B37D82AC55A2C00BFC9D5 /* XPTreasureFairyShopingView.m in Sources */,
|
||||
F1D8556F2931FC86008C418F /* XPRoomYearActivityView.m in Sources */,
|
||||
238B37C72AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordView.m in Sources */,
|
||||
E8B9843628ABA8B40022D026 /* XPMonentPublishSuccessView.m in Sources */,
|
||||
238ED83A2AE2891D0014EF9D /* PIRoomEnterRedPacketView.m in Sources */,
|
||||
23E9E9972A80C3A100B792F2 /* XPMineGuildPersonalBillRecordVC.m in Sources */,
|
||||
@@ -12456,13 +12062,11 @@
|
||||
1427218E29A75F6F00C7C423 /* HTTPMessage.m in Sources */,
|
||||
4C45C1A52E6825F300E73A44 /* XPTurboModeConstants.m in Sources */,
|
||||
239D0FE72C049D61002977CE /* MSRoomGameMsgView.m in Sources */,
|
||||
238B37BE2AC55A2C00BFC9D5 /* XPTreasureFairyBottomView.m in Sources */,
|
||||
9B42869828C1E06B009034D2 /* XPRedPacketModel.m in Sources */,
|
||||
233423D62AB0397500B1253F /* PIMessageContentServiceReplyView.m in Sources */,
|
||||
18EE3FE22750C29D00A452BF /* NIMBadgeView.m in Sources */,
|
||||
E82EE0F8272FDDFA00D15DC1 /* UserPrivacyView.m in Sources */,
|
||||
2331C1672A5EB71000E1D940 /* NobleLevelUpModel.m in Sources */,
|
||||
238B37DD2AC55A2C00BFC9D5 /* XPTreasureFairyStoreView.m in Sources */,
|
||||
9BA812E428BF70A600783EA7 /* XPRoomRedPacketPwdView.m in Sources */,
|
||||
23E9EB1B2A84D28A00B792F2 /* XPMineUserInfoEditTagView.m in Sources */,
|
||||
237B94BE2A984DA7007853E3 /* XPRoomTrumpetViewController.m in Sources */,
|
||||
@@ -12487,7 +12091,6 @@
|
||||
23E9E9A42A80DEAF00B792F2 /* XPMineGuildPersonalBillRecordContentView.m in Sources */,
|
||||
E81C1B262770663B0020D1E4 /* XPArrangeMicTableViewCell.m in Sources */,
|
||||
4CD47BCC2E61ADE400BCDA46 /* XPSocialAction.m in Sources */,
|
||||
238B37D22AC55A2C00BFC9D5 /* XPTreasureFairyExchangeView.m in Sources */,
|
||||
E81A652B2834E4F600F55894 /* XPMomentsAttentionViewController.m in Sources */,
|
||||
E8E20BEC2816A5B90033B688 /* XPMineBlackListViewController.m in Sources */,
|
||||
E8AC722F26F49610007D6E91 /* XPMineNotificationItemModel.m in Sources */,
|
||||
@@ -12497,8 +12100,6 @@
|
||||
2331C1B12A60F32D00E1D940 /* XPCandyTreeGiftView.m in Sources */,
|
||||
9B1B72BC28003E06003FACE9 /* XPAnchorPKTableViewCell.m in Sources */,
|
||||
E8E70D7A26F2F16600F03460 /* XPMinePresent.m in Sources */,
|
||||
238B37AA2AC55A2C00BFC9D5 /* TreasureFairyInfoModel.m in Sources */,
|
||||
238B37A42AC55A2C00BFC9D5 /* TreasureFairyLimitModel.m in Sources */,
|
||||
E87DF4D42A42C9B1009C1185 /* HomeRecommendRoomModel.m in Sources */,
|
||||
23E9EAB22A84C9DE00B792F2 /* XPMineUserInfoTagViewCell.m in Sources */,
|
||||
9B42869C28C1FD3D009034D2 /* XPOpenRedPacketCell.m in Sources */,
|
||||
@@ -12535,7 +12136,6 @@
|
||||
E81060E82987720F00B772F0 /* MessageUnSupportModel.m in Sources */,
|
||||
E8D34D6028082BA5009C4835 /* XPMineUserDataPresenter.m in Sources */,
|
||||
E84CBCE4284372D800D43221 /* XPRoomHalfMessageView.m in Sources */,
|
||||
238B37A52AC55A2C00BFC9D5 /* TreasureFailyKeyInfoModel.m in Sources */,
|
||||
E8EEB8F226FC2050007C6EBA /* SDPhotoBrowser.m in Sources */,
|
||||
23CEFC4F2AFB8FC100576D89 /* BSSDLayoutUtil.m in Sources */,
|
||||
E81C27AB26EF2D920031E639 /* ThirdUserInfo.m in Sources */,
|
||||
@@ -12544,17 +12144,13 @@
|
||||
E8788950273A699900BF1D57 /* ThemeColor+SendGift.m in Sources */,
|
||||
23B8D8D82B85F8B900CA472F /* PIHoemCategoryTitleCell.m in Sources */,
|
||||
E81C279D26EEEC620031E639 /* YUMIConstant.m in Sources */,
|
||||
238B37AF2AC55A2C00BFC9D5 /* XPTreasureFairyViewController.m in Sources */,
|
||||
238B37DB2AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardSuccessView.m in Sources */,
|
||||
9B734F73288A787000CBDAA9 /* XPMineAccountView.m in Sources */,
|
||||
239141C92AE1358F00322CA9 /* PIInputEntireServerScrollingView.m in Sources */,
|
||||
E8AA6EF227DF1E97009B4C2B /* XPRoomTopicPresenter.m in Sources */,
|
||||
9BF4BEBC28D4182E009CF6C2 /* XPOpenRedPacketModel.m in Sources */,
|
||||
E873EB0C2809850D0071030D /* MessageContentCustomView.m in Sources */,
|
||||
238B37D42AC55A2C00BFC9D5 /* XPTreasureFailrySummonBallView.m in Sources */,
|
||||
E884C36F2743AAC800E1EBED /* AttachmentModel.m in Sources */,
|
||||
E8AC721926F46E0B007D6E91 /* XPMineSettingItemModel.m in Sources */,
|
||||
238B37B22AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolCell.m in Sources */,
|
||||
9BE01AF02893E31700B50299 /* NewUserRechargeModel.m in Sources */,
|
||||
E82325E6274CCAFA003A3332 /* XPShareInfoModel.m in Sources */,
|
||||
2320F6392BDF732C00227EEB /* MSRoomMenuGameView.m in Sources */,
|
||||
@@ -12572,7 +12168,6 @@
|
||||
4CC312242D7987A200F57A07 /* ShareHelder.m in Sources */,
|
||||
E88863D3278ED4C0004BCFAB /* Timestamp.m in Sources */,
|
||||
23E7FE9C2BB6CD42008F6800 /* XPNobleCenterWindow.m in Sources */,
|
||||
238B37BF2AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultView.m in Sources */,
|
||||
E88863CF278EC393004BCFAB /* XPAcrossRoomPKPrizeView.m in Sources */,
|
||||
4CE3A9462D22754C003F0796 /* RechargeUserModel.m in Sources */,
|
||||
239D0FFD2C05D086002977CE /* MSRoomGameQuitGameView.m in Sources */,
|
||||
@@ -12580,7 +12175,6 @@
|
||||
E87DF5082A42CE79009C1185 /* XPInRoomRecordPresenter.m in Sources */,
|
||||
239D0FD82C047DD8002977CE /* MSTabbarRoomGameModel.m in Sources */,
|
||||
189DD6FF26E20E5900AB55B1 /* HttpRequestHelper.m in Sources */,
|
||||
238B37DE2AC55A2C00BFC9D5 /* Api+TreasureFairy.m in Sources */,
|
||||
E85E7B062A4EB0D200B6D00A /* XPGuildSearchPresenter.m in Sources */,
|
||||
E8788945273A55C200BF1D57 /* XPGiftInfoView.m in Sources */,
|
||||
9BF5192628801D4700B6BE92 /* XPAcrossRoomPKCountDownView.m in Sources */,
|
||||
@@ -12688,7 +12282,6 @@
|
||||
E85E7B432A4EB0D300B6D00A /* XPMineExchangeAuthorityHeadView.m in Sources */,
|
||||
23194DD02AD14BF000649F51 /* DDLog.m in Sources */,
|
||||
189DD73F26E21C3F00AB55B1 /* YYUtility+Carrier.m in Sources */,
|
||||
238B37AE2AC55A2C00BFC9D5 /* TreasureFairyFragmentModel.m in Sources */,
|
||||
E87AE7F9277AABE50037823A /* XPRoomTagListViewController.m in Sources */,
|
||||
18E7B26926E8D5D60064BC9B /* XCCurrentVCStackManager.m in Sources */,
|
||||
E85E7B472A4EB0D300B6D00A /* XPMineGuildManagerPerTableViewCell.m in Sources */,
|
||||
@@ -12705,10 +12298,8 @@
|
||||
23E9EA6B2A83808000B792F2 /* ContentTreasureFairyModel.m in Sources */,
|
||||
E85E7B3E2A4EB0D300B6D00A /* XPGuildIncomeRecordTableViewCell.m in Sources */,
|
||||
E8A88D2727E8193400CA8837 /* XPRoomPKSelectUserView.m in Sources */,
|
||||
238B37C12AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonView.m in Sources */,
|
||||
9B0E1C5926E77022005D4442 /* BaseNavigationController.m in Sources */,
|
||||
E8664ED927E4355C000171BA /* XPRoomPKRecordTableViewCell.m in Sources */,
|
||||
238B37AB2AC55A2C00BFC9D5 /* TreasureFairyConvertRecordModel.m in Sources */,
|
||||
4CEB9EAD2D09AA0400443480 /* SexAgeLabel.m in Sources */,
|
||||
23FF42762AA6E1480055733C /* XPHomeRecommendOtherRoomView.m in Sources */,
|
||||
142721B229A7647F00C7C423 /* XPBlankViewController.m in Sources */,
|
||||
@@ -12718,9 +12309,7 @@
|
||||
236B2E482AA07D06003967A8 /* XPLittleGameMiniStageView.m in Sources */,
|
||||
E85E7B1C2A4EB0D200B6D00A /* XPMineHallAnchorIncomeStatisViewController.m in Sources */,
|
||||
4CD15D952D7FE9E400D9279F /* LoginTypesViewController.m in Sources */,
|
||||
238B37C32AC55A2C00BFC9D5 /* XPTreasureFairyMessageSendView.m in Sources */,
|
||||
239BEEDB2AA1E058005CDA94 /* PIHoemCategoryTitleView.m in Sources */,
|
||||
238B37CA2AC55A2C00BFC9D5 /* XPTreasureFairyPrizePoolView.m in Sources */,
|
||||
E81060FD2987CC9100B772F0 /* MessageLevelUpgradeModel.m in Sources */,
|
||||
2305EF0D2AD7CC9A00AD403C /* PIRoomPhotoAlbumChooseGiftCell.m in Sources */,
|
||||
237700FA2BCCD25500D661F1 /* YYLabel+MSRTL.m in Sources */,
|
||||
@@ -12756,7 +12345,6 @@
|
||||
E81A653F283511BE00F55894 /* XPMonentsInteractiveViewController.m in Sources */,
|
||||
1464C5EA29A45FC300AF7C94 /* XPButton.m in Sources */,
|
||||
54E82EB12CA93BE200C931D9 /* BoomInfoViewController.m in Sources */,
|
||||
238B37C82AC55A2C00BFC9D5 /* XPTreasureFailyPrizeGiftView.m in Sources */,
|
||||
2331C17E2A5ECCF600E1D940 /* XPNobleCenterPayView.m in Sources */,
|
||||
E8395331276A03AE00CF2F24 /* Api+DressUp.m in Sources */,
|
||||
E8B3E8092848B871009746AB /* InviteUserInfoModel.m in Sources */,
|
||||
@@ -12819,7 +12407,6 @@
|
||||
E878B85B2835F3BF00E22DCF /* XPMonentsInteractiveTableViewCell.m in Sources */,
|
||||
9BCFB828289BAC7D0093D863 /* XPMineHeadFunctionItemLayout.m in Sources */,
|
||||
E8D34D6428084E40009C4835 /* XPMineUserInfoGiftWallViewController.m in Sources */,
|
||||
238B37CE2AC55A2C00BFC9D5 /* XPTreasureFairyDrawView.m in Sources */,
|
||||
E899C68927508F4E00E189E5 /* XPUserCardInfoModel.m in Sources */,
|
||||
9B6B3AAB278C2EA7005551EC /* XPRoomNobleLevelUpView.m in Sources */,
|
||||
E85E7B302A4EB0D300B6D00A /* XPGuildIncomeHeaderView.m in Sources */,
|
||||
@@ -12860,8 +12447,6 @@
|
||||
9B2EA7C02804037700ED17BF /* AnchorPKStageView.m in Sources */,
|
||||
4C1392992D6DB4CD00A6DFB5 /* MoliMoneyLabel.m in Sources */,
|
||||
23CEFC622AFB8FC100576D89 /* BSLogNetDetailViewController.m in Sources */,
|
||||
238B37CF2AC55A2C00BFC9D5 /* XPTreasureFairySendRecordView.m in Sources */,
|
||||
238B37C52AC55A2C00BFC9D5 /* XPTreasureFairyMoreView.m in Sources */,
|
||||
E811FFF72742367B00918544 /* XPGiftEmptyCollectionViewCell.m in Sources */,
|
||||
189DD67E26E1FD8900AB55B1 /* UIImage+Utils.m in Sources */,
|
||||
4C71C6A22D06DB3D00ECCA24 /* GiftAnimationManager.m in Sources */,
|
||||
@@ -12870,7 +12455,6 @@
|
||||
E87E62762A3F5907002F68C9 /* XPNewHomePlayTableViewCell.m in Sources */,
|
||||
186A534726FC6ED900D67B2C /* TTAlertConfig.m in Sources */,
|
||||
18F403EE2758CF2F00A6C548 /* MessageContentImage.m in Sources */,
|
||||
238B37A32AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.m in Sources */,
|
||||
18E7B31E26F0984C0064BC9B /* UserLevelVo.m in Sources */,
|
||||
23B8D8DB2B85FDDD00CA472F /* PIHomeCategoryTitleModel.m in Sources */,
|
||||
2331C1762A5EB71000E1D940 /* ThemeColor+NobleCenter.m in Sources */,
|
||||
@@ -12891,7 +12475,6 @@
|
||||
9BD63FAE277EE97A006EB744 /* XPReleaseRadioPresenter.m in Sources */,
|
||||
9B1FC3D827E49C36006EFFE0 /* XPMineDressBubbleCollectionViewCell.m in Sources */,
|
||||
9BE01AEA2893CB4400B50299 /* XPDressSearchViewController.m in Sources */,
|
||||
238B37DA2AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardInputNumView.m in Sources */,
|
||||
E8751E6B28A64C6E0056EF44 /* XPSailingRankTableViewCell.m in Sources */,
|
||||
9B1B72B528003664003FACE9 /* Api+AnchorPk.m in Sources */,
|
||||
23194DCC2AD14BF000649F51 /* DDTTYLogger.m in Sources */,
|
||||
@@ -12907,7 +12490,6 @@
|
||||
9BDA3E7D27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m in Sources */,
|
||||
E8C6FFE62754FE53004DC9F0 /* XPHomeSearchPresenter.m in Sources */,
|
||||
2320F6422BE0F53F00227EEB /* MSRoomMenuGameEmptyCell.m in Sources */,
|
||||
238B37C02AC55A2C00BFC9D5 /* XPTreasureFairyPoolRecordView.m in Sources */,
|
||||
9B2A12DE2783FEDD00CED41B /* UserVipInfoVo.m in Sources */,
|
||||
233423CA2AAEE97500B1253F /* XPCandyTreeConfirmBuyView.m in Sources */,
|
||||
E824543526F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m in Sources */,
|
||||
@@ -12929,7 +12511,6 @@
|
||||
4C5C37232D0C1C7900BA9AB8 /* RegionListViewController.m in Sources */,
|
||||
4CE746C62D9297C30094E496 /* BravoGiftTipModel.m in Sources */,
|
||||
4CCFDA032DD59211009BD2FD /* Api+EventCenter.m in Sources */,
|
||||
238B37CC2AC55A2C00BFC9D5 /* XPTreasureFairyPrizeSubView.m in Sources */,
|
||||
E81125C4296E57B7000D9804 /* QinputPhotoView.m in Sources */,
|
||||
E880B3A1278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.m in Sources */,
|
||||
9B3C181A292CE4FA003AF543 /* XPAnchorPKMatchView.m in Sources */,
|
||||
@@ -13052,7 +12633,6 @@
|
||||
E824544B26F5BBB800BE8163 /* XPMineModifPayPwdViewController.m in Sources */,
|
||||
E81C1B2227705F950020D1E4 /* Api+ArrangeMic.m in Sources */,
|
||||
E8E20BE828169BDC0033B688 /* XPMineLoginPasswordPresenter.m in Sources */,
|
||||
238B37D52AC55A2C00BFC9D5 /* PITreasureFairyBuyElfShardView.m in Sources */,
|
||||
E85E7B3F2A4EB0D300B6D00A /* XPGuildSingleRoomIncomeTableViewCell.m in Sources */,
|
||||
9B1EF3D227E81C0600554295 /* XPMineDressUpBubbleViewController.m in Sources */,
|
||||
2331C1AB2A60F32D00E1D940 /* CandyTreeResultModel.m in Sources */,
|
||||
@@ -13071,13 +12651,11 @@
|
||||
E86F6185284F4E4800E8EC9A /* RoomHalfHourRankModel.m in Sources */,
|
||||
9B208A362779B50100F9E54A /* GiftNobleInfoModel.m in Sources */,
|
||||
E80A086227F2AC190027B30C /* RoomPKDetailInfoModel.m in Sources */,
|
||||
238B37CD2AC55A2C00BFC9D5 /* XPTreasureFailyResultView.m in Sources */,
|
||||
4CAFF00A2DD342A400CD81DF /* MessagePublicEventModel.m in Sources */,
|
||||
E824545126F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.m in Sources */,
|
||||
E8098CB1282E86EF0090B9F0 /* XPMomentsContentView.m in Sources */,
|
||||
E85E3FA728B7A6F000268DC8 /* MessageContentMonentsView.m in Sources */,
|
||||
E880B3AF278BE1D800A83B0D /* Api+AcrossRoomPK.m in Sources */,
|
||||
238B37DC2AC55A2C00BFC9D5 /* XPTreasureFairyBallView.m in Sources */,
|
||||
23CEFC4B2AFB8FC100576D89 /* BSUIDemoUtil.m in Sources */,
|
||||
E8B9842D28AB77F10022D026 /* XPMonentsPublishTopicView.m in Sources */,
|
||||
239141C62AE129F700322CA9 /* PIInputScrollingView.m in Sources */,
|
||||
@@ -13110,7 +12688,6 @@
|
||||
E8AC721C26F4720B007D6E91 /* XPMineSettingPresent.m in Sources */,
|
||||
2305EF102AD8006900AD403C /* PIRoomMessagePhotoAlbumCell.m in Sources */,
|
||||
4C0B4A502E65A68800D67F73 /* XPRoomAppManagerAction.m in Sources */,
|
||||
238B37BA2AC55A2C00BFC9D5 /* XPTreasureFairyFriendView.m in Sources */,
|
||||
E81060EE2987C35700B772F0 /* MessageTextClickModel.m in Sources */,
|
||||
E87AE8C5284E1A8400CAFBB3 /* XPRoomNewUserGreetView.m in Sources */,
|
||||
E87E627B2A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.m in Sources */,
|
||||
@@ -13177,7 +12754,6 @@
|
||||
9B7B605B27BB53060070BB72 /* XPAnchorAudienceUpMicView.m in Sources */,
|
||||
4CF67BA52DF9568C00EE5A28 /* BaseModelVo.m in Sources */,
|
||||
23CEFC522AFB8FC100576D89 /* BSFileOptionModel.m in Sources */,
|
||||
238B37D02AC55A2C00BFC9D5 /* XPTreasureFairySummonGiftView.m in Sources */,
|
||||
14DCAD0E299B6AD900A7DD31 /* XPForgetPwdViewController.m in Sources */,
|
||||
23194DD12AD14BF000649F51 /* DDAbstractDatabaseLogger.m in Sources */,
|
||||
545831A02C2AEFAF00364026 /* TenMicStageView.m in Sources */,
|
||||
@@ -13197,7 +12773,6 @@
|
||||
2331C1712A5EB71000E1D940 /* XPNobleCenterTableHeadView.m in Sources */,
|
||||
181D7F212727D9DB00B7C059 /* SocialStageView.m in Sources */,
|
||||
E8AB630D28ADD8C60023B0D2 /* XPMomentTopicContainerViewController.m in Sources */,
|
||||
23E9EA7C2A83977400B792F2 /* MessageContentTreasureFairyView.m in Sources */,
|
||||
4C85DB812DCDD83E00FD9839 /* CreateEventPresenter.m in Sources */,
|
||||
E8D4DE472940473500EC788D /* GiftTwelveStarFirstModel.m in Sources */,
|
||||
547B30F92CB511700041E962 /* RoomBoomEntryView.m in Sources */,
|
||||
@@ -13207,7 +12782,6 @@
|
||||
2331C1B82A60F32D00E1D940 /* XPRoomHalfWebView.m in Sources */,
|
||||
9BFE0D8E2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m in Sources */,
|
||||
54AE7E172C9AE589006D2BE2 /* CPListViewController.m in Sources */,
|
||||
238B37A92AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.m in Sources */,
|
||||
E85E7B382A4EB0D300B6D00A /* XPMineGuildSearchMemberTableViewCell.m in Sources */,
|
||||
23D321D52ADD0F05006B259C /* Api+PhotoAlbum.m in Sources */,
|
||||
23E9EA842A84B6FD00B792F2 /* XPMineUserInfoTagModel.m in Sources */,
|
||||
@@ -13237,7 +12811,6 @@
|
||||
186A534626FC6ED900D67B2C /* TTPopup.m in Sources */,
|
||||
9B4D449328F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m in Sources */,
|
||||
E81C278C26EAFAF60031E639 /* Base64.m in Sources */,
|
||||
238B37C92AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultSmallView.m in Sources */,
|
||||
544B19B62CA14A7100885BEB /* CPGiftBanner.m in Sources */,
|
||||
E8C1CD7027D894B800376F83 /* RoomFaceTitleItemModel.m in Sources */,
|
||||
E85E7B4B2A4EB0D300B6D00A /* XPMineGuildManagerSetViewController.m in Sources */,
|
||||
@@ -13291,9 +12864,7 @@
|
||||
1464C5F929A4D00000AF7C94 /* XPIAPRechargeHeaderView.m in Sources */,
|
||||
E83645A82A40AF5400E0DBE4 /* NSBundle+Localizable.m in Sources */,
|
||||
4CAE69CC2E69A2DB00A9FC35 /* MicMidpointRectManager.m in Sources */,
|
||||
23E9EA7F2A839B2F00B792F2 /* MessageTreasureFairyModel.m in Sources */,
|
||||
E8778AFB2989034200CF139B /* XPSessionSayHelloEmptyTableViewCell.m in Sources */,
|
||||
238B37B02AC55A2C00BFC9D5 /* XPTreasureFairyStoreResultCell.m in Sources */,
|
||||
E88B5CC126FB407B00DA9178 /* XPMineUserInfoViewController.m in Sources */,
|
||||
2331C1AC2A60F32D00E1D940 /* CandyTreeRecordModel.m in Sources */,
|
||||
540EC1D32C89998500F3BF0D /* GiftComboManager.m in Sources */,
|
||||
@@ -13301,7 +12872,6 @@
|
||||
E81E09CF290F750800A1F410 /* AdvertiseModel.m in Sources */,
|
||||
2305F3472AD94E9D00AD403C /* XPMaskManagerCell.m in Sources */,
|
||||
E852D74428633A08001465ED /* MonentsCommentModel.m in Sources */,
|
||||
238B37C42AC55A2C00BFC9D5 /* XPTreasureFairyBallContentView.m in Sources */,
|
||||
E8C1CD6D27D8938C00376F83 /* XPRoomFaceTitleCollectionViewCell.m in Sources */,
|
||||
548E01C62C3F78360071C83D /* FeedBackViewController.m in Sources */,
|
||||
E8C1CD7627D8AE3D00376F83 /* XPRoomFacePresenter.m in Sources */,
|
||||
@@ -13311,11 +12881,9 @@
|
||||
E8899C7F27853B6A007944BE /* DatingMicroView.m in Sources */,
|
||||
23E9EA882A84B75900B792F2 /* XPMineUserInfoHeaderTagView.m in Sources */,
|
||||
E87DF4EC2A42CB60009C1185 /* XPSearchListTableViewCell.m in Sources */,
|
||||
238B37C22AC55A2C00BFC9D5 /* XPTreasureFairyDrawSubView.m in Sources */,
|
||||
E85E7B052A4EB0D200B6D00A /* XPClanPresenter.m in Sources */,
|
||||
E85E7BA52A4EC99300B6D00A /* XPMineChooseGiveDiamondView.m in Sources */,
|
||||
E8F63CB1298B553500B338BA /* SessionSayHelloLevelModel.m in Sources */,
|
||||
238B37BB2AC55A2C00BFC9D5 /* XPTreasureFairySummonView.m in Sources */,
|
||||
236B2E4B2AA07D06003967A8 /* XPLittleGameRoomListView.m in Sources */,
|
||||
9BE01AD428927E9C00B50299 /* XPDressUpShopListViewController.m in Sources */,
|
||||
4CD47BBE2E619F1700BCDA46 /* XPRoomMoreMenuAction.m in Sources */,
|
||||
@@ -13325,20 +12893,17 @@
|
||||
E824545926F5E65900BE8163 /* XPMineVerifIdentityView.m in Sources */,
|
||||
E841ED61280FB0BD00904808 /* ContentLevelUpgradeModel.m in Sources */,
|
||||
23CEFC632AFB8FC100576D89 /* BSRealTextView.m in Sources */,
|
||||
238B37B92AC55A2C00BFC9D5 /* XPTreasureFairyTrialsRecordCell.m in Sources */,
|
||||
236B2E542AA08757003967A8 /* LittleGameScrollStageView.m in Sources */,
|
||||
189DD74026E21C3F00AB55B1 /* YYUtility+App.m in Sources */,
|
||||
E85E7B182A4EB0D200B6D00A /* ClanDetailInfoModel.m in Sources */,
|
||||
236B2E452AA07D06003967A8 /* NSData+RW.m in Sources */,
|
||||
E85E7B272A4EB0D300B6D00A /* XPGuildSuperAdminMenuView.m in Sources */,
|
||||
189DD74526E21CCC00AB55B1 /* YYReachability.m in Sources */,
|
||||
238B37D62AC55A2C00BFC9D5 /* XPTreasureFairyTrialsView.m in Sources */,
|
||||
E82109AD26F1C8A000FC3319 /* CountDownHelper.m in Sources */,
|
||||
E878B8582835F0D300E22DCF /* MonentsInteractiveModel.m in Sources */,
|
||||
E87DF4E42A42CAD2009C1185 /* XPHomeSearchNavView.m in Sources */,
|
||||
9BD2ECCE288F829600F5CD9A /* XPMineFootPrintViewController.m in Sources */,
|
||||
9B4E920028E57A620033419E /* XPGiftHeadTypeView.m in Sources */,
|
||||
238B37C62AC55A2C00BFC9D5 /* XPTreasureFairyMyView.m in Sources */,
|
||||
54E4D5332C90658C009E1FEA /* LuckyGiftWinningBannerView.m in Sources */,
|
||||
E86A16BF2856D4D5004228B8 /* XPSessionFindNewGreetListView.m in Sources */,
|
||||
E85E7B312A4EB0D300B6D00A /* XPNewGuildIncomeHeaderView.m in Sources */,
|
||||
@@ -13352,7 +12917,6 @@
|
||||
E8F1559328129EBA00EE8C06 /* ContentSecretaryModel.m in Sources */,
|
||||
E85E7B342A4EB0D300B6D00A /* XPMineMainGuildListVC.m in Sources */,
|
||||
9BBC02912786FC570007C24B /* XPMineNobleCardTableViewCell.m in Sources */,
|
||||
238B37B12AC55A2C00BFC9D5 /* XPTreasureFairyFriendCell.m in Sources */,
|
||||
E8751E7428A665BC0056EF44 /* RoomSailingInfoModel.m in Sources */,
|
||||
E80EC81328ACD84000D133C5 /* QKeyboardManager.m in Sources */,
|
||||
4CD6FF692D673F7F00262AB7 /* AgentMessageTableViewCell.m in Sources */,
|
||||
@@ -13387,7 +12951,6 @@
|
||||
4CC6195A2CEC7770008C1EE8 /* MyDressingDataPresent.m in Sources */,
|
||||
E84150BF27747BD300A7F548 /* Api+FirstRecharge.m in Sources */,
|
||||
E84B0E422727EE0A008818C6 /* XPRoomMessageHeaderView.m in Sources */,
|
||||
238B37AC2AC55A2C00BFC9D5 /* TreasureFailryMessageModel.m in Sources */,
|
||||
2331C1812A5ECD3800E1D940 /* XPNobleCenterPayCell.m in Sources */,
|
||||
E852D73B286317F0001465ED /* XPMomentsDetailViewController.m in Sources */,
|
||||
2331C1692A5EB71000E1D940 /* XPNobleSettingViewController.m in Sources */,
|
||||
@@ -13396,7 +12959,6 @@
|
||||
E81060D9298761A300B772F0 /* MessageBaseModel.m in Sources */,
|
||||
E890BC10273D23F00007C46B /* GiftInfoModel.m in Sources */,
|
||||
E8A30BEB28534A96003B4873 /* XPSessionFindNewFiltrateView.m in Sources */,
|
||||
238B37AD2AC55A2C00BFC9D5 /* TreasureFairyBallInfoModel.m in Sources */,
|
||||
E84BF7E0277C869A00EF8877 /* XPRoomOnLineViewController.m in Sources */,
|
||||
186A534826FC6ED900D67B2C /* TTAlertButtonConfig.m in Sources */,
|
||||
236B2E422AA07D06003967A8 /* SudCommon.m in Sources */,
|
||||
@@ -13410,7 +12972,6 @@
|
||||
9BD2ECDA288F867000F5CD9A /* XPMineFootPrintTableViewCell.m in Sources */,
|
||||
545888332C1AFFB500897585 /* XPRoomPKPanelView.m in Sources */,
|
||||
E8395339276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.m in Sources */,
|
||||
238B37CB2AC55A2C00BFC9D5 /* XPTreasureFairyWebView.m in Sources */,
|
||||
E875FA8727D619820086ED04 /* ClientDataModel.m in Sources */,
|
||||
9BFB10222897D68400B3985E /* XPTabAnchorCardModel.m in Sources */,
|
||||
E8B846DC26FDE24300A777FE /* RechargeListModel.m in Sources */,
|
||||
@@ -13452,7 +13013,6 @@
|
||||
E8788934273A53D700BF1D57 /* XPSendGiftView.m in Sources */,
|
||||
234E50AF2BF7352C005CB6D5 /* NSTextAttachment+MSImage.m in Sources */,
|
||||
E896EF9C2771AE6B00AD2CC1 /* XPMineFansViewController.m in Sources */,
|
||||
238B37A72AC55A2C00BFC9D5 /* TreasureFairyRewardModel.m in Sources */,
|
||||
54B9C6E72C9C2CA1003F1CC5 /* XPMineGuildTableViewCell.m in Sources */,
|
||||
E84B0E462727EF9D008818C6 /* XPRoomMessageParser.m in Sources */,
|
||||
23E9E9A12A80C7E000B792F2 /* XPMineGuildPersonalBillRecordModel.m in Sources */,
|
||||
@@ -13497,7 +13057,6 @@
|
||||
540EC1D02C89925F00F3BF0D /* GiftComboView.m in Sources */,
|
||||
E81060DF29876D3A00B772F0 /* MessageTimeModel.m in Sources */,
|
||||
E81A65422835120200F55894 /* XPMonentsInteractivePresenter.m in Sources */,
|
||||
238B37A82AC55A2C00BFC9D5 /* TreasureFairyTrialsRecordModel.m in Sources */,
|
||||
239D0FD52C0475E6002977CE /* MSTabbarBeginGameView.m in Sources */,
|
||||
E80EC80C28ACD84000D133C5 /* UITextView+QEmotion.m in Sources */,
|
||||
E8664EE627E482EF000171BA /* RoomPKTeamModel.m in Sources */,
|
||||
@@ -13526,14 +13085,12 @@
|
||||
14EB640D29A5C16000A4A00B /* XPMomentsSimpleDetailNav.m in Sources */,
|
||||
E80EC80E28ACD84000D133C5 /* QKeyboardBaseManager.m in Sources */,
|
||||
54C389672C24464600FD47B1 /* HomeMineRoomModel.m in Sources */,
|
||||
23E9EA792A8385CC00B792F2 /* XPTreasureFairyGiftView.m in Sources */,
|
||||
149839C7299E0B9F00F82CBF /* XPMomentListCollectionViewCell.m in Sources */,
|
||||
4C6E1F792CEB12780073D0A3 /* UIView+GradientLayer.m in Sources */,
|
||||
236BA4982BB6AFED00C7C73A /* PINoblePrivilegeEmptyCell.m in Sources */,
|
||||
E88C729C2828F37D0047FB2B /* XPRoomMusicLibraryEmptyTableViewCell.m in Sources */,
|
||||
E85E7B0A2A4EB0D200B6D00A /* XPGuildManagerPerPresenter.m in Sources */,
|
||||
9B85F3562806DD8A006EDF51 /* XPAnchorPKFinishView.m in Sources */,
|
||||
238B37D72AC55A2C00BFC9D5 /* XPTreasureFairyTrialsBallView.m in Sources */,
|
||||
E85E7BA12A4EC99300B6D00A /* XPMineGiveDiamondModel.m in Sources */,
|
||||
E85E7B232A4EB0D300B6D00A /* XPMineClanViewController.m in Sources */,
|
||||
E89DA67227008D59008483C1 /* WalletInfoModel.m in Sources */,
|
||||
@@ -13546,7 +13103,6 @@
|
||||
E80CBDEA27D0C53F001E1EC2 /* XPWeakTimer.m in Sources */,
|
||||
E85E7BAC2A4EC99300B6D00A /* XPMineGiveDiamondDetailsView.m in Sources */,
|
||||
4C51B09F2DA50FDA00D8DFB5 /* CPRelationshipChangeView.m in Sources */,
|
||||
238B37B42AC55A2C00BFC9D5 /* XPTreasureFairyNewSummonCell.m in Sources */,
|
||||
E85E7B152A4EB0D200B6D00A /* ClanInfoModel.m in Sources */,
|
||||
189DD55026DE37F900AB55B1 /* MvpViewController.m in Sources */,
|
||||
E81366F326F0B7C80076364C /* LoginFullInfoViewController.m in Sources */,
|
||||
|
@@ -9,7 +9,7 @@
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "图层 18 拷贝@3x.png",
|
||||
"filename" : "组 1@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 26 KiB |
BIN
YuMi/Assets.xcassets/1.0.17/room_boom_progress_bar_bg.imageset/组 1@3x.png
vendored
Normal file
BIN
YuMi/Assets.xcassets/1.0.17/room_boom_progress_bar_bg.imageset/组 1@3x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 KiB |
@@ -106,9 +106,6 @@
|
||||
|
||||
self.configInfo = model;
|
||||
|
||||
// 通知公共房间管理器配置已更新
|
||||
[[PublicRoomManager sharedManager] updateConfig];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadAfterLoadConfig" object:nil];
|
||||
|
||||
[self requestFaceTabNewList];
|
||||
|
@@ -56,7 +56,7 @@ static int const showtime = 3;
|
||||
[self addSubview:self.countdownButton];
|
||||
[self.countdownButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.trailing.mas_equalTo(-24);
|
||||
make.width.mas_equalTo(60);
|
||||
// make.width.mas_equalTo(60);
|
||||
make.height.mas_equalTo(30);
|
||||
make.top.mas_equalTo(40);
|
||||
}];
|
||||
@@ -279,6 +279,8 @@ static int const showtime = 3;
|
||||
[_countdownButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
||||
_countdownButton.backgroundColor = [UIColor colorWithRed:38 /255.0 green:38 /255.0 blue:38 /255.0 alpha:0.6];
|
||||
_countdownButton.layer.cornerRadius = 4;
|
||||
_countdownButton.contentEdgeInsets = UIEdgeInsetsMake(0, 8, 0, 8);
|
||||
[_countdownButton sizeToFit];
|
||||
}
|
||||
return _countdownButton;
|
||||
}
|
||||
|
@@ -253,12 +253,6 @@
|
||||
|
||||
// 🔧 新增:卡顿计数逻辑
|
||||
[self handleLagCountWithDuration:duration stackTrace:stackTrace];
|
||||
|
||||
// TODO: 触发卡顿通知逻辑
|
||||
// 1. 记录卡顿信息到本地日志
|
||||
// 2. 发送本地通知
|
||||
// 3. 记录到性能监控系统
|
||||
// 4. 触发用户反馈机制
|
||||
}
|
||||
|
||||
#pragma mark - 卡顿计数逻辑
|
||||
|
@@ -116,8 +116,9 @@ typedef NS_ENUM(NSUInteger, LoginType) {
|
||||
make.trailing.mas_equalTo(self.view).offset(-16);
|
||||
make.top.mas_equalTo(self.view).offset(kStatusBarHeight);
|
||||
make.height.mas_equalTo(22);
|
||||
make.width.mas_greaterThanOrEqualTo(84);
|
||||
// make.width.mas_lessThanOrEqualTo(200); // 设置最大宽度防止过长
|
||||
}];
|
||||
[self.view setNeedsLayout];
|
||||
}
|
||||
|
||||
- (void)setupBottomPolicy {
|
||||
@@ -434,14 +435,20 @@ typedef NS_ENUM(NSUInteger, LoginType) {
|
||||
UIButton *feedBackButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[feedBackButton setTitle:YMLocalizedString(@"XPMineFeedbackViewController0") forState:UIControlStateNormal];
|
||||
[feedBackButton setTitleColor:UIColorFromRGB(0x313131) forState:UIControlStateNormal];
|
||||
[feedBackButton setContentEdgeInsets:UIEdgeInsetsMake(0, 10, 0, 10)];
|
||||
feedBackButton.titleLabel.font = kFontRegular(12);
|
||||
// 设置文本自适应,防止截断
|
||||
// feedBackButton.titleLabel.adjustsFontSizeToFitWidth = YES;
|
||||
// feedBackButton.titleLabel.minimumScaleFactor = 0.8;
|
||||
// feedBackButton.titleLabel.numberOfLines = 1;
|
||||
[feedBackButton setBackgroundImage:[[UIImage imageWithColor:[UIColor whiteColor]] imageByApplyingAlpha:0.5]
|
||||
forState:UIControlStateNormal];
|
||||
[feedBackButton setCornerRadius:10.5];
|
||||
[feedBackButton addTarget:self
|
||||
action:@selector(didTapFeedback)
|
||||
forControlEvents:UIControlEventTouchUpInside];
|
||||
[feedBackButton enlargeTouchArea:UIEdgeInsetsMake(10, 10, 10, 10)];
|
||||
[feedBackButton sizeToFit];
|
||||
// [feedBackButton enlargeTouchArea:UIEdgeInsetsMake(10, 10, 10, 10)];
|
||||
return feedBackButton;
|
||||
}
|
||||
|
||||
|
@@ -106,7 +106,7 @@ typedef NS_ENUM(NSUInteger, CustomMessageType) {
|
||||
///免费礼物倒计时重置时间
|
||||
CustomMessageType_Free_Gift_Star_Reset_Time = 96,
|
||||
///精灵密藏
|
||||
CustomMessageType_Treasure_Fairy = 97,
|
||||
// CustomMessageType_Treasure_Fairy = 97,
|
||||
///寻爱之旅
|
||||
CustomMessageType_Look_Love = 98,
|
||||
///联系客服
|
||||
@@ -646,40 +646,40 @@ typedef NS_ENUM(NSUInteger, CustomMessageGraffitiStarKitchen) {
|
||||
Custom_Message_Sub_Star_Kitchen_FullScreen = 1042,
|
||||
};
|
||||
///夺宝精灵 CustomMessageType_Treasure_Fairy = 97,
|
||||
typedef NS_ENUM(NSInteger, CustomMessageTreasureFairy) {
|
||||
///精灵赠送
|
||||
Custom_Message_Sub_Treasure_Fairy_Send_Fairy = 9701,
|
||||
///索要精灵
|
||||
Custom_Message_Sub_Treasure_Fairy_Ask_Fairy = 9702,
|
||||
|
||||
|
||||
///抽奖礼物
|
||||
///抽奖L1礼物
|
||||
Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L1 = 9711,
|
||||
///抽奖L2礼物
|
||||
Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L2 = 9712,
|
||||
///抽奖L3礼物
|
||||
Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L3 = 9713,
|
||||
///抽奖L4礼物
|
||||
Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L4 = 9714,
|
||||
///抽奖L5礼物
|
||||
Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5 = 9715,
|
||||
|
||||
///抽奖获得的精灵球的
|
||||
/// 抽奖L1精灵球
|
||||
Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L1 = 9721,
|
||||
/// 抽奖L2精灵球
|
||||
Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L2 = 9722,
|
||||
/// 抽奖L3精灵球
|
||||
Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L3 = 9723,
|
||||
///精灵球召唤礼物
|
||||
///召唤L1
|
||||
Custom_Message_Sub_Treasure_Fairy_Convert_L1 = 9731,
|
||||
///召唤L2
|
||||
Custom_Message_Sub_Treasure_Fairy_Convert_L2 = 9732,
|
||||
///召唤L3
|
||||
Custom_Message_Sub_Treasure_Fairy_Convert_L3 = 9733,
|
||||
};
|
||||
//typedef NS_ENUM(NSInteger, CustomMessageTreasureFairy) {
|
||||
// ///精灵赠送
|
||||
// Custom_Message_Sub_Treasure_Fairy_Send_Fairy = 9701,
|
||||
// ///索要精灵
|
||||
// Custom_Message_Sub_Treasure_Fairy_Ask_Fairy = 9702,
|
||||
//
|
||||
//
|
||||
// ///抽奖礼物
|
||||
// ///抽奖L1礼物
|
||||
// Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L1 = 9711,
|
||||
// ///抽奖L2礼物
|
||||
// Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L2 = 9712,
|
||||
// ///抽奖L3礼物
|
||||
// Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L3 = 9713,
|
||||
// ///抽奖L4礼物
|
||||
// Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L4 = 9714,
|
||||
// ///抽奖L5礼物
|
||||
// Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5 = 9715,
|
||||
//
|
||||
// ///抽奖获得的精灵球的
|
||||
// /// 抽奖L1精灵球
|
||||
// Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L1 = 9721,
|
||||
// /// 抽奖L2精灵球
|
||||
// Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L2 = 9722,
|
||||
// /// 抽奖L3精灵球
|
||||
// Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L3 = 9723,
|
||||
// ///精灵球召唤礼物
|
||||
// ///召唤L1
|
||||
// Custom_Message_Sub_Treasure_Fairy_Convert_L1 = 9731,
|
||||
// ///召唤L2
|
||||
// Custom_Message_Sub_Treasure_Fairy_Convert_L2 = 9732,
|
||||
// ///召唤L3
|
||||
// Custom_Message_Sub_Treasure_Fairy_Convert_L3 = 9733,
|
||||
//};
|
||||
|
||||
///first = CustomMessageType_Candy_Tree
|
||||
typedef NS_ENUM(NSUInteger, CustomMessageSubLookLove) {
|
||||
|
@@ -108,7 +108,6 @@
|
||||
if (code == 200) {
|
||||
RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:data.data];
|
||||
if (roomInfo.uid && self.userInfo.uid && self.userInfo.nick.length > 0) {
|
||||
//退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
if ([obj isKindOfClass:[XPRoomViewController class]]) {
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO];
|
||||
|
@@ -91,7 +91,6 @@
|
||||
- (void)enterButtonAction:(UIButton *)sender {
|
||||
if (self.shareInfo.routerValue.length > 0) {
|
||||
UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC;
|
||||
//退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合
|
||||
[controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
if ([obj isKindOfClass:[XPRoomViewController class]]) {
|
||||
[controllerView.navigationController popToRootViewControllerAnimated:NO];
|
||||
|
@@ -96,7 +96,6 @@
|
||||
- (void)backViewTapRecognozer {
|
||||
if (self.userInfo.uid.length > 0) {
|
||||
UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC;
|
||||
//退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合
|
||||
[controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
if ([obj isKindOfClass:[XPRoomViewController class]]) {
|
||||
[controllerView.navigationController popToRootViewControllerAnimated:NO];
|
||||
|
@@ -143,7 +143,6 @@
|
||||
}
|
||||
- (void)event:(UITapGestureRecognizer *)gesture {
|
||||
UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC;
|
||||
//退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合
|
||||
[controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
if ([obj isKindOfClass:[XPRoomViewController class]]) {
|
||||
[controllerView.navigationController popToRootViewControllerAnimated:NO];
|
||||
|
@@ -113,7 +113,6 @@
|
||||
{
|
||||
if (value.length > 0) {
|
||||
UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC;
|
||||
//退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合
|
||||
[controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
if ([obj isKindOfClass:[XPRoomViewController class]]) {
|
||||
[controllerView.navigationController popToRootViewControllerAnimated:NO];
|
||||
|
@@ -1,16 +0,0 @@
|
||||
//
|
||||
// MessageContentTreasureFairyView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/23.
|
||||
//
|
||||
|
||||
#import "MessageContentCustomView.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MessageContentTreasureFairyView : MessageContentCustomView
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,154 +0,0 @@
|
||||
//
|
||||
// MessageContentTreasureFairyView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/23.
|
||||
//
|
||||
|
||||
#import "MessageContentTreasureFairyView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "NetImageView.h"
|
||||
#import "NSObject+MJExtension.h"
|
||||
#import "TTPopup.h"
|
||||
#import "MessageTreasureFairyModel.h"
|
||||
///Model
|
||||
#import "TreasureFairyBallInfoModel.h"
|
||||
#import "ContentTreasureFairyModel.h"
|
||||
///View
|
||||
#import "XPTreasureFairyMessageSendView.h"
|
||||
@interface MessageContentTreasureFairyView ()
|
||||
///显示内容
|
||||
@property (nonatomic,strong) NetImageView *ballImageView;
|
||||
///
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///显示标题
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
///查看
|
||||
@property (nonatomic,strong) UILabel *checkLabel;
|
||||
///消息
|
||||
@property (nonatomic,strong) NIMMessage *message;
|
||||
@property (nonatomic,strong) ContentTreasureFairyModel *fairyInfo;
|
||||
@end
|
||||
|
||||
@implementation MessageContentTreasureFairyView
|
||||
+ (CGFloat)measureHeight:(NIMMessage *)message {
|
||||
|
||||
return 78 + CONTENT_PADDING_V_TOTAL;
|
||||
}
|
||||
- (void)initSubViews {
|
||||
[super initSubViews];
|
||||
[self addSubview:self.backView];
|
||||
|
||||
[self.backView addSubview:self.ballImageView];
|
||||
[self.backView addSubview:self.stackView];
|
||||
[self.stackView addArrangedSubview:self.titleLabel];
|
||||
[self.stackView addArrangedSubview:self.checkLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[super initSubViewConstraints];
|
||||
[self.backView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.bottom.trailing.equalTo(self);
|
||||
make.leading.mas_equalTo(self).offset(10);
|
||||
make.height.mas_equalTo(78);
|
||||
make.width.mas_equalTo(235);
|
||||
}];
|
||||
|
||||
[self.ballImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(62, 62));
|
||||
make.leading.mas_equalTo(self.backView);
|
||||
make.centerY.mas_equalTo(self.backView);
|
||||
}];
|
||||
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(self.ballImageView.mas_trailing).offset(12);
|
||||
make.centerY.mas_equalTo(self.ballImageView);
|
||||
make.trailing.mas_equalTo(self.backView).offset(-10);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)render:(MessageTreasureFairyModel *)model {
|
||||
self.message = model.message;
|
||||
NIMCustomObject *obj = (NIMCustomObject *)model.message.messageObject;
|
||||
AttachmentModel * attach = (AttachmentModel *)obj.attachment;
|
||||
ContentTreasureFairyModel * info;
|
||||
if (model.message.localExt) {
|
||||
info = [ContentTreasureFairyModel modelWithDictionary:model.message.localExt];
|
||||
} else {
|
||||
info = [ContentTreasureFairyModel modelWithDictionary:attach.data];
|
||||
}
|
||||
self.fairyInfo = info;
|
||||
self.checkLabel.hidden = (attach.second == Custom_Message_Sub_Treasure_Fairy_Send_Fairy || info.isSended || self.message.isOutgoingMsg);
|
||||
self.ballImageView.imageUrl = info.elfPicUrl;
|
||||
self.titleLabel.text = info.msgContent;
|
||||
}
|
||||
|
||||
- (void)checkRecognizer {
|
||||
if (!self.titleLabel.isHidden) {
|
||||
XPTreasureFairyMessageSendView * view = [[XPTreasureFairyMessageSendView alloc] init];
|
||||
view.fairyInfo = self.fairyInfo;
|
||||
@kWeakify(self);
|
||||
view.finish = ^(BOOL success,ContentTreasureFairyModel * fairyInfo) {
|
||||
@kStrongify(self);
|
||||
fairyInfo.isSended = YES;
|
||||
self.fairyInfo.isSended = fairyInfo;
|
||||
self.message.localExt = [self.fairyInfo model2dictionary];
|
||||
[[NIMSDK sharedSDK].conversationManager updateMessage:self.message forSession:self.message.session completion:^(NSError * _Nullable error) {
|
||||
if (self.customMessageDelegate && [self.customMessageDelegate respondsToSelector:@selector(updateMessageSuccess:)]) {
|
||||
[self.customMessageDelegate updateMessageSuccess:self.message];
|
||||
}
|
||||
}];
|
||||
};
|
||||
[TTPopup popupView:view style:TTPopupStyleAlert];
|
||||
}
|
||||
}
|
||||
|
||||
- (NetImageView *)ballImageView {
|
||||
if (!_ballImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_ballImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_ballImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
_ballImageView.layer.masksToBounds = YES;
|
||||
}
|
||||
return _ballImageView;
|
||||
}
|
||||
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisVertical;
|
||||
_stackView.distribution = UIStackViewDistributionFill;
|
||||
_stackView.alignment = UIStackViewAlignmentFill;
|
||||
_stackView.spacing = 10;
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.font = [UIFont systemFontOfSize:13];
|
||||
_titleLabel.textColor = [DJDKMIMOMColor mainTextColor];
|
||||
_titleLabel.numberOfLines = 2;
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)checkLabel {
|
||||
if (!_checkLabel) {
|
||||
_checkLabel = [[UILabel alloc] init];
|
||||
_checkLabel.text = YMLocalizedString(@"MessageContentTreasureFairyView0");
|
||||
_checkLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#5FCCE4"];
|
||||
_checkLabel.font = [UIFont systemFontOfSize:13];
|
||||
_checkLabel.textAlignment = NSTextAlignmentLeft;
|
||||
_checkLabel.userInteractionEnabled = YES;
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(checkRecognizer)];
|
||||
[_checkLabel addGestureRecognizer:tap];
|
||||
}
|
||||
return _checkLabel;
|
||||
}
|
||||
|
||||
@end
|
@@ -1,16 +0,0 @@
|
||||
//
|
||||
// MessageTreasureFairyModel.h
|
||||
// YuMi
|
||||
//
|
||||
// Created by duoban on 2023/8/9.
|
||||
//
|
||||
|
||||
#import "MessageBaseModel.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MessageTreasureFairyModel : MessageBaseModel
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,28 +0,0 @@
|
||||
//
|
||||
// MessageTreasureFairyModel.m
|
||||
// YuMi
|
||||
//
|
||||
// Created by duoban on 2023/8/9.
|
||||
//
|
||||
|
||||
#import "MessageTreasureFairyModel.h"
|
||||
|
||||
#import "AttachmentModel.h"
|
||||
#import "GuildMessageModel.h"
|
||||
#import "DJDKMIMOMColor.h"
|
||||
#import "NSObject+MJExtension.h"
|
||||
@implementation MessageTreasureFairyModel
|
||||
- (instancetype)initWithMessage:(NIMMessage *)message {
|
||||
if (self = [super initWithMessage:message]) {
|
||||
self.messageType = SessionMessageType_Custom;
|
||||
self.height = 78 + CONTENT_PADDING_V_TOTAL;
|
||||
self.contentSize = CGSizeMake(CONTENT_WIDTH_MAX, 78 + 20 + 15 + 15);
|
||||
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSString *)cellContent:(MessageBaseModel *)model {
|
||||
return @"MessageContentTreasureFairyView";
|
||||
}
|
||||
@end
|
@@ -55,7 +55,6 @@
|
||||
#import "MessageLevelUpgradeModel.h"
|
||||
#import "MessageRevokeModel.h"
|
||||
#import "MessageTipsModel.h"
|
||||
#import "MessageTreasureFairyModel.h"
|
||||
#import "MessageCPNotifyModel.h"
|
||||
#import "MessagePublicEventModel.h"
|
||||
///View
|
||||
@@ -343,12 +342,6 @@
|
||||
model = [[MessageRedPacketModel alloc] initWithMessage:message];
|
||||
}
|
||||
break;
|
||||
case CustomMessageType_Treasure_Fairy:
|
||||
if (second == Custom_Message_Sub_Treasure_Fairy_Ask_Fairy ||
|
||||
second == Custom_Message_Sub_Treasure_Fairy_Send_Fairy) {
|
||||
model = [[MessageTreasureFairyModel alloc] initWithMessage:message];
|
||||
}
|
||||
break;
|
||||
case CustomMessageType_Service_Reply:
|
||||
model = [[PIMessageContentServiceReplyModel alloc] initWithMessage:message];
|
||||
break;
|
||||
|
@@ -270,8 +270,13 @@
|
||||
if (!_attentionButton) {
|
||||
_attentionButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
_attentionButton.titleLabel.font = kFontMedium(14);
|
||||
_attentionButton.titleLabel.numberOfLines = 2;
|
||||
_attentionButton.titleLabel.numberOfLines = 2; // 允许多行
|
||||
_attentionButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
|
||||
_attentionButton.titleLabel.adjustsFontSizeToFitWidth = YES; // 关键
|
||||
_attentionButton.titleLabel.minimumScaleFactor = 0.1; // 最小允许缩到 50%
|
||||
_attentionButton.titleLabel.lineBreakMode = NSLineBreakByClipping;
|
||||
_attentionButton.titleLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_attentionButton.contentEdgeInsets = UIEdgeInsetsMake(0, 8, 0, 8);
|
||||
|
||||
[_attentionButton setTitle:YMLocalizedString(@"XPMineFansTableViewCell1") forState:UIControlStateNormal];
|
||||
[_attentionButton setTitleColor:UIColorFromRGB(0xFF8C03) forState:UIControlStateNormal];
|
||||
@@ -285,6 +290,8 @@
|
||||
borderWidth:1
|
||||
borderColor:UIColorFromRGB(0xFF8C03)];
|
||||
[_attentionButton setCornerRadius:15];
|
||||
|
||||
|
||||
}
|
||||
return _attentionButton;
|
||||
}
|
||||
|
@@ -100,6 +100,8 @@
|
||||
_titleLabel.font = kFontRegular(14);
|
||||
_titleLabel.textColor = UIColorFromRGB(0x313131);
|
||||
[_titleLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
|
||||
_titleLabel.adjustsFontSizeToFitWidth = YES;
|
||||
_titleLabel.numberOfLines = 0;
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
|
@@ -190,7 +190,6 @@
|
||||
|
||||
#pragma mark - XPMineAttentionTableViewCellDelegate
|
||||
- (void)xPMineAttentionTableViewCell:(XPMineAttentionTableViewCell *)view findUser:(NSString *)uid {
|
||||
//TODO:退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合
|
||||
[self.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
if ([obj isKindOfClass:[XPRoomViewController class]]) {
|
||||
[self.navigationController popToRootViewControllerAnimated:NO];
|
||||
|
@@ -483,11 +483,11 @@ TZImagePickerControllerDelegate>
|
||||
|
||||
// 检查视频时长(头像视频应该在5秒内)
|
||||
NSTimeInterval duration = asset.duration;
|
||||
if (duration > 555.0) {
|
||||
if (duration > 5.0) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
@kStrongify(self);
|
||||
[self hideHUD];
|
||||
[self showErrorToast:@"视频时长不能超过555秒"];
|
||||
[self showErrorToast:YMLocalizedString(@"20.20.51_text_30")];
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@@ -337,7 +337,6 @@ HWDMP4PlayDelegate>
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
return;
|
||||
}
|
||||
//退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合
|
||||
[self.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
if ([obj isKindOfClass:[XPRoomViewController class]]) {
|
||||
[self.navigationController popToRootViewControllerAnimated:NO];
|
||||
|
@@ -33,7 +33,7 @@
|
||||
AudioVolumeParams.enableVadDetection = YES;
|
||||
AudioVolumeParams.enablePitchCalculation = YES;
|
||||
AudioVolumeParams.enableSpectrumCalculation = YES;
|
||||
[self.engine enableAudioVolumeEvaluation:900 withParams:AudioVolumeParams];
|
||||
[self.engine enableAudioVolumeEvaluation:300 withParams:AudioVolumeParams];
|
||||
[TRTCCloud setConsoleEnabled:NO];
|
||||
[_engine addDelegate:self];
|
||||
}
|
||||
|
@@ -139,6 +139,10 @@ typedef NS_ENUM(NSInteger, BackMusicPlayState) {
|
||||
- (NSInteger)loadUserSound;
|
||||
|
||||
@property (nonatomic,assign) BOOL broadcast;
|
||||
|
||||
// MARK: 指向实际使用的 stageView
|
||||
- (void)updateDelegate:(id<RtcDelegate> _Nullable)delegate;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -194,6 +194,10 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey;
|
||||
_engineDelegate = delegate;
|
||||
}
|
||||
|
||||
- (void)updateDelegate:(id<RtcDelegate> _Nullable)delegate {
|
||||
_engineDelegate = delegate;
|
||||
}
|
||||
|
||||
- (id<RtcInterface>)engine {
|
||||
if (!_engine) {
|
||||
_engine = [[TRTCRtcImpl alloc] initWithDelegate:self];
|
||||
|
@@ -1144,22 +1144,22 @@
|
||||
|
||||
- (UILabel *)ratioLabel {
|
||||
if (!_ratioLabel) {
|
||||
_ratioLabel = [UILabel labelInitWithText:@"0/0" font:kFontMedium(14) textColor:[UIColor blackColor]];
|
||||
_ratioLabel = [UILabel labelInitWithText:@"0/0" font:kFontMedium(12) textColor:UIColorFromRGB(0x292601)];
|
||||
_ratioLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_ratioLabel.transform = CGAffineTransformMakeRotation(M_PI_2); // 顺时针旋转90度
|
||||
|
||||
// 添加发光效果
|
||||
_ratioLabel.layer.shadowColor = [UIColor whiteColor].CGColor;
|
||||
_ratioLabel.layer.shadowOffset = CGSizeZero;
|
||||
_ratioLabel.layer.shadowRadius = 3.0;
|
||||
_ratioLabel.layer.shadowOpacity = 0.8;
|
||||
_ratioLabel.layer.masksToBounds = NO;
|
||||
|
||||
// 添加文字描边效果
|
||||
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"0/0"];
|
||||
[attributedString addAttribute:NSStrokeColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, attributedString.length)];
|
||||
[attributedString addAttribute:NSStrokeWidthAttributeName value:@(-2.0) range:NSMakeRange(0, attributedString.length)];
|
||||
_ratioLabel.attributedText = attributedString;
|
||||
// // 添加发光效果
|
||||
// _ratioLabel.layer.shadowColor = [UIColor whiteColor].CGColor;
|
||||
// _ratioLabel.layer.shadowOffset = CGSizeZero;
|
||||
// _ratioLabel.layer.shadowRadius = 3.0;
|
||||
// _ratioLabel.layer.shadowOpacity = 0.8;
|
||||
// _ratioLabel.layer.masksToBounds = NO;
|
||||
//
|
||||
// // 添加文字描边效果
|
||||
// NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"0/0"];
|
||||
// [attributedString addAttribute:NSStrokeColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, attributedString.length)];
|
||||
// [attributedString addAttribute:NSStrokeWidthAttributeName value:@(-2.0) range:NSMakeRange(0, attributedString.length)];
|
||||
// _ratioLabel.attributedText = attributedString;
|
||||
}
|
||||
return _ratioLabel;
|
||||
}
|
||||
|
@@ -125,19 +125,11 @@
|
||||
#pragma mark - 私有方法
|
||||
|
||||
- (void)tryEnterPublicRoom {
|
||||
NSLog(@"PublicRoomManager: 开始尝试进入公共房间");
|
||||
NSLog(@"PublicRoomManager: 当前状态 - isInitialized: %@, isInPublicRoom: %@, currentPublicRoomId: %@",
|
||||
self.isInitialized ? @"YES" : @"NO",
|
||||
self.isInPublicRoom ? @"YES" : @"NO",
|
||||
self.currentPublicRoomId ?: @"nil");
|
||||
|
||||
if (!self.isInitialized) {
|
||||
NSLog(@"PublicRoomManager: 管理器未初始化,无法进入公共房间");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!self.userInfo) {
|
||||
NSLog(@"PublicRoomManager: 用户信息缺失,无法进入公共房间");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -146,29 +138,19 @@
|
||||
ClientDataModel *configInfo = [ClientConfig shareConfig].configInfo;
|
||||
NSDictionary *publicChatRoomIdMap = configInfo.publicChatRoomIdMap;
|
||||
|
||||
NSLog(@"PublicRoomManager: 配置信息 - partitionId: %@, configInfo: %@, publicChatRoomIdMap: %@",
|
||||
partitionId ?: @"nil",
|
||||
configInfo ? @"存在" : @"nil",
|
||||
publicChatRoomIdMap ? @"存在" : @"nil");
|
||||
|
||||
if (!publicChatRoomIdMap) {
|
||||
NSLog(@"PublicRoomManager: 公共房间配置缺失");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!partitionId) {
|
||||
NSLog(@"PublicRoomManager: 分区ID缺失");
|
||||
return;
|
||||
}
|
||||
|
||||
NSNumber *roomId = publicChatRoomIdMap[partitionId];
|
||||
if (!roomId) {
|
||||
NSLog(@"PublicRoomManager: 未找到分区 %@ 对应的公共房间ID", partitionId);
|
||||
return;
|
||||
}
|
||||
|
||||
NSLog(@"PublicRoomManager: 尝试进入公共房间,分区ID: %@, 房间ID: %@", partitionId, roomId);
|
||||
|
||||
|
||||
// 进入公共房间
|
||||
[self enterPublicRoomWithRoomId:roomId.stringValue completion:^(NSError * _Nullable error) {
|
||||
if (error) {
|
||||
@@ -227,12 +209,10 @@
|
||||
@kStrongify(self);
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if (error) {
|
||||
NSLog(@"PublicRoomManager: 进入公共房间失败: %@", error);
|
||||
if (completion) {
|
||||
completion(error);
|
||||
}
|
||||
} else {
|
||||
NSLog(@"PublicRoomManager: 进入公共房间成功,房间ID: %@", roomId);
|
||||
self.isInPublicRoom = YES;
|
||||
self.currentPublicRoomId = roomId;
|
||||
if (completion) {
|
||||
@@ -253,20 +233,15 @@
|
||||
if (completion) {
|
||||
completion(error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (self.isInPublicRoom) {
|
||||
NSLog(@"PublicRoomManager: 已在公共房间中");
|
||||
} else if (self.isInPublicRoom) {
|
||||
if (completion) {
|
||||
completion(nil);
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[self tryEnterPublicRoom];
|
||||
});
|
||||
}
|
||||
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[self tryEnterPublicRoom];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)exitPublicRoomWithCompletion:(void(^)(NSError * _Nullable error))completion {
|
||||
@@ -285,9 +260,9 @@
|
||||
@kStrongify(self);
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if (error) {
|
||||
NSLog(@"PublicRoomManager: 退出公共房间失败: %@", error);
|
||||
// NSLog(@"PublicRoomManager: 退出公共房间失败: %@", error);
|
||||
} else {
|
||||
NSLog(@"PublicRoomManager: 退出公共房间成功");
|
||||
// NSLog(@"PublicRoomManager: 退出公共房间成功");
|
||||
self.isInPublicRoom = NO;
|
||||
self.currentPublicRoomId = nil;
|
||||
}
|
||||
@@ -301,69 +276,23 @@
|
||||
#pragma mark - 用户信息更新处理
|
||||
|
||||
- (void)updateUserInfo:(UserInfoModel *)userInfo {
|
||||
NSLog(@"PublicRoomManager: 开始更新用户信息");
|
||||
NSLog(@"PublicRoomManager: 用户信息 - uid: %ld, partitionId: %@",
|
||||
userInfo.uid, userInfo.partitionId ?: @"nil");
|
||||
|
||||
if (!userInfo) {
|
||||
NSLog(@"PublicRoomManager: 用户信息为空,更新失败");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!userInfo.partitionId) {
|
||||
NSLog(@"PublicRoomManager: 用户分区ID缺失,更新失败");
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查用户是否切换
|
||||
if (self.currentUserId && ![self.currentUserId isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) {
|
||||
NSLog(@"PublicRoomManager: 检测到用户切换,重置管理器");
|
||||
[self reset];
|
||||
}
|
||||
|
||||
self.userInfo = userInfo;
|
||||
self.currentUserId = [NSString stringWithFormat:@"%ld", userInfo.uid];
|
||||
if (![self checkConfigPublicRoomID:@(userInfo.uid).stringValue]) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSLog(@"PublicRoomManager: 用户信息更新完成 - currentUserId: %@, isInitialized: %@, isInPublicRoom: %@",
|
||||
self.currentUserId,
|
||||
self.isInitialized ? @"YES" : @"NO",
|
||||
self.isInPublicRoom ? @"YES" : @"NO");
|
||||
|
||||
// 注释掉自动进入房间逻辑,改为统一入口控制
|
||||
// 如果已初始化但未在公共房间,尝试进入
|
||||
// if (self.isInitialized && !self.isInPublicRoom) {
|
||||
// NSLog(@"PublicRoomManager: 条件满足,开始尝试进入公共房间");
|
||||
// [self tryEnterPublicRoom];
|
||||
// } else {
|
||||
// NSLog(@"PublicRoomManager: 条件不满足,跳过进入公共房间 - isInitialized: %@, isInPublicRoom: %@",
|
||||
// self.isInitialized ? @"YES" : @"NO",
|
||||
// self.isInPublicRoom ? @"YES" : @"NO");
|
||||
// }
|
||||
}
|
||||
|
||||
#pragma mark - 配置更新处理
|
||||
|
||||
- (void)updateConfig {
|
||||
if (!self.isInitialized) {
|
||||
NSLog(@"PublicRoomManager: 未初始化,跳过配置更新");
|
||||
return;
|
||||
}
|
||||
|
||||
ClientDataModel *configInfo = [ClientConfig shareConfig].configInfo;
|
||||
if (!configInfo || !configInfo.publicChatRoomIdMap) {
|
||||
NSLog(@"PublicRoomManager: 配置信息不完整,跳过配置更新");
|
||||
return;
|
||||
}
|
||||
|
||||
// 注释掉自动进入房间逻辑,改为统一入口控制
|
||||
// 如果未在公共房间,尝试进入
|
||||
// if (!self.isInPublicRoom) {
|
||||
// [self tryEnterPublicRoom];
|
||||
// }
|
||||
}
|
||||
|
||||
#pragma mark - NIMChatRoomManagerDelegate
|
||||
#define ConnectionStateStyleString(enum) \
|
||||
|
@@ -13,7 +13,6 @@
|
||||
///Tool
|
||||
#import "AccountInfoStorage.h"
|
||||
#import "Api+Room.h"
|
||||
#import "Api+TreasureFairy.h"
|
||||
#import "Api+LittleGame.h"
|
||||
#import "ClientConfig.h"
|
||||
#import "NetImageView.h"
|
||||
@@ -25,7 +24,6 @@
|
||||
#import "BoomInfoModel.h"
|
||||
#import "AttachmentModel.h"
|
||||
#import "FirstRechargeModel.h"
|
||||
#import "TreasureFairyLimitModel.h"
|
||||
#import "XPRedPacketResultModel.h"
|
||||
|
||||
///View
|
||||
@@ -36,7 +34,6 @@
|
||||
#import "XPArrangeMicViewController.h"
|
||||
#import "XPSailingViewController.h"
|
||||
#import "XCCurrentVCStackManager.h"
|
||||
#import "XPTreasureFairyViewController.h"
|
||||
#import "PIRoomEnterRedPacketView.h"
|
||||
#import "BaseNavigationController.h"
|
||||
#import "PIRoomActivityWebView.h"
|
||||
@@ -484,18 +481,7 @@
|
||||
[self lookLoveTapRecognizer];
|
||||
} else if([info.code isEqualToString:@"NAUTICAL_ADVENTURE"]) {
|
||||
[self sailTapRecognizer];
|
||||
}else if([info.code isEqualToString:@"SEIZE_TREASURE"]){
|
||||
XPTreasureFairyViewController * fairyVC = [[XPTreasureFairyViewController alloc] initWithdelegate:self.hostDelegate];
|
||||
fairyVC.roomUid =[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid];
|
||||
fairyVC.view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight);
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC addChildViewController:fairyVC];
|
||||
// [fairyVC.navigationController setNavigationBarHidden:YES animated:NO];
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC.view addSubview:fairyVC.view];
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
fairyVC.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight);
|
||||
}completion:^(BOOL finished) {
|
||||
}];
|
||||
}else {
|
||||
} else {
|
||||
if (info.skipType == ActivitySkipType_Room) {
|
||||
[self.hostDelegate exitRoom];
|
||||
[XPRoomViewController openRoom:info.skipContent viewController:kWindow.rootViewController];
|
||||
@@ -533,25 +519,11 @@
|
||||
if(info == nil)return;
|
||||
if([info.code isEqualToString:@"FIRST_CHARGE"]) {
|
||||
[self firstRechargeTapRecognizer];
|
||||
}else if ([info.code isEqualToString:@"FIND_LOVE"]) {
|
||||
} else if ([info.code isEqualToString:@"FIND_LOVE"]) {
|
||||
[self lookLoveTapRecognizer];
|
||||
} else if([info.code isEqualToString:@"NAUTICAL_ADVENTURE"]) {
|
||||
[self sailTapRecognizer];
|
||||
}else if([info.code isEqualToString:@"SEIZE_TREASURE"]){
|
||||
XPTreasureFairyViewController * fairyVC = [[XPTreasureFairyViewController alloc] initWithdelegate:self.hostDelegate];
|
||||
fairyVC.roomUid =[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid];
|
||||
fairyVC.view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight);
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC addChildViewController:fairyVC];
|
||||
[fairyVC.navigationController setNavigationBarHidden:YES animated:NO];
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC.view addSubview:fairyVC.view];
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
|
||||
fairyVC.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight);
|
||||
|
||||
}completion:^(BOOL finished) {
|
||||
|
||||
}];
|
||||
}else {
|
||||
} else {
|
||||
// if(index < self.playList.count){
|
||||
// if(info.showType == ActivityShowType_Half){
|
||||
// XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init];
|
||||
@@ -725,20 +697,6 @@
|
||||
[self lookLoveTapRecognizer];
|
||||
} else if([model.code isEqualToString:@"NAUTICAL_ADVENTURE"]) {
|
||||
[self sailTapRecognizer];
|
||||
}else if([model.code isEqualToString:@"SEIZE_TREASURE"]){
|
||||
XPTreasureFairyViewController * fairyVC = [[XPTreasureFairyViewController alloc] initWithdelegate:self.hostDelegate];
|
||||
fairyVC.roomUid =[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid];
|
||||
fairyVC.view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight);
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC addChildViewController:fairyVC];
|
||||
[fairyVC.navigationController setNavigationBarHidden:YES animated:NO];
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC.view addSubview:fairyVC.view];
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
|
||||
fairyVC.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight);
|
||||
|
||||
}completion:^(BOOL finished) {
|
||||
|
||||
}];
|
||||
} else if(model.skipType == ActivitySkipType_Web) {
|
||||
if(model.showType == ActivityShowType_Half){
|
||||
XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init];
|
||||
|
@@ -68,7 +68,6 @@
|
||||
#import "XPRoomGiftCompoundView.h"
|
||||
#import "XPRoomGiftBroadcastView.h"
|
||||
#import "XPRoomLuckyBigPrizeView.h"
|
||||
#import "XPTreasureFairyGiftView.h"
|
||||
#import "XPAcrossRoomPKPrizeView.h"
|
||||
#import "PIRoomGiftBroadcastWindow.h"
|
||||
#import "XPRoomDatingAnimationView.h"
|
||||
@@ -742,7 +741,11 @@ BannerSchedulerDelegate
|
||||
}
|
||||
} else if (obj.second == Custom_Message_Sub_Super_Gift_Banner ||
|
||||
obj.second == Custom_Message_Sub_Gift_ChannelNotify ||
|
||||
obj.second == Custom_Message_Sub_LuckyPackage) {
|
||||
obj.second == Custom_Message_Sub_LuckyPackage ||
|
||||
obj.second == Custom_Message_Sub_Super_Gift_Winning_Coins_ALL_Room ||
|
||||
obj.second == Custom_Message_Sub_Room_Gift_LuckBag ||
|
||||
obj.second == Custom_Message_Sub_Room_Gift_LuckBag_Server ||
|
||||
obj.second == Custom_Message_Sub_Room_Gift_LuckBag_FullScree) {
|
||||
// 礼物相关banner
|
||||
BOOL allowGiftScreen = [[TurboModeStateManager sharedManager] isGlobalGiftScreenEnabledForRoom:roomIdForTurbo];
|
||||
if (!allowGiftScreen) {
|
||||
@@ -1937,9 +1940,6 @@ BannerSchedulerDelegate
|
||||
case CustomMessageType_Graffiti_Star_Kitchen:
|
||||
[self handle104:attachment];
|
||||
break;
|
||||
case CustomMessageType_Treasure_Fairy:
|
||||
[self handleFairy:attachment];
|
||||
break;
|
||||
case CustomMessageType_Tarot:
|
||||
[self handleTarot:attachment];
|
||||
break;
|
||||
@@ -2230,24 +2230,6 @@ BannerSchedulerDelegate
|
||||
}
|
||||
}
|
||||
|
||||
- (void)handleFairy:(AttachmentModel *)attachment {
|
||||
if (!attachment) {
|
||||
return;
|
||||
}
|
||||
switch (attachment.second) {
|
||||
case Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L4:
|
||||
case Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5:
|
||||
case Custom_Message_Sub_Treasure_Fairy_Convert_L1:
|
||||
case Custom_Message_Sub_Treasure_Fairy_Convert_L2:
|
||||
case Custom_Message_Sub_Treasure_Fairy_Convert_L3:
|
||||
[self receiveTreasureFairyGiftHighLevel:attachment];
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)handle98:(AttachmentModel *)attachment {
|
||||
if (!attachment) {
|
||||
return;
|
||||
@@ -2458,9 +2440,6 @@ BannerSchedulerDelegate
|
||||
case CustomMessageType_Look_Love:
|
||||
[self handle98:attachment];
|
||||
break;
|
||||
case CustomMessageType_Treasure_Fairy:
|
||||
[self handleFairy:attachment];
|
||||
break;
|
||||
case CustomMessageType_Tarot:
|
||||
[self handleTarot:attachment];
|
||||
break;
|
||||
@@ -3210,73 +3189,6 @@ BannerSchedulerDelegate
|
||||
}
|
||||
}
|
||||
|
||||
- (void)receiveTreasureFairyGiftHighLevel:(AttachmentModel *)attatchment {
|
||||
if ([self _isInSudGame]) {return;}
|
||||
PIBaseAnimationViewModel *giftModel = [PIBaseAnimationViewModel new];
|
||||
giftModel.data = attatchment.data;
|
||||
giftModel.second = attatchment.second;
|
||||
giftModel.first = attatchment.first;
|
||||
giftModel.type = GiftBannerType_Fairy;
|
||||
if (self.animationListB.count == 0 && self.isPlayOfB == NO) {
|
||||
[self createTreasureFairyBannerAnimation:giftModel];
|
||||
}
|
||||
[self.animationListB addObject:giftModel];
|
||||
}
|
||||
|
||||
- (void)createTreasureFairyBannerAnimation:(PIBaseAnimationViewModel *)attatchment {
|
||||
self.isPlayOfB = YES;
|
||||
CGFloat kscale = (CGFloat)60 / (CGFloat)375;
|
||||
CGFloat top = (kNavigationHeight + 15);
|
||||
XPTreasureFairyGiftView *treasureView = [[XPTreasureFairyGiftView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth , KScreenWidth * kscale)];
|
||||
//最大礼物
|
||||
if ((attatchment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5) || (attatchment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L3)) {
|
||||
treasureView.isMaxLargeGift = YES;
|
||||
}else{
|
||||
treasureView.isMaxLargeGift = NO;
|
||||
}
|
||||
if ((attatchment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L4) || (attatchment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5)) {
|
||||
treasureView.isDrawGift = YES; //抽奖
|
||||
}else{
|
||||
treasureView.isDrawGift = NO; //召唤
|
||||
}
|
||||
treasureView.treasureInfo = attatchment.data;
|
||||
[self.middleContainer addSubview:treasureView];
|
||||
POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter];
|
||||
springAnimation.springSpeed = 12;
|
||||
springAnimation.springBounciness = 10.f;
|
||||
springAnimation.fromValue = [NSValue valueWithCGPoint:treasureView.center];
|
||||
springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(treasureView.frame.size.width / 2, treasureView.center.y)];
|
||||
[springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
|
||||
if (finished) {
|
||||
POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter];
|
||||
moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, treasureView.center.y)];
|
||||
moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, treasureView.center.y)];
|
||||
moveAnimation.beginTime = CACurrentMediaTime() + 3;
|
||||
moveAnimation.duration = 0.5;
|
||||
moveAnimation.repeatCount = 1;
|
||||
moveAnimation.removedOnCompletion = YES;
|
||||
@kWeakify(self);
|
||||
[moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
|
||||
@kStrongify(self);
|
||||
if (finished) {
|
||||
[treasureView removeFromSuperview];
|
||||
self.isPlayOfB = NO;
|
||||
if (self.animationListB.count > 0) {
|
||||
[self.animationListB xpSafeRemoveObjectAtIndex:0];
|
||||
}
|
||||
[self playAnimationWithModel];
|
||||
}
|
||||
}];
|
||||
[treasureView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"];
|
||||
}
|
||||
}];
|
||||
[treasureView pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- (void)createGiftCompoundBannerAnimation:(PIBaseAnimationViewModel *)attachment {
|
||||
self.isPlayOfB = YES;
|
||||
XPRoomGiftCompoundView *compoundGiftView = [[XPRoomGiftCompoundView alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, KScreenWidth, 45)];
|
||||
@@ -3700,9 +3612,6 @@ BannerSchedulerDelegate
|
||||
case GiftBannerType_LicneseHour:
|
||||
[self createAnchorHourRankAnimation:model];
|
||||
break;
|
||||
case GiftBannerType_Fairy:
|
||||
[self createTreasureFairyBannerAnimation:model];
|
||||
break;
|
||||
case GiftBannerType_Magic_House:
|
||||
[self createGiftCompoundBannerAnimation:model];
|
||||
break;
|
||||
@@ -3995,7 +3904,8 @@ BannerSchedulerDelegate
|
||||
for (UIView *subview in self.bannerContainer.subviews) {
|
||||
if ([subview isKindOfClass:[BravoGiftBannerView class]] ||
|
||||
[subview isKindOfClass:[LuckyGiftWinningBannerView class]] ||
|
||||
[subview isKindOfClass:[RoomHighValueGiftBannerAnimation class]]) {
|
||||
[subview isKindOfClass:[RoomHighValueGiftBannerAnimation class]] ||
|
||||
[subview isKindOfClass:[LuckyPackageBannerView class]]) {
|
||||
[viewsToRemove addObject:subview];
|
||||
}
|
||||
}
|
||||
@@ -4004,6 +3914,22 @@ BannerSchedulerDelegate
|
||||
[view removeFromSuperview];
|
||||
}
|
||||
|
||||
// 清空队列中礼物相关的banner(包括:超级礼物banner、礼物频道通知、福袋banner)
|
||||
if (self.bannerScheduler) {
|
||||
// 逆序移除以避免索引移动问题
|
||||
for (NSInteger i = self.bannerScheduler.queueCount - 1; i >= 0; i--) {
|
||||
id queued = [self.bannerScheduler bannerAtIndex:i];
|
||||
if ([queued isKindOfClass:[AttachmentModel class]]) {
|
||||
AttachmentModel *att = (AttachmentModel *)queued;
|
||||
if (att.second == Custom_Message_Sub_Super_Gift_Banner ||
|
||||
att.second == Custom_Message_Sub_Gift_ChannelNotify ||
|
||||
att.second == Custom_Message_Sub_LuckyPackage) {
|
||||
[self.bannerScheduler removeBannerAtIndex:i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 标记banner播放完成,继续下一个
|
||||
if (self.isRoomBannerV2Displaying) {
|
||||
self.isRoomBannerV2Displaying = NO;
|
||||
@@ -4029,6 +3955,20 @@ BannerSchedulerDelegate
|
||||
[view removeFromSuperview];
|
||||
}
|
||||
|
||||
// 清空队列中游戏相关的banner(通用飘屏:单房/全房)
|
||||
if (self.bannerScheduler) {
|
||||
for (NSInteger i = self.bannerScheduler.queueCount - 1; i >= 0; i--) {
|
||||
id queued = [self.bannerScheduler bannerAtIndex:i];
|
||||
if ([queued isKindOfClass:[AttachmentModel class]]) {
|
||||
AttachmentModel *att = (AttachmentModel *)queued;
|
||||
if (att.second == Custom_Message_Sub_General_Floating_Screen_One_Room ||
|
||||
att.second == Custom_Message_Sub_General_Floating_Screen_All_Room) {
|
||||
[self.bannerScheduler removeBannerAtIndex:i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 标记banner播放完成,继续下一个
|
||||
if (self.isRoomBannerV2Displaying) {
|
||||
self.isRoomBannerV2Displaying = NO;
|
||||
@@ -4072,14 +4012,38 @@ BannerSchedulerDelegate
|
||||
#pragma mark - BannerSchedulerDelegate
|
||||
|
||||
- (void)bannerScheduler:(BannerScheduler *)scheduler shouldPlayBanner:(id)banner {
|
||||
|
||||
// 将 Banner 数据转换为 AttachmentModel 并播放
|
||||
if ([banner isKindOfClass:[AttachmentModel class]]) {
|
||||
AttachmentModel *attachment = (AttachmentModel *)banner;
|
||||
[self _playBannerWithAttachment:attachment];
|
||||
} else {
|
||||
// 将 Banner 数据转换为 AttachmentModel
|
||||
if (![banner isKindOfClass:[AttachmentModel class]]) {
|
||||
NSLog(@"⚠️ BannerSchedulerDelegate: Banner 不是 AttachmentModel 类型");
|
||||
[self.bannerScheduler markBannerFinished];
|
||||
return;
|
||||
}
|
||||
AttachmentModel *attachment = (AttachmentModel *)banner;
|
||||
|
||||
// 二次校验:出队播放前按 TurboMode 再过滤一次,防止进房竞态导致漏过滤
|
||||
NSString *roomIdForTurbo = self.currentRoomId ?: @([self.hostDelegate getRoomInfo].roomId).stringValue;
|
||||
BOOL allowed = YES;
|
||||
|
||||
if (attachment.second == Custom_Message_Sub_General_Floating_Screen_One_Room ||
|
||||
attachment.second == Custom_Message_Sub_General_Floating_Screen_All_Room) {
|
||||
allowed = [[TurboModeStateManager sharedManager] isGlobalGameScreenEnabledForRoom:roomIdForTurbo];
|
||||
} else if (attachment.second == Custom_Message_Sub_Super_Gift_Banner ||
|
||||
attachment.second == Custom_Message_Sub_Gift_ChannelNotify ||
|
||||
attachment.second == Custom_Message_Sub_LuckyPackage) {
|
||||
allowed = [[TurboModeStateManager sharedManager] isGlobalGiftScreenEnabledForRoom:roomIdForTurbo];
|
||||
} else if (attachment.second == Custom_Message_Sub_CP_Gift ||
|
||||
attachment.second == Custom_Message_Sub_CP_Upgrade ||
|
||||
attachment.second == Custom_Message_Sub_CP_Binding) {
|
||||
allowed = [[TurboModeStateManager sharedManager] isGiftEffectsEnabledForRoom:roomIdForTurbo];
|
||||
}
|
||||
|
||||
if (!allowed) {
|
||||
NSLog(@"🎮 TurboMode 二次校验拒绝播放 banner(second=%ld) - 房间ID:%@", (long)attachment.second, roomIdForTurbo);
|
||||
[self.bannerScheduler markBannerFinished];
|
||||
return;
|
||||
}
|
||||
|
||||
[self _playBannerWithAttachment:attachment];
|
||||
}
|
||||
|
||||
- (void)bannerSchedulerDidFinishPlaying:(BannerScheduler *)scheduler {
|
||||
@@ -4283,6 +4247,12 @@ BannerSchedulerDelegate
|
||||
// 如果关闭,清理当前效果
|
||||
if (!enabled) {
|
||||
[self cleanupGiftEffects];
|
||||
// 同时清理 CP 类 Banner(礼物特效开关关闭时不应再展示 CP 相关)
|
||||
if (self.currentRoomId.length > 0) {
|
||||
[self cleanupCpBanners];
|
||||
} else {
|
||||
[self cleanupCpBanners];
|
||||
}
|
||||
}
|
||||
|
||||
NSLog(@"🎮 RoomAnimationView 礼物特效状态变化: %@", enabled ? @"开启" : @"关闭");
|
||||
@@ -4320,6 +4290,50 @@ BannerSchedulerDelegate
|
||||
NSLog(@"🎮 RoomAnimationView CP麦位开关状态变化: %@", enabled ? @"开启" : @"关闭");
|
||||
}
|
||||
|
||||
// 🔧 新增:清理 CP 相关 banner(受礼物特效开关影响)
|
||||
- (void)cleanupCpBanners {
|
||||
NSLog(@"🎮 清理 CP 相关banner");
|
||||
|
||||
// 清理可见的 CP 相关视图
|
||||
NSMutableArray *viewsToRemove = [NSMutableArray array];
|
||||
for (UIView *subview in self.bannerContainer.subviews) {
|
||||
if ([subview isKindOfClass:[CPGiftBanner class]]) {
|
||||
[viewsToRemove addObject:subview];
|
||||
}
|
||||
}
|
||||
for (UIView *subview in self.topContainer.subviews) {
|
||||
if ([subview isKindOfClass:[CPBindingAnimation class]] ||
|
||||
[subview isKindOfClass:[CPLevelUpAnimation class]]) {
|
||||
[viewsToRemove addObject:subview];
|
||||
}
|
||||
}
|
||||
for (UIView *v in viewsToRemove) {
|
||||
[v removeFromSuperview];
|
||||
}
|
||||
|
||||
// 清空队列中 CP 相关的 banner(CP 礼物/升级/绑定)
|
||||
if (self.bannerScheduler) {
|
||||
for (NSInteger i = self.bannerScheduler.queueCount - 1; i >= 0; i--) {
|
||||
id queued = [self.bannerScheduler bannerAtIndex:i];
|
||||
if ([queued isKindOfClass:[AttachmentModel class]]) {
|
||||
AttachmentModel *att = (AttachmentModel *)queued;
|
||||
if (att.second == Custom_Message_Sub_CP_Gift ||
|
||||
att.second == Custom_Message_Sub_CP_Upgrade ||
|
||||
att.second == Custom_Message_Sub_CP_Binding) {
|
||||
[self.bannerScheduler removeBannerAtIndex:i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (self.isRoomBannerV2Displaying) {
|
||||
self.isRoomBannerV2Displaying = NO;
|
||||
[self.bannerScheduler markBannerFinished];
|
||||
}
|
||||
|
||||
NSLog(@"🎮 CP 相关banner清理完成");
|
||||
}
|
||||
|
||||
// 🔧 新增:处理当前房间ID设置通知
|
||||
- (void)handleCurrentRoomIdSet:(NSNotification *)notification {
|
||||
NSString *roomId = notification.userInfo[@"roomId"];
|
||||
|
@@ -1,23 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyGiftView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by XY on 2023/3/1.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPTreasureFairyGiftView : UIView
|
||||
|
||||
///是否是动态飘屏
|
||||
@property (nonatomic,assign) BOOL isMaxLargeGift;
|
||||
/// 是否是抽奖(抽奖、召唤)
|
||||
@property (nonatomic,assign) BOOL isDrawGift;
|
||||
///夺宝信息
|
||||
@property (nonatomic,copy) NSDictionary *treasureInfo;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,193 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyGiftView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by XY on 2023/3/1.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairyGiftView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
#import <SVGA.h>
|
||||
#import "XPSVGAPlayer.h"
|
||||
#import "ThemeColor+Room.h"
|
||||
#import "TreasureFailryMessageModel.h"
|
||||
#import "NSObject+MJExtension.h"
|
||||
|
||||
@interface XPTreasureFairyGiftView()
|
||||
|
||||
///动画管理类
|
||||
@property (strong, nonatomic) SVGAParser *parser;
|
||||
///夺宝特效
|
||||
@property (nonatomic,strong) XPSVGAPlayer *treasureView;
|
||||
///背景图
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///容器
|
||||
@property (nonatomic,strong) UIView *titleView;
|
||||
///显示文本内容
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPTreasureFairyGiftView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.treasureView];
|
||||
[self addSubview:self.backImageView];
|
||||
[self.backImageView addSubview:self.titleView];
|
||||
|
||||
[self.titleView addSubview:self.titleLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.treasureView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self);
|
||||
}];
|
||||
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self);
|
||||
}];
|
||||
|
||||
[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.backImageView).inset(20);
|
||||
make.height.mas_equalTo(28);
|
||||
make.top.mas_equalTo(self.backImageView).offset(23);
|
||||
}];
|
||||
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.titleView);
|
||||
make.centerY.mas_equalTo(self.titleView);
|
||||
}];
|
||||
}
|
||||
|
||||
- (NSAttributedString *)createAttribute:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize {
|
||||
NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color};
|
||||
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute];
|
||||
return attr;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setTreasureInfo:(NSDictionary *)treasureInfo {
|
||||
if (treasureInfo) {
|
||||
TreasureFailryMessageModel * giftInfo = [TreasureFailryMessageModel modelWithDictionary:treasureInfo];
|
||||
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
||||
CGFloat fontSize = self.isMaxLargeGift ? 22 : 13;
|
||||
// CGFloat fontSize = 13;
|
||||
if (self.isDrawGift) {
|
||||
[attribute appendAttributedString:[self createAttribute:YMLocalizedString(@"XPTreasureFairyGiftView0") color:[DJDKMIMOMColor colorWithHexString:@"#8C4700"] fontSize:fontSize]];
|
||||
NSString * nick = giftInfo.nick;
|
||||
if (nick.length > 6) {
|
||||
nick = [nick substringToIndex:6];
|
||||
}
|
||||
[attribute appendAttributedString:[self createAttribute:nick color:[DJDKMIMOMColor colorWithHexString:@"#EC4613"] fontSize:fontSize]];
|
||||
[attribute appendAttributedString:[self createAttribute:YMLocalizedString(@"XPTreasureFairyGiftView1") color:[DJDKMIMOMColor colorWithHexString:@"#8C4700"] fontSize:fontSize]];
|
||||
[attribute appendAttributedString:[self createAttribute:giftInfo.rewardName color:[DJDKMIMOMColor colorWithHexString:@"#EC4613"] fontSize:fontSize]];
|
||||
if (giftInfo.rewardNum > 1) {
|
||||
[attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@" X%ld", giftInfo.rewardNum] color:[DJDKMIMOMColor colorWithHexString:@"#EC4613"] fontSize:fontSize]];
|
||||
}
|
||||
}else{
|
||||
[attribute appendAttributedString:[self createAttribute:YMLocalizedString(@"XPTreasureFairyGiftView2") color:[DJDKMIMOMColor colorWithHexString:@"#8C4700"] fontSize:fontSize]];
|
||||
[attribute appendAttributedString:[self createAttribute:giftInfo.nick color:[DJDKMIMOMColor colorWithHexString:@"#EC4613"] fontSize:fontSize]];
|
||||
[attribute appendAttributedString:[self createAttribute:YMLocalizedString(@"XPTreasureFairyGiftView3") color:[DJDKMIMOMColor colorWithHexString:@"#8C4700"] fontSize:fontSize]];
|
||||
NSString *level = @"";
|
||||
if (giftInfo.rewardLevel == 1) {
|
||||
level = YMLocalizedString(@"XPTreasureFairyGiftView4");
|
||||
}else if (giftInfo.rewardLevel == 2) {
|
||||
level = YMLocalizedString(@"XPTreasureFairyGiftView5");
|
||||
}else if (giftInfo.rewardLevel == 3) {
|
||||
level = YMLocalizedString(@"XPTreasureFairyGiftView6");
|
||||
}
|
||||
[attribute appendAttributedString:[self createAttribute:level color:[DJDKMIMOMColor colorWithHexString:@"#8C4700"] fontSize:fontSize]];
|
||||
[attribute appendAttributedString:[self createAttribute:YMLocalizedString(@"XPTreasureFairyGiftView7") color:[DJDKMIMOMColor colorWithHexString:@"#8C4700"] fontSize:fontSize]];
|
||||
[attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@"%ld",giftInfo.rewardShowValue] color:[DJDKMIMOMColor colorWithHexString:@"#F1390A"] fontSize:fontSize]];
|
||||
|
||||
if ([giftInfo.rewardType isEqualToString:@"gift"]) {
|
||||
[attribute appendAttributedString:[self createAttribute:YMLocalizedString(@"XPTreasureFairyGiftView8") color:[DJDKMIMOMColor colorWithHexString:@"#F1390A"] fontSize:fontSize]];
|
||||
}else{
|
||||
[attribute appendAttributedString:[self createAttribute:giftInfo.rewardUnit color:[DJDKMIMOMColor colorWithHexString:@"#F1390A"] fontSize:fontSize]];
|
||||
}
|
||||
|
||||
[attribute appendAttributedString:[self createAttribute:giftInfo.rewardName color:[DJDKMIMOMColor colorWithHexString:@"#F1390A"] fontSize:fontSize]];
|
||||
}
|
||||
|
||||
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
|
||||
paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
|
||||
paragraphStyle.lineSpacing = 0.0f;//行间距
|
||||
paragraphStyle.alignment = NSTextAlignmentCenter;
|
||||
paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight;
|
||||
[attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attribute.length)];
|
||||
[self.treasureView setAttributedText:attribute forKey:@"touming_text_name"];
|
||||
if (self.isMaxLargeGift) {
|
||||
self.backImageView.hidden = YES;
|
||||
self.treasureView.hidden = NO;
|
||||
@kWeakify(self);
|
||||
[self.parser parseWithNamed:@"pi_treasure_fairy_gift_bg" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
|
||||
@kStrongify(self);
|
||||
self.treasureView.loops = 1;
|
||||
self.treasureView.clearsAfterStop = NO;
|
||||
self.treasureView.videoItem = videoItem;
|
||||
|
||||
[self.treasureView startAnimation];
|
||||
} failureBlock:^(NSError * _Nonnull error) {
|
||||
|
||||
}];
|
||||
} else {
|
||||
self.backImageView.hidden = NO;
|
||||
self.treasureView.hidden = YES;
|
||||
self.titleLabel.attributedText = attribute;
|
||||
self.titleLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (XPSVGAPlayer *)treasureView {
|
||||
if (!_treasureView) {
|
||||
_treasureView = [[XPSVGAPlayer alloc]init];
|
||||
_treasureView.backgroundColor = [UIColor clearColor];
|
||||
_treasureView.userInteractionEnabled = NO;
|
||||
}
|
||||
return _treasureView;
|
||||
}
|
||||
|
||||
- (SVGAParser *)parser {
|
||||
if (!_parser) {
|
||||
_parser = [[SVGAParser alloc]init];
|
||||
}
|
||||
return _parser;
|
||||
}
|
||||
|
||||
- (UIView *)titleView {
|
||||
if (!_titleView) {
|
||||
_titleView = [[UIView alloc] init];
|
||||
_titleView.backgroundColor = [UIColor clearColor];
|
||||
}
|
||||
return _titleView;
|
||||
}
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
_backImageView.image = [UIImage imageNamed:@"room_treaseure_fairy_normal_gift_bg"];
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.numberOfLines = 2;
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
|
||||
@end
|
@@ -127,7 +127,6 @@
|
||||
NSString * roomId = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid];
|
||||
// NSLog(@"用户ID:%@,房间ID:%@, 游戏ID:%lld, code:%@", userId, roomId, self.currentmgId, self.code);
|
||||
|
||||
// TODO: 补充多语言
|
||||
NSString *language = @"en-US";
|
||||
if (isMSZH()) {
|
||||
language = @"zh-TW";
|
||||
|
@@ -80,7 +80,6 @@
|
||||
if (data) {
|
||||
RedEnvelopeListVo *vo = [RedEnvelopeListVo modelWithJSON:data];
|
||||
if (vo.roomUid != self.roomUid.integerValue) {
|
||||
// TODO: 此处不匹配????
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -7,7 +7,6 @@
|
||||
#import "Api+Room.h"
|
||||
#import "MSRoomMenuGameVC.h"
|
||||
#import "MSRoomMenuGameView.h"
|
||||
#import "XPTreasureFairyViewController.h"
|
||||
#import "XPRoomHalfWebView.h"
|
||||
#import "XPWebViewController.h"
|
||||
#import "XPCandyTreeViewController.h"
|
||||
@@ -344,21 +343,6 @@
|
||||
[self clickGameVC:model];
|
||||
} else if ([model.code isEqualToString:@"LEADERCC"]) {
|
||||
[self clickGameVC:model];
|
||||
} else if([model.code isEqualToString:@"SEIZE_TREASURE"]){
|
||||
if ([self.hostDelegate isKindOfClass:[XPRoomViewController class]]){
|
||||
XPRoomViewController *vc = (XPRoomViewController *)self.hostDelegate;
|
||||
XPTreasureFairyViewController * fairyVC = [[XPTreasureFairyViewController alloc] initWithdelegate:self.hostDelegate];
|
||||
fairyVC.roomUid =[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid];
|
||||
fairyVC.view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight);
|
||||
[vc addChildViewController:fairyVC];
|
||||
[fairyVC.navigationController setNavigationBarHidden:YES animated:NO];
|
||||
[vc.view addSubview:fairyVC.view];
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
fairyVC.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight);
|
||||
}completion:^(BOOL finished) {
|
||||
|
||||
}];
|
||||
}
|
||||
} else if(model.skipType == ActivitySkipType_Web) {
|
||||
if(model.showType == ActivityShowType_Half){
|
||||
XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init];
|
||||
|
@@ -112,15 +112,21 @@
|
||||
|
||||
#pragma mark - RoomGuestDelegate
|
||||
- (void)handleNIMCustomMessage:(NIMMessage *)message {
|
||||
[self.messageListView handleNIMCustomMessage:message];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.messageListView handleNIMCustomMessage:message];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)handleNIMNotificationMessage:(NIMMessage *)message {
|
||||
[self.messageListView handleNIMNotificationMessage:message];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.messageListView handleNIMNotificationMessage:message];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)handleNIMTextMessage:(NIMMessage *)message {
|
||||
[self.messageListView handleNIMTextMessage:message];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.messageListView handleNIMTextMessage:message];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)handleNIMImageMessage:(NIMMessage *)message {
|
||||
@@ -129,16 +135,22 @@
|
||||
|
||||
- (void)onRoomMiniEntered {
|
||||
self.hidden = NO;
|
||||
[self.messageListView onRoomMiniEntered];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.messageListView onRoomMiniEntered];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)onRoomEntered {
|
||||
self.hidden = NO;
|
||||
[self.messageListView onRoomEntered];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.messageListView onRoomEntered];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)onRoomUpdate {
|
||||
[self.messageListView onRoomUpdate];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.messageListView onRoomUpdate];
|
||||
});
|
||||
}
|
||||
#pragma mark - XPRoomMessageContainerViewDelegate
|
||||
- (void)xPRoomMessageContainerViewlDidTapEmpty:(XPRoomMessageContainerView *)view{
|
||||
@@ -165,7 +177,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
[self.messageListView handleBroadcastMessage:broadcastMessage];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.messageListView handleBroadcastMessage:broadcastMessage];
|
||||
});
|
||||
}
|
||||
|
||||
#pragma mark - 懒加载
|
||||
|
@@ -41,7 +41,6 @@
|
||||
#import "XPOpenRedPacketModel.h"
|
||||
#import "XPMessageInfoModel.h"
|
||||
|
||||
#import "TreasureFailryMessageModel.h"
|
||||
#import "NetImageView.h"
|
||||
|
||||
#import "XPRoomTopicAlertView.h"
|
||||
@@ -49,7 +48,6 @@
|
||||
#import "XPRoomPKResultView.h"
|
||||
#import "XPWebViewController.h"
|
||||
#import "XCCurrentVCStackManager.h"
|
||||
#import "XPTreasureFairyViewController.h"
|
||||
#import "PIGeneralPublicScreenModel.h"
|
||||
#import "QEmotionHelper.h"
|
||||
|
||||
@@ -213,9 +211,7 @@
|
||||
} else if (attachment.second == Custom_Message_Sub_LuckyPackage){
|
||||
return [self createNewRedPacketAttribute:attachment messageInfo:messageInfo];
|
||||
}
|
||||
} else if (first == CustomMessageType_Treasure_Fairy) {
|
||||
return [self createTreasureFairyAttribute:attachment messageInfo:messageInfo];
|
||||
}else if (first == CustomMessageType_Room_Album) {
|
||||
} else if (first == CustomMessageType_Room_Album) {
|
||||
NSDictionary *userInfo = attachment.data[@"user"];
|
||||
NSDictionary *userLevel = attachment.data[@"userLevel"];
|
||||
if(userLevel != nil){
|
||||
@@ -614,83 +610,6 @@
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
#pragma mark - 夺宝精灵
|
||||
- (XPMessageInfoModel *)createTreasureFairyAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{
|
||||
TreasureFailryMessageModel *info = [TreasureFailryMessageModel modelWithDictionary:attachment.data];
|
||||
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
||||
if (attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L1 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L2 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L3) {///初级礼物
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser115") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
NSMutableAttributedString * nickAttriibute = [self createTextAttribute:info.nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont];
|
||||
[self attributeAddHihtLight:nickAttriibute uid:info.uid.integerValue];
|
||||
[attribute appendAttributedString:nickAttriibute];
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser116") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
[attribute appendAttributedString:[self createTextAttribute:info.rewardName color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]];
|
||||
if (info.rewardNum > 1) {
|
||||
[attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"X%ld", info.rewardNum] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]];
|
||||
}
|
||||
} else if (attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L4 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5) {///高级礼物
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser117") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
NSMutableAttributedString * nickAttriibute = [self createTextAttribute:info.nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont];
|
||||
[self attributeAddHihtLight:nickAttriibute uid:info.uid.integerValue];
|
||||
[attribute appendAttributedString:nickAttriibute];
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser116") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
[attribute appendAttributedString:[self createTextAttribute:info.rewardName color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]];
|
||||
if (info.rewardNum > 1) {
|
||||
[attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"X%ld", info.rewardNum] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]];
|
||||
}
|
||||
} else if (attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L1) {///初级球
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser115") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
NSMutableAttributedString * nickAttriibute = [self createTextAttribute:info.nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont];
|
||||
[self attributeAddHihtLight:nickAttriibute uid:info.uid.integerValue];
|
||||
[attribute appendAttributedString:nickAttriibute];
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser116") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
[attribute appendAttributedString:[self createTextAttribute:info.rewardName color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]];
|
||||
} else if (attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L2 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L3) {///高级球
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser117") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
NSMutableAttributedString * nickAttriibute = [self createTextAttribute:info.nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont];
|
||||
[self attributeAddHihtLight:nickAttriibute uid:info.uid.integerValue];
|
||||
[attribute appendAttributedString:nickAttriibute];
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser116") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
[attribute appendAttributedString:[self createTextAttribute:info.rewardName color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]];
|
||||
} else if (attachment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L1 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L2 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L3) {///合成礼物
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser115") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
NSMutableAttributedString * nickAttriibute = [self createTextAttribute:info.nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont];
|
||||
[self attributeAddHihtLight:nickAttriibute uid:info.uid.integerValue];
|
||||
[attribute appendAttributedString:nickAttriibute];
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser116") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
if(attachment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L3) {
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser119") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
} else if (attachment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L2) {
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser120") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
} else {
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser121") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
}
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser122") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
[attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%ld", info.rewardShowValue] color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]];
|
||||
if ([info.rewardType isEqualToString:@"gift"]){
|
||||
[attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser123") color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]];
|
||||
} else {
|
||||
[attribute appendAttributedString:[self createTextAttribute:info.rewardUnit color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]];
|
||||
}
|
||||
[attribute appendAttributedString:[self createTextAttribute:info.rewardName color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]];
|
||||
}
|
||||
if (self.hostDelegate.getUserInfo.userLevelVo.experLevelSeq >= info.userLevelLimit) {
|
||||
NSMutableAttributedString * nickAttriibute = [self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser124") color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont];
|
||||
@kWeakify(self);
|
||||
[nickAttriibute yy_setTextHighlightRange:NSMakeRange(0, nickAttriibute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
|
||||
@kStrongify(self);
|
||||
|
||||
XPTreasureFairyViewController * fairyVC = [[XPTreasureFairyViewController alloc] initWithdelegate:self.hostDelegate];
|
||||
fairyVC.roomUid =[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid];
|
||||
fairyVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
|
||||
[self.hostDelegate.getCurrentNav presentViewController:fairyVC animated:YES completion:nil];
|
||||
}];
|
||||
[attribute appendAttributedString:nickAttriibute];
|
||||
}
|
||||
messageInfo.content = attribute;
|
||||
messageInfo.first = attachment.first;
|
||||
return messageInfo;
|
||||
}
|
||||
|
||||
- (XPMessageInfoModel *)createGeneralPublicScreenAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{
|
||||
|
||||
|
@@ -83,7 +83,7 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
@property (nonatomic, assign) NSInteger atCount;
|
||||
///@我的消息位置集合
|
||||
@property (nonatomic, strong) NSMutableArray *locationArray;
|
||||
///messageView 持有这个工具类 进行数据的分发操作 TODO: 有需要在改
|
||||
///messageView 持有这个工具类 进行数据的分发操作
|
||||
@property (nonatomic,strong) XPRoomMessageParser *messageParser;
|
||||
|
||||
@property(nonatomic,strong) PIRoomPhotoAlbumItemModel *lookUpModel;
|
||||
@@ -93,6 +93,13 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
/// 清空公屏后下次追加强制走 reload,避免插入动画与数据源不一致
|
||||
@property (nonatomic, assign) BOOL forceReloadNextAppend;
|
||||
|
||||
/// 视图是否已经完成首次布局,未就绪期间的 UI 更新将排队
|
||||
@property (atomic, assign) BOOL viewReady;
|
||||
/// 是否正在刷新,避免嵌套批量更新
|
||||
@property (atomic, assign) BOOL isFlushing;
|
||||
/// 待执行的 UI 操作队列(在 viewReady 之前累积)
|
||||
@property (nonatomic, strong) NSMutableArray<dispatch_block_t> *pendingOps;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -115,6 +122,54 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
return self;
|
||||
}
|
||||
|
||||
/// 统一的安全插入实现:在数据与 UI 不一致时回退为 reload,永不崩溃
|
||||
- (void)safeApplyInsertsFromStartIndex:(NSInteger)startIndex
|
||||
newItemsCount:(NSInteger)newItemsCount
|
||||
needReload:(BOOL)needReload {
|
||||
if (needReload || newItemsCount <= 0) {
|
||||
[self.messageTableView reloadData];
|
||||
return;
|
||||
}
|
||||
|
||||
if (self.isFlushing) {
|
||||
// 合并到下一帧,避免嵌套更新
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self safeApplyInsertsFromStartIndex:startIndex newItemsCount:newItemsCount needReload:NO];
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
self.isFlushing = YES;
|
||||
|
||||
// 校验一致性
|
||||
NSInteger beforeRows = [self.messageTableView numberOfRowsInSection:0];
|
||||
NSInteger expectedRows = [self getCurrentDataSourceCount];
|
||||
BOOL indexValid = (startIndex >= 0 && startIndex <= beforeRows);
|
||||
BOOL countValid = (beforeRows + newItemsCount == expectedRows);
|
||||
if (!indexValid || !countValid) {
|
||||
[self.messageTableView reloadData];
|
||||
self.isFlushing = NO;
|
||||
return;
|
||||
}
|
||||
|
||||
// 生成 indexPaths
|
||||
NSMutableArray<NSIndexPath *> *indexPaths = [NSMutableArray array];
|
||||
for (NSInteger i = 0; i < newItemsCount; i++) {
|
||||
[indexPaths addObject:[NSIndexPath indexPathForRow:startIndex + i inSection:0]];
|
||||
}
|
||||
|
||||
// 原子提交
|
||||
[self.messageTableView beginUpdates];
|
||||
@try {
|
||||
[self.messageTableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
|
||||
} @catch (__unused NSException *e) {
|
||||
[self.messageTableView reloadData];
|
||||
} @finally {
|
||||
[self.messageTableView endUpdates];
|
||||
self.isFlushing = NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)changeType:(NSInteger)type {
|
||||
if (self.displayType == type) {
|
||||
return;
|
||||
@@ -154,7 +209,6 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
case CustomMessageType_Candy_Tree:
|
||||
case CustomMessageType_Super_Gift:
|
||||
case CustomMessageType_AllMicroSend:
|
||||
case CustomMessageType_Treasure_Fairy:
|
||||
[self.datasource_gift addObject:model];
|
||||
break;
|
||||
default:
|
||||
@@ -183,6 +237,19 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
|
||||
///追加数据源
|
||||
- (void)appendAndScrollToAtUser {
|
||||
// 在未就绪时排队
|
||||
if (![NSThread isMainThread]) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self appendAndScrollToAtUser];
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!self.viewReady) {
|
||||
if (!self.pendingOps) self.pendingOps = [NSMutableArray array];
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[self.pendingOps addObject:^{ __strong typeof(weakSelf) self = weakSelf; [self appendAndScrollToAtUser]; }];
|
||||
return;
|
||||
}
|
||||
// 1. 检查 incomingMessages 是否为空
|
||||
if (self.incomingMessages.count < 1) {
|
||||
// 2. 安全检查 locationArray 是否为空
|
||||
@@ -246,32 +313,8 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
[self.incomingMessages removeAllObjects];
|
||||
|
||||
// 7. 更新 UITableView
|
||||
if (needReloadData || self.forceReloadNextAppend) {
|
||||
[self.messageTableView reloadData];
|
||||
self.forceReloadNextAppend = NO;
|
||||
} else if (tempNewDatas.count > 0) {
|
||||
// 安全检查:确保数据源一致性
|
||||
NSInteger expectedRows = [self getCurrentDataSourceCount];
|
||||
if (expectedRows != [self.messageTableView numberOfRowsInSection:0]) {
|
||||
[self.messageTableView reloadData];
|
||||
} else {
|
||||
// 重新计算 indexPath,使用更新前的行数作为起始索引
|
||||
NSMutableArray *indexPaths = @[].mutableCopy;
|
||||
NSInteger startIndex = currentRows;
|
||||
if (startIndex >= 0 && startIndex <= [self.messageTableView numberOfRowsInSection:0]) {
|
||||
for (NSInteger i = 0; i < tempNewDatas.count; i++) {
|
||||
[indexPaths addObject:[NSIndexPath indexPathForRow:startIndex + i inSection:0]];
|
||||
}
|
||||
|
||||
// 使用更平滑的动画效果,减少与礼物动画的视觉冲突
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
[self.messageTableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
|
||||
}];
|
||||
} else {
|
||||
[self.messageTableView reloadData];
|
||||
}
|
||||
}
|
||||
}
|
||||
[self safeApplyInsertsFromStartIndex:currentRows newItemsCount:tempNewDatas.count needReload:(needReloadData || self.forceReloadNextAppend)];
|
||||
self.forceReloadNextAppend = NO;
|
||||
|
||||
// 6. 滚动到指定位置或底部
|
||||
[self scrollToFirstLocationOrBottom];
|
||||
@@ -350,7 +393,6 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
case CustomMessageType_Candy_Tree:
|
||||
case CustomMessageType_Super_Gift:
|
||||
case CustomMessageType_AllMicroSend:
|
||||
case CustomMessageType_Treasure_Fairy:
|
||||
[self.datasource_gift removeObject:removedModel];
|
||||
break;
|
||||
default:
|
||||
@@ -525,6 +567,10 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
[self addSubview:self.messageTipsBtn];
|
||||
[self addSubview:self.atTipBtn];
|
||||
self.messageTableView.tableHeaderView = self.headerView;
|
||||
|
||||
// 标记未就绪,等待首次布局完成后再 flush 队列
|
||||
self.viewReady = NO;
|
||||
self.isFlushing = NO;
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
@@ -548,6 +594,18 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
make.bottom.mas_equalTo(self.mas_bottom).offset(-5);
|
||||
make.leading.mas_equalTo(self);
|
||||
}];
|
||||
|
||||
// 首次约束完成后,标记就绪并 flush 排队操作
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if (!self.viewReady) {
|
||||
self.viewReady = YES;
|
||||
if (self.pendingOps.count > 0) {
|
||||
NSArray<dispatch_block_t> *ops = [self.pendingOps copy];
|
||||
[self.pendingOps removeAllObjects];
|
||||
for (void (^op)(void) in ops) { op(); }
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
///是否是当前房间
|
||||
@@ -611,6 +669,19 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
|
||||
///追加数据源
|
||||
- (void)appendAndScrollToBottom {
|
||||
// 在未就绪时排队
|
||||
if (![NSThread isMainThread]) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self appendAndScrollToBottom];
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!self.viewReady) {
|
||||
if (!self.pendingOps) self.pendingOps = [NSMutableArray array];
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[self.pendingOps addObject:^{ __strong typeof(weakSelf) self = weakSelf; [self appendAndScrollToBottom]; }];
|
||||
return;
|
||||
}
|
||||
if (self.incomingMessages.count < 1) {
|
||||
///滚动到底部(如果有人at自己后,income消息在点击at按钮处做了拼接处理,因为点击at按钮跳转到的是对应的at人消息,如果后面有其他消息时,点有更多按钮时需要滚动到最底部)
|
||||
[self scrollToBottom:YES];
|
||||
@@ -648,32 +719,8 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
[self updateAllDataSource:tempArray];
|
||||
|
||||
// 如果有删除操作或清空标记,使用 reloadData;否则使用增量更新
|
||||
if (needReloadData || self.forceReloadNextAppend) {
|
||||
[self.messageTableView reloadData];
|
||||
self.forceReloadNextAppend = NO;
|
||||
} else if (tempArray.count > 0) {
|
||||
// 安全检查:确保数据源一致性
|
||||
NSInteger expectedRows = [self getCurrentDataSourceCount];
|
||||
if (expectedRows != [self.messageTableView numberOfRowsInSection:0]) {
|
||||
[self.messageTableView reloadData];
|
||||
} else {
|
||||
// 重新计算 indexPath,使用更新前的行数作为起始索引
|
||||
NSMutableArray *indexPaths = @[].mutableCopy;
|
||||
NSInteger startIndex = currentRows;
|
||||
if (startIndex >= 0 && startIndex <= [self.messageTableView numberOfRowsInSection:0]) {
|
||||
for (NSInteger i = 0; i < tempArray.count; i++) {
|
||||
[indexPaths addObject:[NSIndexPath indexPathForRow:startIndex + i inSection:0]];
|
||||
}
|
||||
|
||||
// 使用更平滑的动画效果,减少与礼物动画的视觉冲突
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
[self.messageTableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
|
||||
}];
|
||||
} else {
|
||||
[self.messageTableView reloadData];
|
||||
}
|
||||
}
|
||||
}
|
||||
[self safeApplyInsertsFromStartIndex:currentRows newItemsCount:tempArray.count needReload:(needReloadData || self.forceReloadNextAppend)];
|
||||
self.forceReloadNextAppend = NO;
|
||||
|
||||
//执行插入动画并滚动
|
||||
// 延迟滚动执行,避免与礼物动画产生视觉冲突
|
||||
@@ -912,21 +959,6 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
@(Custom_Message_Sub_OpenRedPacketSuccess),
|
||||
@(Custom_Message_Sub_LuckyPackage),
|
||||
nil],
|
||||
@(CustomMessageType_Treasure_Fairy):
|
||||
[NSSet setWithObjects:
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L1),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L2),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L3),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L4),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L1),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L2),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Draw_Ball_L3),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Convert_L1),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Convert_L2),
|
||||
@(Custom_Message_Sub_Treasure_Fairy_Convert_L3),
|
||||
nil],
|
||||
|
||||
@(CustomMessageType_General_Public_Screen):
|
||||
[NSSet setWithObjects:
|
||||
@(Custom_Message_Sub_General_Public_Screen_One_Room),
|
||||
@@ -1126,7 +1158,7 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
NSDictionary *obj = [datas xpSafeObjectAtIndex:0];
|
||||
if (obj) {
|
||||
NSArray *results = [obj objectForKey:@"resultIndexes"];
|
||||
if (results.count > 0) {
|
||||
if ([results isKindOfClass:[NSArray class]] && results.count > 0) {
|
||||
delay = 2.5;
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,7 @@
|
||||
+ (NSArray<XPRoomMoreMenuAction *> *)createActionsWithContext:(XPRoomMoreMenuActionContext *)context {
|
||||
NSMutableArray *actions = [NSMutableArray array];
|
||||
|
||||
[actions addObject:[XPSocialAction trumpetAction]];
|
||||
// [actions addObject:[XPSocialAction trumpetAction]];
|
||||
[actions addObject:[XPTurboModeAction actionWithRoomInfo:context.roomInfo]];
|
||||
[actions addObject:[XPRoomAppManagerAction action]];
|
||||
[actions addObject:[XPSocialAction reportAction]];
|
||||
@@ -78,13 +78,13 @@
|
||||
|
||||
// 4. 基础功能 - 根据权限
|
||||
if (userNotNormal) {
|
||||
[actions addObject:[XPSocialAction trumpetAction]];
|
||||
// [actions addObject:[XPSocialAction trumpetAction]];
|
||||
[actions addObject:[XPRoomEffectAction action]];
|
||||
[actions addObject:[XPRoomSettingAction action]];
|
||||
[actions addObject:[XPRoomBackGroundSettingAction action]];
|
||||
[actions addObject:[XPRoomCleanMessagesAction action]];
|
||||
} else {
|
||||
[actions addObject:[XPSocialAction trumpetAction]];
|
||||
// [actions addObject:[XPSocialAction trumpetAction]];
|
||||
[actions addObject:[XPRoomEffectAction action]];
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
+ (NSArray<XPRoomMoreMenuAction *> *)createSuperAdminActionsWithContext:(XPRoomMoreMenuActionContext *)context {
|
||||
NSMutableArray *actions = [NSMutableArray array];
|
||||
|
||||
[actions addObject:[XPSocialAction trumpetAction]];
|
||||
// [actions addObject:[XPSocialAction trumpetAction]];
|
||||
[actions addObject:[XPTurboModeAction actionWithRoomInfo:context.roomInfo]];
|
||||
[actions addObject:[XPRoomAppManagerAction action]];
|
||||
[actions addObject:[XPSocialAction reportAction]];
|
||||
|
@@ -160,7 +160,7 @@
|
||||
|
||||
- (void)setupUnderstandButton {
|
||||
self.understandButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[self.understandButton setTitle:@"I understand" forState:UIControlStateNormal];
|
||||
[self.understandButton setTitle:YMLocalizedString(@"PKIDLoginViewController4") forState:UIControlStateNormal];
|
||||
[self.understandButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
||||
self.understandButton.titleLabel.font = [UIFont boldSystemFontOfSize:18.0];
|
||||
self.understandButton.backgroundColor = [UIColor colorWithRed:1.0 green:0.5 blue:0.0 alpha:1.0]; // 橙色
|
||||
|
@@ -55,7 +55,7 @@
|
||||
///头部
|
||||
@property (nonatomic,strong) XPRoomMessageHeaderView *headerView;
|
||||
|
||||
///messageView 持有这个工具类 进行数据的分发操作 TODO: 有需要在改
|
||||
///messageView 持有这个工具类 进行数据的分发操作
|
||||
@property (nonatomic,strong) XPRoomMessageParser *messageParser;
|
||||
///数据源
|
||||
@property (nonatomic,strong) NSMutableArray<XPMessageInfoModel *> *datasource;
|
||||
|
@@ -277,7 +277,10 @@
|
||||
self.idLabel.text = [NSString stringWithFormat:@"ID:%ld",(long)roomInfo.erbanNo];
|
||||
self.avatarView.imageUrl = roomInfo.avatar;
|
||||
self.titleLabel.text = roomInfo.title;
|
||||
|
||||
// 初始化时直接使用 isGiftEffectsEnabledForRoom: 的状态
|
||||
[self updateGiftEffectImageViewVisibility];
|
||||
|
||||
if (roomInfo.uid == [AccountInfoStorage instance].getUid.integerValue) {
|
||||
self.collectButton.hidden = YES;
|
||||
} else {
|
||||
@@ -544,12 +547,13 @@
|
||||
NSString *roomId = @(roomInfo.roomId).stringValue;
|
||||
BOOL turboGiftEffectsEnabled = [[TurboModeStateManager sharedManager] isGiftEffectsEnabledForRoom:roomId];
|
||||
|
||||
// TODO: 1. 直接使用 isGiftEffectsEnabledForRoom: 的状态,NO = hidden;2. 当 TurboModeStateManager isGiftEffectsEnabledForRoom 值有改变时,需要通知同步
|
||||
BOOL shouldShow = turboGiftEffectsEnabled && !roomInfo.hasAnimationEffect;
|
||||
// 当 turboGiftEffectsEnabled 为 NO 时,显示 noGiftEffectImageView
|
||||
// 只使用 turboGiftEffectsEnabled 状态,不依赖 roomInfo.hasAnimationEffect
|
||||
BOOL shouldShow = !turboGiftEffectsEnabled;
|
||||
self.noGiftEffectImageView.hidden = !shouldShow;
|
||||
|
||||
NSLog(@"🎮 RoomHeaderView: giftEffectImageView 显示状态更新 - 房间ID: %@, turboGiftEffects: %@, hasAnimationEffect: %@, 显示: %@",
|
||||
roomId, turboGiftEffectsEnabled ? @"开启" : @"关闭", roomInfo.hasAnimationEffect ? @"有" : @"无", shouldShow ? @"是" : @"否");
|
||||
NSLog(@"🎮 RoomHeaderView: giftEffectImageView 显示状态更新 - 房间ID: %@, turboGiftEffects: %@, 显示: %@",
|
||||
roomId, turboGiftEffectsEnabled ? @"开启" : @"关闭", shouldShow ? @"是" : @"否");
|
||||
}
|
||||
|
||||
- (void)handleTurboGiftEffectsStateChanged:(NSNotification *)notification {
|
||||
|
@@ -13,7 +13,6 @@
|
||||
|
||||
#import "Api+Room.h"
|
||||
#import "Api+LittleGame.h"
|
||||
#import "Api+TreasureFairy.h"
|
||||
|
||||
#import "AttachmentModel.h"
|
||||
#import "RoomBoomManager.h"
|
||||
@@ -33,7 +32,6 @@
|
||||
#import "XCCurrentVCStackManager.h"
|
||||
#import "XPCandyTreeViewController.h"
|
||||
#import "XPArrangeMicViewController.h"
|
||||
#import "XPTreasureFairyViewController.h"
|
||||
|
||||
#import "RoomLuckyPackageInfoModel.h"
|
||||
#import "LuckyPackageLogicManager.h"
|
||||
@@ -832,16 +830,6 @@ static CGFloat const kNormalHeight = 160.0f;
|
||||
[self lookLoveTapRecognizer];
|
||||
} else if ([info.code isEqualToString:@"NAUTICAL_ADVENTURE"]) {
|
||||
[self sailTapRecognizer];
|
||||
} else if ([info.code isEqualToString:@"SEIZE_TREASURE"]) {
|
||||
XPTreasureFairyViewController * fairyVC = [[XPTreasureFairyViewController alloc] initWithdelegate:self.hostDelegate];
|
||||
fairyVC.roomUid =[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid];
|
||||
fairyVC.view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight);
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC addChildViewController:fairyVC];
|
||||
[[XCCurrentVCStackManager shareManager].getCurrentVC.view addSubview:fairyVC.view];
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
fairyVC.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight);
|
||||
}completion:^(BOOL finished) {
|
||||
}];
|
||||
} else {
|
||||
if (info.skipType == ActivitySkipType_Room) {
|
||||
[self.hostDelegate exitRoom];
|
||||
|
@@ -341,7 +341,6 @@ XPRoomSettingItemModel * itemModel = [[self.datasource xpSafeObjectAtIndex:index
|
||||
|
||||
- (void)didClickCancel:(RoomSettingInputType)type {
|
||||
// if (type == RoomSettingItemType_Pwd) {
|
||||
// // TODO: 狀態復位
|
||||
// }
|
||||
}
|
||||
|
||||
|
@@ -14,6 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
///开始展示声波动画
|
||||
- (void)startWaveAnimationWithUrl:(NSString *)url;
|
||||
- (void)startWaveAnimationWithVideoItem:(SVGAVideoEntity *)videoItem;
|
||||
///结束声波动画
|
||||
- (void)stopWaveAnimation;
|
||||
|
||||
@end
|
||||
|
||||
|
@@ -584,6 +584,9 @@
|
||||
self.microModel = model;
|
||||
MicroStateModel * micStats = model.microState;
|
||||
UserInfoModel * userInfo = model.userInfo;
|
||||
// 重置声波/贵族光圈动画状态,避免复用视图在多次切换麦位后处于不可见/不可重启状态
|
||||
[self.animationView stopWaveAnimation];
|
||||
[self.nobleWaveView stopWaveAnimation];
|
||||
[self configMicroState:micStats];
|
||||
[self configUser:userInfo];
|
||||
}
|
||||
@@ -638,6 +641,9 @@
|
||||
- (void)configUser:(UserInfoModel *)userInfo {
|
||||
|
||||
self.userInfo = userInfo;
|
||||
// 绑定新用户时重置一次动画,确保后续 userSpeaking 立即可启动
|
||||
[self.animationView stopWaveAnimation];
|
||||
[self.nobleWaveView stopWaveAnimation];
|
||||
|
||||
self.nickLabel.hidden = NO;
|
||||
self.sexImageView.hidden = YES;
|
||||
|
@@ -42,9 +42,8 @@
|
||||
return;
|
||||
}
|
||||
|
||||
if (self.isAnimationing) {
|
||||
[self.firstView.layer removeAllAnimations];
|
||||
}
|
||||
[self.firstView.layer removeAllAnimations];
|
||||
|
||||
self.isAnimationing = YES;
|
||||
self.firstView.hidden = NO;
|
||||
[self animationWithLayer:self.firstView];
|
||||
|
@@ -281,6 +281,7 @@
|
||||
[RtcManager instance].localMuted = YES;
|
||||
}
|
||||
}
|
||||
|
||||
if (roomInfo.type == RoomType_Anchor && [[AccountInfoStorage instance].getUid isEqualToString:[NSString stringWithFormat:@"%ld", roomInfo.uid]]) {
|
||||
selfNeedBroadcast = YES;///个播房房主默认角色为主播
|
||||
}
|
||||
@@ -290,8 +291,7 @@
|
||||
[statisMicArray addObject:str];
|
||||
}
|
||||
}
|
||||
if (statisMicArray.count) {
|
||||
}
|
||||
|
||||
if (leaveMode) {
|
||||
UserInfoModel *owner = [[UserInfoModel alloc] init];
|
||||
owner.avatar = anchorModel.userInfo.avatar? anchorModel.userInfo.avatar : roomInfo.avatar;
|
||||
@@ -428,7 +428,142 @@
|
||||
}
|
||||
|
||||
- (NSMutableDictionary<NSString *,MicroQueueModel *> *)getMicroQueue {
|
||||
return self.micQueue;
|
||||
// 创建 micQueue 的深度副本,确保所有内部对象都是副本
|
||||
NSMutableDictionary<NSString *,MicroQueueModel *> *deepCopy = [NSMutableDictionary dictionary];
|
||||
|
||||
for (NSString *position in self.micQueue.allKeys) {
|
||||
MicroQueueModel *originalModel = [self.micQueue objectForKey:position];
|
||||
MicroQueueModel *copiedModel = [[MicroQueueModel alloc] init];
|
||||
|
||||
// 复制 microState
|
||||
if (originalModel.microState) {
|
||||
MicroStateModel *copiedMicroState = [[MicroStateModel alloc] init];
|
||||
copiedMicroState.position = originalModel.microState.position;
|
||||
copiedMicroState.posState = originalModel.microState.posState;
|
||||
copiedMicroState.micState = originalModel.microState.micState;
|
||||
copiedMicroState.datingMicType = originalModel.microState.datingMicType;
|
||||
copiedMicroState.indexOffset = originalModel.microState.indexOffset;
|
||||
copiedModel.microState = copiedMicroState;
|
||||
}
|
||||
|
||||
// 复制 userInfo(深度复制)
|
||||
if (originalModel.userInfo) {
|
||||
UserInfoModel *copiedUserInfo = [[UserInfoModel alloc] init];
|
||||
// 复制所有基本属性
|
||||
copiedUserInfo.bindType = originalModel.userInfo.bindType;
|
||||
copiedUserInfo.createTime = originalModel.userInfo.createTime;
|
||||
copiedUserInfo.parentMode = originalModel.userInfo.parentMode;
|
||||
copiedUserInfo.isBindPhone = originalModel.userInfo.isBindPhone;
|
||||
copiedUserInfo.erbanNo = originalModel.userInfo.erbanNo;
|
||||
copiedUserInfo.registerDay = originalModel.userInfo.registerDay;
|
||||
copiedUserInfo.isFirstCharge = originalModel.userInfo.isFirstCharge;
|
||||
copiedUserInfo.hasPrettyErbanNo = originalModel.userInfo.hasPrettyErbanNo;
|
||||
copiedUserInfo.isBindApple = originalModel.userInfo.isBindApple;
|
||||
copiedUserInfo.fansNum = originalModel.userInfo.fansNum;
|
||||
copiedUserInfo.isBindBankCard = originalModel.userInfo.isBindBankCard;
|
||||
copiedUserInfo.hasRegPacket = originalModel.userInfo.hasRegPacket;
|
||||
copiedUserInfo.gender = originalModel.userInfo.gender;
|
||||
copiedUserInfo.platformRole = originalModel.userInfo.platformRole;
|
||||
copiedUserInfo.uid = originalModel.userInfo.uid;
|
||||
copiedUserInfo.defUser = originalModel.userInfo.defUser;
|
||||
copiedUserInfo.remainDay = originalModel.userInfo.remainDay;
|
||||
copiedUserInfo.isReview = originalModel.userInfo.isReview;
|
||||
copiedUserInfo.newUser = originalModel.userInfo.newUser;
|
||||
copiedUserInfo.followNum = originalModel.userInfo.followNum;
|
||||
copiedUserInfo.isBindPaymentPwd = originalModel.userInfo.isBindPaymentPwd;
|
||||
copiedUserInfo.isBindXCZAccount = originalModel.userInfo.isBindXCZAccount;
|
||||
copiedUserInfo.isBindAlipay = originalModel.userInfo.isBindAlipay;
|
||||
copiedUserInfo.isBindPasswd = originalModel.userInfo.isBindPasswd;
|
||||
copiedUserInfo.visitNum = originalModel.userInfo.visitNum;
|
||||
copiedUserInfo.inRoomNum = originalModel.userInfo.inRoomNum;
|
||||
copiedUserInfo.showLimitCharge = originalModel.userInfo.showLimitCharge;
|
||||
copiedUserInfo.limitChargeEndTime = originalModel.userInfo.limitChargeEndTime;
|
||||
copiedUserInfo.isCertified = originalModel.userInfo.isCertified;
|
||||
copiedUserInfo.isCustomWord = originalModel.userInfo.isCustomWord;
|
||||
copiedUserInfo.otherViewType = originalModel.userInfo.otherViewType;
|
||||
copiedUserInfo.headwearType = originalModel.userInfo.headwearType;
|
||||
copiedUserInfo.headWearType = originalModel.userInfo.headWearType;
|
||||
copiedUserInfo.vipMic = originalModel.userInfo.vipMic;
|
||||
copiedUserInfo.hasSelectUser = originalModel.userInfo.hasSelectUser;
|
||||
copiedUserInfo.selectMicPosition = originalModel.userInfo.selectMicPosition;
|
||||
copiedUserInfo.gameStatus = originalModel.userInfo.gameStatus;
|
||||
copiedUserInfo.groupType = originalModel.userInfo.groupType;
|
||||
copiedUserInfo.preventKick = originalModel.userInfo.preventKick;
|
||||
copiedUserInfo.fromSayHelloChannel = originalModel.userInfo.fromSayHelloChannel;
|
||||
copiedUserInfo.banAccount = originalModel.userInfo.banAccount;
|
||||
copiedUserInfo.isRechargeUser = originalModel.userInfo.isRechargeUser;
|
||||
copiedUserInfo.isNoProhibitMic = originalModel.userInfo.isNoProhibitMic;
|
||||
copiedUserInfo.hasSuperRole = originalModel.userInfo.hasSuperRole;
|
||||
copiedUserInfo.uploadGifAvatarPrice = originalModel.userInfo.uploadGifAvatarPrice;
|
||||
copiedUserInfo.birth = originalModel.userInfo.birth;
|
||||
|
||||
// 复制字符串属性
|
||||
copiedUserInfo.phone = [originalModel.userInfo.phone copy];
|
||||
copiedUserInfo.email = [originalModel.userInfo.email copy];
|
||||
copiedUserInfo.nick = [originalModel.userInfo.nick copy];
|
||||
copiedUserInfo.avatar = [originalModel.userInfo.avatar copy];
|
||||
copiedUserInfo.reviewingAvatar = [originalModel.userInfo.reviewingAvatar copy];
|
||||
copiedUserInfo.region = [originalModel.userInfo.region copy];
|
||||
copiedUserInfo.userDesc = [originalModel.userInfo.userDesc copy];
|
||||
copiedUserInfo.nameplatePic = [originalModel.userInfo.nameplatePic copy];
|
||||
copiedUserInfo.nameplateWord = [originalModel.userInfo.nameplateWord copy];
|
||||
copiedUserInfo.roomUid = [originalModel.userInfo.roomUid copy];
|
||||
copiedUserInfo.roomTitle = [originalModel.userInfo.roomTitle copy];
|
||||
copiedUserInfo.carEffect = [originalModel.userInfo.carEffect copy];
|
||||
copiedUserInfo.viewUrl = [originalModel.userInfo.viewUrl copy];
|
||||
copiedUserInfo.carName = [originalModel.userInfo.carName copy];
|
||||
copiedUserInfo.headwearEffect = [originalModel.userInfo.headwearEffect copy];
|
||||
copiedUserInfo.headwearPic = [originalModel.userInfo.headwearPic copy];
|
||||
copiedUserInfo.headWearUrl = [originalModel.userInfo.headWearUrl copy];
|
||||
copiedUserInfo.capUrl = [originalModel.userInfo.capUrl copy];
|
||||
copiedUserInfo.userInfoCardPic = [originalModel.userInfo.userInfoCardPic copy];
|
||||
copiedUserInfo.micCircle = [originalModel.userInfo.micCircle copy];
|
||||
copiedUserInfo.micNickColor = [originalModel.userInfo.micNickColor copy];
|
||||
copiedUserInfo.fromNick = [originalModel.userInfo.fromNick copy];
|
||||
copiedUserInfo.fromUid = [originalModel.userInfo.fromUid copy];
|
||||
copiedUserInfo.androidBubbleUrl = [originalModel.userInfo.androidBubbleUrl copy];
|
||||
copiedUserInfo.iosBubbleUrl = [originalModel.userInfo.iosBubbleUrl copy];
|
||||
copiedUserInfo.phoneAreaCode = [originalModel.userInfo.phoneAreaCode copy];
|
||||
copiedUserInfo.partitionId = [originalModel.userInfo.partitionId copy];
|
||||
copiedUserInfo.guildNameplateIcon = [originalModel.userInfo.guildNameplateIcon copy];
|
||||
copiedUserInfo.regionIcon = [originalModel.userInfo.regionIcon copy];
|
||||
copiedUserInfo.visitTimeDesc = [originalModel.userInfo.visitTimeDesc copy];
|
||||
|
||||
// 复制数组属性(浅复制,因为数组元素通常是不可变的)
|
||||
copiedUserInfo.labels = [originalModel.userInfo.labels copy];
|
||||
copiedUserInfo.privatePhoto = [originalModel.userInfo.privatePhoto copy];
|
||||
copiedUserInfo.absCardPics = [originalModel.userInfo.absCardPics copy];
|
||||
copiedUserInfo.userGiftWall = [originalModel.userInfo.userGiftWall copy];
|
||||
copiedUserInfo.userLuckyBagGiftWall = [originalModel.userInfo.userLuckyBagGiftWall copy];
|
||||
copiedUserInfo.dynamicInfo = [originalModel.userInfo.dynamicInfo copy];
|
||||
copiedUserInfo.userNameplateList = [originalModel.userInfo.userNameplateList copy];
|
||||
copiedUserInfo.medalsPic = [originalModel.userInfo.medalsPic copy];
|
||||
|
||||
// 复制复杂对象属性(浅复制,因为这些对象通常不需要深度修改)
|
||||
copiedUserInfo.userExpand = originalModel.userInfo.userExpand;
|
||||
copiedUserInfo.userLevelVo = originalModel.userInfo.userLevelVo;
|
||||
copiedUserInfo.userInfoSkillVo = originalModel.userInfo.userInfoSkillVo;
|
||||
copiedUserInfo.userVipInfoVO = originalModel.userInfo.userVipInfoVO;
|
||||
copiedUserInfo.audioCard = originalModel.userInfo.audioCard;
|
||||
copiedUserInfo.medals = originalModel.userInfo.medals;
|
||||
copiedUserInfo.relationUserVO = originalModel.userInfo.relationUserVO;
|
||||
copiedUserInfo.guildInfo = originalModel.userInfo.guildInfo;
|
||||
copiedUserInfo.usingPersonalBackground = originalModel.userInfo.usingPersonalBackground;
|
||||
copiedUserInfo.infoCardVo = originalModel.userInfo.infoCardVo;
|
||||
|
||||
// 复制属性字符串(这些是计算属性,直接复制)
|
||||
copiedUserInfo.levelAtt = [originalModel.userInfo.levelAtt copy];
|
||||
copiedUserInfo.idAtt = [originalModel.userInfo.idAtt copy];
|
||||
|
||||
copiedModel.userInfo = copiedUserInfo;
|
||||
} else {
|
||||
copiedModel.userInfo = nil;
|
||||
}
|
||||
|
||||
[deepCopy setObject:copiedModel forKey:position];
|
||||
}
|
||||
|
||||
return deepCopy;
|
||||
}
|
||||
|
||||
- (void)onRoomUpdate {
|
||||
@@ -486,9 +621,7 @@
|
||||
NSString* position = [data objectForKey:NIMChatroomEventInfoQueueChangeItemKey];
|
||||
UserInfoModel* userInfo = [UserInfoModel modelWithJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]];
|
||||
NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue];
|
||||
if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) {
|
||||
ownerRTCChanged = YES;
|
||||
}
|
||||
|
||||
// 先清除该用户旧的麦位
|
||||
for (MicroQueueModel *sequence in self.micQueue.allValues) {
|
||||
if (userInfo.uid == sequence.userInfo.uid) {
|
||||
@@ -496,7 +629,19 @@
|
||||
}
|
||||
}
|
||||
RoomInfoModel *roomInfo = self.hostDelegate.getRoomInfo;
|
||||
if (changeType == 2){
|
||||
if (changeType == 2){ // 下麦
|
||||
// 移除对应 position 的 MicroQueueModel 的 userInfo
|
||||
MicroQueueModel *sequence = [self.micQueue objectForKey:position];
|
||||
if (sequence) {
|
||||
sequence.userInfo = nil;
|
||||
|
||||
// 确保 micQueue 更新后立即同步到视图
|
||||
UIView<MicroViewProtocol> *microView = [self findMicroViewByIndex:[self positionToIndex:position]];
|
||||
if (microView) {
|
||||
[microView configMicroView:sequence];
|
||||
}
|
||||
}
|
||||
|
||||
if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue && roomInfo.roomModeType == RoomModeType_Open_Blind){
|
||||
if (roomInfo.roomModeType != RoomModeType_Open_AcrossRoomPK_mode){
|
||||
if ([RtcManager instance].isAnckorPk == NO){
|
||||
@@ -510,6 +655,12 @@
|
||||
}else if (changeType == 1) { // 上麦
|
||||
MicroQueueModel *sequence = [self.micQueue objectForKey:position];
|
||||
sequence.userInfo = userInfo;
|
||||
|
||||
// 确保 micQueue 更新后立即同步到视图
|
||||
UIView<MicroViewProtocol> *microView = [self findMicroViewByIndex:[self positionToIndex:position]];
|
||||
if (microView) {
|
||||
[microView configMicroView:sequence];
|
||||
}
|
||||
if (self.hostDelegate.getRoomInfo.showGiftValue && userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) {
|
||||
RoomInfoModel * roomInfo =self.hostDelegate.getRoomInfo;
|
||||
NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid];
|
||||
@@ -546,9 +697,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[RtcManager instance].isMiniEnter = NO;
|
||||
});
|
||||
[RtcManager instance].isMiniEnter = NO;
|
||||
}
|
||||
}
|
||||
if(userInfo.isNoProhibitMic == YES){
|
||||
@@ -590,6 +739,10 @@
|
||||
case NIMChatroomEventTypeExit:
|
||||
case NIMChatroomEventTypeKicked:
|
||||
{
|
||||
if (message.session.sessionId == self.hostDelegate.getRoomInfo.roomId) {
|
||||
|
||||
}
|
||||
|
||||
for (NIMChatroomNotificationMember *member in content.targets) {
|
||||
for (MicroQueueModel *sequence in self.micQueue.allValues) {
|
||||
if (member.userId.integerValue == sequence.userInfo.uid) {
|
||||
@@ -1379,6 +1532,7 @@
|
||||
}
|
||||
|
||||
- (NSMutableDictionary<NSString *, MicroQueueModel *> *)micQueue {
|
||||
// 可能是使用的對象不一致- stageview 和 當前選擇(比如 nineteenmicstageview)的保存 queue 內容不一致。
|
||||
if (!_micQueue) {
|
||||
_micQueue= [NSMutableDictionary dictionary];
|
||||
for (int i = 0; i < self.countOfMicroView; i++) {
|
||||
|
@@ -75,10 +75,31 @@
|
||||
|
||||
- (void)cleanup {
|
||||
if (self.currentStageView) {
|
||||
[self.currentStageView removeFromSuperview];
|
||||
NSLog(@"🧹 StageViewManager: 开始清理 stageView | Type: %ld | Class: %@",
|
||||
(long)self.currentRoomType, NSStringFromClass([self.currentStageView class]));
|
||||
|
||||
// 1. 通知 stageView 进行清理操作
|
||||
if ([self.currentStageView respondsToSelector:@selector(exitNIMRoom)]) {
|
||||
[self.currentStageView exitNIMRoom];
|
||||
NSLog(@"🧹 StageViewManager: 已调用 stageView.exitNIMRoom");
|
||||
}
|
||||
|
||||
// 2. 移除所有子视图引用
|
||||
if (self.currentStageView.superview) {
|
||||
[self.currentStageView removeFromSuperview];
|
||||
NSLog(@"🧹 StageViewManager: stageView 已从 superview 移除");
|
||||
}
|
||||
|
||||
// 3. 清空所有子视图
|
||||
[self.currentStageView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
|
||||
|
||||
// 4. 释放 stageView 实例
|
||||
self.currentStageView = nil;
|
||||
NSLog(@"🧹 StageViewManager: 清理 stageView");
|
||||
NSLog(@"🧹 StageViewManager: stageView 清理完成");
|
||||
}
|
||||
|
||||
// 5. 清空容器引用
|
||||
self.container = nil;
|
||||
}
|
||||
|
||||
- (BOOL)shouldChangeStageViewType:(RoomType)newType {
|
||||
@@ -127,7 +148,10 @@
|
||||
self.currentStageView = [[TenMicStageView alloc] initWithDelegate:delegate];
|
||||
break;
|
||||
}
|
||||
case RoomType_Room: // RoomType_Game
|
||||
case RoomType_Room: { // RoomType_Game
|
||||
self.currentStageView = [[SocialStageView alloc] initWithDelegate:delegate];
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
self.currentStageView = [[SocialStageView alloc] initWithDelegate:delegate];
|
||||
break;
|
||||
|
@@ -1,132 +0,0 @@
|
||||
//
|
||||
// Api+TreasureFairy.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/15.
|
||||
//
|
||||
|
||||
#import "Api.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface Api (TreasureFairy)
|
||||
/// 夺宝限制
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFailyLimitInfo:(HttpRequestHelperCompletion)completion;
|
||||
/// 夺宝奖池
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFailyDrawList:(HttpRequestHelperCompletion)completion;
|
||||
|
||||
/// 夺宝信息
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFailyDrawInfo:(HttpRequestHelperCompletion)completion;
|
||||
|
||||
/// 开始夺宝
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - roomUid: 房主的uid
|
||||
/// - drawNum: 个数
|
||||
+ (void)treasureFailyDraw:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid drawNum:(NSString *)drawNum;
|
||||
|
||||
/// 森林抽奖
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - roomUid: 抽奖次数
|
||||
/// - poolLevel: 奖池类型 1:初级;2:中级;3:高级;
|
||||
+ (void)treasureFailyForestDraw:(HttpRequestHelperCompletion)completion drawNum:(NSString *)drawNum poolLevel:(NSString *)poolLevel;
|
||||
|
||||
/// 森林抽奖记录
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - page: 页数
|
||||
/// - pageSize: 一页多少个
|
||||
+ (void)treasureFairyForestDrawRecord:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize;
|
||||
|
||||
/// 用户森林信息
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFailyForestUserInfo:(HttpRequestHelperCompletion)completion;
|
||||
|
||||
/// 猛犸森林奖池配置列表
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter poolLevel: 奖池等级
|
||||
+ (void)treasureFailyForestItems:(HttpRequestHelperCompletion)completion poolLevel:(NSString *)poolLevel;
|
||||
|
||||
/// 我的精灵
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFairyMyBallList:(HttpRequestHelperCompletion)completion;
|
||||
|
||||
/// 我的好友
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - nick: 昵称
|
||||
+ (void)treasureFairyFansFriendList:(HttpRequestHelperCompletion)completion nick:(NSString *)nick;
|
||||
|
||||
/// 精灵赠送
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - elfId: 精灵id
|
||||
/// - targetUid: 目标用户的uid
|
||||
+ (void)treasureFairySendFairyBall:(HttpRequestHelperCompletion)completion elfId:(NSString *)elfId targetUid:(NSString *)targetUid;
|
||||
|
||||
/// 索要
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - elfId: 精灵id
|
||||
/// - targetUid: 目标用户的uid
|
||||
+ (void)treasureFairyAskForFairyBall:(HttpRequestHelperCompletion)completion elfId:(NSString *)elfId targetUid:(NSString *)targetUid;
|
||||
|
||||
/// 赠与和获赠记录
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter page: 一页多少个
|
||||
+ (void)treasureFailySendAndAskRecordList:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize;
|
||||
|
||||
/// 精灵试炼
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter page: 一页多少个
|
||||
+ (void)treasureFailyCompoundBall:(HttpRequestHelperCompletion)completion compoundLevel:(NSInteger)compoundLevel compoundReqs:(NSArray *)compoundReqs;
|
||||
|
||||
/// 精灵试炼记录
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter pageSize: 一页多少个
|
||||
+ (void)treasureFailyCompoundBallRecord:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize;
|
||||
|
||||
/// 兑换-精灵召回列表
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter pageSize: 一页多少个
|
||||
+ (void)treasureFailyConvertElfList:(HttpRequestHelperCompletion)completion;
|
||||
|
||||
/// 兑换-精灵
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter itemId: id
|
||||
+ (void)treasureFailyConvert:(HttpRequestHelperCompletion)completion itemId:(NSString *)itemId roomUid:(NSString *)roomUid propIdStr:(NSString *)propIdStr propNumStr:(NSString *)propNumStr;
|
||||
|
||||
/// 兑换-碎片兑换列表
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter pageSize: 一页多少个
|
||||
+ (void)treasureFailyFragmentExchangeList:(HttpRequestHelperCompletion)completion;
|
||||
|
||||
/// 兑换记录
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - convertType: 1:精灵召唤 2:碎片兑换
|
||||
/// - page: 页数
|
||||
/// - pageSize: 一页多少个
|
||||
+ (void)treasureFairyConvertRecord:(HttpRequestHelperCompletion)completion convertType:(NSString *)convertType page:(NSString *)page pageSize:(NSString *)pageSize;
|
||||
/// 购买精灵碎片
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - num: 数量
|
||||
/// - uid: 用户id
|
||||
+(void)buyElfShard:(HttpRequestHelperCompletion)completion num:(NSString *)num uid:(NSString *)uid;
|
||||
/// 精灵分解
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter salvageReq: 分解的精灵
|
||||
+ (void)treasureFailySalvageall:(HttpRequestHelperCompletion)completion salvageReq:(NSArray *)salvageReq;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,184 +0,0 @@
|
||||
//
|
||||
// Api+TreasureFairy.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/15.
|
||||
//
|
||||
|
||||
#import "Api+TreasureFairy.h"
|
||||
#import "NSMutableDictionary+Saft.h"
|
||||
@implementation Api (TreasureFairy)
|
||||
|
||||
/// 夺宝限制
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFailyLimitInfo:(HttpRequestHelperCompletion)completion {
|
||||
[self makeRequest:@"act/seize-treasure/status" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil];
|
||||
}
|
||||
|
||||
/// 夺宝奖池
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFailyDrawList:(HttpRequestHelperCompletion)completion {
|
||||
[self makeRequest:@"act/seize-treasure/draw/pool/list" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil];
|
||||
}
|
||||
|
||||
/// 夺宝信息
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFailyDrawInfo:(HttpRequestHelperCompletion)completion {
|
||||
[self makeRequest:@"act/seize-treasure/user/draw/info" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil];
|
||||
}
|
||||
|
||||
/// 开始夺宝
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - roomUid: 房主的uid
|
||||
/// - drawNum: 个数
|
||||
+ (void)treasureFailyDraw:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid drawNum:(NSString *)drawNum {
|
||||
[self makeRequest:@"act/seize-treasure/draw" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, drawNum, nil];
|
||||
}
|
||||
|
||||
/// 森林抽奖
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - roomUid: 抽奖次数
|
||||
/// - poolLevel: 奖池类型 1:初级;2:中级;3:高级;
|
||||
+ (void)treasureFailyForestDraw:(HttpRequestHelperCompletion)completion drawNum:(NSString *)drawNum poolLevel:(NSString *)poolLevel {
|
||||
[self makeRequest:@"act/seize-treasure/forest/draw" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, drawNum, poolLevel, nil];
|
||||
}
|
||||
|
||||
/// 森林抽奖记录
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - page: 页数
|
||||
/// - pageSize: 一页多少个
|
||||
+ (void)treasureFairyForestDrawRecord:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize {
|
||||
[self makeRequest:@"act/seize-treasure/forest/draw/record" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, page, pageSize, nil];
|
||||
}
|
||||
|
||||
/// 用户森林信息
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFailyForestUserInfo:(HttpRequestHelperCompletion)completion {
|
||||
[self makeRequest:@"act/seize-treasure/user/forest/info" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil];
|
||||
}
|
||||
|
||||
/// 猛犸森林奖池配置列表
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter poolLevel: 奖池等级
|
||||
+ (void)treasureFailyForestItems:(HttpRequestHelperCompletion)completion poolLevel:(NSString *)poolLevel {
|
||||
[self makeRequest:@"act/seize-treasure/draw/forest/item" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,poolLevel, nil];
|
||||
}
|
||||
|
||||
/// 我的精灵
|
||||
/// - Parameter completion: 完成
|
||||
+ (void)treasureFairyMyBallList:(HttpRequestHelperCompletion)completion {
|
||||
[self makeRequest:@"act/seize-treasure/elf/user/info" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil];
|
||||
}
|
||||
|
||||
/// 我的好友
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - nick: 昵称
|
||||
+ (void)treasureFairyFansFriendList:(HttpRequestHelperCompletion)completion nick:(NSString *)nick {
|
||||
NSMutableDictionary * params = [NSMutableDictionary dictionary];
|
||||
[params safeSetObject:nick forKey:@"nick"];
|
||||
[HttpRequestHelper request:@"fans/friend/list" method:HttpRequestHelperMethodGET params:params completion:completion];
|
||||
}
|
||||
|
||||
/// 精灵赠送
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - elfId: 精灵id
|
||||
/// - targetUid: 目标用户的uid
|
||||
+ (void)treasureFairySendFairyBall:(HttpRequestHelperCompletion)completion elfId:(NSString *)elfId targetUid:(NSString *)targetUid {
|
||||
[self makeRequest:@"act/seize-treasure/elf/send" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,elfId, targetUid, nil];
|
||||
}
|
||||
|
||||
/// 索要
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - elfId: 精灵id
|
||||
/// - targetUid: 目标用户的uid
|
||||
+ (void)treasureFairyAskForFairyBall:(HttpRequestHelperCompletion)completion elfId:(NSString *)elfId targetUid:(NSString *)targetUid {
|
||||
[self makeRequest:@"act/seize-treasure/elf/askFor" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,elfId, targetUid, nil];
|
||||
}
|
||||
|
||||
/// 赠与和获赠记录
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter page: 一页多少个
|
||||
+ (void)treasureFailySendAndAskRecordList:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize {
|
||||
[self makeRequest:@"act/seize-treasure/elf/record" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, page, pageSize,nil];
|
||||
}
|
||||
|
||||
/// 精灵试炼
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter page: 一页多少个
|
||||
+ (void)treasureFailyCompoundBall:(HttpRequestHelperCompletion)completion compoundLevel:(NSInteger)compoundLevel compoundReqs:(NSArray *)compoundReqs {
|
||||
NSMutableDictionary * dic = [NSMutableDictionary dictionary];
|
||||
[dic safeSetObject:@(compoundLevel) forKey:@"level"];
|
||||
[dic safeSetObject:compoundReqs forKey:@"expendList"];
|
||||
[HttpRequestHelper postSkillCard:@"act/seize-treasure/elf/compound" params:dic.toJSONString completion:completion];
|
||||
}
|
||||
/// 精灵分解
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter salvageReq: 分解的精灵
|
||||
+ (void)treasureFailySalvageall:(HttpRequestHelperCompletion)completion salvageReq:(NSArray *)salvageReq {
|
||||
NSMutableDictionary * dic = [NSMutableDictionary dictionary];
|
||||
[dic safeSetObject:salvageReq forKey:@"expendList"];
|
||||
[HttpRequestHelper postSkillCard:@"act/seize-treasure/elf/salvage" params:dic.toJSONString completion:completion];
|
||||
}
|
||||
/// 精灵试炼记录
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter pageSize: 一页多少个
|
||||
+ (void)treasureFailyCompoundBallRecord:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize {
|
||||
[self makeRequest:@"act/seize-treasure/elf/compound/record" method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, page, pageSize, nil];
|
||||
}
|
||||
|
||||
/// 兑换-精灵召回列表
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter pageSize: 一页多少个
|
||||
+ (void)treasureFailyConvertElfList:(HttpRequestHelperCompletion)completion {
|
||||
[self makeRequest:@"act/seize-treasure/convert/elf/list" method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, nil];
|
||||
}
|
||||
|
||||
/// 兑换-精灵
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter itemId: id
|
||||
+ (void)treasureFailyConvert:(HttpRequestHelperCompletion)completion itemId:(NSString *)itemId roomUid:(nonnull NSString *)roomUid propIdStr:(NSString *)propIdStr propNumStr:(NSString *)propNumStr {
|
||||
if(propIdStr.length > 0){
|
||||
[self makeRequest:@"act/seize-treasure/convert" method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, itemId, roomUid,propIdStr,propNumStr,nil];
|
||||
return;
|
||||
}
|
||||
[self makeRequest:@"act/seize-treasure/convert" method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, itemId, roomUid,nil];
|
||||
}
|
||||
|
||||
/// 兑换-碎片兑换列表
|
||||
/// - Parameter completion: 完成
|
||||
/// - Parameter page: 页数
|
||||
/// - Parameter pageSize: 一页多少个
|
||||
+ (void)treasureFailyFragmentExchangeList:(HttpRequestHelperCompletion)completion {
|
||||
[self makeRequest:@"act/seize-treasure/convert/chip/list" method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, nil];
|
||||
}
|
||||
|
||||
/// 兑换记录
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - convertType: 1:精灵召唤 2:碎片兑换
|
||||
/// - page: 页数
|
||||
/// - pageSize: 一页多少个
|
||||
+ (void)treasureFairyConvertRecord:(HttpRequestHelperCompletion)completion convertType:(NSString *)convertType page:(NSString *)page pageSize:(NSString *)pageSize {
|
||||
[self makeRequest:@"act/seize-treasure/convert/record" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, convertType, page, pageSize, nil];
|
||||
}
|
||||
|
||||
/// 购买精灵碎片
|
||||
/// - Parameters:
|
||||
/// - completion: 完成
|
||||
/// - num: 数量
|
||||
/// - uid: 用户id
|
||||
+(void)buyElfShard:(HttpRequestHelperCompletion)completion num:(NSString*)num uid:(NSString *)uid{
|
||||
[self makeRequest:@"act/seize-treasure/shard/buy" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, num,uid, nil];
|
||||
}
|
||||
|
||||
@end
|
@@ -1,35 +0,0 @@
|
||||
//
|
||||
// TreasureFailryMessageModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/3/1.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TreasureFailryMessageModel : PIBaseModel
|
||||
///奖励的名称
|
||||
@property (nonatomic,copy) NSString *rewardName;
|
||||
///奖励的个数
|
||||
@property (nonatomic,assign) NSInteger rewardNum;
|
||||
///用户的uid
|
||||
@property (nonatomic,copy) NSString *uid;
|
||||
///昵称
|
||||
@property (nonatomic,copy) NSString *nick;
|
||||
///所在房间的Uid
|
||||
@property (nonatomic,copy) NSString *roomUid;
|
||||
///奖励等级
|
||||
@property (nonatomic,assign) NSInteger rewardLevel;
|
||||
///奖励类型
|
||||
@property (nonatomic,copy) NSString *rewardType;
|
||||
///限制等级
|
||||
@property (nonatomic,assign) NSInteger userLevelLimit;
|
||||
///礼物价值
|
||||
@property (nonatomic,assign) NSInteger rewardShowValue;
|
||||
/// 奖励单位
|
||||
@property (nonatomic, copy) NSString *rewardUnit;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// TreasureFailryMessageModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/3/1.
|
||||
//
|
||||
|
||||
#import "TreasureFailryMessageModel.h"
|
||||
|
||||
@implementation TreasureFailryMessageModel
|
||||
|
||||
@end
|
@@ -1,25 +0,0 @@
|
||||
//
|
||||
// TreasureFailyKeyInfoModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/17.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TreasureFailyKeyInfoModel : PIBaseModel
|
||||
///门票数
|
||||
@property (nonatomic,assign) NSInteger drawTicketNum;
|
||||
///幸运值
|
||||
@property (nonatomic,assign) NSInteger luckyNum;
|
||||
///写一个幸运值
|
||||
@property (nonatomic,assign) NSInteger nextBallNum;
|
||||
///需要幸运值
|
||||
@property (nonatomic,assign) NSInteger needLuckyNum;
|
||||
///保存我的精灵选择的精灵等级,0,初级,1,史诗,2,传说
|
||||
@property (nonatomic,assign) NSInteger spriteLevel;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// TreasureFailyKeyInfoModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/17.
|
||||
//
|
||||
|
||||
#import "TreasureFailyKeyInfoModel.h"
|
||||
|
||||
@implementation TreasureFailyKeyInfoModel
|
||||
|
||||
@end
|
@@ -1,52 +0,0 @@
|
||||
//
|
||||
// TreasureFairyBallInfoModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/22.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "TreasureFairyInfoModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class TreasureFairyBallModel;
|
||||
@interface TreasureFairyBallInfoModel : PIBaseModel
|
||||
///头像
|
||||
@property (nonatomic,copy) NSString *avatar;
|
||||
///昵称
|
||||
@property (nonatomic,copy) NSString *nick;
|
||||
///精灵碎片
|
||||
@property (nonatomic,assign) NSInteger chipNum;
|
||||
///史诗
|
||||
@property (nonatomic,copy) NSArray<TreasureFairyBallModel *> *middleElves;
|
||||
///普通
|
||||
@property (nonatomic,copy) NSArray<TreasureFairyBallModel *> *lowElves;
|
||||
///传说
|
||||
@property (nonatomic,copy) NSArray<TreasureFairyBallModel *> *highElves;
|
||||
@end
|
||||
|
||||
@interface TreasureFairyBallModel : PIBaseModel
|
||||
///id
|
||||
@property (nonatomic,assign) NSInteger elfId;
|
||||
///精灵名称
|
||||
@property (nonatomic,copy) NSString *elfName;
|
||||
///精灵数量
|
||||
@property (nonatomic,assign) NSInteger elfNum;
|
||||
///精灵图片
|
||||
@property (nonatomic,copy) NSString *elfPicUrl;
|
||||
///精灵等级
|
||||
@property (nonatomic,assign) TreasureFairyStoreType elfLevel;
|
||||
///是否翻转了 本地字段
|
||||
@property (nonatomic,assign) BOOL isFlip;
|
||||
///选中的个数 最大为3
|
||||
@property (nonatomic,assign) NSInteger chooseNum;
|
||||
///消息中使用的
|
||||
///昵称 赠送的时候使用
|
||||
@property (nonatomic,copy) NSString *nick;
|
||||
///赠送的人的uid
|
||||
@property (nonatomic,assign) NSInteger uid;
|
||||
|
||||
|
||||
@property(nonatomic,assign) BOOL isHigh;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,26 +0,0 @@
|
||||
//
|
||||
// TreasureFairyBallInfoModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/22.
|
||||
//
|
||||
|
||||
#import "TreasureFairyBallInfoModel.h"
|
||||
|
||||
@implementation TreasureFairyBallInfoModel
|
||||
+ (NSDictionary *)objectClassInArray {
|
||||
return @{
|
||||
@"highElves":TreasureFairyBallModel.class,
|
||||
@"lowElves":TreasureFairyBallModel.class,
|
||||
@"middleElves":TreasureFairyBallModel.class,
|
||||
};
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation TreasureFairyBallModel
|
||||
|
||||
|
||||
|
||||
@end
|
@@ -1,27 +0,0 @@
|
||||
//
|
||||
// TreasureFairyConvertRecordModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by XY on 2023/3/1.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TreasureFairyConvertRecordModel : PIBaseModel
|
||||
|
||||
@property (nonatomic, assign) NSInteger convertLevel;
|
||||
@property (nonatomic, assign) NSInteger convertType;
|
||||
@property (nonatomic, copy) NSString *createTime;
|
||||
@property (nonatomic, assign) NSInteger recordId;
|
||||
@property (nonatomic, copy) NSString *rewardName;
|
||||
@property (nonatomic, copy) NSString *rewardNum;
|
||||
@property (nonatomic, copy) NSString *rewardPicUrl;
|
||||
@property (nonatomic, copy) NSString *rewardShowValue;
|
||||
@property (nonatomic, copy) NSString *rewardType;
|
||||
@property (nonatomic, copy) NSString *rewardUnit;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// TreasureFairyConvertRecordModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by XY on 2023/3/1.
|
||||
//
|
||||
|
||||
#import "TreasureFairyConvertRecordModel.h"
|
||||
|
||||
@implementation TreasureFairyConvertRecordModel
|
||||
|
||||
@end
|
@@ -1,53 +0,0 @@
|
||||
//
|
||||
// TreasureFairyFragmentModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by XY on 2023/2/28.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TreasureFairyFragmentModel : PIBaseModel
|
||||
|
||||
/// 消耗数量
|
||||
@property (nonatomic, assign) NSInteger expendNum;
|
||||
/// 兑换项id
|
||||
@property (nonatomic, assign) NSInteger itemId;
|
||||
/// 兑换等级
|
||||
@property (nonatomic, assign) NSInteger level;
|
||||
/// 奖励id
|
||||
@property (nonatomic, assign) NSInteger rewardId;
|
||||
/// 奖励名称
|
||||
@property (nonatomic, copy) NSString *rewardName;
|
||||
/// 奖励数量
|
||||
@property (nonatomic, assign) NSInteger rewardNum;
|
||||
/// 奖励图片url
|
||||
@property (nonatomic, copy) NSString *rewardPicUrl;
|
||||
/// 奖励价值
|
||||
@property (nonatomic, copy) NSString *rewardShowValue;
|
||||
/// 奖励类型 activityProps:活动道具;gift:礼物;namePlate:铭牌;car:座驾;headwear:头饰;chatBubble:气泡;infoCard:资料卡;
|
||||
@property (nonatomic, copy) NSString *rewardType;
|
||||
/// 奖励单位
|
||||
@property (nonatomic, copy) NSString *rewardUnit;
|
||||
/// 兑换类型
|
||||
@property (nonatomic, assign) NSInteger type;
|
||||
|
||||
@property(nonatomic,copy) NSArray *propItems;
|
||||
|
||||
@end
|
||||
@interface TreasureFairyFragmentItemModel : PIBaseModel
|
||||
|
||||
|
||||
@property (nonatomic, copy) NSString *picUrl;
|
||||
|
||||
@property (nonatomic, copy) NSString *propId;
|
||||
|
||||
@property (nonatomic, copy) NSString *propName;
|
||||
|
||||
@property (nonatomic, copy) NSString *propNum;
|
||||
|
||||
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,20 +0,0 @@
|
||||
//
|
||||
// TreasureFairyFragmentModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by XY on 2023/2/28.
|
||||
//
|
||||
|
||||
#import "TreasureFairyFragmentModel.h"
|
||||
|
||||
@implementation TreasureFairyFragmentModel
|
||||
+ (NSDictionary *)objectClassInArray{
|
||||
return @{@"propItems":TreasureFairyFragmentItemModel.class};
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation TreasureFairyFragmentItemModel
|
||||
|
||||
|
||||
|
||||
@end
|
@@ -1,58 +0,0 @@
|
||||
//
|
||||
// TreasureFairyInfoModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/15.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSInteger, TreasureFairyStoreType) {
|
||||
///普通
|
||||
TreasureFairyStoreType_Normal = 1,
|
||||
///史诗
|
||||
TreasureFairyStoreType_Middle = 2,
|
||||
///传说
|
||||
TreasureFairyStoreType_High = 3,
|
||||
///分解
|
||||
TreasureFairyStoreType_Salvage = 7,
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, TreasureFairyPropType) {
|
||||
///碎片
|
||||
TreasureFairyPropType_Piece = 1,
|
||||
///精灵球
|
||||
TreasureFairyPropType_Ball = 2,
|
||||
///精灵
|
||||
TreasureFairyPropType_Fairy = 3,
|
||||
///分解获得碎片
|
||||
TreasureFairyPropType_Salvage = 4,
|
||||
};
|
||||
|
||||
@interface TreasureFairyInfoModel : PIBaseModel
|
||||
///奖励id
|
||||
@property (nonatomic,assign) NSInteger rewardId;
|
||||
///奖励的名称
|
||||
@property (nonatomic,copy) NSString *rewardName;
|
||||
///奖励的个数
|
||||
@property (nonatomic,assign) NSInteger rewardNum;
|
||||
///奖励的图片
|
||||
@property (nonatomic,copy) NSString *rewardPicUrl;
|
||||
/// 展示概率
|
||||
@property (nonatomic,assign) CGFloat showRatio;
|
||||
///礼物的等级
|
||||
@property (nonatomic,assign) NSInteger rewardLevel;
|
||||
///礼物的index
|
||||
@property (nonatomic,assign) NSInteger itemIndex;
|
||||
#pragma mark - 夺宝记录
|
||||
///奖池等级
|
||||
@property (nonatomic,assign) TreasureFairyStoreType poolLevel;
|
||||
///时间戳
|
||||
@property (nonatomic,copy) NSString *drawTime;
|
||||
///森林开出的礼物类型
|
||||
@property (nonatomic,assign) TreasureFairyPropType propType;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// TreasureFairyInfoModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/15.
|
||||
//
|
||||
|
||||
#import "TreasureFairyInfoModel.h"
|
||||
|
||||
@implementation TreasureFairyInfoModel
|
||||
|
||||
@end
|
@@ -1,19 +0,0 @@
|
||||
//
|
||||
// TreasureFairyLimitModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/3/1.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TreasureFairyLimitModel : PIBaseModel
|
||||
///是否开启
|
||||
@property (nonatomic,assign) BOOL open;
|
||||
///等级限制
|
||||
@property (nonatomic,assign) NSInteger levelLimit;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// TreasureFairyLimitModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/3/1.
|
||||
//
|
||||
|
||||
#import "TreasureFairyLimitModel.h"
|
||||
|
||||
@implementation TreasureFairyLimitModel
|
||||
|
||||
@end
|
@@ -1,30 +0,0 @@
|
||||
//
|
||||
// TreasureFairyRewardModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/28.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "TreasureFairyInfoModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TreasureFairyRewardModel : PIBaseModel
|
||||
@property (nonatomic,assign) NSInteger itemId;
|
||||
///奖励id
|
||||
@property (nonatomic,assign) NSInteger rewardId;
|
||||
///奖励的名称
|
||||
@property (nonatomic,copy) NSString *rewardName;
|
||||
///奖励的个数
|
||||
@property (nonatomic,assign) NSInteger rewardNum;
|
||||
///奖励的图片
|
||||
@property (nonatomic,copy) NSString *rewardPicUrl;
|
||||
///奖励的价值
|
||||
@property (nonatomic,assign) NSInteger rewardShowValue;
|
||||
///奖励的单位
|
||||
@property (nonatomic,assign) NSInteger rewardUnit;
|
||||
///类型
|
||||
@property (nonatomic,assign) TreasureFairyStoreType level;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// TreasureFairyRewardModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/28.
|
||||
//
|
||||
|
||||
#import "TreasureFairyRewardModel.h"
|
||||
|
||||
@implementation TreasureFairyRewardModel
|
||||
|
||||
@end
|
@@ -1,34 +0,0 @@
|
||||
//
|
||||
// TreasureFairySendRecordModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/23.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSInteger, TreasureFairySendRecordType) {
|
||||
///赠与
|
||||
TreasureFairySendRecordModel_Send = 2,
|
||||
///获赠
|
||||
TreasureFairySendRecordModel_Receive =3,
|
||||
};
|
||||
|
||||
@interface TreasureFairySendRecordModel : PIBaseModel
|
||||
///时间戳
|
||||
@property (nonatomic,copy) NSString *createTime;
|
||||
///图片
|
||||
@property (nonatomic,copy) NSString *elfPicUrl;
|
||||
///头像
|
||||
@property (nonatomic,copy) NSString *targetAvatar;
|
||||
///昵称
|
||||
@property (nonatomic,copy) NSString *targetNick;
|
||||
///类型
|
||||
@property (nonatomic,assign) TreasureFairySendRecordType type;
|
||||
///精灵名称
|
||||
@property (nonatomic,copy) NSString *elfName;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// TreasureFairySendRecordModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/23.
|
||||
//
|
||||
|
||||
#import "TreasureFairySendRecordModel.h"
|
||||
|
||||
@implementation TreasureFairySendRecordModel
|
||||
|
||||
@end
|
@@ -1,25 +0,0 @@
|
||||
//
|
||||
// TreasureFairyTrialsRecordModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "TreasureFairyInfoModel.h"
|
||||
#import "TreasureFairyBallInfoModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TreasureFairyTrialsRecordModel : PIBaseModel
|
||||
///精灵等级
|
||||
@property (nonatomic,assign) TreasureFairyStoreType compoundLevel;
|
||||
///创建的时间
|
||||
@property (nonatomic,copy) NSString *createTime;
|
||||
///奖励的名称
|
||||
@property (nonatomic,copy) NSString *elfName;
|
||||
///合成的元素
|
||||
@property (nonatomic,strong) NSArray<TreasureFairyBallModel *> *expendList;
|
||||
@property(nonatomic, assign) NSInteger type;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,16 +0,0 @@
|
||||
//
|
||||
// TreasureFairyTrialsRecordModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/27.
|
||||
//
|
||||
|
||||
#import "TreasureFairyTrialsRecordModel.h"
|
||||
|
||||
@implementation TreasureFairyTrialsRecordModel
|
||||
+ (NSDictionary *)objectClassInArray {
|
||||
return @{
|
||||
@"expendList":TreasureFairyBallModel.class
|
||||
};
|
||||
}
|
||||
@end
|
@@ -1,25 +0,0 @@
|
||||
//
|
||||
// TreasureFairyUserInfoModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/21.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TreasureFairyUserInfoModel : PIBaseModel
|
||||
///奖励的名称
|
||||
@property (nonatomic,copy) NSString *avatar;
|
||||
///奖励的名称
|
||||
@property (nonatomic,copy) NSString *nick;
|
||||
///高级精灵球个数
|
||||
@property (nonatomic,assign) NSInteger highBallNum;
|
||||
///初级精灵球个数
|
||||
@property (nonatomic,assign) NSInteger lowBallNum;
|
||||
///中级精灵球个数
|
||||
@property (nonatomic,assign) NSInteger middleBallNum;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// TreasureFairyUserInfoModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/21.
|
||||
//
|
||||
|
||||
#import "TreasureFairyUserInfoModel.h"
|
||||
|
||||
@implementation TreasureFairyUserInfoModel
|
||||
|
||||
@end
|
@@ -1,23 +0,0 @@
|
||||
//
|
||||
// TreasureFailyPresenter.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/15.
|
||||
//
|
||||
|
||||
#import "BaseMvpPresenter.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPTreasureFailyPresenter : BaseMvpPresenter
|
||||
///获取夺宝信息
|
||||
- (void)getTreasureFailyInfo;
|
||||
///夺宝奖励列表
|
||||
- (void)getTreasureFailyDrawList;
|
||||
///开始夺宝
|
||||
- (void)drawTreasureFaily:(NSString *)roomUid drawNum:(NSInteger)drawNum;
|
||||
///购买精灵碎片
|
||||
-(void)buyElfShardWithNum:(NSString *)num;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,50 +0,0 @@
|
||||
//
|
||||
// TreasureFailyPresenter.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/15.
|
||||
//
|
||||
|
||||
#import "XPTreasureFailyPresenter.h"
|
||||
#import "Api+TreasureFairy.h"
|
||||
#import "TreasureFailyKeyInfoModel.h"
|
||||
#import "TreasureFairyInfoModel.h"
|
||||
#import "XPTreasureFailyProtocol.h"
|
||||
@implementation XPTreasureFailyPresenter
|
||||
|
||||
///获取夺宝信息
|
||||
- (void)getTreasureFailyInfo {
|
||||
[Api treasureFailyDrawInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
TreasureFailyKeyInfoModel * info = [TreasureFailyKeyInfoModel modelWithDictionary:data.data];
|
||||
[[self getView] getTreasureFailyInfoSuccess:info];
|
||||
}]];
|
||||
}
|
||||
|
||||
///夺宝奖励列表
|
||||
- (void)getTreasureFailyDrawList {
|
||||
[Api treasureFailyDrawList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSArray * array = [TreasureFairyInfoModel modelsWithArray:data.data];
|
||||
[[self getView] getTreasureFailyDrawListSuccess:array];
|
||||
}]];
|
||||
}
|
||||
|
||||
///开始夺宝
|
||||
- (void)drawTreasureFaily:(NSString *)roomUid drawNum:(NSInteger)drawNum {
|
||||
NSString * drawStr = [NSString stringWithFormat:@"%ld", drawNum];
|
||||
[Api treasureFailyDraw:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSArray * array = [TreasureFairyInfoModel modelsWithArray:data.data];
|
||||
[[self getView] drawTreasureFailySuccess:array];
|
||||
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
[[self getView] drawTreasureFailyFail:code num:drawStr];
|
||||
}] roomUid:roomUid drawNum:drawStr];
|
||||
}
|
||||
///购买精灵碎片
|
||||
-(void)buyElfShardWithNum:(NSString *)num{
|
||||
NSString *uid = [AccountInfoStorage instance].getUid;
|
||||
[Api buyElfShard:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
[[self getView]buyElfShardSuccessWithNum:num];
|
||||
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
[[self getView]buyElfShardFail];
|
||||
}showLoading:YES] num:num uid:uid];
|
||||
}
|
||||
@end
|
@@ -1,29 +0,0 @@
|
||||
//
|
||||
// XPTreasureFailyProtocol.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/15.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class TreasureFailyKeyInfoModel;
|
||||
@protocol XPTreasureFailyProtocol <NSObject>
|
||||
|
||||
///获取夺宝精灵用户信息成功
|
||||
- (void)getTreasureFailyInfoSuccess:(TreasureFailyKeyInfoModel *)info;
|
||||
|
||||
///夺宝精灵奖励列表
|
||||
- (void)getTreasureFailyDrawListSuccess:(NSArray *)list;
|
||||
|
||||
///夺宝精灵 开始夺宝
|
||||
- (void)drawTreasureFailySuccess:(NSArray *)array;
|
||||
- (void)drawTreasureFailyFail:(NSInteger)code num:(NSString *)num;
|
||||
///购买精灵碎片成功
|
||||
-(void)buyElfShardSuccessWithNum:(NSString *)num;
|
||||
///购买精灵碎片失败
|
||||
-(void)buyElfShardFail;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,17 +0,0 @@
|
||||
//
|
||||
// XPTreasureFailyResultGiftView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class TreasureFairyInfoModel;
|
||||
@interface XPTreasureFailyResultGiftCell : UICollectionViewCell
|
||||
///奖励信息
|
||||
@property (nonatomic,strong) TreasureFairyInfoModel *prizeInfo;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,121 +0,0 @@
|
||||
//
|
||||
// XPTreasureFailyResultGiftView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/16.
|
||||
//
|
||||
|
||||
#import "XPTreasureFailyResultGiftCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
|
||||
#import "NetImageView.h"
|
||||
///Model
|
||||
#import "TreasureFairyInfoModel.h"
|
||||
|
||||
@interface XPTreasureFailyResultGiftCell ()
|
||||
///背景
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///礼物名称
|
||||
@property (nonatomic,strong) NetImageView *giftImageView;
|
||||
///个数
|
||||
@property (nonatomic,strong) UIButton *countButton;
|
||||
///名字
|
||||
@property (nonatomic,strong) UILabel *nameLabel;
|
||||
@end
|
||||
|
||||
@implementation XPTreasureFailyResultGiftCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
[self.contentView addSubview:self.backImageView];
|
||||
[self.contentView addSubview:self.nameLabel];
|
||||
[self.backImageView addSubview:self.giftImageView];
|
||||
[self.backImageView addSubview:self.countButton];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.top.mas_equalTo(self);
|
||||
make.height.mas_equalTo(self.backImageView.mas_width);
|
||||
|
||||
}];
|
||||
|
||||
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self.backImageView).inset(10);
|
||||
}];
|
||||
|
||||
[self.countButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(29.5, 30.5));
|
||||
make.bottom.trailing.mas_equalTo(self.backImageView);
|
||||
}];
|
||||
|
||||
[self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self);
|
||||
make.top.mas_equalTo(self.backImageView.mas_bottom).offset(7);
|
||||
}];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setPrizeInfo:(TreasureFairyInfoModel *)prizeInfo {
|
||||
_prizeInfo = prizeInfo;
|
||||
if (_prizeInfo) {
|
||||
self.giftImageView.imageUrl = prizeInfo.rewardPicUrl;
|
||||
[self.countButton setTitle:[NSString stringWithFormat:@"%ld", _prizeInfo.rewardNum] forState:UIControlStateNormal];
|
||||
self.nameLabel.text = _prizeInfo.rewardName;
|
||||
}
|
||||
}
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
_backImageView.image = [UIImage imageNamed:@"room_treasure_faily_result_gift_bg"];
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
|
||||
- (NetImageView *)giftImageView {
|
||||
if (!_giftImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_giftImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_giftImageView.layer.masksToBounds = YES;
|
||||
_giftImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _giftImageView;
|
||||
}
|
||||
|
||||
- (UIButton *)countButton {
|
||||
if (!_countButton) {
|
||||
_countButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_countButton setTitleColor:[DJDKMIMOMColor colorWithHexString:@"#1F5764"] forState:UIControlStateNormal];
|
||||
_countButton.titleLabel.font = [UIFont systemFontOfSize:10];
|
||||
[_countButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_result_coung_bg"] forState:UIControlStateNormal];
|
||||
}
|
||||
return _countButton;
|
||||
}
|
||||
|
||||
- (UILabel *)nameLabel {
|
||||
if (!_nameLabel) {
|
||||
_nameLabel = [[UILabel alloc] init];
|
||||
_nameLabel.font = [UIFont systemFontOfSize:13];
|
||||
_nameLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_nameLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#FFE8AA"];
|
||||
}
|
||||
return _nameLabel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
@@ -1,16 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyFriendCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/23.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class UserInfoModel;
|
||||
@interface XPTreasureFairyFriendCell : UITableViewCell
|
||||
@property (nonatomic,strong) UserInfoModel *userInfo;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,122 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyFriendCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/23.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairyFriendCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
|
||||
#import "NetImageView.h"
|
||||
///Model
|
||||
#import "UserInfoModel.h"
|
||||
@interface XPTreasureFairyFriendCell ()
|
||||
///背景
|
||||
@property (nonatomic,strong) UIView *backView;
|
||||
///头像
|
||||
@property (nonatomic,strong) NetImageView *avatarImageView;
|
||||
///昵称
|
||||
@property (nonatomic,strong) UILabel *nickLabel;
|
||||
///签名
|
||||
@property (nonatomic,strong) UILabel *signLabel;
|
||||
@end
|
||||
|
||||
|
||||
@implementation XPTreasureFairyFriendCell
|
||||
|
||||
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
[self.contentView addSubview:self.backView];
|
||||
[self.backView addSubview:self.avatarImageView];
|
||||
[self.backView addSubview:self.nickLabel];
|
||||
[self.backView addSubview:self.signLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.contentView).inset(15);
|
||||
make.top.mas_equalTo(self.contentView);
|
||||
make.height.mas_equalTo(55);
|
||||
}];
|
||||
|
||||
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(49, 49));
|
||||
make.leading.mas_equalTo(self.backView).offset(12);
|
||||
make.centerY.mas_equalTo(self.backView);
|
||||
}];
|
||||
|
||||
[self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(self.avatarImageView.mas_trailing).offset(8);
|
||||
make.trailing.mas_lessThanOrEqualTo(self.backView).offset(-5);
|
||||
make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-3);
|
||||
}];
|
||||
|
||||
[self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.nickLabel);
|
||||
make.top.mas_equalTo(self.nickLabel.mas_bottom).offset(3);
|
||||
}];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setUserInfo:(UserInfoModel *)userInfo {
|
||||
_userInfo = userInfo;
|
||||
if (_userInfo) {
|
||||
self.avatarImageView.imageUrl = _userInfo.avatar;
|
||||
self.nickLabel.text = _userInfo.nick;
|
||||
self.signLabel.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : YMLocalizedString(@"XPTreasureFairyFriendCell0");
|
||||
}
|
||||
}
|
||||
|
||||
- (UIView *)backView {
|
||||
if (!_backView) {
|
||||
_backView = [[UIView alloc] init];
|
||||
_backView.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#00A69D"];
|
||||
_backView.layer.cornerRadius = 4;
|
||||
_backView.layer.masksToBounds = YES;
|
||||
}
|
||||
return _backView;
|
||||
}
|
||||
|
||||
- (NetImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_avatarImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_avatarImageView.layer.masksToBounds = YES;
|
||||
_avatarImageView.layer.cornerRadius = 49/2;
|
||||
_avatarImageView.layer.borderWidth = 0.5;
|
||||
_avatarImageView.layer.borderColor = [DJDKMIMOMColor colorWithHexString:@"#FFE8AA"].CGColor;
|
||||
}
|
||||
return _avatarImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)nickLabel {
|
||||
if (!_nickLabel) {
|
||||
_nickLabel = [[UILabel alloc] init];
|
||||
_nickLabel.font = [UIFont systemFontOfSize:14];
|
||||
_nickLabel.textColor = [UIColor whiteColor];
|
||||
}
|
||||
return _nickLabel;
|
||||
}
|
||||
- (UILabel *)signLabel {
|
||||
if (!_signLabel) {
|
||||
_signLabel = [[UILabel alloc] init];
|
||||
_signLabel.font = [UIFont systemFontOfSize:12];
|
||||
_signLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#59FDFF"];
|
||||
}
|
||||
return _signLabel;
|
||||
}
|
||||
|
||||
@end
|
@@ -1,28 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyNewSummonCell.h
|
||||
// YuMi
|
||||
//
|
||||
// Created by duoban on 2023/9/6.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "TreasureFairyFragmentModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@protocol XPTreasureFairyNewSummonCellDelegate <NSObject>
|
||||
|
||||
/// 兑换事件
|
||||
- (void)treasureFairyShopingExchangeAction:(TreasureFairyFragmentModel *)fragmentModel;
|
||||
|
||||
@end
|
||||
@interface XPTreasureFairyNewSummonCell : UICollectionViewCell
|
||||
@property (nonatomic, strong) TreasureFairyFragmentModel *fragmemtModel;
|
||||
|
||||
@property (nonatomic, weak) id<XPTreasureFairyNewSummonCellDelegate> delegate;
|
||||
@end
|
||||
|
||||
@interface XPTreasureFairyNewSummonPriceView : UIView
|
||||
@property(nonatomic,copy) NSString *imageIcon;
|
||||
@property(nonatomic,copy) NSString *text;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,315 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyNewSummonCell.m
|
||||
// YuMi
|
||||
//
|
||||
// Created by duoban on 2023/9/6.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairyNewSummonCell.h"
|
||||
@interface XPTreasureFairyNewSummonCell()
|
||||
///背景图
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///精灵球的背景
|
||||
@property (nonatomic,strong) UIImageView *ballBgImageView;
|
||||
///精灵球
|
||||
@property (nonatomic,strong) NetImageView *ballImaegView;
|
||||
///昵称
|
||||
@property (nonatomic,strong) UILabel *nameLabel;
|
||||
///容器
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///第一个精灵数量
|
||||
@property (nonatomic,strong) XPTreasureFairyNewSummonPriceView *firstPieceView;
|
||||
|
||||
///第二个精灵数量
|
||||
@property (nonatomic,strong) XPTreasureFairyNewSummonPriceView *secondPieceView;
|
||||
|
||||
///第三个精灵数量
|
||||
@property (nonatomic,strong) XPTreasureFairyNewSummonPriceView *thirdPieceView;
|
||||
|
||||
///兑换
|
||||
@property (nonatomic,strong) UIButton *exchangeButton;
|
||||
@end
|
||||
@implementation XPTreasureFairyNewSummonCell
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
self.contentView.backgroundColor = UIColor.clearColor;
|
||||
self.backgroundColor = UIColor.clearColor;
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self.contentView addSubview:self.backImageView];
|
||||
[self.backImageView addSubview:self.ballImaegView];
|
||||
[self.backImageView addSubview:self.nameLabel];
|
||||
[self.backImageView addSubview:self.stackView];
|
||||
[self.backImageView addSubview:self.exchangeButton];
|
||||
|
||||
[self.stackView addArrangedSubview:self.firstPieceView];
|
||||
[self.stackView addArrangedSubview:self.secondPieceView];
|
||||
[self.stackView addArrangedSubview:self.thirdPieceView];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self.contentView);
|
||||
}];
|
||||
|
||||
[self.ballImaegView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(74);
|
||||
make.height.mas_equalTo(74);
|
||||
make.centerX.mas_equalTo(self.backImageView);
|
||||
make.top.mas_equalTo(60.0);
|
||||
}];
|
||||
|
||||
[self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(8);
|
||||
make.trailing.mas_equalTo(-8);
|
||||
make.height.mas_equalTo(12);
|
||||
make.top.mas_equalTo(137.0);
|
||||
}];
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.equalTo(self.nameLabel.mas_bottom).mas_offset(4);
|
||||
make.centerX.mas_equalTo(self.backImageView);
|
||||
make.height.mas_equalTo(34);
|
||||
make.width.mas_equalTo(124);
|
||||
}];
|
||||
|
||||
[self.firstPieceView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(40);
|
||||
make.height.mas_equalTo(34);
|
||||
}];
|
||||
|
||||
[self.secondPieceView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(40);
|
||||
make.height.mas_equalTo(34);
|
||||
}];
|
||||
[self.thirdPieceView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(40);
|
||||
make.height.mas_equalTo(34);
|
||||
}];
|
||||
[self.exchangeButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.backImageView);
|
||||
make.top.equalTo(self.stackView.mas_bottom).mas_offset(4);
|
||||
make.width.mas_equalTo(70);
|
||||
make.height.mas_equalTo(23);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[super layoutSubviews];
|
||||
self.ballImaegView.layer.cornerRadius = self.ballImaegView.bounds.size.width/2.0;
|
||||
self.ballImaegView.clipsToBounds = YES;
|
||||
}
|
||||
|
||||
- (void)setFragmemtModel:(TreasureFairyFragmentModel *)fragmemtModel {
|
||||
_fragmemtModel = fragmemtModel;
|
||||
NSString * utils = fragmemtModel.rewardUnit;
|
||||
if ([fragmemtModel.rewardType isEqualToString:@"gift"]) {
|
||||
utils = YMLocalizedString(@"XPTreasureFairyShopingExchangeCell0");
|
||||
self.nameLabel.text = [NSString stringWithFormat:@"%@(%@%@)",fragmemtModel.rewardName, fragmemtModel.rewardShowValue, utils];
|
||||
} else {
|
||||
self.nameLabel.text = [NSString stringWithFormat:@"%@(%ld%@)",fragmemtModel.rewardName, fragmemtModel.rewardNum, utils];
|
||||
}
|
||||
[self.ballImaegView loadImageWithUrl:fragmemtModel.rewardPicUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) {
|
||||
self.ballImaegView.image = image;
|
||||
CGFloat width = 60;
|
||||
CGFloat height = 60;
|
||||
if(image.size.width < image.size.height){
|
||||
height = width * image.size.height / (image.size.width > 0 ? image.size.width : 1);
|
||||
}else if (image.size.width > image.size.height){
|
||||
width = height * image.size.width / (image.size.height > 0 ? image.size.height : 1);
|
||||
}
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.ballImaegView mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(width);
|
||||
make.height.mas_equalTo(height);
|
||||
}];
|
||||
});
|
||||
}];
|
||||
// self.pieceCountLabel.text = [NSString stringWithFormat:@"%ld",fragmemtModel.expendNum];
|
||||
|
||||
NSArray *pieceViewList = @[_firstPieceView,_secondPieceView,_thirdPieceView];
|
||||
int count = 0;
|
||||
for (int i = 0 ; i < pieceViewList.count; i++) {
|
||||
XPTreasureFairyNewSummonPriceView *priceView = pieceViewList[i];
|
||||
if(i < _fragmemtModel.propItems.count){
|
||||
priceView.hidden = NO;
|
||||
TreasureFairyFragmentItemModel *itemModel = _fragmemtModel.propItems[i];
|
||||
priceView.imageIcon = itemModel.picUrl;
|
||||
priceView.text = [NSString stringWithFormat:@"%@x%@",itemModel.propName,itemModel.propNum];
|
||||
}else{
|
||||
priceView.hidden = YES;
|
||||
count = count + 1;
|
||||
}
|
||||
}
|
||||
CGFloat width = 124 - count * 40;
|
||||
[self.stackView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.equalTo(self.nameLabel.mas_bottom).mas_offset(4);
|
||||
make.centerX.mas_equalTo(self.backImageView);
|
||||
make.height.mas_equalTo(34);
|
||||
make.width.mas_equalTo(width);
|
||||
}];
|
||||
[self.exchangeButton setTitle:YMLocalizedString(@"XPTreasureFairyShopingExchangeCell1") forState:UIControlStateNormal];
|
||||
}
|
||||
|
||||
#pragma mark - Action
|
||||
|
||||
- (void)exchangeBtnAction {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(treasureFairyShopingExchangeAction:)]) {
|
||||
[self.delegate treasureFairyShopingExchangeAction:self.fragmemtModel];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shop_new_exchange_bg"];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
|
||||
- (NetImageView *)ballImaegView {
|
||||
if (!_ballImaegView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_ballImaegView = [[NetImageView alloc] initWithConfig:config];
|
||||
// _ballImaegView.clipsToBounds = YES;
|
||||
// _ballImaegView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _ballImaegView;
|
||||
}
|
||||
|
||||
- (UILabel *)nameLabel {
|
||||
if (!_nameLabel) {
|
||||
_nameLabel = [[UILabel alloc] init];
|
||||
_nameLabel.textColor = UIColor.whiteColor;
|
||||
_nameLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular];
|
||||
_nameLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _nameLabel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_stackView.alignment = UIStackViewAlignmentFill;
|
||||
_stackView.distribution = UIStackViewDistributionFill;
|
||||
_stackView.spacing = 2;
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
- (XPTreasureFairyNewSummonPriceView *)firstPieceView{
|
||||
if(!_firstPieceView){
|
||||
_firstPieceView = [[XPTreasureFairyNewSummonPriceView alloc]initWithFrame:CGRectZero];
|
||||
_firstPieceView.hidden = YES;
|
||||
_firstPieceView.tag = 101;
|
||||
}
|
||||
return _firstPieceView;
|
||||
}
|
||||
- (XPTreasureFairyNewSummonPriceView *)secondPieceView{
|
||||
if(!_secondPieceView){
|
||||
_secondPieceView = [[XPTreasureFairyNewSummonPriceView alloc]initWithFrame:CGRectZero];
|
||||
_secondPieceView.hidden = YES;
|
||||
_secondPieceView.tag = 102;
|
||||
}
|
||||
return _secondPieceView;
|
||||
}
|
||||
- (XPTreasureFairyNewSummonPriceView *)thirdPieceView{
|
||||
if(!_thirdPieceView){
|
||||
_thirdPieceView = [[XPTreasureFairyNewSummonPriceView alloc]initWithFrame:CGRectZero];
|
||||
_thirdPieceView.hidden = YES;
|
||||
_thirdPieceView.tag = 103;
|
||||
}
|
||||
return _thirdPieceView;
|
||||
}
|
||||
- (UIButton *)exchangeButton {
|
||||
if (!_exchangeButton) {
|
||||
_exchangeButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_exchangeButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#3AEAC7"], [DJDKMIMOMColor colorWithHexString:@"#FFFEBB"]] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal];
|
||||
[_exchangeButton setTitleColor:[DJDKMIMOMColor colorWithHexString:@"#1F5764"] forState:UIControlStateNormal];
|
||||
_exchangeButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular];
|
||||
_exchangeButton.layer.cornerRadius = 4;
|
||||
_exchangeButton.clipsToBounds = YES;
|
||||
[_exchangeButton addTarget:self action:@selector(exchangeBtnAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _exchangeButton;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@interface XPTreasureFairyNewSummonPriceView()
|
||||
///精灵图标
|
||||
@property(nonatomic,strong) NetImageView *iconView;
|
||||
///价格
|
||||
@property(nonatomic,strong) UILabel *priceView;
|
||||
@end
|
||||
|
||||
@implementation XPTreasureFairyNewSummonPriceView
|
||||
-(instancetype)initWithFrame:(CGRect)frame{
|
||||
self = [super initWithFrame:frame];
|
||||
if(self){
|
||||
[self installUI];
|
||||
[self installConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)installUI{
|
||||
[self addSubview:self.iconView];
|
||||
[self addSubview:self.priceView];
|
||||
}
|
||||
-(void)installConstraints{
|
||||
[self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.height.mas_equalTo(25);
|
||||
make.centerX.top.equalTo(self);
|
||||
}];
|
||||
[self.priceView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.equalTo(self.iconView.mas_bottom).mas_offset(1);
|
||||
make.leading.trailing.equalTo(self);
|
||||
make.height.mas_equalTo(8);
|
||||
}];
|
||||
}
|
||||
-(void)setImageIcon:(NSString *)imageIcon{
|
||||
_imageIcon = imageIcon;
|
||||
_iconView.imageUrl = _imageIcon;
|
||||
}
|
||||
-(void)setText:(NSString *)text{
|
||||
_text = text;
|
||||
_priceView.text = _text;
|
||||
}
|
||||
#pragma mark - 懒加载
|
||||
- (NetImageView *)iconView{
|
||||
if(!_iconView){
|
||||
NetImageConfig *config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultEmptyPlaceholder];
|
||||
_iconView = [[NetImageView alloc]initWithConfig:config];
|
||||
}
|
||||
return _iconView;
|
||||
}
|
||||
- (UILabel *)priceView{
|
||||
if(!_priceView){
|
||||
_priceView = [UILabel labelInitWithText:@"" font:[UIFont systemFontOfSize:8 weight:UIFontWeightRegular] textColor:[UIColor whiteColor]];
|
||||
_priceView.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _priceView;
|
||||
}
|
||||
|
||||
@end
|
@@ -1,17 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyPrizePoolCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/21.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class TreasureFairyInfoModel;
|
||||
@interface XPTreasureFairyPrizePoolCell : UICollectionViewCell
|
||||
|
||||
@property (nonatomic,strong) TreasureFairyInfoModel *info;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,106 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyPrizePoolCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/21.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairyPrizePoolCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
|
||||
#import "NetImageView.h"
|
||||
#import "UIImage+Utils.h"
|
||||
#import "TreasureFairyInfoModel.h"
|
||||
|
||||
@interface XPTreasureFairyPrizePoolCell ()
|
||||
|
||||
///奖励的图片
|
||||
@property (nonatomic,strong) NetImageView *giftImageView;
|
||||
///背景
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///奖励名称
|
||||
@property (nonatomic,strong) UILabel *nameLabel;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation XPTreasureFairyPrizePoolCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
[self.contentView addSubview:self.backImageView];
|
||||
[self.contentView addSubview:self.giftImageView];
|
||||
[self.contentView addSubview:self.nameLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(94, 115));
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
make.top.mas_equalTo(self.contentView);
|
||||
}];
|
||||
|
||||
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(65, 65));
|
||||
make.centerX.mas_equalTo(self.backImageView);
|
||||
make.top.mas_equalTo(self.backImageView).offset(18);
|
||||
}];
|
||||
|
||||
[self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.backImageView);
|
||||
make.bottom.mas_equalTo(self.backImageView).offset(-8);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setInfo:(TreasureFairyInfoModel *)info {
|
||||
_info = info;
|
||||
if (_info) {
|
||||
self.giftImageView.imageUrl = _info.rewardPicUrl;
|
||||
self.nameLabel.text = _info.rewardName;
|
||||
}
|
||||
}
|
||||
|
||||
- (NetImageView *)giftImageView {
|
||||
if (!_giftImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_giftImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_giftImageView.layer.masksToBounds = YES;
|
||||
_giftImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _giftImageView;
|
||||
}
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
_backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_prize_pool_bg"];
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)nameLabel {
|
||||
if (!_nameLabel) {
|
||||
_nameLabel = [[UILabel alloc] init];
|
||||
_nameLabel.font = [UIFont systemFontOfSize:15];
|
||||
_nameLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#1F5764"];
|
||||
_nameLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _nameLabel;
|
||||
}
|
||||
|
||||
@end
|
@@ -1,23 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyPrizeRecordCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/21.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class TreasureFairyInfoModel;
|
||||
@interface XPTreasureFairyPrizeRecordCell : UITableViewCell
|
||||
///礼物信息
|
||||
@property (nonatomic,strong) TreasureFairyInfoModel *recordInfo;
|
||||
///时间
|
||||
@property (nonatomic,strong, readonly) UILabel *timeLabel;
|
||||
///等级
|
||||
@property (nonatomic,strong, readonly) UILabel *levelLabel;
|
||||
///奖励
|
||||
@property (nonatomic,strong, readonly) UILabel * prizeLabel;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,134 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyPrizeRecordCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/21.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairyPrizeRecordCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
|
||||
#import "PLTimeUtil.h"
|
||||
///Model
|
||||
#import "TreasureFairyInfoModel.h"
|
||||
|
||||
@interface XPTreasureFairyPrizeRecordCell ()
|
||||
///容器
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///时间
|
||||
@property (nonatomic,strong) UILabel *timeLabel;
|
||||
///等级
|
||||
@property (nonatomic,strong) UILabel *levelLabel;
|
||||
///奖励
|
||||
@property (nonatomic,strong) UILabel * prizeLabel;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPTreasureFairyPrizeRecordCell
|
||||
|
||||
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
[self.contentView addSubview:self.stackView];
|
||||
[self.stackView addArrangedSubview:self.timeLabel];
|
||||
[self.stackView addArrangedSubview:self.levelLabel];
|
||||
[self.stackView addArrangedSubview:self.prizeLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self.contentView);
|
||||
}];
|
||||
}
|
||||
- (NSString *)getDateWithHHMMSS:(NSString *)time {
|
||||
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
|
||||
formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
|
||||
[formatter setDateStyle:NSDateFormatterMediumStyle];
|
||||
[formatter setTimeStyle:NSDateFormatterShortStyle];
|
||||
[formatter setDateFormat:@"HH:mm:ss"];
|
||||
NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0];
|
||||
NSString* dateString = [formatter stringFromDate:date];
|
||||
return dateString;
|
||||
}
|
||||
|
||||
- (NSString *)getDateWithYYMM:(NSString *)time {
|
||||
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
|
||||
formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
|
||||
[formatter setDateStyle:NSDateFormatterMediumStyle];
|
||||
[formatter setTimeStyle:NSDateFormatterShortStyle];
|
||||
[formatter setDateFormat:@"yyyy:MM:dd"];
|
||||
NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0];
|
||||
NSString* dateString = [formatter stringFromDate:date];
|
||||
return dateString;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setRecordInfo:(TreasureFairyInfoModel *)recordInfo {
|
||||
_recordInfo = recordInfo;
|
||||
if (_recordInfo) {
|
||||
NSString * time = [NSString stringWithFormat:@"%@\n%@", [self getDateWithYYMM:_recordInfo.drawTime], [self getDateWithHHMMSS:_recordInfo.drawTime]];
|
||||
self.timeLabel.text = time;
|
||||
if (_recordInfo.poolLevel == TreasureFairyStoreType_Normal) {
|
||||
self.levelLabel.text = YMLocalizedString(@"XPTreasureFairyPrizeRecordCell0");
|
||||
} else if (_recordInfo.poolLevel == TreasureFairyStoreType_Middle) {
|
||||
self.levelLabel.text = YMLocalizedString(@"XPTreasureFairyPrizeRecordCell1");
|
||||
} else {
|
||||
self.levelLabel.text = YMLocalizedString(@"XPTreasureFairyPrizeRecordCell2");
|
||||
}
|
||||
self.prizeLabel.text = [NSString stringWithFormat:@"%@x%ld", _recordInfo.rewardName, _recordInfo.rewardNum];
|
||||
}
|
||||
}
|
||||
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_stackView.distribution = UIStackViewDistributionFillEqually;
|
||||
_stackView.alignment = UIStackViewAlignmentFill;
|
||||
_stackView.spacing = 0;
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
|
||||
- (UILabel *)timeLabel {
|
||||
if (!_timeLabel) {
|
||||
_timeLabel = [[UILabel alloc] init];
|
||||
_timeLabel.font = [UIFont systemFontOfSize:12];
|
||||
_timeLabel.textColor = [UIColor whiteColor];
|
||||
_timeLabel.numberOfLines = 0;
|
||||
_timeLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _timeLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)levelLabel {
|
||||
if (!_levelLabel) {
|
||||
_levelLabel = [[UILabel alloc] init];
|
||||
_levelLabel.font = [UIFont systemFontOfSize:12];
|
||||
_levelLabel.textColor = [UIColor whiteColor];
|
||||
_levelLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _levelLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)prizeLabel {
|
||||
if (!_prizeLabel) {
|
||||
_prizeLabel = [[UILabel alloc] init];
|
||||
_prizeLabel.font = [UIFont systemFontOfSize:12];
|
||||
_prizeLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#FEF8A8"];
|
||||
_prizeLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _prizeLabel;
|
||||
}
|
||||
@end
|
@@ -1,16 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairySendRecordCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/23.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class TreasureFairySendRecordModel;
|
||||
@interface XPTreasureFairySendRecordCell : UITableViewCell
|
||||
@property (nonatomic,strong) TreasureFairySendRecordModel *recordInfo;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,142 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairySendRecordCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/23.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairySendRecordCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
|
||||
#import "NetImageView.h"
|
||||
///Model
|
||||
#import "TreasureFairySendRecordModel.h"
|
||||
|
||||
@interface XPTreasureFairySendRecordCell ()
|
||||
///时间
|
||||
@property (nonatomic,strong) UILabel *timeLabel;
|
||||
///背景
|
||||
@property (nonatomic,strong) UIView *backView;
|
||||
///头像
|
||||
@property (nonatomic,strong) NetImageView *avatarImageView;
|
||||
///标题
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation XPTreasureFairySendRecordCell
|
||||
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
[self.contentView addSubview:self.timeLabel];
|
||||
[self.contentView addSubview:self.backView];
|
||||
[self.backView addSubview:self.avatarImageView];
|
||||
[self.backView addSubview:self.titleLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(self.contentView).offset(20);
|
||||
make.top.mas_equalTo(self.contentView);
|
||||
}];
|
||||
|
||||
[self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.contentView).inset(20);
|
||||
make.height.mas_equalTo(58);
|
||||
make.top.mas_equalTo(self.timeLabel.mas_bottom).offset(8);
|
||||
}];
|
||||
|
||||
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(42, 42));
|
||||
make.leading.mas_equalTo(self.backView).offset(12);
|
||||
make.centerY.mas_equalTo(self.backView);
|
||||
}];
|
||||
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(self.avatarImageView.mas_trailing).offset(9);
|
||||
make.centerY.mas_equalTo(self.avatarImageView);
|
||||
make.trailing.mas_lessThanOrEqualTo(self.backView).offset(-5);
|
||||
}];
|
||||
}
|
||||
|
||||
- (NSString *)getDateWithTotalTimeWith:(NSString *)time {
|
||||
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
|
||||
[formatter setDateStyle:NSDateFormatterMediumStyle];
|
||||
[formatter setTimeStyle:NSDateFormatterShortStyle];
|
||||
[formatter setDateFormat:YMLocalizedString(@"XPTreasureFairySendRecordCell0")];
|
||||
NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0];
|
||||
NSString* dateString = [formatter stringFromDate:date];
|
||||
return dateString;
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setRecordInfo:(TreasureFairySendRecordModel *)recordInfo {
|
||||
_recordInfo = recordInfo;
|
||||
if (_recordInfo) {
|
||||
self.timeLabel.text = [self getDateWithTotalTimeWith:_recordInfo.createTime];
|
||||
self.avatarImageView.imageUrl = _recordInfo.elfPicUrl;
|
||||
NSString * nick = self.recordInfo.targetNick;
|
||||
if (_recordInfo.type == TreasureFairySendRecordModel_Send) {
|
||||
self.titleLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPTreasureFairySendRecordCell1"),nick,self.recordInfo.elfName];
|
||||
} else {
|
||||
self.titleLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPTreasureFairySendRecordCell2"), nick,self.recordInfo.elfName];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (UILabel *)timeLabel {
|
||||
if (!_timeLabel) {
|
||||
_timeLabel = [[UILabel alloc] init];
|
||||
_timeLabel.font = [UIFont systemFontOfSize:12];
|
||||
_timeLabel.textColor = [UIColor whiteColor];
|
||||
}
|
||||
return _timeLabel;
|
||||
}
|
||||
|
||||
- (UIView *)backView {
|
||||
if (!_backView) {
|
||||
_backView = [[UIView alloc] init];
|
||||
_backView.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#00A69D"];
|
||||
_backView.layer.masksToBounds = YES;
|
||||
_backView.layer.cornerRadius = 8;
|
||||
}
|
||||
return _backView;
|
||||
}
|
||||
|
||||
- (NetImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_avatarImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_avatarImageView.layer.masksToBounds = YES;
|
||||
_avatarImageView.layer.cornerRadius = 4;
|
||||
_avatarImageView.layer.borderColor = [DJDKMIMOMColor colorWithHexString:@"#FFE8AA"].CGColor;
|
||||
_avatarImageView.layer.borderWidth = 0.5;
|
||||
_avatarImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _avatarImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.font = [UIFont systemFontOfSize:12];
|
||||
_titleLabel.textColor = [UIColor whiteColor];
|
||||
_titleLabel.numberOfLines = 0;
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
|
||||
|
||||
@end
|
@@ -1,28 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyShopingExchangeCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/28.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class TreasureFairyFragmentModel;
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol XPTreasureFairyShopingExchangeCellDelegate <NSObject>
|
||||
|
||||
/// 兑换事件
|
||||
- (void)treasureFairyShopingExchangeAction:(TreasureFairyFragmentModel *)fragmentModel;
|
||||
|
||||
@end
|
||||
|
||||
@interface XPTreasureFairyShopingExchangeCell : UICollectionViewCell
|
||||
|
||||
@property (nonatomic, strong) TreasureFairyFragmentModel *fragmemtModel;
|
||||
|
||||
@property (nonatomic, weak) id<XPTreasureFairyShopingExchangeCellDelegate> delegate;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,219 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyShopingExchangeCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/28.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairyShopingExchangeCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
|
||||
#import "NetImageView.h"
|
||||
#import "UIImage+Utils.h"
|
||||
///Model
|
||||
#import "TreasureFairyFragmentModel.h"
|
||||
|
||||
@interface XPTreasureFairyShopingExchangeCell ()
|
||||
///背景图
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///精灵球的背景
|
||||
@property (nonatomic,strong) UIImageView *ballBgImageView;
|
||||
///精灵球
|
||||
@property (nonatomic,strong) NetImageView *ballImaegView;
|
||||
///昵称
|
||||
@property (nonatomic,strong) UILabel *nameLabel;
|
||||
///容器
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///随便图片
|
||||
@property (nonatomic,strong) UIImageView *pieceImageView;
|
||||
///随便个数
|
||||
@property (nonatomic,strong) UILabel *pieceCountLabel;
|
||||
///兑换
|
||||
@property (nonatomic,strong) UIButton *exchangeButton;
|
||||
@end
|
||||
|
||||
|
||||
@implementation XPTreasureFairyShopingExchangeCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
self.contentView.backgroundColor = UIColor.clearColor;
|
||||
self.backgroundColor = UIColor.clearColor;
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self.contentView addSubview:self.backImageView];
|
||||
[self.backImageView addSubview:self.ballImaegView];
|
||||
[self.backImageView addSubview:self.nameLabel];
|
||||
[self.backImageView addSubview:self.stackView];
|
||||
[self.backImageView addSubview:self.exchangeButton];
|
||||
|
||||
[self.stackView addArrangedSubview:self.pieceImageView];
|
||||
[self.stackView addArrangedSubview:self.pieceCountLabel];
|
||||
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self.contentView);
|
||||
}];
|
||||
|
||||
[self.ballImaegView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(70);
|
||||
make.height.mas_equalTo(70);
|
||||
make.centerX.mas_equalTo(self.backImageView);
|
||||
make.top.mas_equalTo(55);
|
||||
}];
|
||||
|
||||
[self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(8);
|
||||
make.trailing.mas_equalTo(-8);
|
||||
make.bottom.mas_equalTo(self.stackView.mas_top).offset(-4);
|
||||
}];
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.bottom.mas_equalTo(self.exchangeButton.mas_top).offset(-7);
|
||||
make.centerX.mas_equalTo(self.backImageView);
|
||||
make.height.mas_equalTo(20);
|
||||
}];
|
||||
[self.pieceImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(self.stackView.mas_height);
|
||||
}];
|
||||
[self.exchangeButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.backImageView);
|
||||
make.bottom.mas_equalTo(-26);
|
||||
make.width.mas_equalTo(80);
|
||||
make.height.mas_equalTo(25);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[super layoutSubviews];
|
||||
self.ballImaegView.layer.cornerRadius = self.ballImaegView.bounds.size.width/2.0;
|
||||
self.ballImaegView.clipsToBounds = YES;
|
||||
}
|
||||
|
||||
- (void)setFragmemtModel:(TreasureFairyFragmentModel *)fragmemtModel {
|
||||
_fragmemtModel = fragmemtModel;
|
||||
NSString * utils = fragmemtModel.rewardUnit;
|
||||
if ([fragmemtModel.rewardType isEqualToString:@"gift"]) {
|
||||
utils = YMLocalizedString(@"XPTreasureFairyShopingExchangeCell0");
|
||||
self.nameLabel.text = [NSString stringWithFormat:@"%@(%@%@)",fragmemtModel.rewardName, fragmemtModel.rewardShowValue, utils];
|
||||
} else {
|
||||
self.nameLabel.text = [NSString stringWithFormat:@"%@(%ld%@)",fragmemtModel.rewardName, fragmemtModel.rewardNum, utils];
|
||||
}
|
||||
[self.ballImaegView loadImageWithUrl:fragmemtModel.rewardPicUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) {
|
||||
self.ballImaegView.image = image;
|
||||
// CGFloat width = 60;
|
||||
// CGFloat height = 60;
|
||||
// if(image.size.width < image.size.height){
|
||||
// width = width * image.size.height / (image.size.width > 0 ? image.size.width : 1);
|
||||
// }else if (image.size.width > image.size.height){
|
||||
// height = height * image.size.width / (image.size.height > 0 ? image.size.height : 1);
|
||||
// }
|
||||
// dispatch_async(dispatch_get_main_queue(), ^{
|
||||
// [self.ballImaegView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
// make.centerX.mas_equalTo(self.backImageView);
|
||||
// make.top.mas_equalTo(59.0);
|
||||
// make.width.mas_equalTo(width);
|
||||
// make.height.mas_equalTo(height);
|
||||
// }];
|
||||
// });
|
||||
}];
|
||||
self.pieceCountLabel.text = [NSString stringWithFormat:@"%ld",fragmemtModel.expendNum];
|
||||
[self.exchangeButton setTitle:YMLocalizedString(@"XPTreasureFairyShopingExchangeCell1") forState:UIControlStateNormal];
|
||||
}
|
||||
|
||||
#pragma mark - Action
|
||||
|
||||
- (void)exchangeBtnAction {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(treasureFairyShopingExchangeAction:)]) {
|
||||
[self.delegate treasureFairyShopingExchangeAction:self.fragmemtModel];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shop_exchange_bg"];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
|
||||
- (NetImageView *)ballImaegView {
|
||||
if (!_ballImaegView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_ballImaegView = [[NetImageView alloc] initWithConfig:config];
|
||||
|
||||
_ballImaegView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
}
|
||||
return _ballImaegView;
|
||||
}
|
||||
|
||||
- (UILabel *)nameLabel {
|
||||
if (!_nameLabel) {
|
||||
_nameLabel = [[UILabel alloc] init];
|
||||
_nameLabel.textColor = UIColor.whiteColor;
|
||||
_nameLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular];
|
||||
_nameLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _nameLabel;
|
||||
}
|
||||
|
||||
- (UIImageView *)pieceImageView {
|
||||
if (!_pieceImageView) {
|
||||
_pieceImageView = [[UIImageView alloc] init];
|
||||
_pieceImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
_pieceImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shop_fragment"];
|
||||
}
|
||||
return _pieceImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)pieceCountLabel {
|
||||
if (!_pieceCountLabel) {
|
||||
_pieceCountLabel = [[UILabel alloc] init];
|
||||
_pieceCountLabel.textColor = UIColor.whiteColor;
|
||||
_pieceCountLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular];
|
||||
_pieceCountLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _pieceCountLabel;
|
||||
}
|
||||
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_stackView.alignment = UIStackViewAlignmentFill;
|
||||
_stackView.distribution = UIStackViewDistributionFill;
|
||||
_stackView.spacing = 4;
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
|
||||
- (UIButton *)exchangeButton {
|
||||
if (!_exchangeButton) {
|
||||
_exchangeButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_exchangeButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#3AEAC7"], [DJDKMIMOMColor colorWithHexString:@"#FFFEBB"]] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal];
|
||||
[_exchangeButton setTitleColor:[DJDKMIMOMColor colorWithHexString:@"#1F5764"] forState:UIControlStateNormal];
|
||||
_exchangeButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular];
|
||||
_exchangeButton.layer.cornerRadius = 4;
|
||||
_exchangeButton.clipsToBounds = YES;
|
||||
[_exchangeButton addTarget:self action:@selector(exchangeBtnAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _exchangeButton;
|
||||
}
|
||||
|
||||
@end
|
@@ -1,28 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyShopingRecordCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/27.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class TreasureFairyConvertRecordModel;
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPTreasureFairyShopingRecordCell : UITableViewCell
|
||||
///是否是召唤
|
||||
@property (nonatomic,assign) BOOL isSummon;
|
||||
///时间
|
||||
@property (nonatomic,strong, readonly) UILabel *timeLabel;
|
||||
///等级
|
||||
@property (nonatomic,strong, readonly) UILabel *levelLabel;
|
||||
///奖励
|
||||
@property (nonatomic,strong, readonly) UILabel * prizeLabel;
|
||||
|
||||
///记录模型
|
||||
@property (nonatomic, strong) TreasureFairyConvertRecordModel *recordModel;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,161 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyShopingRecordCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/27.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairyShopingRecordCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
|
||||
#import "PLTimeUtil.h"
|
||||
///Model
|
||||
#import "TreasureFairyConvertRecordModel.h"
|
||||
|
||||
@interface XPTreasureFairyShopingRecordCell ()
|
||||
///容器
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///时间
|
||||
@property (nonatomic,strong) UILabel *timeLabel;
|
||||
///等级
|
||||
@property (nonatomic,strong) UILabel *levelLabel;
|
||||
///奖励
|
||||
@property (nonatomic,strong) UILabel * prizeLabel;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPTreasureFairyShopingRecordCell
|
||||
|
||||
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
[self.contentView addSubview:self.stackView];
|
||||
[self.stackView addArrangedSubview:self.timeLabel];
|
||||
[self.stackView addArrangedSubview:self.levelLabel];
|
||||
[self.stackView addArrangedSubview:self.prizeLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self.contentView);
|
||||
}];
|
||||
}
|
||||
- (NSString *)getDateWithHHMMSS:(NSString *)time {
|
||||
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
|
||||
formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
|
||||
[formatter setDateStyle:NSDateFormatterMediumStyle];
|
||||
[formatter setTimeStyle:NSDateFormatterShortStyle];
|
||||
[formatter setDateFormat:@"HH:mm:ss"];
|
||||
NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0];
|
||||
NSString* dateString = [formatter stringFromDate:date];
|
||||
return dateString;
|
||||
}
|
||||
|
||||
- (NSString *)getDateWithYYMM:(NSString *)time {
|
||||
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
|
||||
formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
|
||||
[formatter setDateStyle:NSDateFormatterMediumStyle];
|
||||
[formatter setTimeStyle:NSDateFormatterShortStyle];
|
||||
[formatter setDateFormat:@"yyyy:MM:dd"];
|
||||
NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0];
|
||||
NSString* dateString = [formatter stringFromDate:date];
|
||||
return dateString;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
|
||||
- (void)setRecordModel:(TreasureFairyConvertRecordModel *)recordModel {
|
||||
_recordModel = recordModel;
|
||||
if (_recordModel != nil) {
|
||||
NSString * time = [NSString stringWithFormat:@"%@\n%@", [self getDateWithYYMM:recordModel.createTime], [self getDateWithHHMMSS:recordModel.createTime]];
|
||||
self.timeLabel.text = time;
|
||||
if (self.isSummon) {
|
||||
NSString *level = @"";
|
||||
if (recordModel.convertLevel == 1) {
|
||||
level = YMLocalizedString(@"XPTreasureFairyShopingRecordCell0");
|
||||
}else if (recordModel.convertLevel == 2) {
|
||||
level = YMLocalizedString(@"XPTreasureFairyShopingRecordCell1");
|
||||
}else if (recordModel.convertLevel == 3) {
|
||||
level = YMLocalizedString(@"XPTreasureFairyShopingRecordCell2");
|
||||
}else if (recordModel.convertLevel == 5){
|
||||
level = YMLocalizedString(@"XPTreasureFairyShopingRecordCell2");
|
||||
}
|
||||
self.levelLabel.text = level;
|
||||
self.prizeLabel.text = [NSString stringWithFormat:@"%@x%@",recordModel.rewardName, recordModel.rewardNum];
|
||||
}else{
|
||||
NSString *string1 = [NSString stringWithFormat:@"%@x%@\n",recordModel.rewardName, recordModel.rewardNum];
|
||||
NSString *string2 = [NSString stringWithFormat:YMLocalizedString(@"XPTreasureFairyShopingRecordCell3"), recordModel.rewardShowValue];
|
||||
NSString *string = [NSString stringWithFormat:@"%@%@",string1, string2];
|
||||
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string];
|
||||
NSRange range = NSMakeRange(string.length-string2.length, string2.length);
|
||||
[attrStr addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:range];
|
||||
[attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:11] range:range];
|
||||
self.prizeLabel.attributedText = attrStr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setIsSummon:(BOOL)isSummon {
|
||||
_isSummon = isSummon;
|
||||
// if (_isSummon) {
|
||||
// self.levelLabel.hidden = NO;
|
||||
// } else {
|
||||
// self.levelLabel.hidden = YES;
|
||||
// }
|
||||
self.levelLabel.hidden = YES;
|
||||
}
|
||||
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_stackView.distribution = UIStackViewDistributionFillEqually;
|
||||
_stackView.alignment = UIStackViewAlignmentFill;
|
||||
_stackView.spacing = 0;
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
|
||||
- (UILabel *)timeLabel {
|
||||
if (!_timeLabel) {
|
||||
_timeLabel = [[UILabel alloc] init];
|
||||
_timeLabel.font = [UIFont systemFontOfSize:12];
|
||||
_timeLabel.textColor = [UIColor whiteColor];
|
||||
_timeLabel.numberOfLines = 0;
|
||||
_timeLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _timeLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)levelLabel {
|
||||
if (!_levelLabel) {
|
||||
_levelLabel = [[UILabel alloc] init];
|
||||
_levelLabel.font = [UIFont systemFontOfSize:12];
|
||||
_levelLabel.textColor = [UIColor whiteColor];
|
||||
_levelLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _levelLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)prizeLabel {
|
||||
if (!_prizeLabel) {
|
||||
_prizeLabel = [[UILabel alloc] init];
|
||||
_prizeLabel.font = [UIFont systemFontOfSize:12];
|
||||
_prizeLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#FEF8A8"];
|
||||
_prizeLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_prizeLabel.numberOfLines = 0;
|
||||
}
|
||||
return _prizeLabel;
|
||||
}
|
||||
@end
|
@@ -1,20 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyStoreResultCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/20.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class TreasureFairyInfoModel, TreasureFairyBallModel;
|
||||
@interface XPTreasureFairyStoreResultCell : UICollectionViewCell
|
||||
///奖励信息
|
||||
@property (nonatomic,strong) TreasureFairyInfoModel *prizeInfo;
|
||||
|
||||
///试炼精灵球信息
|
||||
@property (nonatomic,strong) TreasureFairyBallModel *ballInfo;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,121 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyStoreResultCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/20.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairyStoreResultCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
|
||||
#import "NetImageView.h"
|
||||
#import "UIImage+Utils.h"
|
||||
///Model
|
||||
#import "TreasureFairyInfoModel.h"
|
||||
#import "TreasureFairyBallInfoModel.h"
|
||||
|
||||
@interface XPTreasureFairyStoreResultCell ()
|
||||
///背景
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///礼物名称
|
||||
@property (nonatomic,strong) NetImageView *giftImageView;
|
||||
///名字
|
||||
@property (nonatomic,strong) UILabel *nameLabel;
|
||||
@end
|
||||
|
||||
@implementation XPTreasureFairyStoreResultCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
[self.contentView addSubview:self.backImageView];
|
||||
[self.contentView addSubview:self.nameLabel];
|
||||
[self.contentView addSubview:self.giftImageView];
|
||||
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.top.mas_equalTo(self);
|
||||
make.height.mas_equalTo(self.backImageView.mas_width);
|
||||
}];
|
||||
|
||||
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self.backImageView).inset(10);
|
||||
}];
|
||||
|
||||
[self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self);
|
||||
make.top.mas_equalTo(self.backImageView.mas_bottom).offset(7);
|
||||
}];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setPrizeInfo:(TreasureFairyInfoModel *)prizeInfo {
|
||||
_prizeInfo = prizeInfo;
|
||||
if (_prizeInfo) {
|
||||
if(_prizeInfo.propType == TreasureFairyPropType_Salvage){
|
||||
self.giftImageView.image = kImage(@"room_treasure_fairy_buy_elf_icon");
|
||||
self.nameLabel.text =[NSString stringWithFormat:@"x%ld", _prizeInfo.rewardNum];
|
||||
_backImageView.hidden = YES;
|
||||
return;
|
||||
}
|
||||
_backImageView.hidden = NO;
|
||||
self.giftImageView.imageUrl = prizeInfo.rewardPicUrl;
|
||||
self.nameLabel.text =[NSString stringWithFormat:@"%@x%ld", _prizeInfo.rewardName, _prizeInfo.rewardNum];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (void)setBallInfo:(TreasureFairyBallModel *)ballInfo{
|
||||
_ballInfo = ballInfo;
|
||||
if (_ballInfo) {
|
||||
self.giftImageView.imageUrl = _ballInfo.elfPicUrl;
|
||||
self.nameLabel.text =[NSString stringWithFormat:@"%@", _ballInfo.elfName];
|
||||
}
|
||||
}
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
_backImageView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#00B9AF"], [DJDKMIMOMColor colorWithHexString:@"#006E7C"]] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)];
|
||||
_backImageView.layer.masksToBounds = YES;
|
||||
_backImageView.layer.borderWidth = 0.5;
|
||||
_backImageView.layer.cornerRadius = 45;
|
||||
_backImageView.layer.borderColor = [DJDKMIMOMColor colorWithHexString:@"#F4FFC3"].CGColor;
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
|
||||
- (NetImageView *)giftImageView {
|
||||
if (!_giftImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_giftImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_giftImageView.layer.masksToBounds = YES;
|
||||
_giftImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _giftImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)nameLabel {
|
||||
if (!_nameLabel) {
|
||||
_nameLabel = [[UILabel alloc] init];
|
||||
_nameLabel.font = [UIFont systemFontOfSize:12];
|
||||
_nameLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_nameLabel.textColor = [UIColor whiteColor];
|
||||
}
|
||||
return _nameLabel;
|
||||
}
|
||||
@end
|
@@ -1,25 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyTrialsRecordCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/27.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class TreasureFairyTrialsRecordModel;
|
||||
@interface XPTreasureFairyTrialsRecordCell : UITableViewCell
|
||||
@property (nonatomic,strong) TreasureFairyTrialsRecordModel *recordInfo;
|
||||
///时间
|
||||
@property (nonatomic,strong, readonly) UILabel *timeLabel;
|
||||
///等级
|
||||
@property (nonatomic,strong, readonly) UILabel *levelLabel;
|
||||
///奖励
|
||||
@property (nonatomic,strong, readonly) UILabel * prizeLabel;
|
||||
///投入的
|
||||
@property (nonatomic,strong, readonly) UILabel *trialsLabel;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,161 +0,0 @@
|
||||
//
|
||||
// XPTreasureFairyTrialsRecordCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2023/2/27.
|
||||
//
|
||||
|
||||
#import "XPTreasureFairyTrialsRecordCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
|
||||
#import "PLTimeUtil.h"
|
||||
#import "NSArray+Safe.h"
|
||||
///Model
|
||||
#import "TreasureFairyTrialsRecordModel.h"
|
||||
|
||||
@interface XPTreasureFairyTrialsRecordCell ()
|
||||
///容器
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///时间
|
||||
@property (nonatomic,strong) UILabel *timeLabel;
|
||||
///等级
|
||||
@property (nonatomic,strong) UILabel *levelLabel;
|
||||
///投入的
|
||||
@property (nonatomic,strong) UILabel *trialsLabel;
|
||||
///奖励
|
||||
@property (nonatomic,strong) UILabel * prizeLabel;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPTreasureFairyTrialsRecordCell
|
||||
|
||||
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
[self.contentView addSubview:self.stackView];
|
||||
[self.stackView addArrangedSubview:self.timeLabel];
|
||||
[self.stackView addArrangedSubview:self.levelLabel];
|
||||
[self.stackView addArrangedSubview:self.trialsLabel];
|
||||
[self.stackView addArrangedSubview:self.prizeLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.leading.bottom.equalTo(self.contentView);
|
||||
make.trailing.mas_equalTo(-5);
|
||||
}];
|
||||
}
|
||||
- (NSString *)getDateWithHHMMSS:(NSString *)time {
|
||||
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
|
||||
formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
|
||||
[formatter setDateStyle:NSDateFormatterMediumStyle];
|
||||
[formatter setTimeStyle:NSDateFormatterShortStyle];
|
||||
[formatter setDateFormat:@"HH:mm:ss"];
|
||||
NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0];
|
||||
NSString* dateString = [formatter stringFromDate:date];
|
||||
return dateString;
|
||||
}
|
||||
|
||||
- (NSString *)getDateWithYYMM:(NSString *)time {
|
||||
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
|
||||
formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
|
||||
[formatter setDateStyle:NSDateFormatterMediumStyle];
|
||||
[formatter setTimeStyle:NSDateFormatterShortStyle];
|
||||
[formatter setDateFormat:@"yyyy:MM:dd"];
|
||||
NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0];
|
||||
NSString* dateString = [formatter stringFromDate:date];
|
||||
return dateString;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setRecordInfo:(TreasureFairyTrialsRecordModel *)recordInfo {
|
||||
_recordInfo = recordInfo;
|
||||
if (_recordInfo) {
|
||||
NSString * time = [NSString stringWithFormat:@"%@\n%@", [self getDateWithYYMM:_recordInfo.createTime], [self getDateWithHHMMSS:_recordInfo.createTime]];
|
||||
self.timeLabel.text = time;
|
||||
if (_recordInfo.type == TreasureFairyStoreType_Salvage) {
|
||||
self.levelLabel.text = YMLocalizedString(@"XPTreasureFairyTrialsRecordCell1");
|
||||
} else {
|
||||
self.levelLabel.text = YMLocalizedString(@"XPTreasureFairyTrialsRecordCell0");
|
||||
}
|
||||
NSMutableString * trilasTitle = [[NSMutableString alloc] init];
|
||||
for (int i = 0; i < _recordInfo.expendList.count; i++) {
|
||||
TreasureFairyBallModel * ballInfo = [_recordInfo.expendList xpSafeObjectAtIndex:i];
|
||||
if (ballInfo.elfName.length > 0) {
|
||||
[trilasTitle appendString:[NSString stringWithFormat:@"%@x%ld", ballInfo.elfName, ballInfo.elfNum]];
|
||||
}
|
||||
|
||||
if (i <( _recordInfo.expendList.count -1)){
|
||||
[trilasTitle appendString:@"\n"];
|
||||
}
|
||||
}
|
||||
self.trialsLabel.text = trilasTitle;
|
||||
self.prizeLabel.text = _recordInfo.elfName;
|
||||
}
|
||||
}
|
||||
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_stackView.distribution = UIStackViewDistributionFillEqually;
|
||||
_stackView.alignment = UIStackViewAlignmentFill;
|
||||
_stackView.spacing = 0;
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
|
||||
- (UILabel *)timeLabel {
|
||||
if (!_timeLabel) {
|
||||
_timeLabel = [[UILabel alloc] init];
|
||||
_timeLabel.font = [UIFont systemFontOfSize:12];
|
||||
_timeLabel.textColor = [UIColor whiteColor];
|
||||
_timeLabel.numberOfLines = 0;
|
||||
_timeLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _timeLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)levelLabel {
|
||||
if (!_levelLabel) {
|
||||
_levelLabel = [[UILabel alloc] init];
|
||||
_levelLabel.font = [UIFont systemFontOfSize:12];
|
||||
_levelLabel.textColor = [UIColor whiteColor];
|
||||
_levelLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _levelLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)trialsLabel {
|
||||
if (!_trialsLabel) {
|
||||
_trialsLabel = [[UILabel alloc] init];
|
||||
_trialsLabel.font = [UIFont systemFontOfSize:12];
|
||||
_trialsLabel.textColor = [UIColor whiteColor];
|
||||
_trialsLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_trialsLabel.numberOfLines = 4;
|
||||
}
|
||||
return _trialsLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)prizeLabel {
|
||||
if (!_prizeLabel) {
|
||||
_prizeLabel = [[UILabel alloc] init];
|
||||
_prizeLabel.font = [UIFont systemFontOfSize:12];
|
||||
_prizeLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#FEF8A8"];
|
||||
_prizeLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_prizeLabel.numberOfLines = 0;
|
||||
}
|
||||
return _prizeLabel;
|
||||
}
|
||||
@end
|
@@ -1,25 +0,0 @@
|
||||
//
|
||||
// PITreasureFairyBuyElfShardInputNumView.h
|
||||
// YuMi
|
||||
//
|
||||
// Created by duoban on 2023/9/7.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol PITreasureFairyBuyElfShardInputNumViewDelegate <NSObject>
|
||||
|
||||
-(void)inputShardNum:(NSString *)num;
|
||||
|
||||
@end
|
||||
|
||||
@interface PITreasureFairyBuyElfShardInputNumView : UIView
|
||||
@property(nonatomic,copy) NSString *text;
|
||||
@property(nonatomic,weak) id<PITreasureFairyBuyElfShardInputNumViewDelegate>delegate;
|
||||
///精灵碎片数量
|
||||
@property(nonatomic,copy) NSString *shardNum;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,164 +0,0 @@
|
||||
//
|
||||
// PITreasureFairyBuyElfShardInputNumView.m
|
||||
// YuMi
|
||||
//
|
||||
// Created by duoban on 2023/9/7.
|
||||
//
|
||||
|
||||
#import "PITreasureFairyBuyElfShardInputNumView.h"
|
||||
@interface PITreasureFairyBuyElfShardInputNumView()<UITextFieldDelegate>
|
||||
///加
|
||||
@property(nonatomic,strong) UIButton *addBtn;
|
||||
///减
|
||||
@property(nonatomic,strong) UIButton *subtractBtn;
|
||||
///背景
|
||||
@property(nonatomic,strong) UIView *bgView;
|
||||
///输入框
|
||||
@property(nonatomic,strong) MSBaseTextField *textFiled;
|
||||
|
||||
@end
|
||||
@implementation PITreasureFairyBuyElfShardInputNumView
|
||||
|
||||
-(instancetype)initWithFrame:(CGRect)frame{
|
||||
self = [super initWithFrame:frame];
|
||||
if(self){
|
||||
[self installUI];
|
||||
[self installConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)installUI{
|
||||
[self addSubview:self.bgView];
|
||||
[self addSubview:self.subtractBtn];
|
||||
|
||||
[self addSubview:self.addBtn];
|
||||
|
||||
[self.bgView addSubview:self.textFiled];
|
||||
}
|
||||
-(void)installConstraints{
|
||||
[self.subtractBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(51);
|
||||
make.height.mas_equalTo(29);
|
||||
make.leading.top.equalTo(self);
|
||||
}];
|
||||
[self.addBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.trailing.top.equalTo(self);
|
||||
make.width.mas_equalTo(51);
|
||||
make.height.mas_equalTo(29);
|
||||
}];
|
||||
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.equalTo(self).inset(15);
|
||||
make.bottom.top.equalTo(self);
|
||||
}];
|
||||
[self.textFiled mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(51);
|
||||
make.trailing.mas_equalTo(-51);
|
||||
make.bottom.top.equalTo(self);
|
||||
}];
|
||||
|
||||
}
|
||||
-(void)setShardNum:(NSString *)shardNum{
|
||||
_shardNum = shardNum;
|
||||
_textFiled.text = _shardNum;
|
||||
|
||||
}
|
||||
#pragma mark -UITextFieldDelegate
|
||||
- (void)textFieldDidChanged:(UITextField *)textField {
|
||||
if(textField.text.integerValue <= 0){
|
||||
textField.text = @"";
|
||||
}
|
||||
|
||||
|
||||
if(self.delegate && [self.delegate respondsToSelector:@selector(inputShardNum:)]){
|
||||
[self.delegate inputShardNum:textField.text];
|
||||
}
|
||||
}
|
||||
- (void)textFieldDidEndEditing:(UITextField *)textField{
|
||||
if(textField.text.length <= 0){
|
||||
textField.text = @"";
|
||||
}
|
||||
|
||||
|
||||
if(self.delegate && [self.delegate respondsToSelector:@selector(inputShardNum:)]){
|
||||
[self.delegate inputShardNum:textField.text];
|
||||
}
|
||||
}
|
||||
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
|
||||
return [self validateNumber:string];
|
||||
}
|
||||
|
||||
- (BOOL)validateNumber:(NSString*)number {
|
||||
BOOL res = YES;
|
||||
NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
|
||||
int i = 0;
|
||||
while (i < number.length) {
|
||||
NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
|
||||
NSRange range = [string rangeOfCharacterFromSet:tmpSet];
|
||||
if (range.length == 0) {
|
||||
res = NO;
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
-(void)addBtnAction{
|
||||
NSInteger num = self.textFiled.text.integerValue + 10;
|
||||
self.textFiled.text = @(num).stringValue;
|
||||
if(self.delegate && [self.delegate respondsToSelector:@selector(inputShardNum:)]){
|
||||
[self.delegate inputShardNum:self.textFiled.text];
|
||||
}
|
||||
}
|
||||
-(void)subtractAction{
|
||||
NSInteger num = self.textFiled.text.integerValue - 10;
|
||||
if(num <= 1){
|
||||
num = 1;
|
||||
}
|
||||
self.textFiled.text = @(num).stringValue;
|
||||
if(self.delegate && [self.delegate respondsToSelector:@selector(inputShardNum:)]){
|
||||
[self.delegate inputShardNum:self.textFiled.text];
|
||||
}
|
||||
}
|
||||
#pragma mark - 懒加载
|
||||
- (NSString *)text{
|
||||
return self.textFiled.text;
|
||||
}
|
||||
- (UIView *)bgView{
|
||||
if(!_bgView){
|
||||
_bgView = [UIView new];
|
||||
_bgView.backgroundColor = UIColorFromRGB(0x306065);
|
||||
}
|
||||
return _bgView;
|
||||
}
|
||||
- (MSBaseTextField *)textFiled {
|
||||
if (!_textFiled) {
|
||||
_textFiled = [[MSBaseTextField alloc] init];
|
||||
_textFiled.tintColor = [UIColor whiteColor];
|
||||
_textFiled.textColor = [UIColor whiteColor];
|
||||
_textFiled.backgroundColor = [UIColor clearColor];
|
||||
_textFiled.textAlignment = NSTextAlignmentCenter;
|
||||
_textFiled.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular];
|
||||
_textFiled.text = @"1";
|
||||
_textFiled.delegate = self;
|
||||
[_textFiled addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged];
|
||||
_textFiled.keyboardType = UIKeyboardTypeNumberPad;
|
||||
}
|
||||
return _textFiled;
|
||||
}
|
||||
- (UIButton *)addBtn{
|
||||
if(!_addBtn){
|
||||
_addBtn = [UIButton new];
|
||||
[_addBtn setBackgroundImage:kImage(@"room_treasure_fairy_new_buy_elf_add") forState:UIControlStateNormal];
|
||||
[_addBtn addTarget:self action:@selector(addBtnAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _addBtn;
|
||||
}
|
||||
- (UIButton *)subtractBtn{
|
||||
if(!_subtractBtn){
|
||||
_subtractBtn = [UIButton new];
|
||||
[_subtractBtn setBackgroundImage:kImage(@"room_treasure_fairy_new_buy_elf_subtract") forState:UIControlStateNormal];
|
||||
[_subtractBtn addTarget:self action:@selector(subtractAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _subtractBtn;
|
||||
}
|
||||
@end
|
@@ -1,16 +0,0 @@
|
||||
//
|
||||
// PITreasureFairyBuyElfShardSuccessView.h
|
||||
// YuMi
|
||||
//
|
||||
// Created by duoban on 2023/9/7.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface PITreasureFairyBuyElfShardSuccessView : UIView
|
||||
@property(nonatomic,copy) NSString *num;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user