From f9982f524970f9f6ca3211a4c62782b3779810e9 Mon Sep 17 00:00:00 2001 From: gamer147 Date: Fri, 5 Jun 2026 20:41:25 -0400 Subject: [PATCH] feat(battle-engine): copy-loop closure to 3282 files (member-surface frontier) --- SVSim.BattleEngine/COPIED.manifest.tsv | 40 ++ .../Cute/GetGameDataByTransitionCode.cs | 97 +++ .../Engine/Cute/PaymentStartCancelParams.cs | 26 + .../Engine/Cute/PublistTransitionCode.cs | 25 + .../Engine/Cute/SteamMicroTxnInitTask.cs | 51 ++ .../Engine/Cute/TransitionCodeParams.cs | 8 + .../Engine/UIDragDropContainer.cs | 15 + SVSim.BattleEngine/Engine/UIDragDropRoot.cs | 20 + ...lateCostNoDuplicationRandomSelectFilter.cs | 41 ++ ...mulateIdNoDuplicationRandomSelectFilter.cs | 41 ++ ...RecoveryNetworkAfterSubmitMulliganPhase.cs | 23 + .../AINetworkBattleOperationRecorder.cs | 580 ++++++++++++++++++ .../NetworkBattleOperationRecorder.cs | 421 +++++++++++++ .../BuildDeckPurchaseInfoTask.cs | 123 ++++ .../BuildDeckSelectBuyMeansDialog.cs | 16 + .../Engine/Wizard/AdjustSettingUpdateTask.cs | 21 + .../Engine/Wizard/ArenaBuyDialog.cs | 131 ++++ .../Wizard/CompetitionPermanentEntryTask.cs | 33 + .../Engine/Wizard/FriendApplySendTask.cs | 28 + .../Engine/Wizard/FriendUserSearchTask.cs | 39 ++ .../Engine/Wizard/GatheringEntryTask.cs | 60 ++ .../Wizard/GatheringFriendInviteListPlate.cs | 22 + .../Wizard/GatheringInviteCancelTask.cs | 21 + .../Wizard/GatheringInviteRejectTask.cs | 21 + .../Engine/Wizard/GatheringInviteTask.cs | 21 + .../Engine/Wizard/GatheringKickConfirm.cs | 56 ++ .../Engine/Wizard/GatheringKickTask.cs | 24 + .../Engine/Wizard/GatheringMemberPlate.cs | 59 ++ .../Engine/Wizard/GatheringRankingPlate.cs | 49 ++ .../Wizard/GatheringReceiveInfoDialog.cs | 72 +++ .../Engine/Wizard/GatheringSettingDialog.cs | 73 +++ .../Wizard/GatheringTournamentInfoTask.cs | 304 +++++++++ .../Wizard/GatheringUpdateDescriptionTask.cs | 21 + .../Wizard/GuildInputDescriptionDialog.cs | 25 + .../Engine/Wizard/GuildInputViewerIdDialog.cs | 38 ++ .../Engine/Wizard/GuildUserDataDialog.cs | 38 ++ .../Engine/Wizard/MailReadTask.cs | 69 +++ .../Engine/Wizard/ReplayDetailTask.cs | 35 ++ .../Engine/Wizard/ReplayDialogContent.cs | 115 ++++ .../Engine/Wizard/TweenPositionWithUpdate.cs | 45 ++ .../Engine/Wizard/UserDataDialog.cs | 83 +++ 41 files changed, 3030 insertions(+) create mode 100644 SVSim.BattleEngine/Engine/Cute/GetGameDataByTransitionCode.cs create mode 100644 SVSim.BattleEngine/Engine/Cute/PaymentStartCancelParams.cs create mode 100644 SVSim.BattleEngine/Engine/Cute/PublistTransitionCode.cs create mode 100644 SVSim.BattleEngine/Engine/Cute/SteamMicroTxnInitTask.cs create mode 100644 SVSim.BattleEngine/Engine/Cute/TransitionCodeParams.cs create mode 100644 SVSim.BattleEngine/Engine/UIDragDropContainer.cs create mode 100644 SVSim.BattleEngine/Engine/UIDragDropRoot.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard.Battle.Operation/SimulateCostNoDuplicationRandomSelectFilter.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard.Battle.Operation/SimulateIdNoDuplicationRandomSelectFilter.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard.Battle.Phase/RecoveryNetworkAfterSubmitMulliganPhase.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard.Battle.Recovery/AINetworkBattleOperationRecorder.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard.Battle.Recovery/NetworkBattleOperationRecorder.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase/BuildDeckPurchaseInfoTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase/BuildDeckSelectBuyMeansDialog.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/AdjustSettingUpdateTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/ArenaBuyDialog.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/CompetitionPermanentEntryTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/FriendApplySendTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/FriendUserSearchTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringEntryTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringFriendInviteListPlate.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringInviteCancelTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringInviteRejectTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringInviteTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringKickConfirm.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringKickTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringMemberPlate.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringRankingPlate.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringReceiveInfoDialog.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringSettingDialog.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringTournamentInfoTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GatheringUpdateDescriptionTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GuildInputDescriptionDialog.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GuildInputViewerIdDialog.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/GuildUserDataDialog.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/MailReadTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/ReplayDetailTask.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/ReplayDialogContent.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/TweenPositionWithUpdate.cs create mode 100644 SVSim.BattleEngine/Engine/Wizard/UserDataDialog.cs diff --git a/SVSim.BattleEngine/COPIED.manifest.tsv b/SVSim.BattleEngine/COPIED.manifest.tsv index c0510a1..06bd2ca 100644 --- a/SVSim.BattleEngine/COPIED.manifest.tsv +++ b/SVSim.BattleEngine/COPIED.manifest.tsv @@ -185,6 +185,7 @@ Cute\DataMigration.cs Cute\DataMigration.cs 33898de02ccfaf795788f56df87b06d99cae Cute\DebugManager.cs Cute\DebugManager.cs 046c827677e5060f5a78b5d095b349e6956f3fe9a6183d51e411389755b37654 0 Cute\DeviceManager.cs Cute\DeviceManager.cs 1cfdf166a10ee8c25d00d8aa8b4679d3aebf72bd98d50a1c465d55e357059734 0 Cute\GameStartCheckTask.cs Cute\GameStartCheckTask.cs 549e76d44bb9692e45701c6bd09ea441a495e8f7e7fe7acdf508583c44e2b5a5 0 +Cute\GetGameDataByTransitionCode.cs Cute\GetGameDataByTransitionCode.cs 4b324780fb9f9af0cf4b292ad95e4ee32cb549ca0786dd3d0bb0e3992fa55554 0 Cute\GetiCloudUserDataTask.cs Cute\GetiCloudUserDataTask.cs 2cb7e8beebe14a4507d57e6f5bb29ddc97c3fd8ccafbd903386f14aa679e9b41 0 Cute\HangulManager.cs Cute\HangulManager.cs 5d49693ea1bc8e9c60c356f2495fe2d10f218861a7894197d6b4129dff4aebf9 0 Cute\IAchievementCallback.cs Cute\IAchievementCallback.cs 2da279d18d01267260283e79c2962362a72e5612eb137c7f4cb6bd7aac60d661 0 @@ -208,8 +209,10 @@ Cute\PaymentPCItemListTask.cs Cute\PaymentPCItemListTask.cs 5bce671c6caa47d183cc Cute\PaymentPCStartParams.cs Cute\PaymentPCStartParams.cs be95fa062f1bca344ca011a73ea9e6f9eef6fa2c559d3064c8ed9b2ca6fda902 0 Cute\PaymentPCStartParamsSTEAM.cs Cute\PaymentPCStartParamsSTEAM.cs fcaf910e2d5ab9f51703f7a9bdf959874059d42402e70984dacdf5d0dc5da459 0 Cute\PaymentPCStartTask.cs Cute\PaymentPCStartTask.cs bf5501c824f3d59f5f18c8bb2361243a06395c9275b2d576d172c082b8a3250e 0 +Cute\PaymentStartCancelParams.cs Cute\PaymentStartCancelParams.cs 82bea2494bf88c3d7a8497ae5e5bef5311b1c28ab3c3160984a76a63e402225f 0 Cute\PaymentStartTask.cs Cute\PaymentStartTask.cs 293b3b16e2f607500c731421405b452aaaca04ae953a473611ee3cbf69b87a1f 0 Cute\PostParams.cs Cute\PostParams.cs 075f4ac38426adb7885083dd0638d902737d83d34c4b36befd8cef000ff4f2b1 0 +Cute\PublistTransitionCode.cs Cute\PublistTransitionCode.cs 51dd8386df4487dd6a24cd6a62ec0d875ca13f375d446061b803a07feaacf934 0 Cute\QualityManager.cs Cute\QualityManager.cs c6bb9c24b798af63b951d77bf525604ad725c9f14eadccce016f0c91497beacf 0 Cute\ResourcesManager.cs Cute\ResourcesManager.cs 71d3f4d1e0d685fcc86ecb163a7c0509fc8455329c16cdb6d2a8a6044207f924 0 Cute\SavedataManager.cs Cute\SavedataManager.cs 5646f2abab140a3b680014dd7d642989be1b1e041292d0f60c814546a27d8130 0 @@ -219,9 +222,11 @@ Cute\SkipCuteCheckResultCodes.cs Cute\SkipCuteCheckResultCodes.cs 9e61d6dca2c37a Cute\SocialServiceUtility.cs Cute\SocialServiceUtility.cs 98a01ef8cc4020f8fe4b1517946e9baa59f100cfa03bc0ebcc0d7561219d42e5 0 Cute\SoftwareResetBase.cs Cute\SoftwareResetBase.cs 3f12519bbe890a1cecb09928deb13e8f22ee6a4230884f63a53e7ec22d7114e0 0 Cute\SoundData.cs Cute\SoundData.cs 48133c9aece96639bb8d52c28e0aeef4b9e41fcaefee31d11a75c34ba355c96e 0 +Cute\SteamMicroTxnInitTask.cs Cute\SteamMicroTxnInitTask.cs 6220a26fefca4c5fc3cd075e1597e658a20a9df7df8cb6d2a4dd414d7d2ea9d7 0 Cute\TimeData.cs Cute\TimeData.cs d1bb7dbdb7c456739a7949b2348121660df2ca5fba8f7797df275133b5691ddf 0 Cute\TimeUtil.cs Cute\TimeUtil.cs e1216cb3cf4bf4add6b239fa718ad5bfb62dcd704f66f4737b23461b03f70c9c 0 Cute\Toolbox.cs Cute\Toolbox.cs 1f33c50878dd0f2f2947ee38040fba727212db75b0a4fd783709e1f63eeeaaa0 0 +Cute\TransitionCodeParams.cs Cute\TransitionCodeParams.cs e9356bc3e735e7a66c7ad384f1c51c8b540fb65f0e66115a00458a51cbce8a94 0 Cute\URLScheme.cs Cute\URLScheme.cs e4a3c1b69dba941cda308d19b8c0e73af0c317c0834d8031d7702471a233cc11 0 Cute\UpdateBirthTask.cs Cute\UpdateBirthTask.cs 044f9a7bdd08e345f4997f02a6f7917b447deb376173982e90e4a79ba7926b7f 0 Cute\UpdateiCloudUserDataTask.cs Cute\UpdateiCloudUserDataTask.cs 51b42f384a60587c64b7fa4e73ad23b0122cc03ff297ffd0d806043cce84586a 0 @@ -1392,7 +1397,9 @@ UICardList.cs UICardList.cs 0c983d56f955b25b0e0d52b4b1ce7c4a51b175093770c24c66db UICenterOnChild.cs UICenterOnChild.cs 474da8b0e6bab01a59538a47351a71f3a3564f9242c37a9adb29419dcaf91ee1 0 UICenterOnClick.cs UICenterOnClick.cs f6fd08e24ca2e897bcbd22568be224eb3d7bae06f898d66fcd34f5fc20419178 0 UICurveLabel.cs UICurveLabel.cs e7eb2389c940c26327f302d9c11863726a359d46c85a5ad5a0d5d5e44cbe5d8d 0 +UIDragDropContainer.cs UIDragDropContainer.cs a07eb16f2b966d10e3e30c3f664b79d4f5eab211fccb0642d307056cb366958e 0 UIDragDropItem.cs UIDragDropItem.cs fcf70d217a44f6c6c6c11d91d643a6777f3ef107e9688a758f9a5aa43d6b3e0e 0 +UIDragDropRoot.cs UIDragDropRoot.cs a8ae945ff310ae25b2033418cbbf857e6db057d3d874f6f87463702efa8a1ba5 0 UIDragScrollView.cs UIDragScrollView.cs e5acfb873e2c58489438689c35fb49f9bc6a626e42b8210d99131027c5c614b4 0 UIDrawCall.cs UIDrawCall.cs 9450bbb24af68f5949415fdaf4d172e87f3666f50d04cc349a63317ba3ce16c0 0 UIEventListener.cs UIEventListener.cs 2e8420b6be9c0a4432e84df935bcd72a3d59ae68eb9cbcb7fbf7c37d22fa08d4 0 @@ -1511,6 +1518,8 @@ Wizard.Battle.Operation\FusionOperationCommand.cs Wizard.Battle.Operation\Fusion Wizard.Battle.Operation\IOperationCommand.cs Wizard.Battle.Operation\IOperationCommand.cs 71d184f986afd2d5160a6f7121ef8f80e50c018b48c21d5e3b6c14086df8c494 0 Wizard.Battle.Operation\OperationSimulator.cs Wizard.Battle.Operation\OperationSimulator.cs c97c6fdf16353d9d3aa5839528bc5832d00a85e27da8d786ad8274e1bf45708c 0 Wizard.Battle.Operation\PlayOperationCommand.cs Wizard.Battle.Operation\PlayOperationCommand.cs 4359c79e97c900f043931d02cc34057a7920fa0655bdd2e7a294e23727519cd7 0 +Wizard.Battle.Operation\SimulateCostNoDuplicationRandomSelectFilter.cs Wizard.Battle.Operation\SimulateCostNoDuplicationRandomSelectFilter.cs 02ad7e0a254801641204e1557ace3ff15ecc38aa3e100f62fa88ca2ddd3dbf8f 0 +Wizard.Battle.Operation\SimulateIdNoDuplicationRandomSelectFilter.cs Wizard.Battle.Operation\SimulateIdNoDuplicationRandomSelectFilter.cs e4d98479c22999934f2a52d9e0da7ccc89b9473fe1b2eebbaadc27b4de00486e 0 Wizard.Battle.Operation\SimulateRandomSelectFilter.cs Wizard.Battle.Operation\SimulateRandomSelectFilter.cs 2d15e18af41ec05545d8b1d6db64f5d25240828ce3284d81fd23f775fa8c00f2 0 Wizard.Battle.Operation\SimulateSkillCreator.cs Wizard.Battle.Operation\SimulateSkillCreator.cs e382b7cc573333a8577d00ebbb4c980dfeaa7e211cc6906afb7f1428777406e5 0 Wizard.Battle.Operation\SimulationSelection.cs Wizard.Battle.Operation\SimulationSelection.cs efe3abe803236d55e3594f15b65dafd9fff41a526e291a217ce63d1b89ecb475 0 @@ -1528,6 +1537,7 @@ Wizard.Battle.Phase\NetworkMulliganPhase.cs Wizard.Battle.Phase\NetworkMulliganP Wizard.Battle.Phase\OpeningPhase.cs Wizard.Battle.Phase\OpeningPhase.cs c47c033633cf5b813eb8384323c313a8b8ba2edfd91c1368fb1f5df9e4e73391 0 Wizard.Battle.Phase\PhaseCreatorBase.cs Wizard.Battle.Phase\PhaseCreatorBase.cs a5641cd3ac277cb47bd0d2e2ee904bc17155ecb18f2e4c2b60a3d643be9ed06d 0 Wizard.Battle.Phase\RecoveryAfterMulliganPhase.cs Wizard.Battle.Phase\RecoveryAfterMulliganPhase.cs 8b75c76e7a0122bff7e06a1bfe0817f1ce84585dea460e0d99225fb20d5fe4f5 0 +Wizard.Battle.Phase\RecoveryNetworkAfterSubmitMulliganPhase.cs Wizard.Battle.Phase\RecoveryNetworkAfterSubmitMulliganPhase.cs 61e806e680951d3ccf6121791c394fa262cd7a48c8f906fe16f6f7cd3d9d8396 0 Wizard.Battle.Phase\RecoveryNetworkBattleMainPhaseCreator.cs Wizard.Battle.Phase\RecoveryNetworkBattleMainPhaseCreator.cs 79eef2223f6de01026063bb94ee89fc7c47c69c64838687af58a17b8cbd1397f 0 Wizard.Battle.Phase\RecoveryNetworkBattleMulliganPhaseCreator.cs Wizard.Battle.Phase\RecoveryNetworkBattleMulliganPhaseCreator.cs 2161d3228cc97967a5bc16983341eb7a190f15307cbd0728967963634e637553 0 Wizard.Battle.Phase\RecoveryNetworkBeforeSubmitMulliganPhase.cs Wizard.Battle.Phase\RecoveryNetworkBeforeSubmitMulliganPhase.cs 6f16e1181f83f47de29f27017d1ecfd8aa6963f55524ee3457cc1a428778fb1e 0 @@ -1549,6 +1559,7 @@ Wizard.Battle.Player.Emotion\NetworkOpponentEmotion.cs Wizard.Battle.Player.Emot Wizard.Battle.Player.Emotion\NullEmotion.cs Wizard.Battle.Player.Emotion\NullEmotion.cs c1318df605e2d6091d061ae7ab2912086641339782ce7772ccdb69e6017751d6 0 Wizard.Battle.Player.Emotion\NullPlayerEmotion.cs Wizard.Battle.Player.Emotion\NullPlayerEmotion.cs 06b4b9904bff94caec65f7ac4787c26e8a5a1d8c7bf011d71c9ee72206d3795c 0 Wizard.Battle.Player.Emotion\PlayerEmotion.cs Wizard.Battle.Player.Emotion\PlayerEmotion.cs f5c02d38012cea684c668d7db6b07cdeaecd31072a6d2bc727fc2ddbbb5689ca 0 +Wizard.Battle.Recovery\AINetworkBattleOperationRecorder.cs Wizard.Battle.Recovery\AINetworkBattleOperationRecorder.cs 6379b1f57a1a9e15956b55c3eee5da0fe0d2f1c94d2a0c5125a7d1b1aee9e0a4 0 Wizard.Battle.Recovery\AINetworkBattleRecoveryRecordManager.cs Wizard.Battle.Recovery\AINetworkBattleRecoveryRecordManager.cs fd3735653061b2d2e25f1bb27f88cb394cfc5fa130235849e411ccf154417c77 0 Wizard.Battle.Recovery\BattleConditionEnemyInfo.cs Wizard.Battle.Recovery\BattleConditionEnemyInfo.cs 35f6c55a91314ee7cda4d1c93658aaafa972118ef0363c736dcd752bcaaaaaf0 0 Wizard.Battle.Recovery\BattleConditionInfo.cs Wizard.Battle.Recovery\BattleConditionInfo.cs d24a150006f866efadf537fd45c760cfed23d3373be6c7fcf39438827e00226f 0 @@ -1560,6 +1571,7 @@ Wizard.Battle.Recovery\HandCardInfo.cs Wizard.Battle.Recovery\HandCardInfo.cs b0 Wizard.Battle.Recovery\IRecoveryManager.cs Wizard.Battle.Recovery\IRecoveryManager.cs 183fafee041522a2c67f6e3c0b50751e4591e507f8f2950658fbc29ad3cbc78d 0 Wizard.Battle.Recovery\IRecoveryRecordManager.cs Wizard.Battle.Recovery\IRecoveryRecordManager.cs f8f95b3c268918fd18b849616a576e763819bf3d376dbbdb4a60393370a2d4e7 0 Wizard.Battle.Recovery\InPlayCardInfo.cs Wizard.Battle.Recovery\InPlayCardInfo.cs 63491906ad4c2e18fd2e7eadec2ee92d15eda18b8f726ec38f969da79e30155c 0 +Wizard.Battle.Recovery\NetworkBattleOperationRecorder.cs Wizard.Battle.Recovery\NetworkBattleOperationRecorder.cs 187f991004d911e84ff0c8dbbb97d38cb06e754b58283b13debfbe33a53f95f2 0 Wizard.Battle.Recovery\NetworkBattleRecoveryManager.cs Wizard.Battle.Recovery\NetworkBattleRecoveryManager.cs 23cd6c9938774455f9960ee06296cd2a56a1fc0f61014a07caccec86603bcc72 0 Wizard.Battle.Recovery\NetworkBattleRecoveryRecordManager.cs Wizard.Battle.Recovery\NetworkBattleRecoveryRecordManager.cs 83771ee98a8092c33bfdbebe4271a3a28829d23ceaec8d9bb4e1933d0755a20f 0 Wizard.Battle.Recovery\NullRecoveryManager.cs Wizard.Battle.Recovery\NullRecoveryManager.cs cda3f270ddd3fd686a0c2c97fe4cf2db18c7355456edf2f8c35f60caff753f32 0 @@ -1673,7 +1685,9 @@ Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckDetailWindow.cs Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckPlate.cs Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckPlate.cs bd9c91055c8a8f1568d52aa151905a4b2f48bbdae67ce8e220d5d6e2d926bf08 0 Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckProductInfo.cs Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckProductInfo.cs 2db317cebfbedee935a6035145c5c580ce1f4f9ea1b054485c16b8697f4fea6b 0 Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckPurchaseInfo.cs Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckPurchaseInfo.cs 045817a97fbc695eaa151ed8bba8878f1296ff764f3c7967c7f7aa762cb386c6 0 +Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckPurchaseInfoTask.cs Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckPurchaseInfoTask.cs 4354baf3caae53349994512d02bf7279a1e9670c1cf57336a6160e8afac02aa7 0 Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckPurchasePage.cs Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckPurchasePage.cs 9195762e8890b62bac3795bbae963a167aa494df9704b1cc1f394ebe332def4c 0 +Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckSelectBuyMeansDialog.cs Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckSelectBuyMeansDialog.cs 505e70d4cbf0c22591efd8a324b5cac980bb6ec1297d9fa88348f571f95e6b5e 0 Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckSeriesPurchaseInfo.cs Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase\BuildDeckSeriesPurchaseInfo.cs d8aba20b16e641ba45718dafa95bb5bcd20c65417572dcad4a4e6f97fc96d7b4 0 Wizard.Scripts.Network.Data.TaskData.ItemPurchase\ItemPurchaseBuyTask.cs Wizard.Scripts.Network.Data.TaskData.ItemPurchase\ItemPurchaseBuyTask.cs 5efb8b505dfdce8f140a7272da996a88f88f6689bce8fa1cc1a7e849ceeedca2 0 Wizard.Scripts.Network.Data.TaskData.ItemPurchase\ItemPurchaseData.cs Wizard.Scripts.Network.Data.TaskData.ItemPurchase\ItemPurchaseData.cs 0804c342fc51f32cc6960cf06b9fb48de29b7c63cfe6f97b52b6c0144c872f02 0 @@ -2364,6 +2378,7 @@ Wizard\AchievementReceiveRewardTask.cs Wizard\AchievementReceiveRewardTask.cs a1 Wizard\ActivateCountTagCollection.cs Wizard\ActivateCountTagCollection.cs fb0b8de915750511da274995871c184582f447c1b1d5a6569960db243bf1f482 0 Wizard\AddCardToPlayoutPlayPtnTagCollection.cs Wizard\AddCardToPlayoutPlayPtnTagCollection.cs be590b8fc0998c928f0130913b0aa923eaff662f21368401ab13ea2d763f349b 0 Wizard\AdjustSendSettingDialog.cs Wizard\AdjustSendSettingDialog.cs d0380674a5565223a3068fec0881d161a6d424adf3e3d7945c52730cc14de915 0 +Wizard\AdjustSettingUpdateTask.cs Wizard\AdjustSettingUpdateTask.cs 1e49dfc860fc4e4ea898e3efb60aff766e8bba4fec10c72fd0d16626461256d5 0 Wizard\AfterAttackTagCollection.cs Wizard\AfterAttackTagCollection.cs 399655aabb4fb431693df63b42794178c30765b5e3e708214bc55a7a1a6b9236 0 Wizard\AfterClashTagCollection.cs Wizard\AfterClashTagCollection.cs 7e4c59ef671559d3a1be6e9b7745fd67ff19afcdf2b37c8eb3eaa042596ef1ea 0 Wizard\AfterDiscardTagCollection.cs Wizard\AfterDiscardTagCollection.cs 076f64ad48ce2473fe5aacbe16790488872c5c1992577ba9cfb7d1472ade0d27 0 @@ -2372,6 +2387,7 @@ Wizard\AllyPlayBonusPolicyCollection.cs Wizard\AllyPlayBonusPolicyCollection.cs Wizard\AllyPlayBonusRatePolicyCollection.cs Wizard\AllyPlayBonusRatePolicyCollection.cs d33ddef3ce145c7b8acd943c451ba8657c25f0c98f243ee7a4f21d9f1857f32a 0 Wizard\AllyPlayBonusTagCollection.cs Wizard\AllyPlayBonusTagCollection.cs 04260820f1240296416afe9d579b64e16c953293375bd26d7b956a0f37341d16 0 Wizard\AreaSelectClearReward.cs Wizard\AreaSelectClearReward.cs 6e11173e7b2d4d16b18e4f8ce7e7c5f588e754cd013ac4e0cc58176537736f83 0 +Wizard\ArenaBuyDialog.cs Wizard\ArenaBuyDialog.cs 2efed7203ad425c2e9c4cf0a75888164321484ef78124bfdca16a1e70b468bf7 0 Wizard\ArenaCommonLobby.cs Wizard\ArenaCommonLobby.cs 3c46adae1758b23226f89e84e69187905119579d21edc1aabca6abce86273750 0 Wizard\ArenaCommonLobbyBattleInfo.cs Wizard\ArenaCommonLobbyBattleInfo.cs 2562cdbce205a7c3dc5699d086c1de69dce1d92922f8144cc45a1d9d5402dd14 0 Wizard\ArenaCommonLobbyBattleStateObject.cs Wizard\ArenaCommonLobbyBattleStateObject.cs f29606af21c34c8fe143bb421a3d3ae9069530ec9aa36faaf606a2b91418f61d 0 @@ -2558,6 +2574,7 @@ Wizard\CompetitionEntry.cs Wizard\CompetitionEntry.cs 87cc3080389dfa9f7293b7028e Wizard\CompetitionEntryDialog.cs Wizard\CompetitionEntryDialog.cs aed3caa3ff1a66c8d1ccafd3395e997b8a250c6311a60da86bf8ebd21df89d67 0 Wizard\CompetitionEntryTask.cs Wizard\CompetitionEntryTask.cs d47db9339e308e5962dd7924d04a06dabab60a2085af16430b5e888da2f576a0 0 Wizard\CompetitionJoinTask.cs Wizard\CompetitionJoinTask.cs e979d61adddd303836992344e821176d7a31dccb689347c75bb8b38fe9f58eb1 0 +Wizard\CompetitionPermanentEntryTask.cs Wizard\CompetitionPermanentEntryTask.cs 3e329b8cd262d6060114c927e5944a2358cd517e53d384276038d3e16059245f 0 Wizard\CompetitionRegisterDeckTask.cs Wizard\CompetitionRegisterDeckTask.cs ae9d2f397c9cb5b8d16f5d0ade6ab5bb1bb56586f5caf7421efc3b479cd71379 0 Wizard\CompetitionResultAnimationAgent.cs Wizard\CompetitionResultAnimationAgent.cs 75b8a263a2ef3999b4abbcc79aeb8027457521e7cc84ee5de27b09d34810acf5 0 Wizard\CompetitionResultAnimationHandler.cs Wizard\CompetitionResultAnimationHandler.cs b881b9efd770b87585bf3d059976ffd97e5ea23e4cfcf9501d9ac45fe96f8994 0 @@ -2712,6 +2729,8 @@ Wizard\FreeAndRankMatchDeckSelectConfirmDialog.cs Wizard\FreeAndRankMatchDeckSel Wizard\FreeBattleDoMatchingTask.cs Wizard\FreeBattleDoMatchingTask.cs 5fff06ecb3477c0b585b72e75c7c6e6127ff870957d04b066b34a4eea596c86c 0 Wizard\FreeBattleFinishTask.cs Wizard\FreeBattleFinishTask.cs 751980db78c6eacc00c9d7622fc92ae1df8c87c36b2dfe58424798ddf40f5c34 0 Wizard\FreeCardPackCampaignFinishTask.cs Wizard\FreeCardPackCampaignFinishTask.cs 1dd31ef77f9940b479c211692c1d8301712bc5df8cf21de3224e0dda8eed203f 0 +Wizard\FriendApplySendTask.cs Wizard\FriendApplySendTask.cs 63b93148e7ff4914827d64d9cf303750262f140471f09629454b524c7a0a4d6e 0 +Wizard\FriendUserSearchTask.cs Wizard\FriendUserSearchTask.cs 942b615c4d5d494151e839f92ba75be296d14881e3ba05a8d865c9726ad4bedb 0 Wizard\FullSimulationAI.cs Wizard\FullSimulationAI.cs 39e5b70761aeaab89f7d8d5423e73debab490171e72a2bb8a75a013c2dc9c8f0 0 Wizard\FusionBonusTagCollection.cs Wizard\FusionBonusTagCollection.cs 4903288da869da61c7a10520fd0815a168c5a1b1f00dc1fb011e509e88f69464 0 Wizard\FusionDrawTagCollection.cs Wizard\FusionDrawTagCollection.cs fc333ea01f0840ce80d000384f65285513185a37eafe3c5b3999fb5fcb37c3ae 0 @@ -2747,6 +2766,8 @@ Wizard\GatheringCreateTask.cs Wizard\GatheringCreateTask.cs 83b33e80d485f4f54451 Wizard\GatheringEntry.cs Wizard\GatheringEntry.cs 317ea8b25031936502ca7315e620a96cd61c0a6f15b0dce0a14877258bdb7a98 0 Wizard\GatheringEntryConfirm.cs Wizard\GatheringEntryConfirm.cs 98d8ca6aaec22465fff1bcec9363f040f429d3fa77c9a0f474588621e39644d3 0 Wizard\GatheringEntrySetting.cs Wizard\GatheringEntrySetting.cs 476bfbf70aad87c0909d546d10250b11c82b056d7460b19ba859464d764d9344 0 +Wizard\GatheringEntryTask.cs Wizard\GatheringEntryTask.cs 7653fd87d4827c30bd3061fe7aa84765ac7f073ebfa05bebbcdef146b5707656 0 +Wizard\GatheringFriendInviteListPlate.cs Wizard\GatheringFriendInviteListPlate.cs 7e963f326c9eeca7466d5e82c9bafbe32fe8cb5672766ab14927bc85549f6504 0 Wizard\GatheringFriendListTask.cs Wizard\GatheringFriendListTask.cs 074948f46767ad157b41634bcbfbfa66baba91d4ff4e039523f5d88cf7fa482a 0 Wizard\GatheringGetInfoTask.cs Wizard\GatheringGetInfoTask.cs de63b5ac7f5bf0cb4336192c5f116e0158fb32a48790c2a9cc948861706f7d2d 0 Wizard\GatheringGetReceiveInviteTask.cs Wizard\GatheringGetReceiveInviteTask.cs 9bcfb3ca8fbfd974681c2b5dfc166a7d1905dc593ef30d79469ef7dedbdabd96 0 @@ -2755,28 +2776,39 @@ Wizard\GatheringIDInput.cs Wizard\GatheringIDInput.cs 3504a7cf7cd5e7cd640006b4cb Wizard\GatheringInfo.cs Wizard\GatheringInfo.cs 7614c505d5604ad78e39e70d5ed3b5ff5bc84d634312bafb10b6e9037861d6df 0 Wizard\GatheringInterruptTask.cs Wizard\GatheringInterruptTask.cs 92c144bf58a3d1563ab4afd1f942089e49a8910dd0c24eaad770ff6a57c4e35a 0 Wizard\GatheringInvite.cs Wizard\GatheringInvite.cs e3a38ed3c87edc06deaba43443497b65b27618cbcd08337b24ac4a750d3ff8e8 0 +Wizard\GatheringInviteCancelTask.cs Wizard\GatheringInviteCancelTask.cs 2b0db3d3f17e3b5d59cf4cdbfa6f8412b0e8a21252e8984768baa315fab81e84 0 +Wizard\GatheringInviteRejectTask.cs Wizard\GatheringInviteRejectTask.cs 32abcf8dbf44fd183193314e3d125f081bba7a8d6c9188461829af4f71e361e5 0 +Wizard\GatheringInviteTask.cs Wizard\GatheringInviteTask.cs 0902f933b7558456641a135da87bbbc9ce969eeec82a9e37b646fb963b9f07f6 0 Wizard\GatheringInviteUserListTask.cs Wizard\GatheringInviteUserListTask.cs abfc56a0dd376ca0dc233a5f75eb0e3fd3a8cad13d7a931960b881a0b44b81bf 0 Wizard\GatheringJoining.cs Wizard\GatheringJoining.cs 5ff03014dc5c2ef76aff6f8509ddff78bd3957b0d9ab3368a8528145bb276d25 0 Wizard\GatheringJoiningCategorySelect.cs Wizard\GatheringJoiningCategorySelect.cs cde01d6d8e8aec3a1608acc1529f4c07dc324d4b6dc77362bac8aa5016c0b1b5 0 Wizard\GatheringJoiningInfo.cs Wizard\GatheringJoiningInfo.cs 98c8fc870f69519307db9e178cfb7e02c6167d96ae3e7277262ddc29eaf94256 0 +Wizard\GatheringKickConfirm.cs Wizard\GatheringKickConfirm.cs d4d62fdc5bbfc8b0b6ed5cd145453d3fdfc136077d6c8e6c203cc9d7d6c94e85 0 +Wizard\GatheringKickTask.cs Wizard\GatheringKickTask.cs 4b8ea2ee844ea449e043a98c746d725d7c2a5348fe398b323fb0741e16ebcbea 0 Wizard\GatheringLeaveTask.cs Wizard\GatheringLeaveTask.cs 23c6e808e151a5513390c561da63a224bea5a4f0fceebb1d92a8365a0d6f163b 0 Wizard\GatheringMatchedRoom.cs Wizard\GatheringMatchedRoom.cs 1531b714bd8ba8bc782ab35b68fa9bde01229f1705099fb9671c72d9ebc70db8 0 Wizard\GatheringMemberList.cs Wizard\GatheringMemberList.cs 6c9e90fa64f98dc2e42b3dc901a153eb301ec58dcf86d655e17e72982f829568 0 +Wizard\GatheringMemberPlate.cs Wizard\GatheringMemberPlate.cs 264dfbcd2856335f7f3a1348b371fc434263bc4ed05e929f36923f09b5cd7529 0 Wizard\GatheringMyPageInfo.cs Wizard\GatheringMyPageInfo.cs c28baddfaafc8ef7685abfdf6ac6318f822524a30006247625391fd7b6568fd2 0 Wizard\GatheringRanking.cs Wizard\GatheringRanking.cs f56e7728f13379007d7580d769a3aaab1999140b404e587cb01d8d1ab99b3c6b 0 +Wizard\GatheringRankingPlate.cs Wizard\GatheringRankingPlate.cs 400945f05a5873739029429be1a599584db9348d454d14cdd8e62e6864b99dd5 0 Wizard\GatheringRankingTask.cs Wizard\GatheringRankingTask.cs 000dd1e97df104d45801b2c6d610c4f47f0656a373c27b048c5ea3e43b406e3c 0 +Wizard\GatheringReceiveInfoDialog.cs Wizard\GatheringReceiveInfoDialog.cs 34a7b4144a6039b9542de2eafb0d86a87f1e43437c80c86834ddbabf0e0b9438 0 Wizard\GatheringReceiveInviteList.cs Wizard\GatheringReceiveInviteList.cs 584ecc5fb0b0d770bb37755bf14c9f8a25093175b02dc0fe8843b327c91e6a86 0 Wizard\GatheringRoomEnterTournamentRoomTask.cs Wizard\GatheringRoomEnterTournamentRoomTask.cs 167e6f58f8ab1a9b182a4ac8f5178ed4c92c6bbd9feac6ef240deff757a14d2c 0 Wizard\GatheringRoomEnterVacancyRoomTask.cs Wizard\GatheringRoomEnterVacancyRoomTask.cs cc645ab3c33905b5b187b27d8fcbca95bff35742726f1ebc4c9aebd24c435a09 0 Wizard\GatheringRule.cs Wizard\GatheringRule.cs ee446b445c77d6d0a1e6e0f64b54cbe2a8b15974376ebc7fefa65331bd42ce51 0 Wizard\GatheringRuleView.cs Wizard\GatheringRuleView.cs d537ffdb1606fd8a080ee569c6a43f35189f160d39b84ff1245261339977e226 0 +Wizard\GatheringSettingDialog.cs Wizard\GatheringSettingDialog.cs 0f6e45ca52fd20a1984194990032ba44e6c361f4b76cc1abce388216fbc2e9e9 0 Wizard\GatheringStartTimeSelectDialog.cs Wizard\GatheringStartTimeSelectDialog.cs fa3c7f79d74984bb1b42760c01ec937c2c1b4c14266459004b4789db8697e09b 0 Wizard\GatheringTornamentCreateTask.cs Wizard\GatheringTornamentCreateTask.cs 868e1e194981f75a91f070752033b408c400e1226fd5eb34bfa8b5d983057157 0 Wizard\GatheringTournament.cs Wizard\GatheringTournament.cs e17736944fe7f6d74bf3e761433719d3f90d76089e4cabc32ea6b0b07b16295f 0 +Wizard\GatheringTournamentInfoTask.cs Wizard\GatheringTournamentInfoTask.cs da515a69f5f3602b7796dbeb3ffa0c4eb9e55e6acda6853c8181108fd44d5abc 0 Wizard\GatheringUpdateDeckLeaderSkin.cs Wizard\GatheringUpdateDeckLeaderSkin.cs 56e37229981c9e4415e4f60c9c7dec80b2ec4ec3b90c41acd4d14e41f7d46791 0 Wizard\GatheringUpdateDeckName.cs Wizard\GatheringUpdateDeckName.cs cf11ca9e8dbd07c26cbe2cb8b165b1eefe2446f123d938edbdcabd516bcf3735 0 Wizard\GatheringUpdateDeckRandomLeaderSkinTask.cs Wizard\GatheringUpdateDeckRandomLeaderSkinTask.cs 29cd6ff458645c5cbb37ac9b32f8e3720d0bb9c3e4273c62b8750ff5a2d21092 0 Wizard\GatheringUpdateDeckSleeve.cs Wizard\GatheringUpdateDeckSleeve.cs 81b5296ae4b8c44b4801126dd02ad2ab0b55d10caca967b7ae064c3c82046a20 0 +Wizard\GatheringUpdateDescriptionTask.cs Wizard\GatheringUpdateDescriptionTask.cs ba8e0123159418cf672e28d4f23e2a55b9f10da9e33dd0bb053ce74f88d5aea6 0 Wizard\GatheringUserInfo.cs Wizard\GatheringUserInfo.cs fc67c9a20b37d66061a42e83e25b059f5342c936ab45d5d3e0c76132e8b08e04 0 Wizard\GatheringUtility.cs Wizard\GatheringUtility.cs bf3292e3e5a29dcbd25e25fa60eac4976ca06736de83eeea7cff5beb232f7517 0 Wizard\GenerateDeckCodeTask.cs Wizard\GenerateDeckCodeTask.cs 9f32c9513ec63d8b19e36d402c1adfec123b7f5774b86369391ce5fcb3996e1b 0 @@ -2790,7 +2822,10 @@ Wizard\GetOnTriggerTagCollection.cs Wizard\GetOnTriggerTagCollection.cs 2b7b7621 Wizard\GetSelectSkinOwnedStatusTask.cs Wizard\GetSelectSkinOwnedStatusTask.cs 2e704c9343f59ac2d42d26eda7db77045ef144b45b16b581a6316d9cae5d177a 0 Wizard\GiftTransition.cs Wizard\GiftTransition.cs 6fa6e6166dbfff9e8eb6abc43f26f011e8f681a0f3a443fd82aa78d2832b9d96 0 Wizard\GiveSkillTagCollection.cs Wizard\GiveSkillTagCollection.cs fc0b094247ed98cee05d1e781c3e0f2d0f56db4f4b89affd2b805859dc040ed4 0 +Wizard\GuildInputDescriptionDialog.cs Wizard\GuildInputDescriptionDialog.cs a4a4fd57d926fde67c6c44805aabe7b78f0ac203e65236091746fadc5a656a1b 0 +Wizard\GuildInputViewerIdDialog.cs Wizard\GuildInputViewerIdDialog.cs ccd20678b887f8c02219e931ed2723b6d0ccd6d96aa0748ac0a813b068742b28 0 Wizard\GuildNotification.cs Wizard\GuildNotification.cs 167b667c4475f5ea1aab301f70a0dc52b5ae273d6c4a00209ec515cf90978323 0 +Wizard\GuildUserDataDialog.cs Wizard\GuildUserDataDialog.cs 22fb13704fffc364b7c8c26690209beb08f3a60466139d67e11c494a05451f74 0 Wizard\HandBonusTagCollection.cs Wizard\HandBonusTagCollection.cs 254828268b50bd500739de4715e07548f94d8e315e298cf83d123b9704575721 0 Wizard\HandPlusTagCollection.cs Wizard\HandPlusTagCollection.cs 6e7c69ade97cea12534f1308a8a1b47170ac1078b3efe5e0613c38a742d9eca9 0 Wizard\HealTagCollection.cs Wizard\HealTagCollection.cs 913557e82f49d9beb64a02bbae3555ace4b4ab633580411e14dd6ded61f46ef5 0 @@ -2829,6 +2864,7 @@ Wizard\LoadQueue.cs Wizard\LoadQueue.cs a3bd987174d57f1e63dc59f67a02235addb16bd5 Wizard\LocalLog.cs Wizard\LocalLog.cs 991b50f5e128fd3b2368770fe7a7b7691ce4090bdaca5ae744d1f464572caab0 0 Wizard\LocalizeJson.cs Wizard\LocalizeJson.cs 4adf1a47af054dc08971d7e8d1574e8b8d7692c027182ff6c3d167164240f4ea 0 Wizard\LootBoxDialogUtility.cs Wizard\LootBoxDialogUtility.cs 8277f2e7dfbe98bc4e8790630c338d50a0e635f7566e9d1ee1cd22cd6b199237 0 +Wizard\MailReadTask.cs Wizard\MailReadTask.cs cf7a15cf5efb729c839d0ff374d9077dd62151055fc149b44108743efe6d583c 0 Wizard\Master.cs Wizard\Master.cs dc58e2aacb78cd813aa7c7e8db2ba18268b3ca62188e0ef36d9f8445a58486ce 0 Wizard\MasterResetMonthTask.cs Wizard\MasterResetMonthTask.cs 0e7830760327c23b708bfce1ec62a27e9484aac191b54c1b594f43d20ecc9d1d 0 Wizard\Mastershop.cs Wizard\Mastershop.cs ed5828427f2fe31272830b4ab3dfe0c70d1caae570cf7145f96e9cb402eb90f5 0 @@ -3045,7 +3081,9 @@ Wizard\RemainTime.cs Wizard\RemainTime.cs cad4a6d7241987deccf91cab20b07146a39326 Wizard\RemoveByDestroyTagCollection.cs Wizard\RemoveByDestroyTagCollection.cs 6bb0f29c81a74b7bab7c062244773c4a7c366ea76836db7ca5abe860d097c38b 0 Wizard\RemoveSkillTagCollection.cs Wizard\RemoveSkillTagCollection.cs 4b31000c33a964929a361f964499aeddd2e884862600c4488c86d49e8a21120f 0 Wizard\ReplayContentView.cs Wizard\ReplayContentView.cs 60ca9b5671ddd42e7fc6845b9504d09b415ebae5bbb4e35a5c833bc1b4941a8d 0 +Wizard\ReplayDetailTask.cs Wizard\ReplayDetailTask.cs 8cd27487c60b2d8afe6de2f2775198d0e1a7300364ed9eacd6403fc29c9f1d2c 0 Wizard\ReplayDialog.cs Wizard\ReplayDialog.cs 9a367698f7e594b3a63f9b3422c61b6899ade748e1af06e4379f2b61dec52f80 0 +Wizard\ReplayDialogContent.cs Wizard\ReplayDialogContent.cs 9daf2784330e077402fdfadacdb13f4b54ec13b4f2125c8e1a81fc38833db219 0 Wizard\ReplayInfo.cs Wizard\ReplayInfo.cs c1a4ac59b3c2867dee7d40b8756492ddb6418bb5895a96e663eb0ec73b36bea4 0 Wizard\ReplayInfoItem.cs Wizard\ReplayInfoItem.cs f33d8625be78c3ff5edad57e4a9350f2721677352b1e637dde6f604c37db2471 0 Wizard\ReplayInfoTask.cs Wizard\ReplayInfoTask.cs c3a2dd28d4b414bfb496d977c1caa207c9b8c12b3d2e601d001ca0868094d96c 0 @@ -3198,6 +3236,7 @@ Wizard\TutorialData.cs Wizard\TutorialData.cs 2fc9577f9c08b7803e3673d18eee530d3a Wizard\TutorialUpdateTask.cs Wizard\TutorialUpdateTask.cs a7becdb53f2645cc7e6a49197310d3999d75c601f9babb3d005bdcd725fcd369 0 Wizard\TweenAnimation.cs Wizard\TweenAnimation.cs fcd6dd622114eb97f11737e4db6a7af924eb209a8a6a44ad4aade9d8a1e1ee4d 0 Wizard\TweenAnimationGroup.cs Wizard\TweenAnimationGroup.cs 5b6eeb31bb7d1cb9cdaae48da61d0b07ba6b5a72145c5b3e1e7a84a54f599c5e 0 +Wizard\TweenPositionWithUpdate.cs Wizard\TweenPositionWithUpdate.cs af58dc6186fdb5b7a03c25fb5f5128cb2646218eae1424f86756b0e61114872c 0 Wizard\TwoPickFormat.cs Wizard\TwoPickFormat.cs 7f09731756f955d49fd610f3383ad697786e37c4d09d78bf577b03767bd40177 0 Wizard\TypeFilterDialog.cs Wizard\TypeFilterDialog.cs 4c764fe4b79a18bc267d0775575b85f7bedb28a645935f2474dfebc292ba3cf8 0 Wizard\TypeFilterSingle.cs Wizard\TypeFilterSingle.cs d59034d2a145657e5d06d6db841d13f3ea71a00ddb586f5e8994d8e14ad9de2b 0 @@ -3217,6 +3256,7 @@ Wizard\UIUtil.cs Wizard\UIUtil.cs 6a019191da0f9c4a0605f3ccec9e85f028115bcf1c292b Wizard\UnitBonusPolicyCollection.cs Wizard\UnitBonusPolicyCollection.cs b8e5522040191498c5871a91b7330774d4710b2f65ee2af451706ff9cb228baf 0 Wizard\UnlimitedFormatBehavior.cs Wizard\UnlimitedFormatBehavior.cs a9c6cda132c872841d05088bbe187914479e2b555876b4b45f5be6a7b7bb0948 0 Wizard\UnlimitedRestrictedCard.cs Wizard\UnlimitedRestrictedCard.cs 295618ea53573f498923f63bfabd0b3543552761811830b83e2a18980edfc311 0 +Wizard\UserDataDialog.cs Wizard\UserDataDialog.cs 9deeacf1be23f0f2d62e306dbae62d157ba96349b43c00a59e38c9a3c736d03a 0 Wizard\UserGoods.cs Wizard\UserGoods.cs c21dd8bc5521e705da0994f68771149a54d461f49d00fbd54f9d8673bb047eb3 0 Wizard\UserInfoBase.cs Wizard\UserInfoBase.cs ad812a1d63e876c52e813a7a70bb468fd85a8814f1adeff8686f49763d4d3b2e 0 Wizard\UserListView.cs Wizard\UserListView.cs 5e9cd533c035cbd561f1280429f26a49b7c670daa48346abbe6bbc3e0be5cc7f 0 diff --git a/SVSim.BattleEngine/Engine/Cute/GetGameDataByTransitionCode.cs b/SVSim.BattleEngine/Engine/Cute/GetGameDataByTransitionCode.cs new file mode 100644 index 0000000..13cc6b9 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Cute/GetGameDataByTransitionCode.cs @@ -0,0 +1,97 @@ +using LitJson; +using Wizard; + +namespace Cute; + +public class GetGameDataByTransitionCode : NetworkTask +{ + public class ChainedPlayData + { + public string ChainedViewerId { get; set; } + + public string Password { get; set; } + + public string UserName { get; set; } + + public string UserRankRotation { get; set; } + + public string UserRankUnlimited { get; set; } + } + + private CuteNetworkDefine.ApiType apiType = CuteNetworkDefine.ApiType.GetGameDataByTransitionCode; + + public static ChainedPlayData ChainedPlayDatas { get; private set; } + + public static string NowUserName { get; private set; } + + public static string NowUserRankRotation { get; private set; } + + public static string NowUserRankUnlimited { get; private set; } + + public override string Url => $"{CustomPreference.GetApplicationServerURL()}{CuteNetworkDefine.ApiUrlList[apiType]}"; + + public GetGameDataByTransitionCode() + { + ChainedPlayDatas = new ChainedPlayData(); + } + + public void SetParameter(string input_viewer_id, string password) + { + TransitionCodeParams transitionCodeParams = new TransitionCodeParams(); + transitionCodeParams.input_viewer_id = input_viewer_id; + transitionCodeParams.password = password; + base.Params = transitionCodeParams; + } + + protected override int Parse() + { + int num = base.Parse(); + if (num != 1) + { + return num; + } + ChainedPlayDatas.ChainedViewerId = ""; + ChainedPlayDatas.Password = ""; + ChainedPlayDatas.UserName = " - "; + ChainedPlayDatas.UserRankRotation = " - "; + ChainedPlayDatas.UserRankUnlimited = " - "; + NowUserName = " - "; + NowUserRankRotation = " - "; + NowUserRankUnlimited = " - "; + if (base.ResponseData["data"].Count > 0) + { + if (base.ResponseData["data"].Keys.Contains("chained_viewer_id") && base.ResponseData["data"]["chained_viewer_id"] != null && base.ResponseData["data"]["chained_viewer_id"].ToString() != "") + { + ChainedPlayDatas.ChainedViewerId = base.ResponseData["data"]["chained_viewer_id"].ToString(); + } + if (base.ResponseData["data"].Keys.Contains("password") && base.ResponseData["data"]["password"] != null && base.ResponseData["data"]["password"].ToString() != "") + { + ChainedPlayDatas.Password = base.ResponseData["data"]["password"].ToString(); + } + if (base.ResponseData["data"].Keys.Contains("name") && base.ResponseData["data"]["name"] != null && base.ResponseData["data"]["name"].ToString() != "") + { + ChainedPlayDatas.UserName = base.ResponseData["data"]["name"].ToString(); + } + string text = 1.ToString(); + string text2 = 2.ToString(); + SystemText systemText = Data.SystemText; + if (base.ResponseData["data"].Keys.Contains("rank") && base.ResponseData["data"]["rank"] != null) + { + JsonData jsonData = base.ResponseData["data"]["rank"]; + if (jsonData.Keys.Contains(text)) + { + ChainedPlayDatas.UserRankRotation = systemText.Get(jsonData[text].ToString()); + } + if (jsonData.Keys.Contains(text2)) + { + ChainedPlayDatas.UserRankUnlimited = systemText.Get(jsonData[text2].ToString()); + } + } + NowUserName = base.ResponseData["data"]["now_name"].ToString(); + JsonData jsonData2 = base.ResponseData["data"]["now_rank"]; + NowUserRankRotation = systemText.Get(jsonData2[text].ToString()); + NowUserRankUnlimited = systemText.Get(jsonData2[text2].ToString()); + } + return num; + } +} diff --git a/SVSim.BattleEngine/Engine/Cute/PaymentStartCancelParams.cs b/SVSim.BattleEngine/Engine/Cute/PaymentStartCancelParams.cs new file mode 100644 index 0000000..4ee8a99 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Cute/PaymentStartCancelParams.cs @@ -0,0 +1,26 @@ +namespace Cute; + +public class PaymentStartCancelParams : PostParams +{ + public class PaymentError + { + public string message = ""; + } + + public class Payment + { + public string product_id = ""; + + public string price = ""; + + public string currency_code = ""; + + public int isalertagree; + + public int isalertactive; + } + + public Payment payment = new Payment(); + + public PaymentError error = new PaymentError(); +} diff --git a/SVSim.BattleEngine/Engine/Cute/PublistTransitionCode.cs b/SVSim.BattleEngine/Engine/Cute/PublistTransitionCode.cs new file mode 100644 index 0000000..24a461e --- /dev/null +++ b/SVSim.BattleEngine/Engine/Cute/PublistTransitionCode.cs @@ -0,0 +1,25 @@ +namespace Cute; + +public class PublistTransitionCode : NetworkTask +{ + public class Email : PostParams + { + public string password { get; set; } + } + + private CuteNetworkDefine.ApiType apiType = CuteNetworkDefine.ApiType.GetTransitionCode; + + public override string Url => $"{CustomPreference.GetApplicationServerURL()}{CuteNetworkDefine.ApiUrlList[apiType]}"; + + public void SetParameter(string password) + { + Email email = new Email(); + email.password = password; + base.Params = email; + } + + protected override int Parse() + { + return base.Parse(); + } +} diff --git a/SVSim.BattleEngine/Engine/Cute/SteamMicroTxnInitTask.cs b/SVSim.BattleEngine/Engine/Cute/SteamMicroTxnInitTask.cs new file mode 100644 index 0000000..ea7216e --- /dev/null +++ b/SVSim.BattleEngine/Engine/Cute/SteamMicroTxnInitTask.cs @@ -0,0 +1,51 @@ +using System; +using Steamworks; + +namespace Cute; + +public class SteamMicroTxnInitTask : NetworkTask +{ + private class MicroTxtInitPost : PostParams + { + public new string steam_id = ""; + + public string app_id = ""; + + public string currency = ""; + + public string ip_address = ""; + + public string item_id = ""; + } + + private CuteNetworkDefine.ApiType apiType = CuteNetworkDefine.ApiType.SteamMicroTxnInit; + + public override string Url => $"{CustomPreference.GetApplicationServerURL()}{CuteNetworkDefine.ApiUrlList[apiType]}"; + + public void SetParameter(string item_id) + { + MicroTxtInitPost microTxtInitPost = new MicroTxtInitPost(); + try + { + microTxtInitPost.steam_id = SteamUser.GetSteamID().ToString(); + microTxtInitPost.app_id = SteamUtils.GetAppID().ToString(); + } + catch (Exception ex) + { + Debug.LogError(ex.Message); + Debug.LogError(ex.StackTrace); + Debug.LogError("steam client を起動してください。"); + } + microTxtInitPost.currency = PCPlatformSTEAM.Currency; + microTxtInitPost.ip_address = Toolbox.DeviceManager.GetIpAddress(); + microTxtInitPost.item_id = item_id; + base.Params = microTxtInitPost; + } + + protected override int Parse() + { + int result = base.Parse(); + _ = 1; + return result; + } +} diff --git a/SVSim.BattleEngine/Engine/Cute/TransitionCodeParams.cs b/SVSim.BattleEngine/Engine/Cute/TransitionCodeParams.cs new file mode 100644 index 0000000..92e04a2 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Cute/TransitionCodeParams.cs @@ -0,0 +1,8 @@ +namespace Cute; + +internal class TransitionCodeParams : PostParams +{ + public string input_viewer_id = ""; + + public string password = ""; +} diff --git a/SVSim.BattleEngine/Engine/UIDragDropContainer.cs b/SVSim.BattleEngine/Engine/UIDragDropContainer.cs new file mode 100644 index 0000000..295b5f1 --- /dev/null +++ b/SVSim.BattleEngine/Engine/UIDragDropContainer.cs @@ -0,0 +1,15 @@ +using UnityEngine; + +[AddComponentMenu("NGUI/Interaction/Drag and Drop Container")] +public class UIDragDropContainer : MonoBehaviour +{ + public Transform reparentTarget; + + protected virtual void Start() + { + if (reparentTarget == null) + { + reparentTarget = base.transform; + } + } +} diff --git a/SVSim.BattleEngine/Engine/UIDragDropRoot.cs b/SVSim.BattleEngine/Engine/UIDragDropRoot.cs new file mode 100644 index 0000000..ec0e6c2 --- /dev/null +++ b/SVSim.BattleEngine/Engine/UIDragDropRoot.cs @@ -0,0 +1,20 @@ +using UnityEngine; + +[AddComponentMenu("NGUI/Interaction/Drag and Drop Root")] +public class UIDragDropRoot : MonoBehaviour +{ + public static Transform root; + + private void OnEnable() + { + root = base.transform; + } + + private void OnDisable() + { + if (root == base.transform) + { + root = null; + } + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard.Battle.Operation/SimulateCostNoDuplicationRandomSelectFilter.cs b/SVSim.BattleEngine/Engine/Wizard.Battle.Operation/SimulateCostNoDuplicationRandomSelectFilter.cs new file mode 100644 index 0000000..2e173ce --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard.Battle.Operation/SimulateCostNoDuplicationRandomSelectFilter.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.Linq; +using Wizard.Battle.Card; + +namespace Wizard.Battle.Operation; + +public class SimulateCostNoDuplicationRandomSelectFilter : ISkillSelectFilter +{ + private readonly IVirtualBattleCard _virtualOwnerCard; + + private readonly string _contText; + + public SimulateCostNoDuplicationRandomSelectFilter(IVirtualBattleCard virtualOwnerCard, string randomCountText) + { + _virtualOwnerCard = virtualOwnerCard; + _contText = randomCountText; + } + + public int CalcCount(SkillOptionValue option) + { + return option.ParseInt(_contText); + } + + public IEnumerable Filtering(IEnumerable cards, SkillOptionValue option, SkillConditionCheckerOption checkerOption) + { + _virtualOwnerCard.UsedRandomSkill = true; + int count = CalcCount(option); + List cardList = cards.ToList(); + for (int i = 0; i < count; i++) + { + if (cardList.Count != 0) + { + BattleCardBase card = cardList[0]; + cardList = cardList.Where((BattleCardBase c) => c.Card.BaseParameter.Cost != card.BaseParameter.Cost).ToList(); + yield return card; + continue; + } + break; + } + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard.Battle.Operation/SimulateIdNoDuplicationRandomSelectFilter.cs b/SVSim.BattleEngine/Engine/Wizard.Battle.Operation/SimulateIdNoDuplicationRandomSelectFilter.cs new file mode 100644 index 0000000..b132a8f --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard.Battle.Operation/SimulateIdNoDuplicationRandomSelectFilter.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.Linq; +using Wizard.Battle.Card; + +namespace Wizard.Battle.Operation; + +public class SimulateIdNoDuplicationRandomSelectFilter : ISkillSelectFilter +{ + private readonly IVirtualBattleCard _virtualOwnerCard; + + private readonly string _contText; + + public SimulateIdNoDuplicationRandomSelectFilter(IVirtualBattleCard virtualOwnerCard, string randomCountText) + { + _virtualOwnerCard = virtualOwnerCard; + _contText = randomCountText; + } + + public int CalcCount(SkillOptionValue option) + { + return option.ParseInt(_contText); + } + + public IEnumerable Filtering(IEnumerable cards, SkillOptionValue option, SkillConditionCheckerOption checkerOption) + { + _virtualOwnerCard.UsedRandomSkill = true; + int count = CalcCount(option); + List cardList = cards.ToList(); + for (int i = 0; i < count; i++) + { + if (cardList.Count != 0) + { + BattleCardBase card = cardList[0]; + cardList = cardList.Where((BattleCardBase c) => c.Card.BaseParameter.BaseCardId != card.BaseParameter.BaseCardId).ToList(); + yield return card; + continue; + } + break; + } + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard.Battle.Phase/RecoveryNetworkAfterSubmitMulliganPhase.cs b/SVSim.BattleEngine/Engine/Wizard.Battle.Phase/RecoveryNetworkAfterSubmitMulliganPhase.cs new file mode 100644 index 0000000..f2b870a --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard.Battle.Phase/RecoveryNetworkAfterSubmitMulliganPhase.cs @@ -0,0 +1,23 @@ +using Wizard.Battle.View.Vfx; + +namespace Wizard.Battle.Phase; + +public class RecoveryNetworkAfterSubmitMulliganPhase : RecoveryNetworkBeforeSubmitMulliganPhase +{ + public RecoveryNetworkAfterSubmitMulliganPhase(NetworkBattleManagerBase networkBattleMgr, NetworkBattleSender networkBattleSender) + : base(networkBattleMgr, networkBattleSender) + { + } + + public override VfxBase Setup() + { + base.Setup(); + return NullVfx.GetInstance(); + } + + public override VfxBase Teardown() + { + base.Teardown(); + return NullVfx.GetInstance(); + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard.Battle.Recovery/AINetworkBattleOperationRecorder.cs b/SVSim.BattleEngine/Engine/Wizard.Battle.Recovery/AINetworkBattleOperationRecorder.cs new file mode 100644 index 0000000..bfc2914 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard.Battle.Recovery/AINetworkBattleOperationRecorder.cs @@ -0,0 +1,580 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using LitJson; +using Wizard.Battle.View.Vfx; + +namespace Wizard.Battle.Recovery; + +public class AINetworkBattleOperationRecorder : OperationRecorderBase +{ + protected DataMgr.BattleType _battleType; + + protected long _turnStartTime; + + protected JsonData _setupJsonData = new JsonData(); + + public AINetworkBattleOperationRecorder(string filePath) + : base(filePath) + { + if (RecoveryRecordManagerBase.IsExistsAINetworkRecoveryFile()) + { + JsonData jsonData = RecoveryOperationInfo.ReadRecoveryFile(filePath); + _setupJsonData = jsonData["setup"]; + _battleType = (DataMgr.BattleType)jsonData["battle_type"].ToInt(); + if (jsonData.Keys.Any((string a) => a == "operations")) + { + foreach (object item in (IEnumerable)jsonData["operations"]) + { + _operationJsonDataList.Add((JsonData)item); + } + } + if (jsonData.Keys.Any((string a) => a == "skill_targets")) + { + foreach (object item2 in (IEnumerable)jsonData["skill_targets"]) + { + _skillTargetList.Add((string)item2); + } + } + } + else + { + _setupJsonData["player"] = new JsonData(); + _setupJsonData["player"].SetJsonType(JsonType.Object); + _setupJsonData["enemy"] = new JsonData(); + _setupJsonData["enemy"].SetJsonType(JsonType.Object); + } + WriteJsonData(); + } + + public override void RecordMulliganStart() + { + DateTimeOffset dateTimeOffset = new DateTimeOffset(DateTime.Now.Ticks, new TimeSpan(0, 0, 0)); + _setupJsonData["start_mulligan_time"] = dateTimeOffset.ToUnixTimeSeconds(); + WriteJsonData(); + } + + public override void RecordPractice3DFieldId(int id) + { + } + + public override void RecordBattleType(DataMgr.BattleType battleType) + { + _battleType = battleType; + WriteJsonData(); + } + + public override void RecordRandomSeed(int randomSeed) + { + _setupJsonData["random_seed"] = randomSeed; + WriteJsonData(); + } + + public override void RecordBackGroundId(int backGroundId) + { + _setupJsonData["background_id"] = backGroundId; + WriteJsonData(); + } + + public override void RecordBgmId(string bgmId) + { + _setupJsonData["bgm_id"] = bgmId; + WriteJsonData(); + } + + public override void RecordClass(string playerName, int clanType) + { + _setupJsonData[playerName]["clan_type"] = clanType; + WriteJsonData(); + } + + public override void RecordSubClass(string playerName, int clanType) + { + _setupJsonData[playerName]["sub_class_type"] = clanType; + WriteJsonData(); + } + + public override void RecordMyRotationId(string playerName, string myRotationId) + { + _setupJsonData[playerName]["my_rotation_id"] = myRotationId; + WriteJsonData(); + } + + public override void RecordSleeve(string playerName, long sleeveId) + { + _setupJsonData[playerName]["sleeve_id"] = sleeveId; + WriteJsonData(); + } + + public override void RecordChara(string playerName, int charaId) + { + _setupJsonData[playerName]["chara_id"] = charaId; + WriteJsonData(); + } + + public override void RecordDeck(string playerName, char indexHeadChar, IEnumerable cardIds) + { + JsonData jsonData = new JsonData(); + _setupJsonData[playerName]["deck"] = jsonData; + jsonData.SetJsonType(JsonType.Array); + int num = 1; + foreach (int cardId in cardIds) + { + JsonData jsonData2 = new JsonData(); + jsonData2.SetJsonType(JsonType.Object); + jsonData2["index"] = indexHeadChar.ToString() + num; + jsonData2["id"] = cardId; + jsonData2["name"] = CardMaster.GetInstanceForBattle().GetCardParameterFromId(cardId).CardName; + jsonData.Add(jsonData2); + num++; + } + WriteJsonData(); + } + + public override void RecordEnemyAIDifficulty(int level) + { + _setupJsonData["enemy"]["ai_difficulty"] = level; + WriteJsonData(); + } + + public override void RecordEnemyAILogicLevel(int level) + { + _setupJsonData["enemy"]["ai_logic_level"] = level; + WriteJsonData(); + } + + public override void RecordEnemyAIMaxLife(int life) + { + _setupJsonData["enemy"]["ai_max_life"] = life; + WriteJsonData(); + } + + public override void RecordEnemyAIDeckId(int deckId) + { + _setupJsonData["enemy"]["ai_deck_id"] = deckId; + WriteJsonData(); + } + + public override void RecordEnemyAIStyleId(int styleId) + { + _setupJsonData["enemy"]["ai_style_id"] = styleId; + WriteJsonData(); + } + + public override void RecordEnemyAIEmoteId(int emoteId) + { + _setupJsonData["enemy"]["ai_emote_id"] = emoteId; + WriteJsonData(); + } + + public override void RecordEnemyAIUseInnerEmote(bool useInnerEmote) + { + _setupJsonData["enemy"]["ai_use_inner_emote"] = useInnerEmote; + WriteJsonData(); + } + + public override void RecordStartTurnIsPlayer(bool startTurnIsPlayer) + { + _setupJsonData["player_start_turn"] = startTurnIsPlayer; + DateTimeOffset dateTimeOffset = new DateTimeOffset(DateTime.Now.Ticks, new TimeSpan(0, 0, 0)); + _setupJsonData["opening_start_time"] = dateTimeOffset.ToUnixTimeSeconds(); + WriteJsonData(); + } + + public override void RecordPracticeDifficultyDegreeId(int degreeId) + { + _setupJsonData["practice_difficulty_degree_id"] = degreeId; + WriteJsonData(); + } + + public override void RecordIsPreBuildDeck(bool isPreBuildDeck) + { + _setupJsonData["is_prebuild_deck"] = isPreBuildDeck; + WriteJsonData(); + } + + public override void RecordIsTrialDeck(bool isTrialDeck) + { + _setupJsonData["is_trial_deck"] = isTrialDeck; + WriteJsonData(); + } + + public override void RecordIsDefaultDeck(bool isDefaultDeck) + { + _setupJsonData["is_default_deck"] = isDefaultDeck; + WriteJsonData(); + } + + public override void RecordQuestStageId(int id) + { + _setupJsonData["quest_stage_id"] = id; + WriteJsonData(); + } + + public override void RecordQuestEnemyAiId(int id) + { + _setupJsonData["quest_enemy_ai_id"] = id; + WriteJsonData(); + } + + public override void RecordQuestEnemyEmblemId(int id) + { + _setupJsonData["quest_enemy_emblem_id"] = id; + WriteJsonData(); + } + + public override void RecordQuestEnemyDegreeId(int id) + { + _setupJsonData["quest_enemy_degree_id"] = id; + WriteJsonData(); + } + + public override void RecordQuestEnemyEmotionOverride(int id) + { + _setupJsonData["quest_enemy_emotion_override"] = id; + WriteJsonData(); + } + + public override void RecordQuestPlayerEmotionOverride(int id) + { + _setupJsonData["quest_player_emotion_override"] = id; + WriteJsonData(); + } + + public override void RecordQuestRecoveryPoint(int recoveryPoint) + { + _setupJsonData["recovery_point"] = recoveryPoint; + WriteJsonData(); + } + + public override void RecordQuestPlayerSkillList(List skills) + { + JsonData jsonData = new JsonData(); + _setupJsonData["quest_player_skill_list"] = jsonData; + jsonData.SetJsonType(JsonType.Array); + foreach (BossRushSpecialSkill skill in skills) + { + JsonData jsonData2 = new JsonData(); + jsonData2.SetJsonType(JsonType.Object); + jsonData2["original_card_id"] = skill.OriginalCardId; + jsonData2["name"] = skill.Name; + jsonData2["skill_text"] = skill.SkillText; + jsonData2["skill_desc_text"] = skill.SkillDescText; + jsonData2["is_foil"] = skill.IsFoil; + jsonData.Add(jsonData2); + } + WriteJsonData(); + } + + public override void RecordQuestEnemySkill(BossRushSpecialSkill skill) + { + JsonData jsonData = new JsonData(); + jsonData.SetJsonType(JsonType.Object); + jsonData["original_card_id"] = skill.OriginalCardId; + jsonData["name"] = skill.Name; + jsonData["skill_text"] = skill.SkillText; + jsonData["skill_desc_text"] = skill.SkillDescText; + jsonData["is_foil"] = skill.IsFoil; + _setupJsonData["quest_enemy_skill"] = jsonData; + WriteJsonData(); + } + + public override void RecordQuestMaxBattleCount(int maxBattleCount) + { + _setupJsonData["quest_max_battle_count"] = maxBattleCount; + WriteJsonData(); + } + + public override void RecordQuestCurrentWinCount(int currentWinCount) + { + _setupJsonData["quest_current_win_count"] = currentWinCount; + WriteJsonData(); + } + + public override void RecordQuestIsExtra(bool isExtra) + { + _setupJsonData["quest_is_extra"] = isExtra; + WriteJsonData(); + } + + public override void RecordQuestIsMockBattle(bool isMockBattle) + { + _setupJsonData["quest_is_mock_battle"] = isMockBattle; + WriteJsonData(); + } + + public override void RecordQuestExtraDeckScheduleId(int id) + { + _setupJsonData["quest_extra_deck_schedule_id"] = id; + WriteJsonData(); + } + + public override void RecordMissionNecessaryInformation(BattleManagerBase.MissionNecessaryInformation missionNecessaryInformation) + { + _setupJsonData["mission_necessary_information"] = new JsonData(); + _setupJsonData["mission_necessary_information"].SetJsonType(JsonType.Object); + foreach (KeyValuePair item in missionNecessaryInformation.GetOriginalTargetDictionary()) + { + _setupJsonData["mission_necessary_information"][item.Key] = item.Value; + } + WriteJsonData(); + } + + public override void RecordPlayerMulliganReplaceCards(IEnumerable replaceCards, IEnumerable completeCards) + { + JsonData jsonData = new JsonData(); + jsonData.SetJsonType(JsonType.Array); + foreach (BattleCardBase replaceCard in replaceCards) + { + jsonData.Add(replaceCard.GetName()); + } + _setupJsonData["player_mulligan_abandon"] = jsonData; + JsonData jsonData2 = new JsonData(); + jsonData2.SetJsonType(JsonType.Array); + foreach (int completeCard in completeCards) + { + jsonData2.Add("p" + completeCard); + } + _setupJsonData["player_mulligan_complete"] = jsonData2; + WriteJsonData(); + } + + public override void RecordEnemyMulliganReplaceCards(IEnumerable replaceCards, IEnumerable completeCards) + { + JsonData jsonData = new JsonData(); + jsonData.SetJsonType(JsonType.Array); + foreach (BattleCardBase replaceCard in replaceCards) + { + jsonData.Add(replaceCard.GetName()); + } + _setupJsonData["enemy_mulligan_abandon"] = jsonData; + JsonData jsonData2 = new JsonData(); + jsonData2.SetJsonType(JsonType.Array); + foreach (int completeCard in completeCards) + { + jsonData2.Add("e" + completeCard); + } + _setupJsonData["enemy_mulligan_complete"] = jsonData2; + WriteJsonData(); + } + + public override void RecordPlay(BattleCardBase card, BattleCardBase originalCard, IEnumerable selectedCards) + { + JsonData jsonData = new JsonData(); + jsonData["ope"] = "play"; + jsonData["index"] = CardToIndexName(card); + jsonData["id"] = card.CardId; + jsonData["name"] = card.BaseParameter.CardName; + jsonData["cost"] = card.Cost; + jsonData["is_choice_brave"] = (originalCard.IsChoiceBraveSkillCard ? 1 : 0); + WriteSkillTargetInfoToJson(selectedCards, jsonData); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override VfxBase RecordAttack(BattleCardBase attackCard, BattleCardBase targetCard, SkillProcessor skillProcessor) + { + JsonData jsonData = new JsonData(); + jsonData["ope"] = "attack"; + jsonData["index"] = CardToIndexName(attackCard); + jsonData["id"] = attackCard.CardId; + jsonData["name"] = attackCard.BaseParameter.CardName; + jsonData["target"] = CardToIndexName(targetCard); + jsonData["target_id"] = targetCard.CardId; + jsonData["target_name"] = targetCard.BaseParameter.CardName; + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + return NullVfx.GetInstance(); + } + + public override void RecordEvolve(BattleCardBase originalCard, BattleCardBase card, IEnumerable selectedCards) + { + JsonData jsonData = new JsonData(); + jsonData["ope"] = "evolve"; + jsonData["index"] = CardToIndexName(card); + jsonData["id"] = card.CardId; + jsonData["name"] = card.BaseParameter.CardName; + WriteSkillTargetInfoToJson(selectedCards, jsonData); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordStartSelect(BattleCardBase card, bool isEvolve, List selectableCards, bool isChoiceBrave) + { + } + + public override void RecordSelect(BattleCardBase card, bool isEvolve, BattleCardBase actCard, bool isBurialRite, bool isChoiceBrave) + { + } + + public override void RecordCompleteSelect(BattleCardBase card, bool isEvolve, BattleCardBase actCard, bool isChoiceBrave, bool isBurialRite) + { + } + + public override void RecordStartChoice(BattleCardBase card, bool isEvolve, List choiceCards, bool isChoiceBrave) + { + } + + public override void RecordStartFusion(BattleCardBase card, List selectableCards) + { + } + + public override void RecordSelectFusion(BattleCardBase card) + { + } + + public override void RecordCompleteChoice(BattleCardBase card, bool isEvolve, List chosenCardList, BattleCardBase actCard, List chosenCardIndexList, bool hasSelectionSkill, bool isChoiceBrave) + { + } + + public override void RecordCancelChoice(BattleCardBase card, bool isEvolve, bool isChoiceBrave) + { + } + + public override void RecordCancelFusion(BattleCardBase card) + { + } + + public override void RecordCancelSelect(BattleCardBase actCard, bool isEvolve, bool isChoiceBrave) + { + } + + public override void RecordTurnStart() + { + DateTimeOffset dateTimeOffset = new DateTimeOffset(DateTime.Now.Ticks, new TimeSpan(0, 0, 0)); + _turnStartTime = dateTimeOffset.ToUnixTimeSeconds(); + WriteJsonData(); + } + + public override void RecordTurnEnd() + { + JsonData jsonData = new JsonData(); + jsonData["ope"] = "turn_end"; + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordRetire() + { + } + + public void RecordChangeAI(string logicName, int operationQueueCount) + { + JsonData jsonData = new JsonData(); + jsonData["ope"] = "change_ai"; + jsonData["logic"] = logicName; + jsonData["queue_count"] = operationQueueCount; + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordSkillTargets(IEnumerable targetCards) + { + foreach (BattleCardBase targetCard in targetCards) + { + _skillTargetList.Add(targetCard.GetName()); + } + WriteJsonData(); + } + + public void RecordSpecialBattleSetting(DataMgr.SpecialBattleSetting setting) + { + if (setting != null) + { + _setupJsonData["story_special_battle_player_attach_skill"] = setting.PlayerAttachSkillText; + _setupJsonData["story_special_battle_enemy_attach_skill"] = setting.EnemyAttachSkillText; + _setupJsonData["story_special_battle_player_start_pp"] = setting.PlayerStartPp; + _setupJsonData["story_special_battle_enemy_start_pp"] = setting.EnemyStartPp; + _setupJsonData["story_special_battle_player_start_life"] = setting.PlayerStartMaxLife; + _setupJsonData["story_special_battle_enemy_start_life"] = setting.EnemyStartMaxLife; + _setupJsonData["story_special_battle_banish_effect_override"] = setting.IdOverrideInBattleLogText; + _setupJsonData["story_special_battle_token_draw_effect_override"] = setting.TokenDrawEffectOverrideText; + _setupJsonData["story_special_battle_id_override_in_battle_log"] = setting.IdOverrideInBattleLogText; + WriteJsonData(); + } + } + + public override void RecordCompleteFusionSelect(BattleCardBase fusionCard, IEnumerable ingredientCards) + { + JsonData jsonData = new JsonData(); + jsonData["ope"] = "comp_fusion"; + jsonData["index"] = CardToIndexName(fusionCard); + jsonData["id"] = fusionCard.CardId; + jsonData["name"] = fusionCard.BaseParameter.CardName; + WriteSkillTargetInfoToJson(ingredientCards, jsonData); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + protected override void WriteJsonData() + { + if (RecoveryManagerBase.failedRecoveryFlag) + { + return; + } + JsonData jsonData = new JsonData(); + jsonData["version"] = 0; + jsonData["battle_type"] = (int)_battleType; + jsonData["record_time"] = DateTime.Now.Ticks; + jsonData["turn_start_time"] = _turnStartTime; + jsonData["setup"] = _setupJsonData; + jsonData["operations"] = new JsonData(); + jsonData["operations"].SetJsonType(JsonType.Array); + foreach (JsonData operationJsonData in _operationJsonDataList) + { + jsonData["operations"].Add(operationJsonData); + } + jsonData["check"] = new JsonData(); + jsonData["check"]["player"] = new JsonData(); + jsonData["check"]["player"].SetJsonType(JsonType.Object); + jsonData["check"]["enemy"] = new JsonData(); + jsonData["check"]["enemy"].SetJsonType(JsonType.Object); + BattlePlayer battlePlayer = BattleManagerBase.GetIns().BattlePlayer; + BattleEnemy battleEnemy = BattleManagerBase.GetIns().BattleEnemy; + JsonData jsonData2 = new JsonData(); + jsonData2.SetJsonType(JsonType.Array); + JsonData jsonData3 = new JsonData(); + jsonData3.SetJsonType(JsonType.Array); + JsonData jsonData4 = new JsonData(); + jsonData4.SetJsonType(JsonType.Array); + JsonData jsonData5 = new JsonData(); + jsonData5.SetJsonType(JsonType.Array); + foreach (BattleCardBase handCard in battlePlayer.HandCardList) + { + jsonData2.Add(handCard.GetName()); + } + foreach (BattleCardBase inPlayCard in battlePlayer.InPlayCards) + { + jsonData3.Add(inPlayCard.GetName()); + } + foreach (BattleCardBase handCard2 in battleEnemy.HandCardList) + { + jsonData4.Add(handCard2.GetName()); + } + foreach (BattleCardBase inPlayCard2 in battleEnemy.InPlayCards) + { + jsonData5.Add(inPlayCard2.GetName()); + } + jsonData["check"]["player"]["hand"] = jsonData2; + jsonData["check"]["player"]["inplay"] = jsonData3; + jsonData["check"]["enemy"]["hand"] = jsonData4; + jsonData["check"]["enemy"]["inplay"] = jsonData5; + JsonData jsonData6 = new JsonData(); + jsonData6.SetJsonType(JsonType.Array); + foreach (string skillTarget in _skillTargetList) + { + jsonData6.Add(skillTarget); + } + if (jsonData6.Count > 0) + { + jsonData["skill_targets"] = jsonData6; + } + WriteJsonDataToFile(jsonData); + } + + protected override void WriteJsonDataToFile(JsonData jsonData, string overrideFilePath = "") + { + base.WriteJsonDataToFile(jsonData, string.Empty); + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard.Battle.Recovery/NetworkBattleOperationRecorder.cs b/SVSim.BattleEngine/Engine/Wizard.Battle.Recovery/NetworkBattleOperationRecorder.cs new file mode 100644 index 0000000..9f93ce6 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard.Battle.Recovery/NetworkBattleOperationRecorder.cs @@ -0,0 +1,421 @@ +using System.Collections.Generic; +using System.IO; +using LitJson; +using Wizard.Battle.View.Vfx; + +namespace Wizard.Battle.Recovery; + +public class NetworkBattleOperationRecorder : OperationRecorderBase +{ + public NetworkBattleOperationRecorder(string filePath) + : base(filePath) + { + if (File.Exists(filePath)) + { + JsonData operationDataList = RecoveryOperationInfo.ReadRecoveryFile(filePath); + SetOperationDataList(operationDataList); + } + else + { + WriteJsonData(); + } + } + + public override void RecordBattleType(DataMgr.BattleType battleType) + { + } + + public override void RecordRandomSeed(int randomSeed) + { + } + + public override void RecordBackGroundId(int backGroundId) + { + } + + public override void RecordBgmId(string bgmId) + { + } + + public override void RecordClass(string playerName, int clanType) + { + } + + public override void RecordSubClass(string playerName, int clanType) + { + } + + public override void RecordMyRotationId(string playerName, string myRotationId) + { + } + + public override void RecordSleeve(string playerName, long sleeveId) + { + } + + public override void RecordChara(string playerName, int charaId) + { + } + + public override void RecordDeck(string playerName, char indexHeadChar, IEnumerable cardIds) + { + } + + public override void RecordEnemyAIDifficulty(int difficulty) + { + } + + public override void RecordEnemyAILogicLevel(int level) + { + } + + public override void RecordEnemyAIMaxLife(int life) + { + } + + public override void RecordEnemyAIDeckId(int deckId) + { + } + + public override void RecordEnemyAIStyleId(int styleId) + { + } + + public override void RecordEnemyAIEmoteId(int emoteId) + { + } + + public override void RecordEnemyAIUseInnerEmote(bool useInnerEmote) + { + } + + public override void RecordStartTurnIsPlayer(bool startTurnIsPlayer) + { + } + + public override void RecordPracticeDifficultyDegreeId(int degreeId) + { + } + + public override void RecordIsPreBuildDeck(bool isPreBuildDeck) + { + } + + public override void RecordIsTrialDeck(bool isTrialDeck) + { + } + + public override void RecordIsDefaultDeck(bool isDefaultDeck) + { + } + + public override void RecordQuestStageId(int id) + { + } + + public override void RecordQuestEnemyAiId(int id) + { + } + + public override void RecordQuestEnemyEmblemId(int id) + { + } + + public override void RecordQuestEnemyDegreeId(int id) + { + } + + public override void RecordQuestEnemyEmotionOverride(int id) + { + } + + public override void RecordQuestPlayerEmotionOverride(int id) + { + } + + public override void RecordQuestRecoveryPoint(int recoveryPoint) + { + } + + public override void RecordQuestPlayerSkillList(List skills) + { + } + + public override void RecordQuestEnemySkill(BossRushSpecialSkill skill) + { + } + + public override void RecordQuestMaxBattleCount(int maxBattleCount) + { + } + + public override void RecordQuestCurrentWinCount(int currentWinCount) + { + } + + public override void RecordQuestIsExtra(bool isExtra) + { + } + + public override void RecordQuestIsMockBattle(bool isMockBattle) + { + } + + public override void RecordQuestExtraDeckScheduleId(int id) + { + } + + public override void RecordMissionNecessaryInformation(BattleManagerBase.MissionNecessaryInformation missionNecessaryInformation) + { + } + + public override void RecordMulliganStart() + { + } + + public override void RecordPractice3DFieldId(int id) + { + } + + public override void RecordPlayerMulliganReplaceCards(IEnumerable replaceCards, IEnumerable completeCards) + { + JsonData jsonData = new JsonData(); + JsonData jsonData2 = new JsonData(); + jsonData2.SetJsonType(JsonType.Array); + foreach (BattleCardBase replaceCard in replaceCards) + { + jsonData2.Add(replaceCard.GetName()); + } + jsonData["operation"] = "mulligan"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["abandoned_cards"] = jsonData2; + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordEnemyMulliganReplaceCards(IEnumerable replaceCards, IEnumerable completeCards) + { + } + + public override void RecordPlay(BattleCardBase card, BattleCardBase originalCard, IEnumerable selectedCards) + { + if (card.IsPlayer) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "play"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(card); + jsonData["is_choice_brave"] = (originalCard.IsChoiceBraveSkillCard ? 1 : 0); + WriteSkillTargetInfoToJson(selectedCards, jsonData); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + } + + public override VfxBase RecordAttack(BattleCardBase attackCard, BattleCardBase targetCard, SkillProcessor skillProcessor) + { + if (!attackCard.IsPlayer) + { + return NullVfx.GetInstance(); + } + JsonData jsonData = new JsonData(); + jsonData["operation"] = "attack"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(attackCard); + jsonData["target"] = CardToIndexName(targetCard); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + return NullVfx.GetInstance(); + } + + public override void RecordEvolve(BattleCardBase originalCard, BattleCardBase card, IEnumerable selectedCards) + { + if (card.IsPlayer) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "evolve"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(card); + WriteSkillTargetInfoToJson(selectedCards, jsonData); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + } + + public override void RecordCompleteFusionSelect(BattleCardBase fusionCard, IEnumerable ingredientCards) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "comp_fusion"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(fusionCard); + WriteSkillTargetInfoToJson(ingredientCards, jsonData); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordStartFusion(BattleCardBase fusionCard, List selectableCards) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "start_fusion"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(fusionCard); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordSelectFusion(BattleCardBase card) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "select_fusion"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(card); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordCancelFusion(BattleCardBase card) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "cancel_fusion"; + jsonData["seq"] = GetCurrentSequenceNumber(); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordStartSelect(BattleCardBase card, bool isEvolve, List selectableCards, bool isChoiceBrave) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "start_select"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(card); + jsonData["bool"] = (isEvolve ? 1 : 0); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordSelect(BattleCardBase card, bool isEvolve, BattleCardBase actCard, bool isBurialRite, bool isChoiceBrave) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "select"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(card); + jsonData["bool"] = (isEvolve ? 1 : 0); + jsonData["is_burial_rite"] = (isBurialRite ? 1 : 0); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordCompleteSelect(BattleCardBase card, bool isEvolve, BattleCardBase actCard, bool isChoiceBrave, bool isBurialRite) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "comp_select"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(card); + jsonData["bool"] = (isEvolve ? 1 : 0); + jsonData["is_burial_rite"] = (isBurialRite ? 1 : 0); + jsonData["is_choice_brave"] = (isChoiceBrave ? 1 : 0); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordCancelSelect(BattleCardBase actCard, bool isEvolve, bool isChoiceBrave) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "cancel_select"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["bool"] = (isEvolve ? 1 : 0); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordStartChoice(BattleCardBase card, bool isEvolve, List choiceCards, bool isChoiceBrave) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "start_choice"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(card); + jsonData["bool"] = (isEvolve ? 1 : 0); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordCompleteChoice(BattleCardBase card, bool isEvolve, List chosenCardList, BattleCardBase actCard, List chosenCardIndexList, bool hasSelectionSkill, bool isChoiceBrave) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "comp_choice"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["index"] = CardToIndexName(card); + jsonData["bool"] = (isEvolve ? 1 : 0); + WriteSkillTargetInfoToJson(chosenCardList, jsonData); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordCancelChoice(BattleCardBase card, bool isEvolve, bool isChoiceBrave) + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "cancel_choice"; + jsonData["seq"] = GetCurrentSequenceNumber(); + jsonData["bool"] = (isEvolve ? 1 : 0); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordTurnStart() + { + } + + public override void RecordTurnEnd() + { + JsonData jsonData = new JsonData(); + jsonData["operation"] = "turn_end"; + jsonData["seq"] = GetCurrentSequenceNumber(); + _operationJsonDataList.Add(jsonData); + WriteJsonData(); + } + + public override void RecordRetire() + { + } + + public override void RecordSkillTargets(IEnumerable targetCards) + { + } + + protected override void WriteJsonData() + { + JsonData jsonData = new JsonData(); + jsonData["operations"] = new JsonData(); + jsonData["operations"].SetJsonType(JsonType.Array); + foreach (JsonData operationJsonData in _operationJsonDataList) + { + jsonData["operations"].Add(operationJsonData); + } + WriteJsonDataToFile(jsonData); + } + + private void SetOperationDataList(JsonData recoveryLogData) + { + if (recoveryLogData.Keys.Contains("operations")) + { + JsonData jsonData = recoveryLogData["operations"]; + for (int i = 0; i < jsonData.Count; i++) + { + _operationJsonDataList.Add(jsonData[i]); + } + } + else + { + LocalLog.AccumulateTraceLog("operations key is not found in recovery file"); + } + } + + private int GetCurrentSequenceNumber() + { + if (ToolboxGame.RealTimeNetworkAgent != null) + { + return ToolboxGame.RealTimeNetworkAgent.GetCurrentSequenceNumber() + 1; + } + return 0; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase/BuildDeckPurchaseInfoTask.cs b/SVSim.BattleEngine/Engine/Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase/BuildDeckPurchaseInfoTask.cs new file mode 100644 index 0000000..25b64fa --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase/BuildDeckPurchaseInfoTask.cs @@ -0,0 +1,123 @@ +using LitJson; + +namespace Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase; + +public class BuildDeckPurchaseInfoTask : BaseTask +{ + public class BuildDeckPurchaseInfoTaskParam : BaseParam + { + public int add_series_id; + } + + public BuildDeckPurchaseInfoTask() + { + base.type = ApiType.Type.BuildDeckInfo; + } + + public void SetParameter(int add_series_id) + { + BuildDeckPurchaseInfoTaskParam buildDeckPurchaseInfoTaskParam = new BuildDeckPurchaseInfoTaskParam(); + buildDeckPurchaseInfoTaskParam.add_series_id = add_series_id; + base.Params = buildDeckPurchaseInfoTaskParam; + } + + protected override int Parse() + { + int num = base.Parse(); + if (num != 1) + { + return num; + } + Wizard.Data.BuildDeckPurchaseInfo.seriesList.Clear(); + JsonData jsonData = base.ResponseData["data"]; + for (int i = 0; i < jsonData.Count; i++) + { + int num2 = jsonData[i]["series_id"].ToInt(); + if (!Wizard.Data.Master.BuildDeckSeriesIdDic.ContainsKey(num2)) + { + continue; + } + BuildDeckSeriesPurchaseInfo buildDeckSeriesPurchaseInfo = new BuildDeckSeriesPurchaseInfo(); + buildDeckSeriesPurchaseInfo._seriesId = num2; + buildDeckSeriesPurchaseInfo._introduction = Wizard.Data.Master.BuildDeckSeriesIdDic[buildDeckSeriesPurchaseInfo._seriesId].Introduction; + buildDeckSeriesPurchaseInfo._isNew = jsonData[i]["is_new"].ToBoolean(); + JsonData jsonData2 = jsonData[i]["products"]; + for (int j = 0; j < jsonData2.Count; j++) + { + BuildDeckProductInfo buildDeckProductInfo = new BuildDeckProductInfo(); + buildDeckProductInfo.product_id = jsonData2[j]["product_id"].ToInt(); + buildDeckProductInfo.leader_id = jsonData2[j]["leader_id"].ToInt(); + buildDeckProductInfo.deck_code = jsonData2[j]["deck_code"].ToString(); + buildDeckProductInfo.featured_card_id = jsonData2[j]["featured_card_id"].ToInt(); + buildDeckProductInfo.purchase_num_max = jsonData2[j]["purchase_num_max"].ToInt(); + buildDeckProductInfo.purchase_num_current = jsonData2[j]["purchase_num_current"].ToInt(); + buildDeckProductInfo.is_first_price = jsonData2[j]["is_first_price"].ToBoolean(); + ShopCommonSaleInfo shopCommonSaleInfo = new ShopCommonSaleInfo(); + string key = jsonData2[j]["product_name"].ToString(); + shopCommonSaleInfo.name = Wizard.Data.Master.GetBuildDeckProductText(key); + shopCommonSaleInfo.path = jsonData2[j]["product_id"].ToString(); + if (jsonData2[j].Keys.Contains("price_crystal")) + { + shopCommonSaleInfo.costCrystal = jsonData2[j]["price_crystal"].ToInt(); + } + if (jsonData2[j].Keys.Contains("price_rupy")) + { + shopCommonSaleInfo.costRupy = jsonData2[j]["price_rupy"].ToInt(); + } + if (jsonData2[j].Keys.Contains("price_ticket")) + { + shopCommonSaleInfo.costTicket = jsonData2[j]["price_ticket"].ToInt(); + } + if (jsonData2[j].Keys.Contains("ticket_id")) + { + shopCommonSaleInfo.costTicketItemId = jsonData2[j]["ticket_id"].ToInt(); + shopCommonSaleInfo.haveTicketNum = PlayerStaticData.GetHaveUserGoods(UserGoods.Type.Item, shopCommonSaleInfo.costTicketItemId.Value); + } + shopCommonSaleInfo.isFree = false; + if (shopCommonSaleInfo.costCrystal.HasValue && shopCommonSaleInfo.costRupy.HasValue && shopCommonSaleInfo.costCrystal <= 0 && shopCommonSaleInfo.costRupy <= 0) + { + shopCommonSaleInfo.isFree = true; + } + shopCommonSaleInfo.expirtyTimeInfo = new ShopExpirtyInfo(jsonData2[j]["sales_period_info"]); + buildDeckProductInfo.saleInfo = shopCommonSaleInfo; + JsonData jsonData3 = jsonData2[j]["rewards"]; + for (int k = 0; k < jsonData3.Count; k++) + { + ShopCommonRewardInfo shopCommonRewardInfo = new ShopCommonRewardInfo(); + shopCommonRewardInfo.Type = jsonData3[k]["reward_type"].ToInt(); + shopCommonRewardInfo.UserGoodsId = jsonData3[k]["reward_detail_id"].ToLong(); + shopCommonRewardInfo.Num = jsonData3[k]["reward_number"].ToInt(); + buildDeckProductInfo.rewardInfoList.Add(shopCommonRewardInfo); + } + if (Wizard.Data.Master.BuildDeckCardListDic.ContainsKey(buildDeckProductInfo.product_id)) + { + for (int l = 0; l < Wizard.Data.Master.BuildDeckCardListDic[buildDeckProductInfo.product_id].Count; l++) + { + buildDeckProductInfo.cardList.Add(Wizard.Data.Master.BuildDeckCardListDic[buildDeckProductInfo.product_id][l]); + } + buildDeckSeriesPurchaseInfo.productList.Add(buildDeckProductInfo); + } + } + JsonData jsonData4 = jsonData[i]["series_rewards"]; + for (int m = 0; m < jsonData4.Count; m++) + { + PurchaseRewardInfo purchaseRewardInfo = new PurchaseRewardInfo(); + JsonData jsonData5 = jsonData4[m]; + string key2 = $"Shop_BuildDeckRewardNum_{(m + 1).ToString()}"; + purchaseRewardInfo.PurchaseNthText = Wizard.Data.SystemText.Get(key2); + for (int n = 0; n < jsonData5["reward_list"].Count; n++) + { + ShopCommonRewardInfo shopCommonRewardInfo2 = new ShopCommonRewardInfo(); + shopCommonRewardInfo2.Type = jsonData5["reward_list"][n]["reward_type"].ToInt(); + shopCommonRewardInfo2.UserGoodsId = jsonData5["reward_list"][n]["reward_detail_id"].ToLong(); + shopCommonRewardInfo2.Num = jsonData5["reward_list"][n]["reward_number"].ToInt(); + purchaseRewardInfo.RewardInfoList.Add(shopCommonRewardInfo2); + } + purchaseRewardInfo.IsGet = jsonData4[m]["is_get"].ToBoolean(); + buildDeckSeriesPurchaseInfo.SeriesRewardList.Add(purchaseRewardInfo); + } + Wizard.Data.BuildDeckPurchaseInfo.seriesList.Add(buildDeckSeriesPurchaseInfo); + } + return num; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase/BuildDeckSelectBuyMeansDialog.cs b/SVSim.BattleEngine/Engine/Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase/BuildDeckSelectBuyMeansDialog.cs new file mode 100644 index 0000000..248af8e --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase/BuildDeckSelectBuyMeansDialog.cs @@ -0,0 +1,16 @@ +using System; +using UnityEngine; + +namespace Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase; + +public class BuildDeckSelectBuyMeansDialog : BaseSelectBuyMeansDialog +{ + [SerializeField] + private BuildDeckProductDetail _buildDeckProductDetail; + + public void Init(BuildDeckProductInfo productInfo, DialogBase dialog, Action onPushBuyCrystalBtnCallBack, Action onPushBuyRupyBtnCallBack, Action onPushBuyTicketBtnCallBack) + { + _buildDeckProductDetail.SetSingleProductDetail(productInfo); + _Init(productInfo.saleInfo, dialog, onPushBuyCrystalBtnCallBack, onPushBuyRupyBtnCallBack, onPushBuyTicketBtnCallBack); + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/AdjustSettingUpdateTask.cs b/SVSim.BattleEngine/Engine/Wizard/AdjustSettingUpdateTask.cs new file mode 100644 index 0000000..d9b54c5 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/AdjustSettingUpdateTask.cs @@ -0,0 +1,21 @@ +namespace Wizard; + +public class AdjustSettingUpdateTask : BaseTask +{ + public class TaskParam : BaseParam + { + public int is_allow_send_adjust; + } + + public AdjustSettingUpdateTask() + { + base.type = ApiType.Type.AdjustSettingUpdate; + } + + public void SetParameter(bool arrow) + { + TaskParam taskParam = new TaskParam(); + taskParam.is_allow_send_adjust = (arrow ? 1 : 0); + base.Params = taskParam; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/ArenaBuyDialog.cs b/SVSim.BattleEngine/Engine/Wizard/ArenaBuyDialog.cs new file mode 100644 index 0000000..31ffa5e --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/ArenaBuyDialog.cs @@ -0,0 +1,131 @@ +using UnityEngine; + +namespace Wizard; + +public class ArenaBuyDialog : MonoBehaviour +{ + [SerializeField] + private UISprite m_SpriteConfirmClystal; + + [SerializeField] + private UISprite m_SpriteHaveClystal; + + [SerializeField] + private UISprite m_SpriteConfirmRupy; + + [SerializeField] + private UISprite m_SpriteHaveRupy; + + [SerializeField] + private UISprite m_SpriteConfirmTicket; + + [SerializeField] + private UISprite m_SpriteHaveTicket; + + [SerializeField] + private UILabel m_LabelUseItemCnt; + + [SerializeField] + private UILabel m_LabelBuyPack; + + [SerializeField] + private UILabel m_LabelItemName; + + [SerializeField] + private UILabel m_LabelBeforeItemCnt; + + [SerializeField] + private UILabel m_LabelAfterItemCnt; + + [SerializeField] + private GameObject _jpnLawRoot; + + [SerializeField] + private UIButton _jpnLawButton; + + [SerializeField] + private UIScrollView _scrollView; + + [SerializeField] + private GameObject _scrollBar; + + [SerializeField] + private UILabel _expirtyTextLabel; + + public void SetClystalConfirmDialog(int useItemNum, int haveItemCnt, string arenaModeNameId, ShopExpirtyInfo expirtyInfo) + { + m_SpriteConfirmClystal.gameObject.SetActive(value: true); + m_SpriteHaveClystal.gameObject.SetActive(value: true); + m_SpriteConfirmRupy.gameObject.SetActive(value: false); + m_SpriteHaveRupy.gameObject.SetActive(value: false); + m_SpriteConfirmTicket.gameObject.SetActive(value: false); + m_SpriteHaveTicket.gameObject.SetActive(value: false); + int num = haveItemCnt - useItemNum; + string useItemNumText = Data.SystemText.Get("Shop_0091", useItemNum.ToString()); + string afterItemNum = Data.SystemText.Get("Shop_0055", num.ToString()); + SetLabelText(Data.SystemText.Get("Common_0201"), useItemNumText, afterItemNum, haveItemCnt, arenaModeNameId); + _jpnLawButton.onClick.Add(new EventDelegate(delegate + { + GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_COMMON_BUTTON); + UIManager.GetInstance().WebViewHelper.OpenWebView(WebViewHelper.WebViewType.LEGALTEXT); + })); + if (expirtyInfo.IsEnableText) + { + _expirtyTextLabel.text = expirtyInfo.GetText(); + } + else + { + _expirtyTextLabel.gameObject.SetActive(value: false); + } + _jpnLawRoot.SetActive(value: false); + } + + private void HideScrollBar() + { + _scrollView.enabled = false; + _scrollBar.SetActive(value: false); + _jpnLawRoot.SetActive(value: false); + } + + public void SetTicketConfirmDialog(int useItemNum, int haveItemCnt, string arenaModeNameId, string ticketSpriteName) + { + m_SpriteConfirmClystal.gameObject.SetActive(value: false); + m_SpriteHaveClystal.gameObject.SetActive(value: false); + m_SpriteConfirmRupy.gameObject.SetActive(value: false); + m_SpriteHaveRupy.gameObject.SetActive(value: false); + m_SpriteConfirmTicket.gameObject.SetActive(value: true); + m_SpriteHaveTicket.gameObject.SetActive(value: true); + m_SpriteConfirmTicket.spriteName = ticketSpriteName; + m_SpriteHaveTicket.spriteName = ticketSpriteName; + int num = haveItemCnt - useItemNum; + string useItemNumText = Data.SystemText.Get("Shop_0042", useItemNum.ToString()); + string afterItemNum = Data.SystemText.Get("Shop_0054", num.ToString()); + SetLabelText(Data.SystemText.Get("Common_0114"), useItemNumText, afterItemNum, haveItemCnt, arenaModeNameId); + HideScrollBar(); + } + + public void SetRupyConfirmDialog(int useItemNum, int haveItemCnt, string arenaModeNameId) + { + m_SpriteConfirmClystal.gameObject.SetActive(value: false); + m_SpriteHaveClystal.gameObject.SetActive(value: false); + m_SpriteConfirmRupy.gameObject.SetActive(value: true); + m_SpriteHaveRupy.gameObject.SetActive(value: true); + m_SpriteConfirmTicket.gameObject.SetActive(value: false); + m_SpriteHaveTicket.gameObject.SetActive(value: false); + int num = haveItemCnt - useItemNum; + string useItemNumText = Data.SystemText.Get("Shop_0090", useItemNum.ToString()); + string afterItemNum = Data.SystemText.Get("Shop_0056", num.ToString()); + SetLabelText(Data.SystemText.Get("Common_0115"), useItemNumText, afterItemNum, haveItemCnt, arenaModeNameId); + HideScrollBar(); + } + + private void SetLabelText(string itemName, string useItemNumText, string afterItemNum, int haveItemCnt, string arenaModeNameId) + { + SystemText systemText = Data.SystemText; + m_LabelUseItemCnt.text = useItemNumText; + m_LabelBuyPack.text = systemText.Get(arenaModeNameId); + m_LabelItemName.text = itemName; + m_LabelBeforeItemCnt.text = haveItemCnt.ToString(); + m_LabelAfterItemCnt.text = afterItemNum; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/CompetitionPermanentEntryTask.cs b/SVSim.BattleEngine/Engine/Wizard/CompetitionPermanentEntryTask.cs new file mode 100644 index 0000000..92a1ed9 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/CompetitionPermanentEntryTask.cs @@ -0,0 +1,33 @@ +namespace Wizard; + +public class CompetitionPermanentEntryTask : BaseTask +{ + public class CompetitionPermanentEntryTaskParam : BaseParam + { + public int consume_item_type; + } + + public CompetitionPermanentEntryTask() + { + base.type = ApiType.Type.CompetitionPermanentEntry; + } + + public void SetParameter(ArenaData.eARENA_PAY inPayType) + { + CompetitionPermanentEntryTaskParam competitionPermanentEntryTaskParam = new CompetitionPermanentEntryTaskParam(); + competitionPermanentEntryTaskParam.consume_item_type = (int)inPayType; + base.Params = competitionPermanentEntryTaskParam; + } + + protected override int Parse() + { + int num = base.Parse(); + if (num != 1) + { + return num; + } + PlayerStaticData.UpdateHaveUserGoodsNumByJsonData(base.ResponseData["data"]["reward_list"]); + Data.ArenaData.CompetitionData.SetRestChallangeCountByEntry(base.ResponseData["data"]); + return num; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/FriendApplySendTask.cs b/SVSim.BattleEngine/Engine/Wizard/FriendApplySendTask.cs new file mode 100644 index 0000000..a571504 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/FriendApplySendTask.cs @@ -0,0 +1,28 @@ +namespace Wizard; + +public class FriendApplySendTask : BaseTask +{ + public class FriendApplySendTaskParam : BaseParam + { + public int friend_id; + } + + public FriendApplySendTask() + { + base.type = ApiType.Type.FriendApplySend; + } + + public void SetParameter(int friend_id) + { + FriendApplySendTaskParam friendApplySendTaskParam = new FriendApplySendTaskParam(); + friendApplySendTaskParam.friend_id = friend_id; + base.Params = friendApplySendTaskParam; + } + + protected override int Parse() + { + int result = base.Parse(); + _ = 1; + return result; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/FriendUserSearchTask.cs b/SVSim.BattleEngine/Engine/Wizard/FriendUserSearchTask.cs new file mode 100644 index 0000000..fe538ae --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/FriendUserSearchTask.cs @@ -0,0 +1,39 @@ +using LitJson; + +namespace Wizard; + +public class FriendUserSearchTask : BaseTask +{ + public class FriendUserSearchTaskParam : BaseParam + { + public int search_viewer_id; + } + + public FriendUserSearchTask() + { + base.type = ApiType.Type.FriendUserSearch; + } + + public void SetParameter(int search_viewer_id) + { + FriendUserSearchTaskParam friendUserSearchTaskParam = new FriendUserSearchTaskParam(); + friendUserSearchTaskParam.search_viewer_id = search_viewer_id; + base.Params = friendUserSearchTaskParam; + } + + protected override int Parse() + { + int num = base.Parse(); + if (num != 1) + { + return num; + } + Data.SearchUserInfo.Initizalize(); + JsonData jsonData = base.ResponseData["data"]["user_info"]; + if (jsonData.Count > 0) + { + Data.SearchUserInfo.data.user = new UserFriend(jsonData); + } + return num; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringEntryTask.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringEntryTask.cs new file mode 100644 index 0000000..33f3508 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringEntryTask.cs @@ -0,0 +1,60 @@ +using System.Collections.Generic; + +namespace Wizard; + +public class GatheringEntryTask : BaseTask +{ + public class DeckEntry + { + public int deck_no; + + public string deck_name; + + public DeckEntry(DeckData deck) + { + deck_no = deck.GetDeckID(); + deck_name = deck.GetDeckName(); + } + } + + public class GatheringEntryTaskParam : BaseParam + { + public string gathering_id; + + public Dictionary deck_list = new Dictionary(); + } + + public GatheringEntryTask() + { + base.type = ApiType.Type.GatheringEntry; + } + + public void SetParameter(string id, List deckList) + { + GatheringEntryTaskParam gatheringEntryTaskParam = new GatheringEntryTaskParam(); + gatheringEntryTaskParam.gathering_id = id; + if (deckList != null) + { + for (int i = 0; i < deckList.Count; i++) + { + gatheringEntryTaskParam.deck_list[i.ToString()] = new DeckEntry(deckList[i]); + } + } + else + { + gatheringEntryTaskParam.deck_list = null; + } + base.Params = gatheringEntryTaskParam; + } + + protected override int Parse() + { + int num = base.Parse(); + if (num != 1) + { + return num; + } + Data.MyPageNotifications.data.IsInviteGathering = false; + return num; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringFriendInviteListPlate.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringFriendInviteListPlate.cs new file mode 100644 index 0000000..c627ba4 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringFriendInviteListPlate.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace Wizard; + +public class GatheringFriendInviteListPlate : MonoBehaviour +{ + [SerializeField] + private GameObject _alreadyAddGathering; + + [SerializeField] + private GameObject _alreadyInvited; + + [SerializeField] + private UserListViewPlate _friendListPlate; + + public void Initialize(GatheringFriendListTask.InviteFriendData inviteData) + { + _alreadyAddGathering.SetActive(inviteData.IsJoinGathering); + _friendListPlate.SetButtonVisible(!inviteData.IsJoinGathering && !inviteData.IsInvited); + _alreadyInvited.SetActive(inviteData.IsInvited); + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringInviteCancelTask.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringInviteCancelTask.cs new file mode 100644 index 0000000..b51034e --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringInviteCancelTask.cs @@ -0,0 +1,21 @@ +namespace Wizard; + +public class GatheringInviteCancelTask : BaseTask +{ + public class GatheringInviteCancelTaskParam : BaseParam + { + public string invite_id; + } + + public GatheringInviteCancelTask() + { + base.type = ApiType.Type.GatheringInviteCancel; + } + + public void SetParameter(string inviteId) + { + GatheringInviteCancelTaskParam gatheringInviteCancelTaskParam = new GatheringInviteCancelTaskParam(); + gatheringInviteCancelTaskParam.invite_id = inviteId; + base.Params = gatheringInviteCancelTaskParam; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringInviteRejectTask.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringInviteRejectTask.cs new file mode 100644 index 0000000..437d5c9 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringInviteRejectTask.cs @@ -0,0 +1,21 @@ +namespace Wizard; + +public class GatheringInviteRejectTask : BaseTask +{ + public class GatheringInviteRejectTaskParam : BaseParam + { + public string invite_id; + } + + public GatheringInviteRejectTask() + { + base.type = ApiType.Type.GatheringInviteReject; + } + + public void SetParameter(string inviteId) + { + GatheringInviteRejectTaskParam gatheringInviteRejectTaskParam = new GatheringInviteRejectTaskParam(); + gatheringInviteRejectTaskParam.invite_id = inviteId; + base.Params = gatheringInviteRejectTaskParam; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringInviteTask.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringInviteTask.cs new file mode 100644 index 0000000..5b79b2f --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringInviteTask.cs @@ -0,0 +1,21 @@ +namespace Wizard; + +public class GatheringInviteTask : BaseTask +{ + public class GatheringInviteTaskParam : BaseParam + { + public string target_viewer_id; + } + + public GatheringInviteTask() + { + base.type = ApiType.Type.GatheringInvite; + } + + public void SetParameter(string targetViewerId) + { + GatheringInviteTaskParam gatheringInviteTaskParam = new GatheringInviteTaskParam(); + gatheringInviteTaskParam.target_viewer_id = targetViewerId; + base.Params = gatheringInviteTaskParam; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringKickConfirm.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringKickConfirm.cs new file mode 100644 index 0000000..1e729ae --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringKickConfirm.cs @@ -0,0 +1,56 @@ +using System; +using Cute; +using UnityEngine; + +namespace Wizard; + +public class GatheringKickConfirm : MonoBehaviour +{ + [SerializeField] + private UIToggle _toggleEternal; + + [SerializeField] + private UserPlateBase _userPlate; + + private Action OnKickDecide; + + private bool _toggleClickFirst = true; + + public static void Create(GameObject prefab, GatheringUserInfo userInfo, Action onKickDecide) + { + GatheringKickConfirm component = UnityEngine.Object.Instantiate(prefab).GetComponent(); + DialogBase dialog = UIManager.GetInstance().CreateDialogClose(); + component.Initialize(dialog, userInfo, onKickDecide); + } + + private void Initialize(DialogBase dialog, GatheringUserInfo userInfo, Action onKickDecide) + { + OnKickDecide = onKickDecide; + SystemText systemText = Data.SystemText; + string titleLabel = systemText.Get("Gathering_Member_0012"); + string text_btn = systemText.Get("Gathering_Member_0005"); + dialog.SetTitleLabel(titleLabel); + dialog.SetButtonText(text_btn); + dialog.SetObj(base.gameObject); + dialog.SetSize(DialogBase.Size.S); + dialog.SetButtonLayout(DialogBase.ButtonLayout.RedBtn_CancelBtn); + _userPlate.InitializeSimplePlate(userInfo); + dialog.onPushButton1 = delegate + { + OnKickDecide.Call(_toggleEternal.value); + }; + _toggleEternal.onChange.Add(new EventDelegate(delegate + { + OnClickToggle(); + })); + } + + private void OnClickToggle() + { + if (!_toggleClickFirst) + { + GameMgr.GetIns().GetSoundMgr().PlaySe(_toggleEternal.value ? Se.TYPE.SYS_TOGGLE_ON : Se.TYPE.SYS_TOGGLE_OFF); + } + _toggleClickFirst = false; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringKickTask.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringKickTask.cs new file mode 100644 index 0000000..660f7dc --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringKickTask.cs @@ -0,0 +1,24 @@ +namespace Wizard; + +public class GatheringKickTask : BaseTask +{ + public class GatheringKickTaskParam : BaseParam + { + public string target_viewer_id; + + public int is_restrict; + } + + public GatheringKickTask() + { + base.type = ApiType.Type.GatheringKick; + } + + public void SetParameter(string targetViewerId, bool isRestrict) + { + GatheringKickTaskParam gatheringKickTaskParam = new GatheringKickTaskParam(); + gatheringKickTaskParam.target_viewer_id = targetViewerId; + gatheringKickTaskParam.is_restrict = (isRestrict ? 1 : 0); + base.Params = gatheringKickTaskParam; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringMemberPlate.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringMemberPlate.cs new file mode 100644 index 0000000..7ffd3d3 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringMemberPlate.cs @@ -0,0 +1,59 @@ +using System; +using Cute; +using UnityEngine; + +namespace Wizard; + +public class GatheringMemberPlate : UserPlateBase +{ + [SerializeField] + private UIButton _friendRequestButton; + + [SerializeField] + private UIButton _dropOutButton; + + [SerializeField] + private UIButton _kickButton; + + [SerializeField] + private UILabel _ownerOrGuestLabel; + + [SerializeField] + private GameObject _friendRequestSending; + + [SerializeField] + private GameObject _friendIcon; + + public Action OnClickFriendRequest; + + public Action OnClickDropOut; + + public Action OnClickKick; + + public void Initialize(GatheringInfo info, GatheringUserInfo userInfo) + { + InitializeBase(userInfo); + _dropOutButton.gameObject.SetActive(info.Role == GatheringRule.eRole.GUEST && userInfo.IsSelf); + _friendRequestButton.gameObject.SetActive(userInfo.IsFriend == false && !userInfo.IsSelf && userInfo.IsFriendRequestSending == false); + _friendIcon.SetActive(userInfo.IsFriend.Value); + _friendRequestSending.SetActive(userInfo.IsFriendRequestSending.Value); + _kickButton.gameObject.SetActive(info.Role == GatheringRule.eRole.OWNER && !userInfo.IsSelf); + _friendRequestButton.onClick.Clear(); + _dropOutButton.onClick.Clear(); + _kickButton.onClick.Clear(); + _friendRequestButton.onClick.Add(new EventDelegate(delegate + { + OnClickFriendRequest.Call(userInfo); + })); + _dropOutButton.onClick.Add(new EventDelegate(delegate + { + OnClickDropOut.Call(); + })); + _kickButton.onClick.Add(new EventDelegate(delegate + { + OnClickKick.Call(userInfo); + })); + SystemText systemText = Data.SystemText; + _ownerOrGuestLabel.text = (userInfo.IsOwner ? systemText.Get("Gathering_Information_0013") : systemText.Get("Gathering_Member_0001")); + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringRankingPlate.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringRankingPlate.cs new file mode 100644 index 0000000..0f789cd --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringRankingPlate.cs @@ -0,0 +1,49 @@ +using UnityEngine; + +namespace Wizard; + +public class GatheringRankingPlate : UserPlateBase +{ + private const string BG_RANK_1 = "ranking_plate_01"; + + private const string BG_RANK_2 = "ranking_plate_02"; + + private const string BG_RANK_3 = "ranking_plate_03"; + + private const string BG_RANK_OTHER = "ranking_plate_common"; + + [SerializeField] + private UILabel _winCount; + + [SerializeField] + private UILabel _ranking; + + [SerializeField] + private GameObject _youMark; + + [SerializeField] + private UISprite _bg; + + public void Initialize(GatheringRankingTask.RankingUserInfo userInfo) + { + InitializeBase(userInfo.gatheringUserInfo); + _winCount.text = Data.SystemText.Get("Gathering_Ranking_0001", userInfo.WinCount.ToString()); + _ranking.text = userInfo.Order.ToString(); + _youMark.SetActive(userInfo.gatheringUserInfo.IsSelf); + switch (userInfo.Order) + { + case 1: + _bg.spriteName = "ranking_plate_01"; + break; + case 2: + _bg.spriteName = "ranking_plate_02"; + break; + case 3: + _bg.spriteName = "ranking_plate_03"; + break; + default: + _bg.spriteName = "ranking_plate_common"; + break; + } + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringReceiveInfoDialog.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringReceiveInfoDialog.cs new file mode 100644 index 0000000..e478162 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringReceiveInfoDialog.cs @@ -0,0 +1,72 @@ +using System; +using Cute; +using UnityEngine; + +namespace Wizard; + +public class GatheringReceiveInfoDialog : MonoBehaviour +{ + [SerializeField] + private GatheringRuleView _ruleView; + + private Action _onReject; + + private const int ADDITIONAL_DIALOG_DEPTH = 10; + + public static void Create(GameObject prefab, string id, Action onReject) + { + GatheringGetInfoTask task = new GatheringGetInfoTask(); + task.SetParameter(id); + UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate + { + CreateDialog(prefab, task, onReject); + })); + } + + public static void CreateDialog(GameObject prefab, GatheringGetInfoTask task, Action onReject) + { + GatheringInfo info = task.Info; + DialogBase dialog = UIManager.GetInstance().CreateDialogClose(); + UnityEngine.Object.Instantiate(prefab).GetComponent().Initialize(info, dialog, onReject); + } + + private void Initialize(GatheringInfo info, DialogBase dialog, Action onReject) + { + _onReject = onReject; + SystemText systemText = Data.SystemText; + dialog.SetObj(base.gameObject); + dialog.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_RedBtn); + dialog.SetTitleLabel(systemText.Get("Gathering_Menu_0002")); + dialog.SetSize(DialogBase.Size.M); + dialog.SetButtonText(systemText.Get("Gathering_Join_0003"), systemText.Get("Gathering_Join_0004")); + dialog.onPushButton1 = delegate + { + OnClickJoinButton(info); + }; + dialog.onPushButton2 = delegate + { + _onReject.Call(); + }; + _ruleView.SetGatheringInfo(info); + } + + private static void OnClickJoinButton(GatheringInfo info) + { + if (info.Rule.IsEntryDeckOnly || info.Rule.IsTournament) + { + DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose(); + dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn); + dialogBase.SetButtonText(Data.SystemText.Get("Gathering_0022")); + dialogBase.SetTitleLabel(Data.SystemText.Get("Gathering_0025")); + dialogBase.SetText(Data.SystemText.Get("Gathering_Join_0007")); + dialogBase.onPushButton1 = delegate + { + GatheringEntryConfirm.ShowDeckListDialog(info); + }; + } + else + { + GatheringEntryConfirm.EntryGathering(null, info); + } + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringSettingDialog.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringSettingDialog.cs new file mode 100644 index 0000000..57e799c --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringSettingDialog.cs @@ -0,0 +1,73 @@ +using Cute; +using UnityEngine; + +namespace Wizard; + +public class GatheringSettingDialog : MonoBehaviour +{ + [SerializeField] + private GatheringRuleView _ruleView; + + [SerializeField] + private UIButton _stopButton; + + private const int ADDITIONAL_DIALOG_DEPTH = 15; + + private DialogBase _dialog; + + public static void Create(GameObject prefab, GatheringInfo info) + { + DialogBase dialog = UIManager.GetInstance().CreateDialogClose(); + Object.Instantiate(prefab).GetComponent().Initialize(info, dialog); + } + + private void Initialize(GatheringInfo info, DialogBase dialog) + { + _dialog = dialog; + dialog.SetObj(base.gameObject); + dialog.SetButtonLayout(DialogBase.ButtonLayout.CloseBtn); + dialog.SetTitleLabel(Data.SystemText.Get("Gathering_Information_0012")); + dialog.SetSize(DialogBase.Size.M); + _ruleView.SetGatheringInfo(info); + } + + private void Start() + { + _stopButton.onClick.Add(new EventDelegate(delegate + { + OnClickStopButton(); + })); + } + + private void OnClickStopButton() + { + GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE); + DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose(); + SystemText systemText = Data.SystemText; + dialogBase.SetButtonLayout(DialogBase.ButtonLayout.RedBtn_CancelBtn); + dialogBase.SetButtonText(systemText.Get("Gathering_Information_0018"), systemText.Get("Common_0005")); + dialogBase.SetText(systemText.Get("Gathering_Information_0017")); + dialogBase.SetTitleLabel(Data.SystemText.Get("Gathering_Information_0020")); + dialogBase.SetSize(DialogBase.Size.S); + dialogBase.SetPanelDepth(15); + dialogBase.onPushButton1 = delegate + { + StopGathering(); + }; + } + + private void StopGathering() + { + GatheringInterruptTask task = new GatheringInterruptTask(); + StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate + { + _dialog.SetActive(inActive: false); + DialogBase dialogBase = UIManager.GetInstance().CreateConfirmationDialog(Data.SystemText.Get("Gathering_Information_0019")); + dialogBase.SetPanelDepth(15); + dialogBase.OnCloseStart = delegate + { + Gathering.BackToMyPageForDrop(); + }; + })); + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringTournamentInfoTask.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringTournamentInfoTask.cs new file mode 100644 index 0000000..ef385e4 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringTournamentInfoTask.cs @@ -0,0 +1,304 @@ +using System.Collections.Generic; +using System.Linq; +using LitJson; + +namespace Wizard; + +public class GatheringTournamentInfoTask : BaseTask +{ + private class Match + { + public int MatchId; + + public int ParentMatchId; + + public int ParentMatchUserIndex; + + public int Status; + + public int ViewerId1; + + public int ViewerId2; + + public int WinnerViewerId; + + public int RoomId; + + public bool IsForceLose1; + + public bool IsForceLose2; + + public bool IsForceLoseWinner; + + public bool IsExtra; + + public bool IsFinalMatchReset; + + public bool IsActive + { + get + { + if (ViewerId1 > 0 && ViewerId2 > 0) + { + return WinnerViewerId == 0; + } + return false; + } + } + } + + public List TournamentDataList { get; private set; } + + public GatheringTournamentInfoTask() + { + base.type = ApiType.Type.GatheringTournamentInfo; + } + + protected override int Parse() + { + int num = base.Parse(); + if (num != 1) + { + return num; + } + TournamentDataList = ParseTournamentDataList(base.ResponseData["data"]); + return num; + } + + private List ParseTournamentDataList(JsonData data) + { + if (data == null) + { + return null; + } + Dictionary userInfo = CollectUserInfo(data); + List list = new List(); + if (data.TryGetValue("1", out var value)) + { + list.Add(ParseTournamentData(value, isWinners: true, userInfo)); + } + if (data.TryGetValue("2", out var value2)) + { + list.Add(ParseTournamentData(value2, isWinners: false, userInfo)); + } + return list; + } + + private TournamentData ParseTournamentData(JsonData data, bool isWinners, Dictionary userInfo) + { + Match[][] matches = ConvertToMatch(data); + Dictionary cellMatchIdDict = new Dictionary(); + TournamentData tournamentData = new TournamentData(); + int num = matches.Length + 1; + List list = (tournamentData.Rounds = new List(num)); + for (int i = 0; i < num; i++) + { + TournamentRoundData item = new TournamentRoundData + { + RoundNo = i + 1, + Cells = new List(), + Watchs = new List() + }; + list.Add(item); + } + Match match = matches[matches.Length - 1][0]; + TournamentCellData.CellState cellState = GetCellState(match, match.WinnerViewerId, match.IsForceLoseWinner); + CreateCell(list[num - 1], match.WinnerViewerId, match.MatchId, cellState, isWinners).IsTerminal = true; + int i2 = matches.Length - 1; + while (i2 >= 0) + { + Match[] source = matches[i2]; + TournamentRoundData tournamentRoundData = list[i2 + 1]; + TournamentRoundData tournamentRoundData2 = list[i2]; + foreach (TournamentCellData cell in tournamentRoundData.Cells) + { + if (cell == null || !cellMatchIdDict.ContainsKey(cell)) + { + continue; + } + int matchId = cellMatchIdDict[cell]; + Match match2 = source.FirstOrDefault((Match m) => m.MatchId == matchId); + TournamentCellData tournamentCellData = CreateCell(tournamentRoundData2, match2.ViewerId1, GetChildMatchId(1), GetCellState(match2, match2.ViewerId1, match2.IsForceLose1), isChampion: false); + tournamentCellData.Line = TournamentCellData.LineType.Down; + tournamentCellData.Parent = cell; + tournamentCellData.IsFinalMatchReset = false; + TournamentCellData tournamentCellData2 = CreateCell(tournamentRoundData2, match2.ViewerId2, GetChildMatchId(2), GetCellState(match2, match2.ViewerId2, match2.IsForceLose2), isChampion: false); + tournamentCellData2.Line = TournamentCellData.LineType.Up; + tournamentCellData2.Parent = cell; + tournamentCellData2.IsFinalMatchReset = match2.IsFinalMatchReset; + cell.Children = new TournamentCellData[2] { tournamentCellData, tournamentCellData2 }; + tournamentRoundData2.IsExtraRound = match2.IsExtra; + if (match2.RoomId > 0) + { + CreateWatch(tournamentRoundData2, match2); + } + if (match2.IsExtra) + { + i2--; + match2 = matches[i2][0]; + matchId = match2.MatchId; + tournamentRoundData2 = list[i2]; + tournamentCellData = CreateCell(tournamentRoundData2, match2.ViewerId1, GetChildMatchId(1), GetCellState(match2, match2.ViewerId1, match2.IsForceLose1), isChampion: false); + tournamentCellData.Line = TournamentCellData.LineType.Down; + tournamentCellData.IsPreExtra = true; + tournamentCellData2 = CreateCell(tournamentRoundData2, match2.ViewerId2, GetChildMatchId(2), GetCellState(match2, match2.ViewerId2, match2.IsForceLose2), isChampion: false); + tournamentCellData2.Line = TournamentCellData.LineType.Up; + tournamentCellData2.IsPreExtra = true; + if (match2.RoomId > 0) + { + CreateWatch(tournamentRoundData2, match2); + } + } + int GetChildMatchId(int parentMatchUserIndex) + { + if (i2 == 0) + { + return 0; + } + return matches[i2 - 1].FirstOrDefault((Match m) => m.ParentMatchId == matchId && m.ParentMatchUserIndex == parentMatchUserIndex)?.MatchId ?? 0; + } + } + int num2 = i2 - 1; + i2 = num2; + } + return tournamentData; + TournamentCellData CreateCell(TournamentRoundData round, int viewerId, int num3, TournamentCellData.CellState state, bool isChampion) + { + TournamentCellData tournamentCellData3 = new TournamentCellData + { + State = state + }; + (string, long) tuple = userInfo[viewerId]; + tournamentCellData3.Name = tuple.Item1; + tournamentCellData3.EmblemId = tuple.Item2; + tournamentCellData3.ViewerId = viewerId; + tournamentCellData3.IsChampion = isChampion; + tournamentCellData3.Round = round; + round.Cells.Add(tournamentCellData3); + if (num3 > 0) + { + cellMatchIdDict.Add(tournamentCellData3, num3); + } + return tournamentCellData3; + } + static TournamentWatchData CreateWatch(TournamentRoundData round, Match match3) + { + TournamentWatchData tournamentWatchData = new TournamentWatchData + { + RoomId = match3.RoomId, + ViewerId0 = match3.ViewerId1, + ViewerId1 = match3.ViewerId2 + }; + round.Watchs.Add(tournamentWatchData); + return tournamentWatchData; + } + } + + private TournamentCellData.CellState GetCellState(Match match, int viewerId, bool isForceLose) + { + if (isForceLose) + { + if (viewerId != 0) + { + return TournamentCellData.CellState.LoseByDefault; + } + return TournamentCellData.CellState.Blank; + } + if (match.Status == 5) + { + if (viewerId == 0) + { + return TournamentCellData.CellState.LoseByDefault; + } + if (match.WinnerViewerId != viewerId) + { + return TournamentCellData.CellState.Lose; + } + return TournamentCellData.CellState.Win; + } + if (viewerId == 0) + { + return TournamentCellData.CellState.Blank; + } + if (match.IsActive) + { + return TournamentCellData.CellState.Active; + } + return TournamentCellData.CellState.Unresolved; + } + + private Dictionary CollectUserInfo(JsonData data) + { + Dictionary dictionary = new Dictionary { + { + 0, + (string.Empty, 0L) + } }; + foreach (string key2 in data.Keys) + { + JsonData jsonData = data[key2]; + foreach (string key3 in jsonData.Keys) + { + JsonData jsonData2 = jsonData[key3]; + for (int i = 0; i < jsonData2.Count; i++) + { + JsonData jsonData3 = jsonData2[i]; + Add(jsonData3["user1"], dictionary); + Add(jsonData3["user2"], dictionary); + } + } + } + return dictionary; + static void Add(JsonData userData, Dictionary dict) + { + if (userData != null) + { + int key = userData["viewer_id"].ToInt(); + if (!dict.ContainsKey(key)) + { + string item = userData["name"].ToString(); + long item2 = userData["emblem_id"].ToLong(); + dict.Add(key, (item, item2)); + } + } + } + } + + private Match[][] ConvertToMatch(JsonData data) + { + Match[][] array = new Match[data.Count][]; + for (int i = 0; i < data.Count; i++) + { + JsonData jsonData = data[(i + 1).ToString()]; + Match[] array2 = new Match[jsonData.Count]; + for (int j = 0; j < jsonData.Count; j++) + { + JsonData jsonData2 = jsonData[j]; + bool isFinalMatchReset = false; + if (jsonData2.TryGetValue("is_show_one_more_win", out var value)) + { + isFinalMatchReset = value.ToInt() == 1; + } + Match match = new Match + { + MatchId = jsonData2["matching_id"].ToInt(), + ParentMatchId = jsonData2["winner_parent_matching_id"].ToInt(), + ParentMatchUserIndex = jsonData2["winner_parent_matching_viewer_id_suffix"].ToInt(), + Status = jsonData2["status"].ToInt(), + ViewerId1 = jsonData2["viewer_id1"].ToInt(), + ViewerId2 = jsonData2["viewer_id2"].ToInt(), + WinnerViewerId = jsonData2["winner_viewer_id"].ToInt(), + RoomId = jsonData2["display_room_id"].ToInt(), + IsForceLose1 = (jsonData2["is_force_lose1"].ToInt() == 1), + IsForceLose2 = (jsonData2["is_force_lose2"].ToInt() == 1), + IsExtra = (jsonData2["side_type"].ToInt() == 3), + IsFinalMatchReset = isFinalMatchReset + }; + match.IsForceLoseWinner = ((match.ViewerId1 == match.WinnerViewerId) ? match.IsForceLose1 : match.IsForceLose2); + array2[j] = match; + } + array[i] = array2; + } + return array; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GatheringUpdateDescriptionTask.cs b/SVSim.BattleEngine/Engine/Wizard/GatheringUpdateDescriptionTask.cs new file mode 100644 index 0000000..74e5609 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GatheringUpdateDescriptionTask.cs @@ -0,0 +1,21 @@ +namespace Wizard; + +public class GatheringUpdateDescriptionTask : BaseTask +{ + public class GatheringUpdateDescriptionTaskParam : BaseParam + { + public string description; + } + + public GatheringUpdateDescriptionTask() + { + base.type = ApiType.Type.GatheringUpdateDescription; + } + + public void SetParameter(string description) + { + GatheringUpdateDescriptionTaskParam gatheringUpdateDescriptionTaskParam = new GatheringUpdateDescriptionTaskParam(); + gatheringUpdateDescriptionTaskParam.description = description; + base.Params = gatheringUpdateDescriptionTaskParam; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GuildInputDescriptionDialog.cs b/SVSim.BattleEngine/Engine/Wizard/GuildInputDescriptionDialog.cs new file mode 100644 index 0000000..466f708 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GuildInputDescriptionDialog.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +namespace Wizard; + +public class GuildInputDescriptionDialog : MonoBehaviour +{ + [SerializeField] + private UIInput _inputText; + + [SerializeField] + private UILabel _labelText; + + public string InputValue + { + get + { + return _inputText.value; + } + set + { + _inputText.value = value; + _labelText.text = value; + } + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GuildInputViewerIdDialog.cs b/SVSim.BattleEngine/Engine/Wizard/GuildInputViewerIdDialog.cs new file mode 100644 index 0000000..d6ff60c --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GuildInputViewerIdDialog.cs @@ -0,0 +1,38 @@ +using System; +using UnityEngine; + +namespace Wizard; + +public class GuildInputViewerIdDialog : MonoBehaviour +{ + [SerializeField] + private UIInput _inputId; + + public int InputValue => int.Parse(_inputId.value); + + public void InitInput(Action onChangeInputLength) + { + _inputId.value = string.Empty; + _inputId.onChange.Clear(); + _inputId.onChange.Add(new EventDelegate(delegate + { + onChangeInputLength(); + })); + } + + public void InitializeDialog(DialogBase dialog) + { + UIManager.SetObjectToGrey(dialog.button1.gameObject, b: true); + InitInput(delegate + { + if (UIUtil.IsValidViewerId(_inputId.value)) + { + UIManager.SetObjectToGrey(dialog.button1.gameObject, b: false); + } + else + { + UIManager.SetObjectToGrey(dialog.button1.gameObject, b: true); + } + }); + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/GuildUserDataDialog.cs b/SVSim.BattleEngine/Engine/Wizard/GuildUserDataDialog.cs new file mode 100644 index 0000000..467154b --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/GuildUserDataDialog.cs @@ -0,0 +1,38 @@ +using UnityEngine; + +namespace Wizard; + +public class GuildUserDataDialog : MonoBehaviour +{ + [SerializeField] + private UITexture _textureEmblem; + + [SerializeField] + private UITexture _textureCountry; + + [SerializeField] + private UITexture _textureRank; + + [SerializeField] + private UITexture _textureDegree; + + [SerializeField] + private UILabel _labelName; + + [SerializeField] + private UILabel _labelDiscription; + + public void SetUserData(UserInfoBase userInfo) + { + _textureEmblem.mainTexture = userInfo.GetUserEmblemTexture(); + _textureRank.mainTexture = userInfo.GetUserRankTexture(); + userInfo.InitializeDegreeTexture(_textureDegree); + _textureCountry.mainTexture = userInfo.GetUserCountryTexture(); + _labelName.text = userInfo.Name; + } + + public void SetDiscriptionLabel(string text) + { + _labelDiscription.text = text; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/MailReadTask.cs b/SVSim.BattleEngine/Engine/Wizard/MailReadTask.cs new file mode 100644 index 0000000..13d6492 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/MailReadTask.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; +using LitJson; + +namespace Wizard; + +public class MailReadTask : BaseTask +{ + public class MailReadTaskParam : BaseParam + { + public string[] present_id_array; + + public int state; + } + + public const int MAIL_READ = 1; + + public const int MAIL_DELETE = 3; + + public MailReadTask(int state) + { + base.type = ApiType.Type.MailRead; + } + + public void SetParameter(string[] present_id_array, int state, bool isTutorial) + { + base.type = (isTutorial ? ApiType.Type.MailReadTutorial : ApiType.Type.MailRead); + MailReadTaskParam mailReadTaskParam = new MailReadTaskParam(); + mailReadTaskParam.present_id_array = present_id_array; + mailReadTaskParam.state = state; + base.Params = mailReadTaskParam; + } + + protected override int Parse() + { + int num = base.Parse(); + if (num != 1) + { + return num; + } + Data.ReadMail.data = new ReadMailDetail(); + Data.ReadMail.data.total_recieve_count_list = new List(); + GameMgr.GetIns().GetMailTopTask().SetToFirstPage(); + Data.MailTop.data = new MailDataDetail(); + Data.MailTop.data.mail_data_list = new List(); + Data.MailTop.data.mail_history_list = new List(); + JsonData jsonData = base.ResponseData["data"]["total_receive_count_list"]; + for (int i = 0; i < jsonData.Count; i++) + { + ReceivedReward item = new ReceivedReward(jsonData[i]); + Data.ReadMail.data.total_recieve_count_list.Add(item); + } + PlayerStaticData.UpdateHaveUserGoodsNumByJsonData(base.ResponseData["data"]["reward_list"]); + Data.ReadMail.data.is_unreceived_present = base.ResponseData["data"]["is_unreceived_present"].ToBoolean(); + JsonData jsonData2 = base.ResponseData["data"]["present_list"]; + for (int j = 0; j < jsonData2.Count; j++) + { + MailData item2 = new MailData(jsonData2[j]); + Data.MailTop.data.mail_data_list.Add(item2); + } + JsonData jsonData3 = base.ResponseData["data"]["present_history_list"]; + for (int k = 0; k < jsonData3.Count; k++) + { + MailData item3 = new MailData(jsonData3[k]); + Data.MailTop.data.mail_history_list.Add(item3); + } + Data.Load.data._userTutorial.Update(base.ResponseData["data"]); + return num; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/ReplayDetailTask.cs b/SVSim.BattleEngine/Engine/Wizard/ReplayDetailTask.cs new file mode 100644 index 0000000..0308567 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/ReplayDetailTask.cs @@ -0,0 +1,35 @@ +namespace Wizard; + +public class ReplayDetailTask : BaseTask +{ + public class ReplayDetailTaskParam : BaseParam + { + public new int viewer_id; + + public long battle_id; + } + + public ReplayDetailTask() + { + base.type = ApiType.Type.ReplayDetail; + } + + public void SetParameter(int viewerId, long battleId) + { + ReplayDetailTaskParam replayDetailTaskParam = new ReplayDetailTaskParam(); + replayDetailTaskParam.viewer_id = viewerId; + replayDetailTaskParam.battle_id = battleId; + base.Params = replayDetailTaskParam; + } + + protected override int Parse() + { + int num = base.Parse(); + if (num != 1) + { + return num; + } + Data.ReplayBattleInfo = new ReplayDetailInfo(base.ResponseData["data"]); + return num; + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/ReplayDialogContent.cs b/SVSim.BattleEngine/Engine/Wizard/ReplayDialogContent.cs new file mode 100644 index 0000000..189d4e7 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/ReplayDialogContent.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Cute; +using UnityEngine; +using Wizard.Replay; + +namespace Wizard; + +public class ReplayDialogContent : MonoBehaviour +{ + [SerializeField] + private GameObject _rootReplayContentView; + + [SerializeField] + private ReplayContentView _prefabReplayContentView; + + private ReplayContentView _replayContentView; + + public Action OnClickReplayButton; + + private long _battle_id; + + private ReplayInfoItem _replayInfo; + + public void ReplayButtonClicked() + { + OnClickReplayButton.Call(); + GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE_TRANS); + long battleId = _battle_id; + ReplayInfoItem replayInfo = _replayInfo; + CheckTimeSlipRotationPeriodTask task = new CheckTimeSlipRotationPeriodTask(); + StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate + { + GoReplay(battleId, replayInfo); + })); + } + + private static void GoReplay(long battleId, ReplayInfoItem replayInfo) + { + string replayDataDirectoryPath = Application.persistentDataPath + "/NewReplay"; + string text = (Directory.Exists(replayDataDirectoryPath) ? (from d in Directory.GetDirectories(replayDataDirectoryPath, "*", SearchOption.TopDirectoryOnly) + select d.Replace("\\", "/")).FirstOrDefault((string f) => f == replayDataDirectoryPath + "/" + battleId) : null); + bool num = (text == null) | (Data.MaintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.NEWREPLAY_ALL) || (Data.MaintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.NEWREPLAY_EXCLUDE_ROTATION) && replayInfo.BattleFormat != Format.Rotation)); + UIManager.ChangeViewSceneParam param = new UIManager.ChangeViewSceneParam(); + param.MyPageMenuIndex = 6; + param.IsCutCardMotion = true; + param.OnFinishChangeView = delegate + { + ReplayDialog.Create(); + }; + param.IsUpdateFooterMenuTexture = true; + if (num) + { + ReplayDetailTask replayDetailTask = new ReplayDetailTask(); + replayDetailTask.SetParameter(PlayerStaticData.UserViewerID, battleId); + UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(replayDetailTask, delegate + { + ReplayController.StartPlayReplay(replayInfo, UIManager.ViewScene.MyPage, param); + })); + return; + } + Data.ReplayBattleInfo = new ReplayDetailInfo(NewReplayBattleMgr.ReadJson(Directory.GetFiles(text, "*", SearchOption.TopDirectoryOnly).ToList().FirstOrDefault((string x) => x.Contains("replay_info.json")))); + Data.ReplayBattleInfo.is_two_pick = replayInfo.BattleParameter.IsTwoPick; + Data.ReplayBattleInfo._battleType = (int)replayInfo.BattleParameter.BattleType; + Data.ReplayBattleInfo._twoPickFormat = replayInfo.BattleParameter.TwoPickFormat; + Data.CurrentFormat = replayInfo.BattleFormat; + ReplayController.StartPlayReplay(UIManager.ViewScene.MyPage, param, isNewReplay: true, battleId.ToString()); + } + + public IEnumerator Setup(ReplayInfoItem item, List loadedTextures) + { + if (_replayContentView == null) + { + _replayContentView = NGUITools.AddChild(_rootReplayContentView, _prefabReplayContentView.gameObject).GetComponent(); + } + _replayInfo = item; + _battle_id = item.BattleId; + _replayContentView.SetOpponentPlayerInfo(item); + _replayContentView.SetBattleInfo(item); + string text = Application.persistentDataPath + "/NewReplay"; + if ((!Directory.Exists(text) || !(from d in Directory.GetDirectories(text, "*", SearchOption.TopDirectoryOnly) + select d.Replace("\\", "/")).Contains(text + "/" + _battle_id)) | (Data.MaintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.NEWREPLAY_ALL) || (Data.MaintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.NEWREPLAY_EXCLUDE_ROTATION) && _replayInfo.BattleFormat != Format.Rotation))) + { + _replayContentView.SetOldReplayLabel(isActive: true); + } + else + { + _replayContentView.SetOldReplayLabel(isActive: false); + } + _replayContentView.ClearTexture(); + while (true) + { + if (item.BattleId != _battle_id) + { + yield break; + } + string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(item.OpponentEmblemId, ResourcesManager.AssetLoadPathType.Emblem_S); + string assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath(item.OpponentCountryCode, ResourcesManager.AssetLoadPathType.Country_S); + if (!loadedTextures.Contains(assetTypePath)) + { + yield return null; + continue; + } + if (string.IsNullOrEmpty(assetTypePath2) || loadedTextures.Contains(assetTypePath2)) + { + break; + } + yield return null; + } + _replayContentView.SetTexture(item); + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/TweenPositionWithUpdate.cs b/SVSim.BattleEngine/Engine/Wizard/TweenPositionWithUpdate.cs new file mode 100644 index 0000000..03f381d --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/TweenPositionWithUpdate.cs @@ -0,0 +1,45 @@ +using System; +using Cute; +using UnityEngine; + +namespace Wizard; + +public class TweenPositionWithUpdate : TweenPosition +{ + private Action _onUpdate; + + public static TweenPosition Begin(GameObject go, float duration, Vector3 pos, Action onUpdate) + { + TweenPositionWithUpdate tweenPositionWithUpdate = UITweener.Begin(go, duration); + tweenPositionWithUpdate.from = tweenPositionWithUpdate.value; + tweenPositionWithUpdate.to = pos; + if (duration <= 0f) + { + tweenPositionWithUpdate.Sample(1f, isFinished: true); + tweenPositionWithUpdate.enabled = false; + } + tweenPositionWithUpdate._onUpdate = onUpdate; + return tweenPositionWithUpdate; + } + + public static TweenPosition Begin(GameObject go, float duration, Vector3 pos, bool worldSpace, Action onUpdate) + { + TweenPositionWithUpdate tweenPositionWithUpdate = UITweener.Begin(go, duration); + tweenPositionWithUpdate.worldSpace = worldSpace; + tweenPositionWithUpdate.from = tweenPositionWithUpdate.value; + tweenPositionWithUpdate.to = pos; + if (duration <= 0f) + { + tweenPositionWithUpdate.Sample(1f, isFinished: true); + tweenPositionWithUpdate.enabled = false; + } + tweenPositionWithUpdate._onUpdate = onUpdate; + return tweenPositionWithUpdate; + } + + protected override void OnUpdate(float factor, bool isFinished) + { + base.value = from * (1f - factor) + to * factor; + _onUpdate.Call(factor); + } +} diff --git a/SVSim.BattleEngine/Engine/Wizard/UserDataDialog.cs b/SVSim.BattleEngine/Engine/Wizard/UserDataDialog.cs new file mode 100644 index 0000000..52a8f50 --- /dev/null +++ b/SVSim.BattleEngine/Engine/Wizard/UserDataDialog.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Cute; +using UnityEngine; + +namespace Wizard; + +public class UserDataDialog : MonoBehaviour +{ + [SerializeField] + private GuildUserDataDialog _inviteView; + + private bool _isFinishLoadResource; + + private List _loadedResourceList = new List(); + + public DialogBase Dialog { get; private set; } + + public static UserDataDialog Create(GameObject prefab, UserInfoBase user, string dialogTitle) + { + DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose(); + dialogBase.SetTitleLabel(dialogTitle); + dialogBase.SetSize(DialogBase.Size.S); + dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn); + UserDataDialog component = UnityEngine.Object.Instantiate(prefab).GetComponent(); + _ = component.gameObject; + dialogBase.SetObj(component.gameObject); + component.Dialog = dialogBase; + component.Initialize(user, dialogBase); + return component; + } + + private void Initialize(UserInfoBase user, DialogBase dialog) + { + UIManager uiManager = UIManager.GetInstance(); + uiManager.StartCoroutine(LoadResource(user, delegate + { + if (base.gameObject != null) + { + _inviteView.SetUserData(user); + } + })); + dialog.OnClose = (Action)Delegate.Combine(dialog.OnClose, (Action)delegate + { + uiManager.StartCoroutine(UnloadImages(delegate + { + if (this != null) + { + UnityEngine.Object.Destroy(base.gameObject); + } + })); + }); + } + + private IEnumerator LoadResource(UserInfoBase userData, Action callBack) + { + _isFinishLoadResource = false; + List resourcePathList = userData.GetUserAssetPathList(); + yield return UIManager.GetInstance().StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(resourcePathList, delegate + { + _isFinishLoadResource = true; + })); + _loadedResourceList.AddRange(resourcePathList); + callBack.Call(); + } + + private IEnumerator UnloadImages(Action callBack) + { + while (!_isFinishLoadResource) + { + yield return null; + } + Toolbox.ResourcesManager.RemoveAssetGroup(_loadedResourceList); + _loadedResourceList.Clear(); + callBack.Call(); + } + + public void SetDiscriptionLabel(string text) + { + _inviteView.SetDiscriptionLabel(text); + } +}