feat(battle-engine): M1 auto-copy closure (782 battle-logic files)
Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
This commit is contained in:
@@ -1,6 +1,783 @@
|
||||
# engine-relpath source-relpath sha256 patched(0|1)
|
||||
AchievedInfo.cs AchievedInfo.cs ea4a48fc79056999864843575ad2158855147d67f610cf0da6bce7ac2fc8ec3a 0
|
||||
AddTargetInfo.cs AddTargetInfo.cs 622c5cdc7421909489a00b7017670cadce81b74d0860dedbc662ab4faf6fd82a 0
|
||||
ApiType.cs ApiType.cs 36dd6f7ae87a7caa985eebb0de02f709f7276c48068b1db2f28dcfd1fdc826be 0
|
||||
ApplySkillTargetFilterCollection.cs ApplySkillTargetFilterCollection.cs 286c92d6dee5ffb49b9d62e5064bdd303fa5dc523e7e29b3ef8ec03f2e185b8b 0
|
||||
ArrowControl.cs ArrowControl.cs 884ed3b803390467ba85ed67ae9edb7c6ce13e9fb46dc4221f87f086bad6ef0d 0
|
||||
AttachedSkillInformation.cs AttachedSkillInformation.cs 4596525861f9328a006ae767cb5687d37742ca4296f04446a715859705117435 0
|
||||
AttachingAbilityInfo.cs AttachingAbilityInfo.cs dc7a858f5db686f046ffb9b7d004c3d513d2f6bd87e62737db7af3dc97429ce5 0
|
||||
BMFont.cs BMFont.cs 1228c62e3a837d18284ce8047861a1f90cc7702df5b008fb4ce0b812f299b69a 0
|
||||
BMGlyph.cs BMGlyph.cs 24ed29cc0a20d8b9bc91f2cd5607efd7f992b7f64d2dd885e58b5bf21ff5cb46 0
|
||||
BMSymbol.cs BMSymbol.cs 0252903edf4666d2456e20c524783bf1647ce6ef559ac631ac287abc1ef4178d 0
|
||||
BackGroundBase.cs BackGroundBase.cs b45dfcd6593e604dfc630dbd09ed09003fbc03ce5d5ca3d9c10f021331647f7f 0
|
||||
BattleCamera.cs BattleCamera.cs 35cd1b3cfb6d5c9932a5b9777983b01fede0c8638a4ade7637a18318048ff2d7 0
|
||||
BattleCardBase.cs BattleCardBase.cs b105aec032149ab0a1730c6e06e25530699851707150ad4b72e24fe6d17fd50f 0
|
||||
BattleControl.cs BattleControl.cs 1638d42a0eb5e0291da90b24a62db923c6ed66eca5a114010f39ba265b2e7bb2 0
|
||||
BattleEnemy.cs BattleEnemy.cs e2c1e600cfa860ec5472508d52313db65b1bf8abfa1c28716e75e52a206c1a0c 0
|
||||
BattleFinishParam.cs BattleFinishParam.cs 46ebca81cf025b911875d261bd9ab664392b66bbe0fcc86a48be93c80ed92d11 0
|
||||
BattleLifeTimeSharedObject.cs BattleLifeTimeSharedObject.cs ab8bc3703d268752a1de56ab5d3e9ebd276980c20076eb0ca300838b3db13d5f 0
|
||||
BattleManagerBase.cs BattleManagerBase.cs b4181eac7af0ed578835ea75b7003e1b3466331006a35cd84b40139825680eb7 0
|
||||
BattleMenuMgr.cs BattleMenuMgr.cs 7418699063e01641d0df1ed16773a9ac9418f418cc047fc18c5892eb7971d361 0
|
||||
BattlePlayer.cs BattlePlayer.cs 001409844b46ddaf0a5edbce4e015749ece61053adf725a978987d7063a02632 0
|
||||
BattlePlayerBase.cs BattlePlayerBase.cs 9d3a665158706460a52900008dcfcdf575dbe08cb6d3cc05e63e718b2885b51b 0
|
||||
BattleResultUIController.cs BattleResultUIController.cs d127088f56f60a0f3c3b5803e7254ecc3f966ad600aafad9cbd23683c45f4adb 0
|
||||
BattleStartControl.cs BattleStartControl.cs 3a790ddfdc9a1e9e3852ad4dab830074e4bc09925d54d53955ad838a42729a81 0
|
||||
BattleUIContainer.cs BattleUIContainer.cs 3e6933c0efae7f1ea44f18faef01f77f187fa8af03ece36ccfc6dab3bb0d4b81 0
|
||||
Bgm.cs Bgm.cs 0563a3cfd7d3496978c1e8118976e8e176010f260a09a6d5021d6fb2cd7fd424 0
|
||||
BuffCountInfo.cs BuffCountInfo.cs a8ca34862f1d83c9c99a702eb5c4bd02e799ad2b9127f4c380b940029e884214 0
|
||||
BuffDetailInfoUI.cs BuffDetailInfoUI.cs bef5b52e085808e650d013187963b8a8bcfe6c6623a253cb9707d6fac740cab4 0
|
||||
BuffInfo.cs BuffInfo.cs 820575948ba2de316270e52a8009838b00ed7c6a834e37883372be24f6b07fdd 0
|
||||
CantPlayCardFilterInfo.cs CantPlayCardFilterInfo.cs d83ea7282348ee3cf8b391748ec6720fa8a928ddb27020f8ee0191ea242d073d 0
|
||||
CardBasePrm.cs CardBasePrm.cs e34d9f9bbf52dfe2a0b30cd56d5e900e711ac1423cd26d23dde627e6066c08c4 0
|
||||
CardDataModel.cs CardDataModel.cs 5414f42ee02aa9fe5ed6ad2d88352a13f95f8127b81445a97dbadcde4110263e 0
|
||||
CardDetailBase.cs CardDetailBase.cs 4759ffd1c1bf7dca9caa832224a498180d4c76366ff4a10866215eb748e5839c 0
|
||||
CardDetailFilterCategory.cs CardDetailFilterCategory.cs b1285bd337493dc31ed03fb32b4fff63470235fd90dcd57ca677f253bd47d0d5 0
|
||||
CardDetailFilterDialog.cs CardDetailFilterDialog.cs 05f30e4ef3e15cea7a90ff45345b92a69a68bb3eb0542fb551817bf46439c813 0
|
||||
CardDetailFilterKeyWord.cs CardDetailFilterKeyWord.cs 8acd5dcf468dd4929f652af1c387adc9ac7e9948375e775eea5f9fc826820449 0
|
||||
CardDetailFilterOffButton.cs CardDetailFilterOffButton.cs bbafe2b972e7fa916913011585a3e72adfc8dabb1c8e7590b19fa0b84c310198 0
|
||||
CardDetailUI.cs CardDetailUI.cs db47e28623ffe64d90d49efefee8067ca6ce6653aed7882b7dc609cbb4c99e44 0
|
||||
CardFilterKeyWordMaster.cs CardFilterKeyWordMaster.cs 2cb03086fa87e8135697828f96f8d839ce41f0a6b33d6028f8a985368c0e7b37 0
|
||||
CardKeyWordCache.cs CardKeyWordCache.cs 27a1609fe451c9544ba050cd5d475be4ed9d5a065bef7bae1665213e177dbf09 0
|
||||
CardPack.cs CardPack.cs 193e08432c2dfb038c6eaff0b85f4dd50d39a8cb98d4f80583954b71a6919652 0
|
||||
CardPackManager.cs CardPackManager.cs 08e789fd9a2c673d1947a4681804177f53a02ec0402390df630ea57395974514 0
|
||||
CardTemplate.cs CardTemplate.cs 65399570d29ca06364b36aa0dece7591db03f01b6093a25c1e37eaa58a26a515 0
|
||||
CausedDamageCardParameterModifier.cs CausedDamageCardParameterModifier.cs 0376e7579b73800801bc049d121018a3575950737c35f871b485714921bf0a94 0
|
||||
ClassCharaPrm.cs ClassCharaPrm.cs 39f8c6b747beeb52b55996623c1ed36eee3c3bc27ea9955be9b257b845e0b2c6 0
|
||||
ClassInformationUIController.cs ClassInformationUIController.cs dd8ae4d1a449c6ee5c03ebdca8e609bd3201299f2d145f87e0886bd7ba47ac39 0
|
||||
ConditionSkillFilterCollection.cs ConditionSkillFilterCollection.cs b8fc3d9621a1f8ae7aaffbaac618bdaba36b63b036a37b611d9a798e2e68a8aa 0
|
||||
ConventionInfo.cs ConventionInfo.cs f4199507123b62b5da1633608e877cf0d9ed4ecf26a1671d520dfa2c8ee3026a 0
|
||||
Cute\AssetErrorState.cs Cute\AssetErrorState.cs b33ad3fb7e2ef3fe360dd4bfb4fa165c6545fea387978a19954be38534aafc5f 0
|
||||
Cute\AssetHandle.cs Cute\AssetHandle.cs 1d8a2e86416732f74946f33dcc83668475124040ac512495fb78581a21c6e504 0
|
||||
Cute\AssetRequestContext.cs Cute\AssetRequestContext.cs 6b2494166728d2c202cb050c3ce0a06b635295895e48f03c6fd9397ea07177b5 0
|
||||
Cute\Certification.cs Cute\Certification.cs 8c143ee5f98e99332bbd1d6ec091d7590004b3b7215f1dc234d39bb5402f8531 0
|
||||
Cute\INetworkUI.cs Cute\INetworkUI.cs f9c167ca8b2919b6a9a31518e9517a032aa67f6444239aa070e884c397c3b70b 0
|
||||
Cute\NetworkManager.cs Cute\NetworkManager.cs 0045133deabae1d9d7323c1496d1e373c5fe4a1b731a81ed01ecac3500826ae1 0
|
||||
Cute\NetworkTask.cs Cute\NetworkTask.cs dddf8a492571b5d0ae698a7e472c86f75a746d5ca0e7b34b08184cc820459acd 0
|
||||
Cute\PostParams.cs Cute\PostParams.cs 075f4ac38426adb7885083dd0638d902737d83d34c4b36befd8cef000ff4f2b1 0
|
||||
Cute\ResourcesManager.cs Cute\ResourcesManager.cs 71d3f4d1e0d685fcc86ecb163a7c0509fc8455329c16cdb6d2a8a6044207f924 0
|
||||
Cute\SkipCuteCheckResultCodes.cs Cute\SkipCuteCheckResultCodes.cs 9e61d6dca2c37a5cb99be5f4657fcd1789504cea08a9f234e35cfe5bc0c9b346 0
|
||||
Cute\Utility.cs Cute\Utility.cs b81416aeee0d4e21d0793bf97ee0f88ab47d366f5cbd10207e402fe56fbb3554 0
|
||||
DamageCardParameterModifier.cs DamageCardParameterModifier.cs 18471abb1ceed9dadd836b4692b4e0ce1e0a5f1d89e66819de2b763b4d460fb9 0
|
||||
DamageClippingInfo.cs DamageClippingInfo.cs d13af6e8d482d4bd5d25e4f3cb66ab8dc03706e12dcd05576957c243cc9cefe8 0
|
||||
DamageCutInfo.cs DamageCutInfo.cs badd6bab1f1419beb65cb033261c7e6b6ff1b0fdb8b5cfbeaa5690de3d26d8c8 0
|
||||
DamageInfo.cs DamageInfo.cs 5c8ace7ed08f5a2b17b94041d029976515795a6521c62fae4c1017761ec1c256 0
|
||||
DamageModifier.cs DamageModifier.cs 3e5115d7fc848170b4a12b9e83e7b29d4eea9f8ad99dd1922d8fd548ec39d547 0
|
||||
DataMgr.cs DataMgr.cs e26d86f920c1c4fa975100bca4e120da223aa00fdf2c7afe55555685039de048 0
|
||||
DeckData.cs DeckData.cs 6e55b1b948e5e0b023b2bcfda8ba3ba3349137ce7902bc954f448ea150ad8dff 0
|
||||
DetailMgr.cs DetailMgr.cs b9c05d782358a88ff7efe57f4d75c24bd9e8c11fb661f368c038e30a44293ba7 0
|
||||
DetailPanelControl.cs DetailPanelControl.cs f14d798412cb1e071966ed715d863c42a24b34993de3cc2235bc9780daedc0c5 0
|
||||
DialogBase.cs DialogBase.cs 29b1a74e1b413b9c7a6026a95855be50e17c9c9d9ded48fd29e50f1dddbe2bbf 0
|
||||
DisconnectToDispChecker.cs DisconnectToDispChecker.cs eff0b9cffe1f860c52f1541d859903e7c04b0b9533e8e9fb17db419c111b20af 0
|
||||
DisconnectToLoseChecker.cs DisconnectToLoseChecker.cs 62eb9d5ba9924579904be303dd687dc472a7846abcf897eaa9d71dd8cf3c564e 0
|
||||
EffectBattle.cs EffectBattle.cs 948c157c1c662f13946de84a8d82a9e791eedc9d0e4033e260aa960b001ddbe6 0
|
||||
EffectIdx.cs EffectIdx.cs 5a1bb1179ec2ae8c4e552ab9dfb859718b54c683382bec84518f1ad437c9dfe1 0
|
||||
EventDelegate.cs EventDelegate.cs 46aac74b8f69ad3bbff976d609890b06d39bdcaac8d750dbc08edb7350fe20bd 0
|
||||
ExecutionInfoCreatorBase.cs ExecutionInfoCreatorBase.cs 66231c001020d1bd54233645c2462edefd3af69adb166a4230e738915687a4d3 0
|
||||
FilterController.cs FilterController.cs 383faac09c95684862201a8ee7cb0384bd00bad97e17b967a2e2a0e4babe3969 0
|
||||
FinishTaskBase.cs FinishTaskBase.cs bcce8f5f8457978804ac2b8142a5c038e8113a67c6ba081226355bb2b4aeb93c 0
|
||||
FlexibleGrid.cs FlexibleGrid.cs 5ae686e596cc48092f7c71a8d4dde5963b777c406372cf8a68d4b274ad7332a6 0
|
||||
FusionIngredientInfo.cs FusionIngredientInfo.cs f27ea653c65be64dbf872e64dfca4ac1da361eb347a96b2d05836b79452c8510 0
|
||||
GachaUI.cs GachaUI.cs 9a2717c4c7488d1ac985e3f297efc5a0d2b1f11154257f120db4716b9562a280 0
|
||||
Global.cs Global.cs 176c8351aa9f1c5529fa0ed3ae8514fef117d4274034ec358ac1b7ee4fafb782 0
|
||||
GuardInfo.cs GuardInfo.cs f90debeff49492f32e54241fe88120353c9e640c63e40e5368e37aca46cbe4d7 0
|
||||
HandControl.cs HandControl.cs 9aeab0b0a03df8cacdf83ad032bac91bf6ded7add818ab8df390b2204de9bb32 0
|
||||
HandTRSCalculatorBase.cs HandTRSCalculatorBase.cs 3bed5bc4be8df4ae6e175ea80edee9dddba777cf3e60a98beb3c330f3b276591 0
|
||||
HeaderData.cs HeaderData.cs a5698b093069f218b38ae292b57bf7f322b1130e4d6c8bb2b48d652833834a5f 0
|
||||
HealCardParameterModifier.cs HealCardParameterModifier.cs cebc61aded873da74065beee795a016e0c4eb41535457ab363a01ab7fbe7f491 0
|
||||
HealModifier.cs HealModifier.cs 688d22e29bfba314775da3a007292f615d7f1285ad65af67925189310755d7f2 0
|
||||
IBattlePlayerReadOnlyInfo.cs IBattlePlayerReadOnlyInfo.cs 92458acdee05e34f03501eb096f4f9a62e046bb23beab303feeda08a65b16a96 0
|
||||
IBattlePlayerSkill.cs IBattlePlayerSkill.cs 0f6483b6c68d14b3df16714d80e7a699fe77dd8364fd9a526ca4d71ea938ca93 0
|
||||
IBattlePlayerVfxCreator.cs IBattlePlayerVfxCreator.cs ede7ac5540d0302302ff09323aa610a7f0465de170696134fd9cda3b88625873 0
|
||||
IBattleResultReporter.cs IBattleResultReporter.cs 5738a394332b823ef418da707c61c13cbb479cdbe2b800af27f6ba5437fda887 0
|
||||
ICardChantCountModifier.cs ICardChantCountModifier.cs b5eafdd395d738c281ca7bc680a755ee2b011d24342cedf80687bcb7e29b3190 0
|
||||
ICardCostModifier.cs ICardCostModifier.cs 3d31fcd151290d609159adcd781c77eaa7309aed87369dd5fc5dd0651265d198 0
|
||||
ICardEpModifier.cs ICardEpModifier.cs 1e9f05e89b4df909a3a157bb50ec86b68ce33a3751da1cc7b9ee9bcd85b90ff8 0
|
||||
ICardLifeModifier.cs ICardLifeModifier.cs 18266d3d9a1705ebf40f4b88ed245d5b2c12cca0f3bc18deaa8968c81510129a 0
|
||||
ICardOffenseModifier.cs ICardOffenseModifier.cs d96faf26fcb1ae05e2625f1b20c69a920027ceb58aa95e94675b60d955caa56a 0
|
||||
ICardSkyboundArtCountModifier.cs ICardSkyboundArtCountModifier.cs 0b8d0621f791bb61046d66cdfdda2abd7a672e2fdc1d83732b715965746d4997 0
|
||||
ICardSuperSkyboundArtCountModifier.cs ICardSuperSkyboundArtCountModifier.cs 7e68ca567e78d46a21d036b965cde68182fe1070ea9d4f750e1eb236efd06556 0
|
||||
ICardUnionBurstCountModifier.cs ICardUnionBurstCountModifier.cs ba967c6dc5d5a202fc6ded3b788b4fbd14d2a840fb2ce0858c6dc9f332a4fbfc 0
|
||||
IDetailPanelControl.cs IDetailPanelControl.cs f705759bfd1ee67cb2fd89727c9c5bc3fa339e1a45ecdba0f1deffa5d7464e71 0
|
||||
INextSceneSelector.cs INextSceneSelector.cs 52d188563368337f2653d41f54ed6ba915911929134b6bef628f6cd72c820c95 0
|
||||
IPpModifier.cs IPpModifier.cs 95a83890b06528d37c73dea24b75a3dcd23dfd532508bcb90463e34a5811d19e 0
|
||||
IResultAnimationHandler.cs IResultAnimationHandler.cs 0106c5eb9c8d912d47c5cc46336bffce1284cf5935088850fc0dc6c7ccfe3351 0
|
||||
ISkillApplyInformation.cs ISkillApplyInformation.cs 1082061304ea9099b2e144ac28aef691d138e0f8e09f4bac8109c8c359277fa1 0
|
||||
ISkillBattlePlayerFilter.cs ISkillBattlePlayerFilter.cs 1a1760e036b1ac60eb9fd837446c3b45daa03e9d5a80cce77a1ee601e6c7fed8 0
|
||||
ISkillCalcFilter.cs ISkillCalcFilter.cs aacc91c8f393db7296400160698e4ffa5e229170c1ebbc898abd1ee5b96e44a4 0
|
||||
ISkillCardCountExtensionsFilter.cs ISkillCardCountExtensionsFilter.cs dd3bae7e099bfd5ffef7a58cfc446c11cbd0c6b70c1a8633506f0a0762a1c0a9 0
|
||||
ISkillCardFilter.cs ISkillCardFilter.cs aa7d9a12ffa40988e4a2f9c0cbceb51dc41deb350490ffb29c20a027c04f7377 0
|
||||
ISkillConditionChecker.cs ISkillConditionChecker.cs d1e64e217456ace7bfd55bc226863af269d3a42a3b8bbae8eeb75e535de7931c 0
|
||||
ISkillCustomSelectFilter.cs ISkillCustomSelectFilter.cs 472aee97b778f66a3883ae49ef4a25dab079ec0471ef61212151a02edf0733da 0
|
||||
ISkillEnvironmentalFilter.cs ISkillEnvironmentalFilter.cs 4e35f3009689157bfc56a2a5beea40964bc1848294947b2f7b31206aa94acc0d 0
|
||||
ISkillExclutionFilter.cs ISkillExclutionFilter.cs b2c4a6db5438cf628a7f4e65e8f39e0859f90694ebfe31ae199c70e00fd97ae3 0
|
||||
ISkillOrFilter.cs ISkillOrFilter.cs 225154c7e77f5e83d2afd3d7b52e11588c722220eb795b7f0a54b9f609f42163 0
|
||||
ISkillParameterSelectFilter.cs ISkillParameterSelectFilter.cs 11451ea5bfbc1d4b7ef1a3229eb4e4ecf7bb5f7243abc769824f171ecbaa1e8b 0
|
||||
ISkillSelectFilter.cs ISkillSelectFilter.cs b3a88c0e99f60103a913c7de8f01798fc01036b950bf72cbb18e6aa7faab7f88 0
|
||||
ISkillTargetFilter.cs ISkillTargetFilter.cs 83e6544879ae037b683c722ef64a84eb11c5c25eec2d5f91ee3c305c35365875 0
|
||||
IStatusPanelControl.cs IStatusPanelControl.cs 0b3209f41c2c553a04ea57d686fa023ec1cccdbaebbc87a27796e5757f1820dd 0
|
||||
ITurnEndButtonUI.cs ITurnEndButtonUI.cs f56729cec651078c6ad204c92a465359206ec4099cc2089ab5075adcd130a401 0
|
||||
ITurnPanelControl.cs ITurnPanelControl.cs 92439feb3a6faf563e1d2673a4bf20c671be1300731d5594d1fb9d9947016036 0
|
||||
InPlayCardReflection.cs InPlayCardReflection.cs 230a498f9a9239da76fd43e1356c2420606b53ba4dc7fd74eee475d44ab2b39c 0
|
||||
InputDialog.cs InputDialog.cs cdca35d6b09423bd6995c573d775d05a5548b5fa5e9d29329f5e1883226e840d 0
|
||||
InputMgr.cs InputMgr.cs 581fa15080fb3a88827b415e1da7b27624df5b6990bc3901ab73fab64a2c22ba 0
|
||||
JudgeResultFailedToRetryChecker.cs JudgeResultFailedToRetryChecker.cs de1009153f15895bec6f0540db81859a4f57812ca5c44f5db9c2b3bd6d907f2d 0
|
||||
MasterLocalizeSetting.cs MasterLocalizeSetting.cs 99ee729dbe167dcd0435d6d30cbe2c19f52c6537900f83c822e32279dc93d9f0 0
|
||||
Matching.cs Matching.cs 29098aea9c23bd2902e2a8d873d17f28c10b8035d68958386737a8f74b46f278 0
|
||||
MatchingBase.cs MatchingBase.cs a7ab09602771607df180013c0b564aa561d0e71e6bbe06c294bd72163ccf290f 0
|
||||
MatchingIntervalActionBase.cs MatchingIntervalActionBase.cs 59e27d024cdf6fceac658a8610925f92df34622b5f9a3c1506185dabc6ead1bd 0
|
||||
MatchingNetworkConnectChecker.cs MatchingNetworkConnectChecker.cs 883ea96d00d6ce260920709ce14ccf3df66872a3718b318012291330c1188881 0
|
||||
MatchingRetryDomatching.cs MatchingRetryDomatching.cs 462d1f6cb226ab558be7a30f4e656ed50bbbc5db2b12768396d7a081020dbecf 0
|
||||
MatchingRetryLoaded.cs MatchingRetryLoaded.cs 25bded3bbbb7524ae5bdd4c8037bb5fb3bc6a9ddf940629e51b51147e1a9c77c 0
|
||||
MatchingTimeChecker.cs MatchingTimeChecker.cs 3c3d0428a3314139818552cbd6ced313fdf2de9fa326887cfe85a7213f3ebc34 0
|
||||
NGUIText.cs NGUIText.cs 559ef7a20fcde5f9598f3711079ec82573652e26f52d674cfc4ab375eafe78d1 0
|
||||
NetworkBattleData.cs NetworkBattleData.cs 73c823febb4d40b508b72cc946fcc47211d89e93c4906cbeca43beab971d69d3 0
|
||||
NetworkBattleDefine.cs NetworkBattleDefine.cs 4d0a39b09dd5ad11786645dc4365148d945ea11e690f735d3eb541ebb7ce604a 0
|
||||
NetworkBattleIntervalCheckerBase.cs NetworkBattleIntervalCheckerBase.cs c0e67a2a6b7476342c4dd71eff51b8dfef322c719fd8b1ac6300223d71949170 0
|
||||
NetworkBattleManagerBase.cs NetworkBattleManagerBase.cs e0fd242d61995e9a667928f7c868fbe29abdfa7b57349229077b7f75a8607a97 0
|
||||
NetworkBattleReceiver.cs NetworkBattleReceiver.cs 9ef6c34fa7bae735988c7adcb455c0245b5d37bbee58a6b29f4484bad9cec3eb 0
|
||||
NetworkBattleSender.cs NetworkBattleSender.cs d0f2db29f75fd594abf47bb4c784754b27f128ee079dd962be42a0732d8f6ac8 0
|
||||
NetworkBattleSetupBurialRitePlay.cs NetworkBattleSetupBurialRitePlay.cs 9bf090ee9a93e60cc2768b747144550296348e3bde55cf2fd492c74414adb664 0
|
||||
NetworkBattleSetupCardEvent.cs NetworkBattleSetupCardEvent.cs e3dbe93577757850ccd51596efff3df669fa2be43c7db86970fdd2f1aac1fad0 0
|
||||
NetworkBattleSetupValidateEvent.cs NetworkBattleSetupValidateEvent.cs 9bf2ecfd29a963530c88f58f6002e73154b80571438629cbf367e7a7a142928e 0
|
||||
NetworkConsistency.cs NetworkConsistency.cs 46c2b57e8b0a5bdb71b4a7020d729e528a4f02dca4bd039929df0ce8896d4795 0
|
||||
NetworkExecutionInfoCreator.cs NetworkExecutionInfoCreator.cs 89e65032a5504837b829716759802d32359100db4f5390b66a36bddc2f6010c9 0
|
||||
NetworkOperationCollectionBase.cs NetworkOperationCollectionBase.cs a360f399fb1d35b94e70b3578b446b373c1e465f9e12e05fac075c8643d7a305 0
|
||||
NetworkReplayBattleMgr.cs NetworkReplayBattleMgr.cs 7d9c0df07f3e2f87c9206cefcff5d4a241241fdd466d335ff9daaf6dd3d1d93b 0
|
||||
NetworkTouchControl.cs NetworkTouchControl.cs fa433ec9d3570dc5916fa848f1f43a29da1a123a9dfe732b28ae8693938fc729 0
|
||||
NetworkWatchBattleMgr.cs NetworkWatchBattleMgr.cs 9bebf4e2efd881d958b9ff30ef5a058f92843dce25adff104eb3186376216062 0
|
||||
NewReplayBattleMgr.cs NewReplayBattleMgr.cs d4feb1e6bea904b6e4f67228555b41b20f4b49d0a6117ed6b47071091d043844 0
|
||||
NguiObjs.cs NguiObjs.cs efcf4f0ef3e881ef8a9a4c760c9b9e990ff5747f3c5450565ac7b08af2c7fe67 0
|
||||
NotBeAttackedInfo.cs NotBeAttackedInfo.cs cf27c240017e3c5276d3b065dca43373d346bb29043a203115f9c5f33fe41ed7 0
|
||||
NotConsumeEpModifierInfo.cs NotConsumeEpModifierInfo.cs 00aef49ba7e742cd19278a692954a92c8a5e872d0fb41bc54ed831242a86c745 0
|
||||
NotMulliganEndToJudgeChecker.cs NotMulliganEndToJudgeChecker.cs 80febf55e54e431a6cf8c3264baa180f1a48d57bbf4d97c020aa23d37dbaa90d 0
|
||||
NotTurnEndToLoseChecker.cs NotTurnEndToLoseChecker.cs a8874bbac8694e89090b0b13eb7ddaee90ff8f1d6e873873ac1e492b18a09814 0
|
||||
NotTurnStartToLoseChecker.cs NotTurnStartToLoseChecker.cs 346d048a258240b0943432ad93d305d26418debdc57e17c95ed6b2062f8eeecf 0
|
||||
OperateMgr.cs OperateMgr.cs e850a929de25ffac21dc85de267235a530e4671ad5edf8652cca9c5be8418028 0
|
||||
OperateReceive.cs OperateReceive.cs cd94427cdfe2b43ccd2bb815dcf7373e2a3caa3f7dc23901b0abf2c6e312f742 0
|
||||
OperateReceiveChecker.cs OperateReceiveChecker.cs 990b8d1af1e29c852c7b3b8edabc5aa10be41f95ac8b9288a125918c1875a6ed 0
|
||||
OpponentNotTurnEndToWinChecker.cs OpponentNotTurnEndToWinChecker.cs 002da6bb2303a75d863ad19c5a5bb6380abffcf4f7293f47200220f0fa703917 0
|
||||
OpponentNotTurnStartToWinChecker.cs OpponentNotTurnStartToWinChecker.cs 6413b3b356d23a1f3a39eca87e786c70c66b6c8483c058fba5e44756cb5d2905 0
|
||||
OpponentRecoveryToDispChecker.cs OpponentRecoveryToDispChecker.cs 6e8de98a40a364b5bc06b7bd0ee1c3a2202a1c7dc730e9afba4215770d096920 0
|
||||
PackOpenDetail.cs PackOpenDetail.cs 59540a83a0f103a8113e416485c1f2fe5495f0ab5d80899da778069a6ac26743 0
|
||||
PanelMgr.cs PanelMgr.cs 5b0d5fd19f49134ad0a708e7263f8d68ef636a33a0212776191602c4b9074dae 0
|
||||
PlayHandCardReflection.cs PlayHandCardReflection.cs 934c893708573d24787ba3ad9b678ea465b749715f68cbda53ca00d427fe70e0 0
|
||||
PpAddModifier.cs PpAddModifier.cs d7c541e03d3a6b6b4427c9156b4139d759ab3a6e8e5b896adf11acf854468735 0
|
||||
Prediction.cs Prediction.cs 536228a52cfca4db3c40d419472dc575278a0785a280040a33203c62691c7976 0
|
||||
QuestFinishDetail.cs QuestFinishDetail.cs 488d190e160ff8dd616403fbf006ded58d40bd7e02a6d77b4df443283dfb11cb 0
|
||||
QuestSpecialBattleResult.cs QuestSpecialBattleResult.cs 44e08cfe0fd128f5e1bafe8a0a819a71225dbe3645bafd7f329f43c56a1acaf1 0
|
||||
RankInfo.cs RankInfo.cs 1f79848feee9570d337bdd7a7779a716cbd05141ca901d1ef8667e44ecea672d 0
|
||||
RankMatchBattleResult.cs RankMatchBattleResult.cs f6c59a1c10cded1b4465bcb9a4ca3b26eb6de8c60db0b9437210001666cd5703 0
|
||||
ReceiveIntervalTrigger.cs ReceiveIntervalTrigger.cs 7a5b285c9acf441c4a97e08243228c9a55e3a81657911fe59d775db0956205a7 0
|
||||
ReceivePlayActionsReflectionBase.cs ReceivePlayActionsReflectionBase.cs 6ffcef690e2a73d946b9af88612c18a819ff02013333d940ec958144b34e445d 0
|
||||
ReceivedReward.cs ReceivedReward.cs 790befcadc8b35b0067eb88a127210a625dbf639ba1b5d5829d5e434569e9c1f 0
|
||||
RecoveryToDispChecker.cs RecoveryToDispChecker.cs e5f6b0b7a4ed72ae2fb7466083109da654797f0a53b0d956e7bcebc20de47423 0
|
||||
ReflectionInfo.cs ReflectionInfo.cs 6c52f52fa1003907d7f37ac9cac83be02069791e91f47ce500dc686716c2600f 0
|
||||
RegisterActionBase.cs RegisterActionBase.cs 9e101ce8eeaed30cb02f8263d3b43f07bd57c40e868c291ca3dd8e5d6b9652a3 0
|
||||
RegisterActionManager.cs RegisterActionManager.cs dafa07d8b8beea14456ada306ffb47898391089361a04a7e56d9c01f6736a978 0
|
||||
RegisterChoiceAdd.cs RegisterChoiceAdd.cs ebd7a55f46204db08be667eb3eb5716a88ea723e0515a63c5a9678513d584f81 0
|
||||
RegisterLotCardBase.cs RegisterLotCardBase.cs 0eaa82c60bc5c3a4cda5f11e43b2046258be409435659981f9e28076585d4953 0
|
||||
RegisterTargetBase.cs RegisterTargetBase.cs 8203159714f9b6739c4fe81aa59ad7989ec5e200495253e3f6303ad06a9069ea 0
|
||||
RegisterToken.cs RegisterToken.cs db7b950af0ed7b687763ac8b31df8e6ba8cd4a412a81166123a72652373b8e15 0
|
||||
RegisterUnapproved.cs RegisterUnapproved.cs 892dbaa7aa6b42439ba26596ffaf627ccce24a2c0607e288083ea03e6eec8d2c 0
|
||||
RepeatSkillInfo.cs RepeatSkillInfo.cs 77144681a151c5f93934b0fc16cca2265a30d4d36e955c6fd369b32aefb1bf07 0
|
||||
RepeatTimer.cs RepeatTimer.cs 43f45ef4bd6b0b0bc7e2e1a02029631bda78a932b62f71f151864596086c6253 0
|
||||
ReplaceReceivedCard.cs ReplaceReceivedCard.cs 99a47b992de88d1d9433c31d10a9bc438a06cf25d618fb36d37c2efe827b62e5 0
|
||||
ReplayDetailInfo.cs ReplayDetailInfo.cs 49705ba9302bd646d306eb153ae870102b6a45cf51bc989d6ce7c65e77b5b816 0
|
||||
ReplayMoveTurnButton.cs ReplayMoveTurnButton.cs a4eff325fcfbbdedd9b6c3bbc6416190ee72a13ccf18e33eba417c3937ad8547 0
|
||||
ResourceHandler.cs ResourceHandler.cs 4aee3875b0074af62154f817dd7042fe873830923e9b0d9a2099085641441e62 0
|
||||
ResultAnimationAgent.cs ResultAnimationAgent.cs b0cd2cae790fa1427c69e96cfcf164f38d4a58aff8fcd60f08d1a9a8273a9c15 0
|
||||
RewardObjectInfo.cs RewardObjectInfo.cs 7f8065f9dd3062ee8c31a3cdbde05ad4ae8880df2992263a316e7bee833211fe 0
|
||||
RushInfo.cs RushInfo.cs f1e143f55de9f46018d4b81e24cce86885019ea8a2777ca90a36573ee95645cd 0
|
||||
SBattleLoad.cs SBattleLoad.cs 8338806083822a3cb30f4f98c5906601ff2b9456ad11181468f529e3e3c289df 0
|
||||
Se.cs Se.cs 1e701d14d8c51f1522870ada9a2109a8f5e98d27de5ddfeb51f57241589356fb 0
|
||||
SendCardDataMaker.cs SendCardDataMaker.cs 074a19f77a59be5859a486c9731f3f6df4e4960ff12245e8e3a9f92c071c30de 0
|
||||
SendIntervalTrigger.cs SendIntervalTrigger.cs ac92d11f73c9cd58a08b07f2d852028a646ee049df17439d023f05ba627878b5 0
|
||||
SendKeyActionDataManager.cs SendKeyActionDataManager.cs b74f41da4e4f704e0300026d9af6e27a1374370214a6f77694db5dd01c726fd6 0
|
||||
SetShaderGlobalColorBG.cs SetShaderGlobalColorBG.cs 605e1b276a8dc8cc0bdb083470de6fd462e168a827200f932aac8d5b67245934 0
|
||||
ShieldInfo.cs ShieldInfo.cs c7ca21d0fd446587d0e2ce1e80b29055ea4ef2f6c154a18eaa279543aba8eb1e 0
|
||||
SideLogControl.cs SideLogControl.cs fc18a896a557607eef7a5c103ef0baf6c61ddc52a099b905dc7ea1cd48896108 0
|
||||
SkillAnyConditionFilter.cs SkillAnyConditionFilter.cs 3fc4096e72dbbc726a9cc29c35d862f044fe2e71ced1f29a1828f0865f5cbf11 0
|
||||
SkillApplyInformation.cs SkillApplyInformation.cs 26e8eaaf3ae8e7580ff1f4e2f4a483fd31e916434bc3d73b6bf4f0fd7aaaa0eb 0
|
||||
SkillBase.cs SkillBase.cs bad47547ef24dd88e1c9144ff9de058ed614c639b4f2fa8ff32e6c901ae877f4 0
|
||||
SkillBaseCopy.cs SkillBaseCopy.cs 8fdedd8c85095d7179de8bba365e25c7603bd7ed126627b9e56a167d90c36636 0
|
||||
SkillBaseSummon.cs SkillBaseSummon.cs 0f8e928872f7faa449c2ca044ef344e930b32eae563a02eac46dd784dd238320 0
|
||||
SkillCardCountFilter.cs SkillCardCountFilter.cs 051f8cef087213aafd73d68eb30ab8e2537cecae22f67f858ac8b6ff855135f1 0
|
||||
SkillCardLimitUpperCountFilter.cs SkillCardLimitUpperCountFilter.cs a93e29158387ac9c2bf136aad4adfd53ff5f8f11c9fe3fa4befb1bd64c913c99 0
|
||||
SkillCollectionBase.cs SkillCollectionBase.cs 3d20acf096e5f879635a17005897b250eff32785e0c0abbca06353fe6c8318d4 0
|
||||
SkillConditionCheckerOption.cs SkillConditionCheckerOption.cs 6bb1f2c1abf0be55acda4c52272039d3d88e8af6c916517ae2218741a3b1ca36 0
|
||||
SkillCreator.cs SkillCreator.cs 6b90cd32dea619058e1cf942bdd288981495f7711a76bff8ccc9e2787e3f6439 0
|
||||
SkillFilterCollectionBase.cs SkillFilterCollectionBase.cs 3f89c34a04e4690ab3bbbdd14fd444c1d56787e6c806ac23e6725377e066db43 0
|
||||
SkillFilterCreator.cs SkillFilterCreator.cs c632b38c3d58fc93226ba2e2c331af3f193dbbb252073186ae3fd0940acc554b 0
|
||||
SkillFilterVariable.cs SkillFilterVariable.cs 8afc7dcc5b2bf19e9030a470c4f1cc02b900fa7300994460f473f82136359202 0
|
||||
SkillOptionValue.cs SkillOptionValue.cs 3cc7356d400b83acf6b5e8b26e752d52a9500607ede2e0ca46144f981b67b08b 0
|
||||
SkillOrFilter.cs SkillOrFilter.cs a7ae3aa228e461e2a961fdbc2abd98f7e733638eac38a11675394063002b8e8e 0
|
||||
SkillParameter.cs SkillParameter.cs 4f76863bf2f9e3beb45821fc02a8871ac818cc82b7893466a7e5ce45fde7cd53 0
|
||||
SkillPreprocessBase.cs SkillPreprocessBase.cs a91852ca6857a209f0784f092cf3ae86f1daf55f9f70b4fab6e89712811f4497 0
|
||||
SkillProcessor.cs SkillProcessor.cs 902564f33d55b95dbe4774ffade51622403936e89d3cf1dffd5febe637ef8de1 0
|
||||
SkillTimingInfo.cs SkillTimingInfo.cs f3cb1e1f05af1a40dff198233cddaa9f60d90913e71a3f58909ab971f04fdb20 0
|
||||
SkillVariableComareFilter.cs SkillVariableComareFilter.cs 6a30683c7d15d3124bb12fae13f7a9b786f22fc18e7edbf3306cdcdc13b6bbda 0
|
||||
Skill_attach_skill.cs Skill_attach_skill.cs d7795060c18e8f2a66571446b56f1a0b4243d96b6bf4dc96db9f9f828c93f237 0
|
||||
Skill_attack_count.cs Skill_attack_count.cs 85897dfd651df0b538f2a9a46d92f210d59718533168417b6a0b36626986617c 0
|
||||
Skill_cant_summon.cs Skill_cant_summon.cs d5dc8b71ef1fe16c01e4fab59925db48d505eec343c341cc66258acf24132779 0
|
||||
Skill_fusion_metamorphose.cs Skill_fusion_metamorphose.cs 9ac83f3d5fd462e1c60516b01833032b29f92aea8397623b7402f92ecd176d05 0
|
||||
Skill_metamorphose.cs Skill_metamorphose.cs 024a630261359a534f60ede3ea2a345409689558dbe9d9b4923fbf9502c241c0 0
|
||||
Skill_powerup.cs Skill_powerup.cs d5d0d9afbc2832159c07bacff5151e876294fc700f22114e0560de4aed085b6c 0
|
||||
Skill_pp_fixeduse.cs Skill_pp_fixeduse.cs f44836e39a2ca74374a5a6a8b5a3a77c149fc9342dda3317f012431241406b4a 0
|
||||
Skill_transform.cs Skill_transform.cs 3e2a56875f4ed9a892845d33a356c61ab1ea1a34a3c32ef10eb74ff12a8f87c6 0
|
||||
SlideObjectReceiveControl.cs SlideObjectReceiveControl.cs 25066b5bbcee488a0ae0d634e595354d194715895dd8f197c57740dc9a65d654 0
|
||||
SoundMgr.cs SoundMgr.cs 6446b13929ddfef0f1e421498e7e007e5f047fb0b9af01ad4cb155f10abb98c3 0
|
||||
SpringPanel.cs SpringPanel.cs a017e4bda72cd7cf6f5afd49033ac1d7bc1e1723f7c9a2c47ed03275ab680470 0
|
||||
StockReceiveMgr.cs StockReceiveMgr.cs ca15f8d8c7a532558071dd010fcecff5e05ef69891f8f364db4537ddf8f08fdc 0
|
||||
StockSequenceMgr.cs StockSequenceMgr.cs ff64a78a351e6ed010b0bf9ef00e84d6540109fe578cdbf2772e17d6d66ada38 0
|
||||
Timer.cs Timer.cs 0ac4b1fc273798a587d38987cc7a353d8c071a81c4b7ba293fdc59a9c2e1c804 0
|
||||
TimerMgr.cs TimerMgr.cs cfe8eb9a3405153f46ae962772d23934c39daaa34336cf6b309484c511509d1e 0
|
||||
TokenDrawModifier.cs TokenDrawModifier.cs ee94b1a849c7779f1c0fcaf0951c06cadcdfd0fe7c61182de4e1cc468af494cb 0
|
||||
TopBar.cs TopBar.cs e3365819277393c8892627127c124e72917b3c50e15a9bf549b44cf2e2fa8350 0
|
||||
TouchControl.cs TouchControl.cs 999089722cce89697ebef6b2da6cb20a4d33e10826160e6487f25282cc5713eb 0
|
||||
TurnAndIntValue.cs TurnAndIntValue.cs 1b08f6c6e7950738ea1be3b7910e62aa800eb945a1c5f17e910de63e040cabe9 0
|
||||
TurnEndButtonUI.cs TurnEndButtonUI.cs fd5682499e7764933d3d3d24c8b75e1bf6a863fc29fd7b75bdaf0f4df4efa8e3 0
|
||||
TurnEndTimeController.cs TurnEndTimeController.cs 3b516431616bcaac105e1c19c199fde08a74a4414ac2eb7264ecbf7aee4dc062 0
|
||||
TurnPlayerInfo.cs TurnPlayerInfo.cs 57656b4a000e98f9d9a75bcfcf13b1703c33a1c64f8f36f78afb0771f3caf43b 0
|
||||
TweenAlpha.cs TweenAlpha.cs d1f530a59b492a34140f88c0fecb88406289cc37817e822d3a36cd141ec03e7e 0
|
||||
TweenPosition.cs TweenPosition.cs 1426cfaf028ac956d7e1e286ad67189723116ca2dc4926a101ca1784c90ec22a 0
|
||||
TweenScale.cs TweenScale.cs dd50401e8ffca06da1d2ccaa9d21cccfef2007d8f786f0690b79880d13b5007d 0
|
||||
UI2DSprite.cs UI2DSprite.cs c0c50a2c03e76ab7ee5fc7b0bb6ede7462ca98cb338a3ac93d3310d6016e660c 0
|
||||
UIAnchor.cs UIAnchor.cs ed46145415d1c7a0fef11d38de99b4b851e92044455ab3297d3e487c09e5f9b2 0
|
||||
UIAtlas.cs UIAtlas.cs 7b4a3539816d0568b2175af231466e58b30e60596b5f0ff095e6781c37b6b6e6 0
|
||||
UIBase.cs UIBase.cs dbb46aa38d676f4c4a63adc182a0002a1a5fd74d5d72002a4e1771bfa7b30830 0
|
||||
UIBase_CardManager.cs UIBase_CardManager.cs 5ef52362dda6c063389cc681f0ee48212ab113973807c4f062eae207c3658153 0
|
||||
UIBasicSprite.cs UIBasicSprite.cs 82e6d31f92cdccf975a2113546968dd72737df67c94cb55015e8e808749b3446 0
|
||||
UIButton.cs UIButton.cs 6daadb36b071d0759d354c0368383bbc8fc7c7a419be5236a0a576e666b47ca8 0
|
||||
UIButtonColor.cs UIButtonColor.cs 527c1e1d9db0da61cdc0348e893b3df2bef7fadd046b9079abeb5641483da7b0 0
|
||||
UICamera.cs UICamera.cs 500eb9bb8f8bf4e7ed1f0073de80c5ccefe85273db00fc887295153d533c6525 0
|
||||
UICenterOnChild.cs UICenterOnChild.cs 474da8b0e6bab01a59538a47351a71f3a3564f9242c37a9adb29419dcaf91ee1 0
|
||||
UIDragScrollView.cs UIDragScrollView.cs e5acfb873e2c58489438689c35fb49f9bc6a626e42b8210d99131027c5c614b4 0
|
||||
UIDrawCall.cs UIDrawCall.cs 9450bbb24af68f5949415fdaf4d172e87f3666f50d04cc349a63317ba3ce16c0 0
|
||||
UIEventListener.cs UIEventListener.cs 2e8420b6be9c0a4432e84df935bcd72a3d59ae68eb9cbcb7fbf7c37d22fa08d4 0
|
||||
UIFont.cs UIFont.cs 18e19978b3c278ab7231cb284df3cf82cebfeaea893297d5114d1c9302396599 0
|
||||
UIGeometry.cs UIGeometry.cs c21d252b5f58d70ab94150caf931f94be10e7298d1972cdcd00e55fa7f8f07a3 0
|
||||
UIGrid.cs UIGrid.cs be8a6c35e77ba46793e07ff442fc18296acae8ec35dd265269b55a594abd3c93 0
|
||||
UIInput.cs UIInput.cs 416afc67f7ccb2ce5013e0aa16a6f88e56835addc4f44119d20d6902e9a2f63d 0
|
||||
UIInputOnGUI.cs UIInputOnGUI.cs b2580c5f417880c2439ecc10cf2be990ce36cb5c5cdd31106206160432bb07e3 0
|
||||
UIInputWizard.cs UIInputWizard.cs 2cb970f67fca7f6b87ab2549c2afbc49641a15d2ae105d621a60a7c43246f3e9 0
|
||||
UILabel.cs UILabel.cs caf2353d46a4a538b696f1cc11ca0d987d99905db8789a507df4fc726a29cb47 0
|
||||
UIPanel.cs UIPanel.cs da0a82c5db60138e81e2fabbf0ed39adbe43f0d98a52ce5e7204e90c6378b8e6 0
|
||||
UIProgressBar.cs UIProgressBar.cs c528c65a6c4c5f0b99f16ee5d956ea45b0b2b50d5f99c82590ca11b39b1681dd 0
|
||||
UIRect.cs UIRect.cs 26b0ed3873a80eccb7b3e110fa54f7ad732cfaae698aa5cbd7aec4c0f7b01d7a 0
|
||||
UIRoot.cs UIRoot.cs 457040148de9a4cd8e2e4c8dec76da7db4f19fc424100b5bb93897a5ede815a0 0
|
||||
UIScrollBar.cs UIScrollBar.cs f978224bdadcc33681a2a7010ff3bb18076353cbdbab34e72c813ac4c3bd7f5b 0
|
||||
UIScrollBarWrapContent.cs UIScrollBarWrapContent.cs 993320b7ab1a3db9f19803086af1c63b933e260aea2b2f5d55d77476a9155cfc 0
|
||||
UIScrollView.cs UIScrollView.cs 3934d12e088d3908a2b563ed2f74c7890dff5b29c8619b9a3400232515b78626 0
|
||||
UISlider.cs UISlider.cs 1bb12ff32ade8946f153cab1a17dacc463744a210bbef560515f597e2f437c5e 0
|
||||
UISprite.cs UISprite.cs b810fda0ad0f38c06b5777913c404c4a1a4b669273c13c0466cca967157f8d34 0
|
||||
UISpriteData.cs UISpriteData.cs 5ef69b73779d7935627e4ce8e9875ef6ba8695dc872453f547301748a82c6c96 0
|
||||
UITable.cs UITable.cs 7996e4ad3d48b3a05295671af25c135fdcb650cf7461e49a0d9e45ac2218771c 0
|
||||
UITexture.cs UITexture.cs 4a620309b4b36a2d217bd365427011fa40fbd3572105312c5e67cfd9cf52f811 0
|
||||
UIToggle.cs UIToggle.cs 4877e1f3dd9151b5dde182f2109999899d5ceaa3f390a8e0211424b77d8109dd 0
|
||||
UITweener.cs UITweener.cs 639742c82b7b38d98215bb9852df84c92819b28dbb9dcf43d834ed615897cbb5 0
|
||||
UIWidget.cs UIWidget.cs bcc292adf33c73b6e1091e74df776dee7808b10f1e8a5b6296f3efe5eee1ac03 0
|
||||
UIWidgetContainer.cs UIWidgetContainer.cs 86cb92fd2fe067189987d823f21f7492355d99490a37d03d0ca4b98ef6b2d014 0
|
||||
UIWrapContent.cs UIWrapContent.cs 59a7ac9b3b6a8774ff69869ccf8d0a013efc3999ac636ec43ed5d2a90cf5c301 0
|
||||
UnityEventAgent.cs UnityEventAgent.cs 0712c1fa51f3a6ac91d26d42972c3b4c0bef81431ac7e4424ca222c18746f46c 0
|
||||
UserAchievement.cs UserAchievement.cs 06f9a530d683c21c4c3697b0ae6b8c79e33197e504de7479d0ddfeb5b9c54014 0
|
||||
UserMission.cs UserMission.cs 2516293322a85ea704c66c79789c5b026a41024802aa464f943c019822424c06 0
|
||||
ValueWithOperator.cs ValueWithOperator.cs 8f7f0a6779b0acef60616d8b11397e9287a2fda5aabb5633931fe054d0488a95 0
|
||||
VariableSkillFilterCollection.cs VariableSkillFilterCollection.cs 81a4181b82be933b517204d193716c7b76af98f9c499635a1cded597b62dad30 0
|
||||
Voice.cs Voice.cs bb5adff9c75fb04af122f784aabce3238626eca7ecf63b34e3f1de41eb54f4f2 0
|
||||
VoiceAndWaitTime.cs VoiceAndWaitTime.cs e2ae6dec5f198e44489e2f13a4149d0f6081da625f72d0e0f0d50a9740b0a156 0
|
||||
VoiceDictionary.cs VoiceDictionary.cs 314e23ce11985b7f0b5e6a5753b4ba48813c4414972441cccc4c8efe15e81d21 0
|
||||
WatcherDisconnectChecker.cs WatcherDisconnectChecker.cs b2ec9803c3ed9e473233cfd4e2f805195df1f607936f7dde9ae1b7a7028dd847 0
|
||||
WatcherLeaveChecker.cs WatcherLeaveChecker.cs 7b969aacc9670f319bd45d344528524a3001b0152cc96e99631e89fa69354466 0
|
||||
Wizard.Battle.Card.InnerOptions\CardInnerOptionsBase.cs Wizard.Battle.Card.InnerOptions\CardInnerOptionsBase.cs e0c9e0e503c55e536924b17f7b2948423a79b85bafaf0ffa0d02b053667d69f2 0
|
||||
Wizard.Battle.Mulligan\IMulliganMgr.cs Wizard.Battle.Mulligan\IMulliganMgr.cs d49640f1076af798e9114ff9058b7fdfe5d5a194ed2420a6ef95122fa10d8c0f 0
|
||||
Wizard.Battle.Mulligan\MulliganCtrl.cs Wizard.Battle.Mulligan\MulliganCtrl.cs dbb991240686c69313e36a6e7773acbf2e877eefb1153a7ee985379755ca36c7 0
|
||||
Wizard.Battle.Mulligan\MulliganInfoControl.cs Wizard.Battle.Mulligan\MulliganInfoControl.cs 96b05ee5e79977b06a9f8d3e2f027b350baf06cbb49dc5d569b0cd4ca8030fda 0
|
||||
Wizard.Battle.Mulligan\MulliganViewBase.cs Wizard.Battle.Mulligan\MulliganViewBase.cs 641fd480d2682454e5eee8bf149498ad23811752900dcc43de5b994c77b76b58 0
|
||||
Wizard.Battle.Mulligan\OpponentMulliganCtrl.cs Wizard.Battle.Mulligan\OpponentMulliganCtrl.cs 68ad23dde55aaecf68521d861b4d61a5569caeb8b524058f2fafead7a79f727e 0
|
||||
Wizard.Battle.Mulligan\PlayerMulliganCtrl.cs Wizard.Battle.Mulligan\PlayerMulliganCtrl.cs 19da0c8f4d906a0151537e458feba897f497e0e58e98cc073af8ca17a46e992b 0
|
||||
Wizard.Battle.Mulligan\PlayerMulliganView.cs Wizard.Battle.Mulligan\PlayerMulliganView.cs 9ec7621e20fb7b26e60f532612dc2598bb6b19b8d5f6d10f9616a42ad203832a 0
|
||||
Wizard.Battle.Operation\IOperationCommand.cs Wizard.Battle.Operation\IOperationCommand.cs 71d184f986afd2d5160a6f7121ef8f80e50c018b48c21d5e3b6c14086df8c494 0
|
||||
Wizard.Battle.Operation\SimulationSelection.cs Wizard.Battle.Operation\SimulationSelection.cs efe3abe803236d55e3594f15b65dafd9fff41a526e291a217ce63d1b89ecb475 0
|
||||
Wizard.Battle.Phase\IPhase.cs Wizard.Battle.Phase\IPhase.cs dacb64f72e43ea5c900c2fba5abcae616e9243f2c80bd2129af54263636f5ad7 0
|
||||
Wizard.Battle.Phase\IPhaseCreator.cs Wizard.Battle.Phase\IPhaseCreator.cs 14fceafb7bfc643cc5022d38744b03926cda07bb67d1178b36a7ea614432259e 0
|
||||
Wizard.Battle.Phase\IResultPhase.cs Wizard.Battle.Phase\IResultPhase.cs ba6732b9a31dad0a47b298cc85e5ee8b067875189f0225b8abed93e3f059c442 0
|
||||
Wizard.Battle.Player.ClassCharacter\IClassCharacter.cs Wizard.Battle.Player.ClassCharacter\IClassCharacter.cs c1a985539e3b304260d87f4af6ec249d939dc0385e7cd902634296c4127d991f 0
|
||||
Wizard.Battle.Player.Emotion\EmotionBase.cs Wizard.Battle.Player.Emotion\EmotionBase.cs 8a8edb24dbf845b07acf74e70658335d8fe23f67105e1e70e814153b836d4fad 0
|
||||
Wizard.Battle.Player.Emotion\IEmotion.cs Wizard.Battle.Player.Emotion\IEmotion.cs 289e34823e07e0fa97f0259e3eeeeb1e0475f5c78aff8f6515f4208c7ad2f2e5 0
|
||||
Wizard.Battle.Player.Emotion\IPlayerEmotion.cs Wizard.Battle.Player.Emotion\IPlayerEmotion.cs fe56394e17ad9a097aa1ef3da9df965c05e62c9850c21601b49b6eb87841d1d8 0
|
||||
Wizard.Battle.Player.Emotion\PlayerEmotion.cs Wizard.Battle.Player.Emotion\PlayerEmotion.cs f5c02d38012cea684c668d7db6b07cdeaecd31072a6d2bc727fc2ddbbb5689ca 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
|
||||
Wizard.Battle.Recovery\BattleConditionPlayerInfo.cs Wizard.Battle.Recovery\BattleConditionPlayerInfo.cs 82270e49e674a227d787fca1094c22e7a658b20defb16c97aede6277b37687c6 0
|
||||
Wizard.Battle.Recovery\CardInfoBase.cs Wizard.Battle.Recovery\CardInfoBase.cs 3f0fae0f3f349df4971545fd110ca59e54f61fba2b12561e5bc2c7b7cbe480a7 0
|
||||
Wizard.Battle.Recovery\CemeteryCardInfo.cs Wizard.Battle.Recovery\CemeteryCardInfo.cs 46ce6f2b9545c53125d01c675a73b68d3bd15657043ade82d12faf4d164879ef 0
|
||||
Wizard.Battle.Recovery\DeckCardInfo.cs Wizard.Battle.Recovery\DeckCardInfo.cs 39d2175e71f975b31bd61541a1fdfc71ed23bc1d65c8975d144af84c36afefd5 0
|
||||
Wizard.Battle.Recovery\HandCardInfo.cs Wizard.Battle.Recovery\HandCardInfo.cs b0415ca48e21a5a7d9c5d71b0540155bddf640512bedfb61ce76b23eb6b3c477 0
|
||||
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\RecoveryController.cs Wizard.Battle.Recovery\RecoveryController.cs b433838072979be22767455344a4529b74ec0cc4261c4606ec2100897b7e8889 0
|
||||
Wizard.Battle.Recovery\RecoveryDataHandler.cs Wizard.Battle.Recovery\RecoveryDataHandler.cs 972832014b77ce9a1f5fff1df87a2222b8c62aedc2057bb931646e85bee24c08 0
|
||||
Wizard.Battle.Recovery\RecoveryOperationInfo.cs Wizard.Battle.Recovery\RecoveryOperationInfo.cs 37787cc77b98e18d1d4b9727d6bb640c04f47adf15ac463aab7b609e80a756ac 0
|
||||
Wizard.Battle.Recovery\ResultConditionInfo.cs Wizard.Battle.Recovery\ResultConditionInfo.cs 52d21760da08ba7b0e6e067cb7dc7a3890638ed6949305d3ad42a1fdf04e4743 0
|
||||
Wizard.Battle.Recovery\SetupConditionInfo.cs Wizard.Battle.Recovery\SetupConditionInfo.cs a5b78784312eb08496ef6db3b2c61a53957cf288c93c53714674972f5f4d2b9e 0
|
||||
Wizard.Battle.Resource\IBattleResourceMgr.cs Wizard.Battle.Resource\IBattleResourceMgr.cs 59e39c39afa8186f237fa879f5cdb043aa2dc99e5117eb0e1204df77b563d607 0
|
||||
Wizard.Battle/ActionProcessor.cs Wizard.Battle/ActionProcessor.cs 7c8b40454a4948dd48a58c0efc240703eab9a77aea0add64e542f6b06c7323af 0
|
||||
Wizard.BattleMgr\IBattleMgrContentsCreator.cs Wizard.BattleMgr\IBattleMgrContentsCreator.cs 7f1410027b146fe028bfadf5940599f1e576063dfa764e0be2754dfd7d19e30f 0
|
||||
Wizard.Battle\IBattleCardUniqueID.cs Wizard.Battle\IBattleCardUniqueID.cs 0b1559e61bfd02f584b4830ad53aa6ce521665c00ff44ee89dda2953c9c3d781 0
|
||||
Wizard.Battle\IInnerOptionsBuilder.cs Wizard.Battle\IInnerOptionsBuilder.cs 38160d48e9b01d686c0fd51a5743ee97afb742c97c1fda347460047a7d17b928 0
|
||||
Wizard.Battle\IReadOnlyBattleCardInfo.cs Wizard.Battle\IReadOnlyBattleCardInfo.cs 1b3456595cf0664d7b1e3324268f84cf913c3e2778ecbacc63b0c0ba72ab2e8c 0
|
||||
Wizard.DeckCardEdit\CachingCardBundle.cs Wizard.DeckCardEdit\CachingCardBundle.cs 3efcb163e9be8d023e12394684c83745081c500cf13a84b91674aab0eeace113 0
|
||||
Wizard.DeckCardEdit\CardBundle.cs Wizard.DeckCardEdit\CardBundle.cs ae56efeea60e2288b595d57f6b48bc83661ff8f22b0607746a39b080714e439e 0
|
||||
Wizard.DeckCardEdit\CardBundleController.cs Wizard.DeckCardEdit\CardBundleController.cs fa0cf42cf3d42e56dbcf0702ba21f15ccf4f4f38a7318472cbf8f473f7d97a61 0
|
||||
Wizard.DeckCardEdit\CardBundleControllerBase.cs Wizard.DeckCardEdit\CardBundleControllerBase.cs 2b782fafb3043b1c67799228bf41ce3997bfa7c0a23492e090512c3677c62820 0
|
||||
Wizard.DeckCardEdit\CardCreator.cs Wizard.DeckCardEdit\CardCreator.cs e0c36db83ca43934ae4220f914a5da027cf8cf8d7a81e593bc6782ae5fa7dde1 0
|
||||
Wizard.DeckCardEdit\CardObject.cs Wizard.DeckCardEdit\CardObject.cs 602634f96d9c4c897465a2d3cebca885c7696135cfd4ebe9881bdd70fb97bf88 0
|
||||
Wizard.DeckCardEdit\FilteringCardBundle.cs Wizard.DeckCardEdit\FilteringCardBundle.cs 920e6cb5399277f6f2e2825e6cd5610b5d4dffb50d4c87b540a1d4b53b5d97ca 0
|
||||
Wizard.Lottery\LotteryApplyData.cs Wizard.Lottery\LotteryApplyData.cs a1f736b119c42db936962ef4b57821e5f0aaf4ab1458b6c2f92f25c727e4efcc 0
|
||||
Wizard.QuestSpecialResult\QuestAssetManager.cs Wizard.QuestSpecialResult\QuestAssetManager.cs 13ae6dae3eb9d98368e13a0435e061fa70f0b8a5965c591e3bd41ff16d452947 0
|
||||
Wizard\AIAccelerateInformation.cs Wizard\AIAccelerateInformation.cs 0b2558c3d4b87221a849f6e5a6622b517c9fad31e500f2f1f04ac1b20545fadc 0
|
||||
Wizard\AIActivateCountTagArgument.cs Wizard\AIActivateCountTagArgument.cs e834197ddb81a1369cbd4f7ed3e3e5cd265809d0afe7a7e8f5e6313d9c7824d2 0
|
||||
Wizard\AIActivateCounter.cs Wizard\AIActivateCounter.cs 8cb3ed5c7d1d9ca266ce52425be67168a742605f949c7e60f68b4e728b1fa43c 0
|
||||
Wizard\AIAfterDamageStopCollection.cs Wizard\AIAfterDamageStopCollection.cs b98d31ef1308d6261f4c783fabf0a9a5b01e22b034986559c155c0fb81a2b247 0
|
||||
Wizard\AIAfterDamageStopInformation.cs Wizard\AIAfterDamageStopInformation.cs fb0e9d053208527fcda7d2b11e8e1488a3ce970519c2b132d0579011c57a7fe1 0
|
||||
Wizard\AIAttachOperateMgrBattleEventCache.cs Wizard\AIAttachOperateMgrBattleEventCache.cs 53f76574938d64f03f0adc0964cb8de4a133a37276c2643f81bec99ca932d27c 0
|
||||
Wizard\AIAttachPlayerBattleEventCache.cs Wizard\AIAttachPlayerBattleEventCache.cs 787f446c803ef676c8c4a7532228a57f65077d515c7e90eb787de3d3db728662 0
|
||||
Wizard\AIAttachedTagCollection.cs Wizard\AIAttachedTagCollection.cs 6a93e39cf4f6135437938199c00a4c5a6824b7a874d4a1b4f520a74978890dde 0
|
||||
Wizard\AIAttachedTagInformation.cs Wizard\AIAttachedTagInformation.cs 28169a7a9572155b3cf4da0238c4f9cdc00f07f0bbced0d310b7c1fdb6429846 0
|
||||
Wizard\AIAttackPreCheckInformation.cs Wizard\AIAttackPreCheckInformation.cs 763002d0cbfa6c60fdaabe638adebd991b731619cb317f038301519c55881b12 0
|
||||
Wizard\AIBarrierInfoBase.cs Wizard\AIBarrierInfoBase.cs ba0998c9b29c1e158df7e649c52c4611fa820905840a89afc79e6a966f7290c9 0
|
||||
Wizard\AIBarrierInfoCollection.cs Wizard\AIBarrierInfoCollection.cs 373046001ab854a988dd8e6e18b0d7727650bf5fa334ae83de77322265ef7e5c 0
|
||||
Wizard\AIBarrierPseudoSimulationInfo.cs Wizard\AIBarrierPseudoSimulationInfo.cs cb2f36694001eda21a03ca2292914d8c75c43ed2cf50b950c46d9409599c3866 0
|
||||
Wizard\AIBarrierStopTiming.cs Wizard\AIBarrierStopTiming.cs e0f3f5691214baa3bfa42b7d2333d05cbeaa43b962f6e58ba94e347173fec931 0
|
||||
Wizard\AIBarrierType.cs Wizard\AIBarrierType.cs 7e0ddaa801358ddeea09c87eb884102628547554b021d3e8bf307de506e0211b 0
|
||||
Wizard\AIBattleInfoReceivedData.cs Wizard\AIBattleInfoReceivedData.cs 48ba9398d89504579620ab39ac385ccda44e78d0b2b224a0ba76302cc5630b0c 0
|
||||
Wizard\AIBuffExecutingInfo_old.cs Wizard\AIBuffExecutingInfo_old.cs 402c325b09513f06789bd7ef919604d6e8274bbaf5b79693ab2c00962faff18e 0
|
||||
Wizard\AIBuffRecorderCollection.cs Wizard\AIBuffRecorderCollection.cs 6c61fc8962bef66dc3002e46fe7eeccabdb0e05a5cc3866ed548380da1e1f784 0
|
||||
Wizard\AIBuffWithTargetsInformation.cs Wizard\AIBuffWithTargetsInformation.cs 8badcf2dafc38e5b49cec01b5dfd253c04477e313844a624ddff26168a195bc9 0
|
||||
Wizard\AICannotAttackInformation.cs Wizard\AICannotAttackInformation.cs 338fdbc7e7a727c3c0ebfda141698d0bc19c3958d303f21bf92d188925c4b1ba 0
|
||||
Wizard\AICannotPlayInformation.cs Wizard\AICannotPlayInformation.cs 640571c76dd20a995018041244934a9f71d33e766bb4f6067f49a327028b4f9a 0
|
||||
Wizard\AICardData.cs Wizard\AICardData.cs 7ef51bfa266263adb76e3b8e75ca6de4f607cb669ea29c778a2482cac8cc1e93 0
|
||||
Wizard\AICardDataAsset.cs Wizard\AICardDataAsset.cs 39d4e3ac7e97b8b32b337eb696c8fca45a04a9cfcfbd0239a86d0a3dbd41b1c9 0
|
||||
Wizard\AICardDataAssetSet.cs Wizard\AICardDataAssetSet.cs 49bccb382d26f636277f90f5e0d638ff4c3a0a784c327885f5d5c9930098bbfc 0
|
||||
Wizard\AICategory.cs Wizard\AICategory.cs b4da86a28aac7ddb1151eb23521329e068b48274a6c4ca657975be7eb3e1be97 0
|
||||
Wizard\AIChoiceTransformCostInformation.cs Wizard\AIChoiceTransformCostInformation.cs 1e2066a8f30d209f4bb9c3902346130fc52125acca52ace2f56f5cad02bca05c 0
|
||||
Wizard\AIConditionExpressions.cs Wizard\AIConditionExpressions.cs da8d0450cbe4022236a9d2ca429812bed7f595d357d70564c53a69b0dec9b600 0
|
||||
Wizard\AICrystalizeInformation.cs Wizard\AICrystalizeInformation.cs 6375ba72325ef0be913a9f10efa7f67ede4ec67d01f1df5d44e2f4f05a12d959 0
|
||||
Wizard\AICsvLoadingInfo.cs Wizard\AICsvLoadingInfo.cs 0800e6d793b8c2c9d157d67a31aef7e4df2e954e46c07afbbe2f5e481c521f20 0
|
||||
Wizard\AIDamageModifierCollection.cs Wizard\AIDamageModifierCollection.cs 37e1407dd6350d13fc1ace8f1c7a447603d5d2c1ead2241a945ff91cebfd7622 0
|
||||
Wizard\AIDamageModifierInfo.cs Wizard\AIDamageModifierInfo.cs db83f7ebc48e6b921c7124f5a01b8ac3b94fef4576f4ca05a1c8c9bf4fb0908a 0
|
||||
Wizard\AIDamageType.cs Wizard\AIDamageType.cs 53e9b9bb6ff6f24b08e3a417f891d03e03c4d410a00593aea5cdc61e43d65508 0
|
||||
Wizard\AIDataLibrary.cs Wizard\AIDataLibrary.cs 6d7575b5f6fb9598ad0756fa07fab30804d846a8efc0a6290f7156f2b0f2aac7 0
|
||||
Wizard\AIDeckAcccessor.cs Wizard\AIDeckAcccessor.cs cb0ec83c0cea9f3fe95f8f6cdd3cd5bb5e52338dd3e095dc89685782c7b34ef1 0
|
||||
Wizard\AIDeckData.cs Wizard\AIDeckData.cs 6b07e0390a656f1e9d4cdf8127f5ab1a68fa1b99633b60ec8c6ea416b84a597a 0
|
||||
Wizard\AIDeckFileNameList.cs Wizard\AIDeckFileNameList.cs e04bd8c0739e473ed6cc8d6ed7d5058ced48647f143b46fe7b8fbcd98335485d 0
|
||||
Wizard\AIDiscardInfo.cs Wizard\AIDiscardInfo.cs 8d26fd1c9bb13f6684bf7be6e44ca974728a6c8b072fbc731c5068727a533c83 0
|
||||
Wizard\AIDummyDeckContainer.cs Wizard\AIDummyDeckContainer.cs 4dce0c7e7933f388a5c3c60d2a03c6df318f0c60c9fa5a49007decd5dde63e0e 0
|
||||
Wizard\AIEmoteCmd.cs Wizard\AIEmoteCmd.cs d71aa0e4310ad191cad59c02944644559e215e9bf5294fe58664484e6b9301cb 0
|
||||
Wizard\AIEmoteCmdType.cs Wizard\AIEmoteCmdType.cs b756e835578b5964ae2bc82abdb0271223d91864199ba2bce00d3bf5d35ac7db 0
|
||||
Wizard\AIEmoteCtrl.cs Wizard\AIEmoteCtrl.cs a98c88d9fc68bea88b332865348091d6b1b9afa489316dca836f091952d93d24 0
|
||||
Wizard\AIEmoteDataAsset.cs Wizard\AIEmoteDataAsset.cs 2019e29004374a2cfc31de144e218b219e2b4463fcbf212c83fc3f1c23ed4359 0
|
||||
Wizard\AIEmoteFileNameList.cs Wizard\AIEmoteFileNameList.cs de751646c462492238ec484d68e12e9fdf3445ca5d7891c6c13e5f5ccbfef6c2 0
|
||||
Wizard\AIEmoteMng.cs Wizard\AIEmoteMng.cs 9903c0649369f0ce0868056982734601c85d807c1b967b2450f964c5de8d3c76 0
|
||||
Wizard\AIEmoteQuery.cs Wizard\AIEmoteQuery.cs 07980237bee820ce3f47d46ae92ccecee4c9dc322e6633be878f5f611e41a720 0
|
||||
Wizard\AIEmoteSet.cs Wizard\AIEmoteSet.cs 45a051f97c432fa36e6f9fc545c59a086e9e5537fb040c62da8418870eeeb967 0
|
||||
Wizard\AIFunctionResultContainer.cs Wizard\AIFunctionResultContainer.cs 32c12c6a5326f256b7e50d83c7d1f2709b4e208b9a932255476f71e297dfa5a4 0
|
||||
Wizard\AIFusionSituationInfo.cs Wizard\AIFusionSituationInfo.cs abf01be029bd5fe69ec109d3541d452c92c21ebe849eea4ce5127165bc790360 0
|
||||
Wizard\AIGenerateTagOwnerTable.cs Wizard\AIGenerateTagOwnerTable.cs 5ef0628f2c7f6ba87e5ad684a92e79f2e29c8a9415bcc581890fca4efced4343 0
|
||||
Wizard\AIHandPlayEstimator.cs Wizard\AIHandPlayEstimator.cs a784c18d6db69769630084960b90572613ec6f35b20fa322bb5e77375f915639 0
|
||||
Wizard\AIHealRecorderCollection.cs Wizard\AIHealRecorderCollection.cs 87ceb977aa25f08c175da7c59d74f7f5fb9911402f10bdf4cafc783e7184f9a9 0
|
||||
Wizard\AILeaveStopCollection.cs Wizard\AILeaveStopCollection.cs aa64e33458c0ba01c24f82fb26f8fe830456dd17e1c62ca194526331bd2f45ec 0
|
||||
Wizard\AILeaveStopInformation.cs Wizard\AILeaveStopInformation.cs 4cfdbf2de116f487cfdb8c7922db6ffd753e424004de18d7393ede500b945f80 0
|
||||
Wizard\AILethalPlan.cs Wizard\AILethalPlan.cs 248a596eb9e5af3c8df3d3c71676fd69409b231771b72bf004ccf4def7d11ca1 0
|
||||
Wizard\AIOperationProcessor.cs Wizard\AIOperationProcessor.cs 987a69fce793dded4c54d03f52dfe9be47eddc6695b7d99ed6447ec632a13eb3 0
|
||||
Wizard\AIOperationSimulatorAccessor.cs Wizard\AIOperationSimulatorAccessor.cs 7b129b65a6fead48a9ab950b3bfe7cc0dc80559a6022b2f2a51a6ed9bfefa501 0
|
||||
Wizard\AIOperationType.cs Wizard\AIOperationType.cs 2e26a9ca0d4c3a57710ec8d19f6f1481ae54c0e3f7a5510080e6bb2bdcfcea81 0
|
||||
Wizard\AIOwnSkillProcessRecord.cs Wizard\AIOwnSkillProcessRecord.cs 6dfc068e5c01160fec9067d925c28fca631593303a37eb01a73f572826127110 0
|
||||
Wizard\AIParamQuery.cs Wizard\AIParamQuery.cs f72f4e7957b25eaf73fd016678ff0a359cf290570c43307d4d557e4c0848cbf2 0
|
||||
Wizard\AIPlayOutAction.cs Wizard\AIPlayOutAction.cs d92398f58ff03224c5a3b4d3c11bb8a3e271c29f940801ca0fa2635897d52c57 0
|
||||
Wizard\AIPlayTag.cs Wizard\AIPlayTag.cs 2dba08af840cde17384636259c1a8736220d48ca61a94716db6d0ee5e6ed5e25 0
|
||||
Wizard\AIPlayTagAsset.cs Wizard\AIPlayTagAsset.cs 1b87a0193f4cf8653bafd6daaddddf662c91a7c956e2d98955b9d2c252aa2a93 0
|
||||
Wizard\AIPlayTagType.cs Wizard\AIPlayTagType.cs 98a5f5b22a3f7efe66cd9bfc9314bb71cd25d28d06a660a0dba542cbd62dd62d 0
|
||||
Wizard\AIPlayedCardContainer.cs Wizard\AIPlayedCardContainer.cs bfa459b95817c77dfdc3b14d445ed256c17b3f4fcdf902ed19ce08b408c8673c 0
|
||||
Wizard\AIPlayptnRecorder.cs Wizard\AIPlayptnRecorder.cs 12efcd9a633f4d916a07b032e457c371a34e62e624d6d65a44ec11b24b6a652c 0
|
||||
Wizard\AIPolicyCollection.cs Wizard\AIPolicyCollection.cs b5971a463a61c052b287a24e544367117555d0572989de2dbeaf5f27bd845384 0
|
||||
Wizard\AIPolicyCollectionContainer.cs Wizard\AIPolicyCollectionContainer.cs cb2fb55f80cfef1254b5d7fa9587b9b80f3f46d7106146b62039bb5dfa19607d 0
|
||||
Wizard\AIPolicyData.cs Wizard\AIPolicyData.cs d121c5671ed8921f300da67ff87ce400673848c8884998b558c87622d474b12d 0
|
||||
Wizard\AIPolicyDataAsset.cs Wizard\AIPolicyDataAsset.cs 9eb4a2b26aaa831c0c24845ab2484f7647172bb1cd7d9619e67b235a5cdf03d9 0
|
||||
Wizard\AIPolicyType.cs Wizard\AIPolicyType.cs 139ba46866994d03e271e10351bae6960a724f4e14e2efe7ca7567bf0ff96567 0
|
||||
Wizard\AIPolishConvertedExpression.cs Wizard\AIPolishConvertedExpression.cs 2c37d1665811937b1103d742d6154a88d9d6549e926c842bc4461456ea63efb4 0
|
||||
Wizard\AIRealActionInformation.cs Wizard\AIRealActionInformation.cs bace0d857b7345017e6d76cd2485d5d12bde4c7357046e04b483d19f4a37e502 0
|
||||
Wizard\AIRemovalType.cs Wizard\AIRemovalType.cs a21dcef29cd2a5b50cac7ddc4e6dc046049a94cf0b607985fd211216c0f46ec4 0
|
||||
Wizard\AIRemovedTagCollection.cs Wizard\AIRemovedTagCollection.cs 9131b82dd4626aacbc8b85fe09e1c93049e2fe4f1dc0d748e6dc99965731de66 0
|
||||
Wizard\AIRemovedTagInformation.cs Wizard\AIRemovedTagInformation.cs 02359747ab3ef0417f6d9a57b675e1cc76f0d7739acf37c81c1fa0d4f4d9675d 0
|
||||
Wizard\AIScriptArgumentExpressions.cs Wizard\AIScriptArgumentExpressions.cs f84b6e5cd8c7ace4cca42f83ef307ce9ec20b98b7518aecec372f4eb36d2cd0d 0
|
||||
Wizard\AIScriptCalculationToken.cs Wizard\AIScriptCalculationToken.cs 6ab1018faf72d60041c56cc77c4d0bf5aa656a014f82223df64280660e6d963d 0
|
||||
Wizard\AIScriptTokenArgType.cs Wizard\AIScriptTokenArgType.cs dac60cafacf16e8be5d4152f77e601c78380fc45ee18ea50a5249141fcd7a26d 0
|
||||
Wizard\AIScriptTokenBase.cs Wizard\AIScriptTokenBase.cs 1e170b08af4926101bb84e7a907b25b95315d30c391e3f90578ad6d649f015ce 0
|
||||
Wizard\AIScriptTokenFuncType.cs Wizard\AIScriptTokenFuncType.cs 2a67c3c917fc92479a1d0d65407bbe9cde91517d70d149bf97133095af3c5dc6 0
|
||||
Wizard\AIScriptTokenType.cs Wizard\AIScriptTokenType.cs 25fa54f16c1a614e75888da9b01bf82c48484f221e34135f54ed45f2f594c128 0
|
||||
Wizard\AIScriptTokenVariableType.cs Wizard\AIScriptTokenVariableType.cs 31a17a1a1892b28d1836475adb5f5fb6d8371579c4e117b8e934d1520394734f 0
|
||||
Wizard\AISelectedTargetInfo.cs Wizard\AISelectedTargetInfo.cs e5bd0b74bb61210fb74c7e32ea756c210b11606ff3ee8fd50db2eb3410b594b6 0
|
||||
Wizard\AISelectedTargetInfoSet.cs Wizard\AISelectedTargetInfoSet.cs 7ce8704230b0e3845ab6fca518d57fed7014bc865be3d0068e6e1b6e0dfbf3cd 0
|
||||
Wizard\AISetUpData.cs Wizard\AISetUpData.cs 40fd759ff03db75b0ce7037a189ea5f5a9b41ebde0e7a534f7af001765922f2a 0
|
||||
Wizard\AISimulationBuffInfo.cs Wizard\AISimulationBuffInfo.cs a1220a11d4f07b0136353ee043781445021ecc4a2c20280010c063202eade9d8 0
|
||||
Wizard\AISimulationBuffInfoCollection.cs Wizard\AISimulationBuffInfoCollection.cs 5566d56d5ddfec6b112435eb625be7182bb2c8c7c5cd749f482034df6aff84c9 0
|
||||
Wizard\AISimulationPreprocessRecorder.cs Wizard\AISimulationPreprocessRecorder.cs 488c557427ce2e33b752cdf7dd4df6fedbc6b84f18009deddccd653f95211cdf 0
|
||||
Wizard\AISinglePlayptnRecord.cs Wizard\AISinglePlayptnRecord.cs c627b1e1f8f0bff9d872b97ceecb111bc827346fae29517ca4a52fc96c3a78b5 0
|
||||
Wizard\AISinglePreprocessRecord.cs Wizard\AISinglePreprocessRecord.cs 665cdff4396f8628d7a4c237bf68060376bb95f3b8497efc0dadcfce5e4ccd1e 0
|
||||
Wizard\AISituationInfo.cs Wizard\AISituationInfo.cs a2c623dcb04b510aa1040a03c881a2653f1c8daf03965e605f72936eb1326e00 0
|
||||
Wizard\AISituationTriggerInformation.cs Wizard\AISituationTriggerInformation.cs d555644f8f6aeaadf504f8cb75790d39e5cc767a17d0b570d78428e13cc6487a 0
|
||||
Wizard\AISkillProcessInfoCollection.cs Wizard\AISkillProcessInfoCollection.cs e879231368bfccdddd19c35581434aa64bb098c54568f26badde1e7eb63af762 0
|
||||
Wizard\AISkillProcessInformation.cs Wizard\AISkillProcessInformation.cs 363a1cde610924a277d4fd8fe2f3bec987092303f925ddd15b9aefc0da3fcc23 0
|
||||
Wizard\AIStyleData.cs Wizard\AIStyleData.cs b75cc3deb327eae14e96b093b08f66eab487dec8b59a30c64cee250bf7529f28 0
|
||||
Wizard\AIStyleFileNameList.cs Wizard\AIStyleFileNameList.cs 1a15d2ba07c655c979cbf8834db7bafda84903e6acc1b26f5bedcce4237f8154 0
|
||||
Wizard\AIStyleKey.cs Wizard\AIStyleKey.cs 6de01f9b6e4e7facd907e2d36e12a8a2313645438595bf25f36dc7fc67276470 0
|
||||
Wizard\AIStyleQuery.cs Wizard\AIStyleQuery.cs 6169604f23901d24f1bf2781c25d17284e52b21a1cf85795e3ea89b5fe017031 0
|
||||
Wizard\AISummonedCardContainer.cs Wizard\AISummonedCardContainer.cs d0bfb2ed4b33f3945b9e04fdf8c55695164c4c16612c1e488794afce79f7601c 0
|
||||
Wizard\AITagCollectionContainer.cs Wizard\AITagCollectionContainer.cs 27d58c22dca581c88747a8638279d60ab08d3171ba99e2e090e9633299c0196d 0
|
||||
Wizard\AITagPreprocessCollectionBase.cs Wizard\AITagPreprocessCollectionBase.cs e34637b6e62216a23657c91a3f1ee73e97e59da9d9bd081efd4ca6d4e34f1e1d 0
|
||||
Wizard\AITagPreprocessCollectionContainer.cs Wizard\AITagPreprocessCollectionContainer.cs 00084fc071bdfb48b7e631456f962be85c8118c6e5bef2a45b9c93593a1e8f74 0
|
||||
Wizard\AITagPreprocessCreationOptionBase.cs Wizard\AITagPreprocessCreationOptionBase.cs eb9315ebfb1987f84580adca2a88e8dc15133aa04db4d561621246deb65ac87e 0
|
||||
Wizard\AITagPreprocessInfoType.cs Wizard\AITagPreprocessInfoType.cs 665eae10681ddf1d887f7a74238f34547fc03e16525b423b420a29e994059611 0
|
||||
Wizard\AITagPreprocessInformationBase.cs Wizard\AITagPreprocessInformationBase.cs e18a087047b3036f679ae974be8b2a50a5ddf88203ff29d6b626c9ae25db0002 0
|
||||
Wizard\AITokenIdCollection.cs Wizard\AITokenIdCollection.cs dbf0f2fd026e6d20846c02ffec5fa32f1c659fb4f00b3a1c6e1f30638499b74e 0
|
||||
Wizard\AITokenInformation.cs Wizard\AITokenInformation.cs 911f946fad7fb683cd339c1d3582cc13e81e96c17eb241f260aebf584c8a8914 0
|
||||
Wizard\AITokenManager.cs Wizard\AITokenManager.cs f0ce94639584c1b363526168b4fd389f53a55736dd6638eeafa03d2d5d7aa670 0
|
||||
Wizard\AITokenPool.cs Wizard\AITokenPool.cs 7168cc127e6d2d3f8fb71f084ec127d1df61ed7c146aa7180702b7056c747320 0
|
||||
Wizard\AITokenType.cs Wizard\AITokenType.cs ce54ae877e3ca2b888bcf80ff8b8494165fec70e7a4f13feea2e8fe03dfd09ee 0
|
||||
Wizard\AITurnEndStopCollection.cs Wizard\AITurnEndStopCollection.cs 136f36ed4e72e510181ac0402fcf399bb5f535fd7d31561be7f518b50e8f51f0 0
|
||||
Wizard\AITurnEndStopInformation.cs Wizard\AITurnEndStopInformation.cs 281335cf192a4366bd3199b0da5efaec06580652e644dd6b7c2c268cc51aa37c 0
|
||||
Wizard\AITurnStartStopCollection.cs Wizard\AITurnStartStopCollection.cs 7dd089da37cc3d173715402a51a39f48f0292d8e203c027901f87f23fe4311ba 0
|
||||
Wizard\AITurnStartStopInformation.cs Wizard\AITurnStartStopInformation.cs 76e8db6a6a26c267e5b8e07d9160ad9dad0576f0e79450829a709ae388dd231c 0
|
||||
Wizard\AIUseMinTagCollection.cs Wizard\AIUseMinTagCollection.cs 49be88a6eed6e2dfbf241579edcc26289cc55b2c44b69c20741a4331a1378318 0
|
||||
Wizard\AIVariableResultContainer.cs Wizard\AIVariableResultContainer.cs 56033f00c8e3140cbd10eb664754c95023508f39bea9feea9d23304207494ff6 0
|
||||
Wizard\AIVirtualActionInfo.cs Wizard\AIVirtualActionInfo.cs 801c6b5e247be407dcdeec45bc9a2f5f2410f3a29e011a17cb8d07ebf9ed62ba 0
|
||||
Wizard\AIVirtualAttackInfo.cs Wizard\AIVirtualAttackInfo.cs 16138524d2911ef07eae4739930e82dc39ea7a9602b9e52799ff1e8ea1fc3b94 0
|
||||
Wizard\AIVirtualCard.cs Wizard\AIVirtualCard.cs f37b7687359543b67e6934292a0d187326ed1ac3dd097e3e124f938832fa675e 0
|
||||
Wizard\AIVirtualCardBuildParameterCollectionBase.cs Wizard\AIVirtualCardBuildParameterCollectionBase.cs 14896f9714593475b4d33269f56967d442796011b453f667db13d97178ca33c9 0
|
||||
Wizard\AIVirtualCardParameter.cs Wizard\AIVirtualCardParameter.cs 0efb3001f156f1c6361b6794f06dd87bea04cc38c7b745d8df5f0b9d36c59ec6 0
|
||||
Wizard\AIVirtualCardRealTargetInformation.cs Wizard\AIVirtualCardRealTargetInformation.cs 4a234fd97705c34f3dda6849640115395632aaff4d354696cd8c35afa07be181 0
|
||||
Wizard\AIVirtualCemetery.cs Wizard\AIVirtualCemetery.cs c2707eeca2eb4d065b4b056abf85843509bd3dbb82b91d4747437f2887e89df2 0
|
||||
Wizard\AIVirtualField.cs Wizard\AIVirtualField.cs 0219d29471a281bbbfa4f60c07749a9e7d34077cff8221880fb96ec5b4977fae 0
|
||||
Wizard\AIVirtualFieldBuildParameterCollction.cs Wizard\AIVirtualFieldBuildParameterCollction.cs b3254b56ce4ee183df65a293880648998f8d909ca753d1f9db9acaba57c9256c 0
|
||||
Wizard\AIVirtualFieldRollBackBasicProcessor.cs Wizard\AIVirtualFieldRollBackBasicProcessor.cs 81541ea41b43625a1a7a52eebed6ebb76a8557fcdba4e3ca77849a5139ae4057 0
|
||||
Wizard\AIVirtualFieldRollBackRecord.cs Wizard\AIVirtualFieldRollBackRecord.cs e4be2b685c75a93716faae94ab5a6ad2577436bcd9296490fc1ccc396ae57d60 0
|
||||
Wizard\AIVirtualFieldRollBackStackProcessor.cs Wizard\AIVirtualFieldRollBackStackProcessor.cs 91c7aa2ad8aa81b00a9546775e5c877c7fd952050363b4d04ff236c401b8d6db 0
|
||||
Wizard\AIVirtualFusionIngredientsInfo.cs Wizard\AIVirtualFusionIngredientsInfo.cs 2139b7abc3dda0c64b9ef32312249e699f7420d46192a1213552c04bdf015497 0
|
||||
Wizard\AIVirtualTargetSelectAction.cs Wizard\AIVirtualTargetSelectAction.cs 23df015a493f920e8f0eaf3e88aafb0f8397fac75d7b17d131ac30f2b5404733 0
|
||||
Wizard\AIVirtualTargetSelectInfo.cs Wizard\AIVirtualTargetSelectInfo.cs c579901ee72ff4da84d5cdbc379897060ef0a7d2dbf6d03cafbf75585d47adb6 0
|
||||
Wizard\AIVirtualTurnEndInfo.cs Wizard\AIVirtualTurnEndInfo.cs 57004c97cdbcd0a560ef3e3053a28391e92e99ace0ccd2ff631f27a1180950dc 0
|
||||
Wizard\AIVirtualTurnStartInfo.cs Wizard\AIVirtualTurnStartInfo.cs c5bab0e979a9a11eedcdd3178b608f22f0db55ab9dd0d3b46532a64028945eef 0
|
||||
Wizard\AI_LOGIC_LV.cs Wizard\AI_LOGIC_LV.cs e6a97a7f33f421973293eff0f046a0a8422ddc4103f3fb7b77a114c0f6b7b9d6 0
|
||||
Wizard\ActivateCountTagCollection.cs Wizard\ActivateCountTagCollection.cs fb0b8de915750511da274995871c184582f447c1b1d5a6569960db243bf1f482 0
|
||||
Wizard\AddCardToPlayoutPlayPtnTagCollection.cs Wizard\AddCardToPlayoutPlayPtnTagCollection.cs be590b8fc0998c928f0130913b0aa923eaff662f21368401ab13ea2d763f349b 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
|
||||
Wizard\AllyPlayBonusTagCollection.cs Wizard\AllyPlayBonusTagCollection.cs 04260820f1240296416afe9d579b64e16c953293375bd26d7b956a0f37341d16 0
|
||||
Wizard\AttachedSkillInfoReceiveData.cs Wizard\AttachedSkillInfoReceiveData.cs 40db29bd9eeb41d3a0e15aab0a91ddee7a24709d5742d05584b8a76100522aaa 0
|
||||
Wizard\AttachedSkillInfoReceiveDataCollection.cs Wizard\AttachedSkillInfoReceiveDataCollection.cs 9fccf7143e59065644b7cb96f1bb56f52ef4a5353eae76c1a161846544222c6a 0
|
||||
Wizard\AttackBonusTagCollection.cs Wizard\AttackBonusTagCollection.cs ead7de323b51ab6321e12b5ce37616db9d75cb4ba1c8b5887fd929383cd16586 0
|
||||
Wizard\AttackByLifeTagCollection.cs Wizard\AttackByLifeTagCollection.cs a67f23b492a670013588dee1fd854d9bcb9ae3c3a62a9b8020a57e40e2578a5c 0
|
||||
Wizard\AttackTagCollection.cs Wizard\AttackTagCollection.cs dfd6643aae0b0677bdd31fd52845c995bf14d4a78b4818d272f20f39e7c6340e 0
|
||||
Wizard\AttackableClassTagCollection.cs Wizard\AttackableClassTagCollection.cs 87f2a7fc4a2cca3d35ad802fbf745b621c94eb9b19e4f4414b763902064303cc 0
|
||||
Wizard\AvatarBattleInfo.cs Wizard\AvatarBattleInfo.cs d3417046e0acea3e6806fee941f30ee543f122d34956412ba61f5822e42c6a95 0
|
||||
Wizard\BanishBonusTagCollection.cs Wizard\BanishBonusTagCollection.cs 02d6a7110fe4433971e2499430f5bb929d665c70805a9c148f4b4108324bcb9c 0
|
||||
Wizard\BanishTagCollection.cs Wizard\BanishTagCollection.cs 9e9bfded276a6d2cdd2f21775da1d55d1b744b5a950d52ad369a0fac152f68b4 0
|
||||
Wizard\BannerDialog.cs Wizard\BannerDialog.cs 4c2e9f967bb9166bb2891bc9f01e16be05bad5a4734da3dcac094ec9419dcc9b 0
|
||||
Wizard\BaseParam.cs Wizard\BaseParam.cs aafba52c5b868cb4b3c9736c6706113d8d521c754bdc9b955c8b9deda221c722 0
|
||||
Wizard\BaseSeriesData.cs Wizard\BaseSeriesData.cs b5f6431a7d175f16784a36d07707c81d6f4ad0942135a0ee636de3de5caac758 0
|
||||
Wizard\BaseTask.cs Wizard\BaseTask.cs f6e3ff4403c4ec32bf1d37807c1f8b51e419caa7feb6fd81887ae09c6d7e1348 0
|
||||
Wizard\BattleBonusRateTagCollection.cs Wizard\BattleBonusRateTagCollection.cs cb619934e00027224da854ecdaae8e8c28757db722bfa2047f4cae761eb251db 0
|
||||
Wizard\BattleBonusTagCollection.cs Wizard\BattleBonusTagCollection.cs eef79191a777a20d78afb363f8e18cc4f3a82767b7aff749ef1322e9041a4842 0
|
||||
Wizard\BattleButtonControl.cs Wizard\BattleButtonControl.cs c01b03426b6150426c112d89cd9f21153dcf4bd7b587b6e6ff2dcbd954e9ddfc 0
|
||||
Wizard\BattleCardRealTargetInformation.cs Wizard\BattleCardRealTargetInformation.cs c42a18e1aa2e252cca98136dca1350cf4a6a3c0314e7362691ceceb4a2375c23 0
|
||||
Wizard\BattleInformation.cs Wizard\BattleInformation.cs 85808cdf3afae2207317b68833c14d5e65c10de6b630e7f5ed436ce4bfbe55cb 0
|
||||
Wizard\BattleParameter.cs Wizard\BattleParameter.cs a034f5db7cd37a8d8fc3e4b14a0e575694e236dbd6ca307d9ab1f827b99258c7 0
|
||||
Wizard\BattlePlayerPair.cs Wizard\BattlePlayerPair.cs ff8d3eb14f7bb8386d29f2891a1c5665ea857171bdae23493033729180b21bec 0
|
||||
Wizard\BattlePlayerReadOnlyInfoPair.cs Wizard\BattlePlayerReadOnlyInfoPair.cs da9aacfc922101e0b5d741b0233dc3f8597fd07d339a5366d037745b8c2a0a09 0
|
||||
Wizard\BattleRecoveryInfo.cs Wizard\BattleRecoveryInfo.cs 0a148f60eb5689ef33f58d98f43ea7f437702750dce77d9fbd7dc261118d44f4 0
|
||||
Wizard\BeforeTransformVirtualCard.cs Wizard\BeforeTransformVirtualCard.cs 96c43888d9a72d8bc8b4dcb86439e635fd5919f9b9499e4ba92035ca0bebd4bd 0
|
||||
Wizard\BossRushBattleData.cs Wizard\BossRushBattleData.cs 5b9afe850670e86c4721cb59e61d3bba4cf78d99e66c328ef778d183c4c06084 0
|
||||
Wizard\BossRushInfo.cs Wizard\BossRushInfo.cs 5e0c725f4d19e75b060bc8545f857c0f91dab77e994dcf1fbdbc67b2554a627f 0
|
||||
Wizard\BossRushLobbyAbilityCandidateData.cs Wizard\BossRushLobbyAbilityCandidateData.cs eeae65a4867ad4514df39f64edb586c9c3b5fe31ea9b58ac1f86e7b9baf66e7a 0
|
||||
Wizard\BossRushLobbyAbilityData.cs Wizard\BossRushLobbyAbilityData.cs 3a508f41271c634e404f7e84dfcb817d670ed03d919a551af7b79da062726ef8 0
|
||||
Wizard\BossRushLobbyBossData.cs Wizard\BossRushLobbyBossData.cs 9d6a1803f125be2c656e260e12634a466f074527daca5ef74c6130e24bbf6463 0
|
||||
Wizard\BossRushLobbyData.cs Wizard\BossRushLobbyData.cs c146839c5aec76d23cc93048a16b4f14e918611567810d669b7e1be840d582d1 0
|
||||
Wizard\BossRushSpecialSkill.cs Wizard\BossRushSpecialSkill.cs 13a0cc8b52ad626bbbb230cc07ffdda3c9ce695110c06a99c7e1e96006eaed88 0
|
||||
Wizard\BounceBonusTagCollection.cs Wizard\BounceBonusTagCollection.cs 8435ca19e8c937f1ad5c432048c453274e04bbb6dcf10bc0212787a78757cb91 0
|
||||
Wizard\BounceTagCollection.cs Wizard\BounceTagCollection.cs 39c3e32cf78aa1b7bf3679c40c7b1ce6f1d5b4f5775bfde82f35c14a94771f00 0
|
||||
Wizard\BreakBeforePlayTagCollection.cs Wizard\BreakBeforePlayTagCollection.cs ae0b615a06fb58b1b042669ee413e009fe00e22ed26e6a60fd7c08f4173e4631 0
|
||||
Wizard\BreakBonusTagCollection.cs Wizard\BreakBonusTagCollection.cs 45a5349698ea333a002e57bc55224cd6b418573ba64daa15443e42c811fe9250 0
|
||||
Wizard\BreakFirstTagCollection.cs Wizard\BreakFirstTagCollection.cs 96ba8fc479d7660a14317152215ec7c0580751851cc31fdf0eac439ee7f6dab8 0
|
||||
Wizard\BreakLastTagCollection.cs Wizard\BreakLastTagCollection.cs d60299bc656680461cbb2281b6c67f06bc988c6383ffcad6d91ff3e4c504d39f 0
|
||||
Wizard\BreakTagCollection.cs Wizard\BreakTagCollection.cs 5e6cdeacf56abe9077830a5baa5e0771c9df0286699365589fb097df4fa8e65a 0
|
||||
Wizard\BuffBonusTagCollection.cs Wizard\BuffBonusTagCollection.cs 1ba4e258a1b6c2aa9c823d8ff70bdc0712fc407d9e831272a81f9244271eae16 0
|
||||
Wizard\BuffTriggerTagCollection.cs Wizard\BuffTriggerTagCollection.cs 99d3a0179a6b33a85efaca75a7e2632fa0c0fc0073be168c83d7116e1b37602a 0
|
||||
Wizard\BuildDeckCard.cs Wizard\BuildDeckCard.cs 2f49148b8472e0a45edf5d4360902605658057db7c34abe6d3e8e46f7f299367 0
|
||||
Wizard\BuildDeckSeries.cs Wizard\BuildDeckSeries.cs 8f6144e6cb43e2a4924b3a5ebc06795d67461ea029bbc76126e97300532ba159 0
|
||||
Wizard\CantBeAttackedTagCollection.cs Wizard\CantBeAttackedTagCollection.cs f7460a54faa7c37f3ba07645ac6d65995eee549127907ca1e77d5aecef4ea6b0 0
|
||||
Wizard\CardCSVData.cs Wizard\CardCSVData.cs 228543612535910f39c39c273c6b55ab65214e2545bd77f97b38a6926ebc1ae4 0
|
||||
Wizard\CardCraftPanel.cs Wizard\CardCraftPanel.cs ae136c5d1bfae1ea48d57669c114d0aa03f248a0bf7cef70c35e6371f9a44123 0
|
||||
Wizard\CardImageHelpder.cs Wizard\CardImageHelpder.cs d7145108a61a669a9377af5eb021afeb0eb6a8e76a8311c6e7140abec0fe9725 0
|
||||
Wizard\CardKeyWordCommonCache.cs Wizard\CardKeyWordCommonCache.cs a729b53da036c709d41b0dfc6a3c242ca336cda412ec538bb8296305c5123a9f 0
|
||||
Wizard\CardListTemplate.cs Wizard\CardListTemplate.cs b41f32001b001470ac9aff768b4be92c3579999fe24f5de7646af80f31185fd1 0
|
||||
Wizard\CardListsForReference.cs Wizard\CardListsForReference.cs 71df5335307ff56a2db97fe44bddd70d1e33425314de3ea15e35a74a8a48cfd7 0
|
||||
Wizard\CardMaster.cs Wizard\CardMaster.cs 12b77985327a1e117d6af30c02a617c8de06203e73c77d1e16b86bdc2b312011 0
|
||||
Wizard\CardParameter.cs Wizard\CardParameter.cs a7ea3ce6d2efad06697ea5e9ea2ce0b38280139b2e55a55f0c48aca2c99109fc 0
|
||||
Wizard\CardPrm.cs Wizard\CardPrm.cs 41697c1ed692386772dfed98690e9a3471cbc295460b8fef2c7b5cbdfd223247 0
|
||||
Wizard\CardSetName.cs Wizard\CardSetName.cs 943b0083d367048c7cdebcfdc2780aee27f6d9f1adfafec7cb720830bb614f6f 0
|
||||
Wizard\CardSetNameMgr.cs Wizard\CardSetNameMgr.cs 146a4a804055f9c3341301c3823bda3cf3f560e8032b5df46e1b7fca87009649 0
|
||||
Wizard\CenteringUIWidget.cs Wizard\CenteringUIWidget.cs 1ddc0ddbbfcd6638010dc6889706b3a5944ac5b122103cf24f9c0d7adde66efc 0
|
||||
Wizard\ChangeInplayTagCollection.cs Wizard\ChangeInplayTagCollection.cs 0e52c7c354104e962110f89f72971455b6d1835ee41c01e07886fee28491dcd0 0
|
||||
Wizard\ChoiceTagCollection.cs Wizard\ChoiceTagCollection.cs ee83f8d599d0592e679c11c5c208841c1d044088b38e12604016e5f673f77cf9 0
|
||||
Wizard\ClashBonusTagCollection.cs Wizard\ClashBonusTagCollection.cs 2290a26a5cf6378f6dbaaa730edc33893fe4b3a19257f6f0a69e297ff3f07a71 0
|
||||
Wizard\ClassCharacterMasterData.cs Wizard\ClassCharacterMasterData.cs ccf929714e0900b6f422d46da6de8cb3c0702258ceb314509b6d7beac112fa93 0
|
||||
Wizard\ClassInfoParts.cs Wizard\ClassInfoParts.cs 75b6923688f22d49ddc97db55ecb6daae2c8c4d444ccfaae66625d85ce35e208 0
|
||||
Wizard\ClassSet.cs Wizard\ClassSet.cs 37d444f7109e8637da98bc721c35286d6f0c45c49dbcf552603e26e453908e32 0
|
||||
Wizard\ClassType.cs Wizard\ClassType.cs c0be0ce00bb64ad28a85f1f1edfafa0216b67a47fa8d744a1b69c19b78c786ce 0
|
||||
Wizard\CloneActualFlags.cs Wizard\CloneActualFlags.cs feadf48e251d85e8d9b76ce2a973f56102a2c753d788ad21055e577d1788f8dd 0
|
||||
Wizard\CondChoiceTagCollection.cs Wizard\CondChoiceTagCollection.cs e2cbd37890595adbf142aebaca58885a87788ad81dc9a78c7f9d6628d2147169 0
|
||||
Wizard\ConventionDeckList.cs Wizard\ConventionDeckList.cs 8653b2d3cfd9d69413b0483bf384e05e18e0ca3b52f6239a212c5e5f01f2aceb 0
|
||||
Wizard\CostBonusTagCollection.cs Wizard\CostBonusTagCollection.cs 8c6d5e7a4b886334eecb7e70ef787bc39de32eb5c5f0c2715f4eefd209ea71a9 0
|
||||
Wizard\Country.cs Wizard\Country.cs 833d76a4fa24fe50248cad54e6aa5eb6f4f20cf42afd17326638827e0380f133 0
|
||||
Wizard\DamagedTagCollection.cs Wizard\DamagedTagCollection.cs 8e6ecf677b4da8e16a68d3336959cd6d08af4830a0214297d65e96243f777c3f 0
|
||||
Wizard\DeckAttributeType.cs Wizard\DeckAttributeType.cs 006bb4c04d8a60c9caf04873dde6c962366348db03ec40a8bbc0071392f656dd 0
|
||||
Wizard\DeckGroup.cs Wizard\DeckGroup.cs c5334b68f875f193b100950fba847271ae5fe12e94c79aabd4a8220551066964 0
|
||||
Wizard\DeckGroupListData.cs Wizard\DeckGroupListData.cs d107ef3fc0cae879fe755256b94e8cc7ddcaa64d3cffa1143246dfe68a185150 0
|
||||
Wizard\DeckUI.cs Wizard\DeckUI.cs f99d5d852a206e73ee5c25406ae03380225bfea8c68ce24b69de8347e220af59 0
|
||||
Wizard\DeckVirtualCard.cs Wizard\DeckVirtualCard.cs 00c7e8d2ebae0dac6af30eb018cd1390a3ceba87b1348c93fe0c7c99eebf275d 0
|
||||
Wizard\Degree.cs Wizard\Degree.cs 0f3cf092884c7d4c5a4479ce9f887c3b93e77c2c1fd205379c785b4ec095dd22 0
|
||||
Wizard\DegreeCategory.cs Wizard\DegreeCategory.cs f68c21dc08c6bf0b20af52a33792e14d680c5dab5abb1f2d78eba08e418f7806 0
|
||||
Wizard\DegreeMgr.cs Wizard\DegreeMgr.cs 556894217a0903686b0c2c1b4895d0585a3b85863617e5f97dfe49edb02b2c73 0
|
||||
Wizard\DiscardedBonusTagCollection.cs Wizard\DiscardedBonusTagCollection.cs ca8a302ba3e3d8a55b1608812514a733458db7b819237308953fd33856178c72 0
|
||||
Wizard\DiscardedTagCollection.cs Wizard\DiscardedTagCollection.cs a69512ecef80fb292401593bb6d84436806d82d1e291283bfa239fc986fe070d 0
|
||||
Wizard\DrumrollScrollManager.cs Wizard\DrumrollScrollManager.cs e6737ba53a22d1ad16fb5b37d9dca3c550b4be58c442d5f0b1a628bed6c6fbbb 0
|
||||
Wizard\EarthRiteRecordContainer.cs Wizard\EarthRiteRecordContainer.cs 24174a54eaff51ffe79ac07b9093c7f4c60a17d5553cb35ad079e2f0b6544c38 0
|
||||
Wizard\Effect2dCreateParam.cs Wizard\Effect2dCreateParam.cs 99b02a3cf6255dcb255104d2a59a65d806fff8676e372dbc430066850cd77fc8 0
|
||||
Wizard\Emblem.cs Wizard\Emblem.cs 40fa3d4362ff82c882153f1974a24109c15843b7b293e3568c71dfe11c6647b6 0
|
||||
Wizard\EmblemCategory.cs Wizard\EmblemCategory.cs 983147bf89405c54d6270ed65d619138b8d86dbfc85080a2488d62497768ccdb 0
|
||||
Wizard\EmblemMgr.cs Wizard\EmblemMgr.cs 87285534a13166dca261b1bfb4bed260a7aedad0bb0bc544e10a157db47d3473 0
|
||||
Wizard\EmoteTagCollection.cs Wizard\EmoteTagCollection.cs ea18ac5bcf19f541d6feda09f7eb299a00c48c3b70081fbacc67ed8da7226ac6 0
|
||||
Wizard\EmoteUI.cs Wizard\EmoteUI.cs c312c9110380793bd972cd6641177b21ac99b356ce3e06862f278f13f10d1586 0
|
||||
Wizard\Emotion.cs Wizard\Emotion.cs 0cffcacfe1eb54bd02b66fb4ad54a3a146722e89b824ebb4c126904c87dfca8d 0
|
||||
Wizard\EnemyAI.cs Wizard\EnemyAI.cs d264983ee917e4b6268e30f01e49b5cfc278cd5c5d91e085f8bbeb148cbdd3af 0
|
||||
Wizard\EnemyAIFusion.cs Wizard\EnemyAIFusion.cs d3dd6db16807beb214c1c42481567a3bff6f729c3b793c8017771d23c6628f98 0
|
||||
Wizard\EnemyAI_Attack.cs Wizard\EnemyAI_Attack.cs 95b484d3ae841051e1ebbb83273c566ba52016c44158ee1b41c43b22acf7fdb2 0
|
||||
Wizard\EnemyAI_Play.cs Wizard\EnemyAI_Play.cs 26a62d83a770858b8b5dfb9f1bdf33917ecea9b456cbc2b43d59daa64ad5fd13 0
|
||||
Wizard\EnemyAI_Skill.cs Wizard\EnemyAI_Skill.cs d3eb3694c301a0b3ababf1561a9da1279fb1c97c01f9113a51095dc4c647a555 0
|
||||
Wizard\EnemyAI_WeakLogic.cs Wizard\EnemyAI_WeakLogic.cs ffcb5020b4387b6ef560e0f7564dd4c7565699b3a219e6f74d886319b0eceaf6 0
|
||||
Wizard\EnemyBattleBonusRateTagCollection.cs Wizard\EnemyBattleBonusRateTagCollection.cs ea09eb8f465a35b65cc89809aba3093ecbc1c51abaa1129eba5f1a68d2cf810c 0
|
||||
Wizard\EnemyBattleBonusTagCollection.cs Wizard\EnemyBattleBonusTagCollection.cs 071b163d0f713514ca6ce70a88a89fa36d7b53178d38ab1b31c3ef20150d1f2e 0
|
||||
Wizard\EnemyEvoBonusTagCollection.cs Wizard\EnemyEvoBonusTagCollection.cs 9e7770cc32c64ac0e598b675d30cb68783e204ee4961bdd2e791f0b78327b155 0
|
||||
Wizard\EnemyPlayBonusTagCollection.cs Wizard\EnemyPlayBonusTagCollection.cs e14aba377958be3a1481118f94da0486a522f3c5ab0db196a9b2b6c2ec8faca9 0
|
||||
Wizard\EvalInstantAttackInformation.cs Wizard\EvalInstantAttackInformation.cs 9d2898f1e88381cd29e39cafa4de5e4d6a7ee85b806158f368871726ae742bb7 0
|
||||
Wizard\EventStoryQuestInfo.cs Wizard\EventStoryQuestInfo.cs 1b664258a746d028f14816b3cd186d6fd1d4041ebf6e78b8e80ab1c0c72a3dfa 0
|
||||
Wizard\EvoBonusTagCollection.cs Wizard\EvoBonusTagCollection.cs f77e10af5d6d59cbc8d36b38916ea507278ab139ca869a22a3274d8e91cdb134 0
|
||||
Wizard\EvoHandPlusTagCollection.cs Wizard\EvoHandPlusTagCollection.cs 8d91fd61550cfd87d92885fe34ca5b1399400f8c0eb3f7f446494804e5179a6b 0
|
||||
Wizard\EvoTagCollection.cs Wizard\EvoTagCollection.cs f5d4674174526797f1ca154ea7d6b2975514e11de24d919593f7397b2810fd41 0
|
||||
Wizard\EvolveToOtherTagCollection.cs Wizard\EvolveToOtherTagCollection.cs 51a978c4aca7c80e6d03f5e1602516c48e4c5361fc38a95d598128c058f17a8c 0
|
||||
Wizard\EvolvedResidentTagCollection.cs Wizard\EvolvedResidentTagCollection.cs 357f1718ee170049c6e86488bc0ec4ca9fb659a3e68195e8b70c2ea538c96584 0
|
||||
Wizard\FanfareBonusTagCollection.cs Wizard\FanfareBonusTagCollection.cs d21e2af67aeca95420438f140aaec1445a9dc0be829231c4d50771f4ae807c64 0
|
||||
Wizard\FanfareTagCollection.cs Wizard\FanfareTagCollection.cs c5c99a0437a507b360bf6247fa823bb9f56a2f39746b3a251f918e0f85e5a945 0
|
||||
Wizard\FavoriteTask.cs Wizard\FavoriteTask.cs e7e846e293142749f1d30a88b83506ab04a17df3c3d182dd59af49fedefde445 0
|
||||
Wizard\FilteringImageSelection.cs Wizard\FilteringImageSelection.cs 6b8cab1cf1cac1d724a28e5b5fdedd08c9ae1131565cf709c49c0d65e072a3f8 0
|
||||
Wizard\FilteringImageSelectionItem.cs Wizard\FilteringImageSelectionItem.cs 42da761519d7ea0b58f684ffc3382a7c912a08db2dbaa04b89f10103ef43b62a 0
|
||||
Wizard\FirstEvoTagCollection.cs Wizard\FirstEvoTagCollection.cs 86154576e6fa624f9d379ca20bf760683b2b274d908e3ebbe99ea70666c68482 0
|
||||
Wizard\FixedCostTagCollection.cs Wizard\FixedCostTagCollection.cs ac1393292c3c1abc3af3d2668b13c51f9cf01e0315117f1e5dcd341fd45c7856 0
|
||||
Wizard\Font.cs Wizard\Font.cs c84085ad2ce2a33ed50ad8183c9a635970a3067a109feae6227ad76c85c7de84 0
|
||||
Wizard\ForceBerserkTagCollection.cs Wizard\ForceBerserkTagCollection.cs 386d3f9150076989b6a3ad3b8ed6ecd2ca4ba475be4c4dffae9cacdb8cb89b43 0
|
||||
Wizard\ForceImmediateAttackTagCollection.cs Wizard\ForceImmediateAttackTagCollection.cs 6d8c4aae8881f2395ac57450bcd0364b8bd0c1ed28700c3d65c0a44f6bbf5555 0
|
||||
Wizard\Format.cs Wizard\Format.cs da3bc270aeb1fce63610b6bd1857ef6e07019c7840ba3a549f607170a957b3ce 0
|
||||
Wizard\FusionBonusTagCollection.cs Wizard\FusionBonusTagCollection.cs 4903288da869da61c7a10520fd0815a168c5a1b1f00dc1fb011e509e88f69464 0
|
||||
Wizard\FusionDrawTagCollection.cs Wizard\FusionDrawTagCollection.cs fc333ea01f0840ce80d000384f65285513185a37eafe3c5b3999fb5fcb37c3ae 0
|
||||
Wizard\FusionMetamorphoseTagCollection.cs Wizard\FusionMetamorphoseTagCollection.cs adb96cf8a406a435815e619005cc27635dae060ebff295455ddb9a7a61223b39 0
|
||||
Wizard\FusionTagCollection.cs Wizard\FusionTagCollection.cs 82b1a33c1a0e089d9ee1ae621b5d16475d2634652d30138cd80decd193dd6d0e 0
|
||||
Wizard\GachaLayoutEffect.cs Wizard\GachaLayoutEffect.cs 35aa3a10942d329af9e9dadc2413879dd350541642778983efc5ae7ec2eaa1d2 0
|
||||
Wizard\GachaLayoutPurchaseButton.cs Wizard\GachaLayoutPurchaseButton.cs 9ea3aea8236729c9b3b762d6cd68bd0c67e78ce79c63e7aa6988998e690227ba 0
|
||||
Wizard\GachaPackAreaLayout.cs Wizard\GachaPackAreaLayout.cs 5cdd7fbab58cb0f95427544ac405ada5616d718931f457dcae29e5d3a70a72a7 0
|
||||
Wizard\GachaPackPointLayout.cs Wizard\GachaPackPointLayout.cs 9f87bbf8c8952ecbe27115ceacd731dba694e112b9d130b988f0a96235c57132 0
|
||||
Wizard\GachaPointData.cs Wizard\GachaPointData.cs 26bae09ef1c6707cd1135a6ccdcb9a26b3f5f39bddcb4c411710851ecc47b91e 0
|
||||
Wizard\GachaPointExchange.cs Wizard\GachaPointExchange.cs a6f8e1822b4c2d76ebc3ce173365b6e930ec2b41f820eaa46230f8d83a1521ef 0
|
||||
Wizard\GachaPointExchangeDialog.cs Wizard\GachaPointExchangeDialog.cs aa0b1cbd3e4e677be1af91558c774ea0366219bc067db8c56e83d7dc45b40fab 0
|
||||
Wizard\GachaPointExchangeInfo.cs Wizard\GachaPointExchangeInfo.cs 604786e3888b9898415f0aa27b9fec2f0e22bb0e925829ae9749fea03aa26f65 0
|
||||
Wizard\GachaResultBuyCardPack.cs Wizard\GachaResultBuyCardPack.cs c38ca1737830907080640a6144de5e67e5bfce8880c51b73a7fb829775c47c0e 0
|
||||
Wizard\GachaResultBuyCardPackDialog.cs Wizard\GachaResultBuyCardPackDialog.cs e0b7d915f4c8c7e1b20cf88c44dd01a6325d58afc1e7df9be45cb0fb19c75d55 0
|
||||
Wizard\GachaSelectBuyNumPopup.cs Wizard\GachaSelectBuyNumPopup.cs 2aa4ee4381bd6ffda29d4c4c8ee8ce7899722d361089037ebeb8c626c4091c13 0
|
||||
Wizard\GenerateDeckCodeTask.cs Wizard\GenerateDeckCodeTask.cs 9f32c9513ec63d8b19e36d402c1adfec123b7f5774b86369391ce5fcb3996e1b 0
|
||||
Wizard\GenerateTagCollection.cs Wizard\GenerateTagCollection.cs c8a76fe65207f3e3ce6c06bfeb0317ea98796bf8f093dfa710b05547e8b8cfad 0
|
||||
Wizard\GetOnTagCollection.cs Wizard\GetOnTagCollection.cs 53dd75747aca1d11c8dde8703971ca327b36076ac25d7a4980cf21255835148f 0
|
||||
Wizard\GetOnTriggerTagCollection.cs Wizard\GetOnTriggerTagCollection.cs 2b7b7621f4483bd52ca49e2c3294a56ff25e29ff7bf32baa1ff76d86111f2fb3 0
|
||||
Wizard\GiftTransition.cs Wizard\GiftTransition.cs 6fa6e6166dbfff9e8eb6abc43f26f011e8f681a0f3a443fd82aa78d2832b9d96 0
|
||||
Wizard\GiveSkillTagCollection.cs Wizard\GiveSkillTagCollection.cs fc0b094247ed98cee05d1e781c3e0f2d0f56db4f4b89affd2b805859dc040ed4 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
|
||||
Wizard\HighRankEffectInfo.cs Wizard\HighRankEffectInfo.cs d902f77261b58377e093cc7305827c087b4af6fda9d39c0470afe75ae1e7e1f7 0
|
||||
Wizard\IAIEmoteCtrl.cs Wizard\IAIEmoteCtrl.cs 7a10392831ba1389e0d690d49fd563b9de356e8199e9cb2c252edb5d7b2442a3 0
|
||||
Wizard\IAITargetSelectTagCollection.cs Wizard\IAITargetSelectTagCollection.cs 9f5213399c3590ccf5519da98308384c07a960c6c8e79721169a854218ad3416 0
|
||||
Wizard\IBattleSimulationAI.cs Wizard\IBattleSimulationAI.cs 4ae9b2993be434a5b76d822de8d56977d7c15d0108e7446a19dcabc785976470 0
|
||||
Wizard\IEnemyAI.cs Wizard\IEnemyAI.cs e4fc8be7e4dfb93145e0dda9a6c8935813b54ca7f46b156a784e1c24e0b07c41 0
|
||||
Wizard\IEnemyAIBattleInfoRecieveDataAccessor.cs Wizard\IEnemyAIBattleInfoRecieveDataAccessor.cs 0f24830f9f5c99068d1eaded636815b8010c1056883b3ce7fc2fac1867e66574 0
|
||||
Wizard\IFormatBehavior.cs Wizard\IFormatBehavior.cs b11e696685f19dcd75be555aaab5121b54b2c70fe1af72caa468ec5e80c6947e 0
|
||||
Wizard\IgnoreBreakTagCollection.cs Wizard\IgnoreBreakTagCollection.cs 95fa4a8aea7a980dd225d37f80c8ebeed3d2984507ce6a83c8411a70398fe816 0
|
||||
Wizard\IgnoreFanfareBonusTagCollection.cs Wizard\IgnoreFanfareBonusTagCollection.cs cf22a06695c7b33920b0ee6caa9ab62a8f541306167074860bc105fb3f713126 0
|
||||
Wizard\IgnoreTargetTagCollection.cs Wizard\IgnoreTargetTagCollection.cs 792b1c640a8978a7f69d9d295480780e18c250ea874a655ab55dc1c99d535542 0
|
||||
Wizard\Item.cs Wizard\Item.cs 1f08b86cf607be02d6083243247d28fb89bfae5ba9595f1cf74562680caa9025 0
|
||||
Wizard\LastwordTagCollection.cs Wizard\LastwordTagCollection.cs 35a8bf05a748f8cc1811bf419a5e19cbe8058bc76e3f54d9f2160c584436a59f 0
|
||||
Wizard\LeaderSkinSeries.cs Wizard\LeaderSkinSeries.cs 8273cd6831408f1e74e7e2f7b3db3074d41b102e557941ee3c1f0afecaed71e5 0
|
||||
Wizard\LeaveBonusTagCollection.cs Wizard\LeaveBonusTagCollection.cs 30e0c56bbe6b1418a166762a88660ce41b13facd173f1b00e500066e84e699fd 0
|
||||
Wizard\LeaveTagCollection.cs Wizard\LeaveTagCollection.cs 11d8c7a49a83ae6032f77183b7e2e32d38ac4a9def2413cf64558a00fe53750e 0
|
||||
Wizard\LifeRecord.cs Wizard\LifeRecord.cs dbb7e7c6532bf24174d3d958147309b1eb87faac12c57754e7282cf8ac5d8b50 0
|
||||
Wizard\Master.cs Wizard\Master.cs dc58e2aacb78cd813aa7c7e8db2ba18268b3ca62188e0ef36d9f8445a58486ce 0
|
||||
Wizard\MemberBattleBonusRateTagCollection.cs Wizard\MemberBattleBonusRateTagCollection.cs af0f9eb215dfdba042be2663c3485e0330a2da5cf1c64b001fbeb958f9c40f77 0
|
||||
Wizard\MemberBattleBonusTagCollection.cs Wizard\MemberBattleBonusTagCollection.cs 7d5c866fa706411b0eef538feb6b10551066b0e552d757a081c9a2b1bf5a5107 0
|
||||
Wizard\MemberEvoBonusTagCollection.cs Wizard\MemberEvoBonusTagCollection.cs 94fa4f95290b222605bc4c01b68d38d8f3bd64568887f0764034bd1a1ab429e5 0
|
||||
Wizard\ModifyHealTagCollection.cs Wizard\ModifyHealTagCollection.cs b8451ec819776ddfec09c4027fad85ee2d2e9d7c77970aef414949841b8a034d 0
|
||||
Wizard\MyPageCustomBGMasterData.cs Wizard\MyPageCustomBGMasterData.cs f804b67196ba049ab2bca36abbcb98246d603c7e9035901c75b40a3eda954326 0
|
||||
Wizard\MyPageHomeDialogData.cs Wizard\MyPageHomeDialogData.cs 8a340ba114a70c5546bba0d727cb9a9257efea3ae656417566882f3101a3578f 0
|
||||
Wizard\MyRotationInfo.cs Wizard\MyRotationInfo.cs 4d9090e0e4b81cbd5c0e2ad5542da9577a5dade1a6a5211ebeb9dfd1ce91961b 0
|
||||
Wizard\MyRotationParts.cs Wizard\MyRotationParts.cs 2469f8b192fe03cec39e4519002031872790662048e61305a63802a48f1cd6df 0
|
||||
Wizard\MyRotationRePrintInfo.cs Wizard\MyRotationRePrintInfo.cs 2bb1fdfcc60af40afcf6fdd11b36edeca0ced9c4765b226c6f62cca1ed5f0da1 0
|
||||
Wizard\NetworkDefine.cs Wizard\NetworkDefine.cs 44050f0b6eb56b29d05ddf9834a10b05553de9659dc4eb3619cd1a50660f7ef3 0
|
||||
Wizard\NoInstantAttackTagCollection.cs Wizard\NoInstantAttackTagCollection.cs db3d8479c9e03b4fd7d6d58d9ff763564a7ff4b9e2ce1c8b7b2f5219f245bcd4 0
|
||||
Wizard\NoNormalEvoTagCollection.cs Wizard\NoNormalEvoTagCollection.cs 92c16f64f48fc8d643dcc29addd4c77adbc8a92bd9ccee830560190344e789ef 0
|
||||
Wizard\NoSkipAttackTagCollection.cs Wizard\NoSkipAttackTagCollection.cs 107152d8cb5b57a6c8e2682d6ba73cb90662fbbd7ac749def7e841101b5462e8 0
|
||||
Wizard\NonReferableVirtualCardBuildParameterCollection.cs Wizard\NonReferableVirtualCardBuildParameterCollection.cs 23251af778a55d3bd995d72adf74616b1d9679a6178c35e19e0466f748fb3210 0
|
||||
Wizard\NotificatonAnimation.cs Wizard\NotificatonAnimation.cs 86079fa67434ccd594837728872c521648a01111dc6917ecc9b100b892556c99 0
|
||||
Wizard\OneMoreLastwordTagCollection.cs Wizard\OneMoreLastwordTagCollection.cs 43ded6b3ecf0cea6d0880bb9e6a0294fecf17eacca1f27bdfdbf4073a9f36661 0
|
||||
Wizard\OtherAttackTagCollection.cs Wizard\OtherAttackTagCollection.cs 01abdfb334ad2c7a75244ce40aa76963123120b1311b55d9f72b30eb602dcf45 0
|
||||
Wizard\OtherBanishBonusTagCollection.cs Wizard\OtherBanishBonusTagCollection.cs 9cc66ef3cb7e38fb9c393c8a827942003083062f1a704374c9adc600317c445d 0
|
||||
Wizard\OtherBanishTagCollection.cs Wizard\OtherBanishTagCollection.cs b0b834a06e5e3c202233667ea591c26fb8ddfcc1d3f04a05cf5530cbb6629aab 0
|
||||
Wizard\OtherBreakBonusTagCollection.cs Wizard\OtherBreakBonusTagCollection.cs 93136af3cbcbc5fbe886e01b61d73655e62c22af25a6ae3012d3bb68f2c895b1 0
|
||||
Wizard\OtherDamagedTagCollection.cs Wizard\OtherDamagedTagCollection.cs 1322687c298d19356e9c0bdb2a0412f0b1998d19d079627918623a5345e93085 0
|
||||
Wizard\OtherEvoTagCollection.cs Wizard\OtherEvoTagCollection.cs 155202d2b626c307690f8379be26c103d40d1b27cc4a5fed9e57ac9a26f5d912 0
|
||||
Wizard\OtherLeaveBonusTagCollection.cs Wizard\OtherLeaveBonusTagCollection.cs 32117e946ec6180cf917781cafa0ed64a9b08e504d52972da88cc878151752ae 0
|
||||
Wizard\OtherLeaveTagCollection.cs Wizard\OtherLeaveTagCollection.cs 42cfe082336baf4944c28824a67beba13a3550114f78151b06fa394c17275efb 0
|
||||
Wizard\OtherPlayTagCollection.cs Wizard\OtherPlayTagCollection.cs 48e0ada3fca7ac1e7ab4fa3fc253649df81c3d5599d63805883d6168b123044a 0
|
||||
Wizard\OtherPlayoutBonusTagCollection.cs Wizard\OtherPlayoutBonusTagCollection.cs 8e7dab4a4a8d31ddea357e269f0e25f43f7bb52f094d2c3db1ee98a0d5c990de 0
|
||||
Wizard\OtherSummonTagCollection.cs Wizard\OtherSummonTagCollection.cs 08bd5692d0fce51fe7087136fb302c1b0ce17c7b6b18ab25b90fee52e2dbef05 0
|
||||
Wizard\PackBannerData.cs Wizard\PackBannerData.cs 19a49488cc25566d51d172cdaaf5ea6194a0c6121ab2c78eaea5f6b2ca71de09 0
|
||||
Wizard\PackCategory.cs Wizard\PackCategory.cs 9335bf51da46cc25f51040bd04c543bad6686858802d3ded1c9ab857bef69995 0
|
||||
Wizard\PackChildGachaInfo.cs Wizard\PackChildGachaInfo.cs 40d10fdd911009cd6dfb780e2111a16cb7914cb7f1e8680130f9ab255a5a0801 0
|
||||
Wizard\PackConfig.cs Wizard\PackConfig.cs 01a5fcd6c5d39e3c08d6b820f8a062f16d65105e6f1a3fbe085f752b389cc45b 0
|
||||
Wizard\PackInfoTask.cs Wizard\PackInfoTask.cs 361bde0ab56dfe307c887d472f2187971583a7bc9f706e70c9557fd8cd1b8039 0
|
||||
Wizard\ParameterOverwriterBase.cs Wizard\ParameterOverwriterBase.cs 0966e18f7e514ddaff7567c3d845b6cc98d10d7ee49f6130156ed46eace56cf0 0
|
||||
Wizard\PlagueCityTagCollection.cs Wizard\PlagueCityTagCollection.cs 3213ddc7ae26058dc28be578bd19b4342914324bdf761ebbc5f74e640e5155d6 0
|
||||
Wizard\PlayBonusRateTagCollection.cs Wizard\PlayBonusRateTagCollection.cs 32b5ae7c6fe5998aa1dfac3fac64bc08c36cc127408b983667e85d98bcca76af 0
|
||||
Wizard\PlayBonusTagCollection.cs Wizard\PlayBonusTagCollection.cs aae0f75c19388e975da4abf671c5082fd5e8d9bb0efc81cba0723a37d164dbf4 0
|
||||
Wizard\PlayDrawTagCollection.cs Wizard\PlayDrawTagCollection.cs 26c9c14e820f24b7c42e7aa0945863875eb8340962537d041188f36c45082aa0 0
|
||||
Wizard\PlayLimitTagCollection.cs Wizard\PlayLimitTagCollection.cs 54dcdce8c2df53f4ed802b106411bafab77fdd3880676c3e36dfe3920fa67698 0
|
||||
Wizard\PlayPlusTagCollection.cs Wizard\PlayPlusTagCollection.cs b83296a9abf6a081036c9230b335e6c3380ee9018386faa72dc9cb65cde47933 0
|
||||
Wizard\PlayPtnBonusTagCollection.cs Wizard\PlayPtnBonusTagCollection.cs e77524431abd386597302bac81a6e6996a36b685ceef89804d66de9c313ea8be 0
|
||||
Wizard\PlayPtnWithToken.cs Wizard\PlayPtnWithToken.cs 080747dd4f88ceaceb395817efa0db08360b9d59924525452e967d3d1edefecf 0
|
||||
Wizard\PlaySimulationType.cs Wizard\PlaySimulationType.cs 004b802fea1bc338f85fb2cde43544d13257f25238454bb4906e872c14b7c233 0
|
||||
Wizard\PlaySkipInformation.cs Wizard\PlaySkipInformation.cs 991da0ec87aeb9d1d4283ccb7f315db875d14aa63c494a05ea97df452c14ae9d 0
|
||||
Wizard\PlaySkipTagCollection.cs Wizard\PlaySkipTagCollection.cs b5a8ef396806b07493e98d47000f4519868355ff37432aa94d59ecec87306cb8 0
|
||||
Wizard\PlayTagCollection.cs Wizard\PlayTagCollection.cs 68c84ed4598bdef107d093b7662ddd4a51cfcdeecc73c72cb40db08fd6d01fa3 0
|
||||
Wizard\PlayedCardInfo.cs Wizard\PlayedCardInfo.cs 4f5236fb71867c8607bc4f3aacee3e5355080a4d5a4a79bc6521f564b7994e6e 0
|
||||
Wizard\PlayoutBonusTagCollection.cs Wizard\PlayoutBonusTagCollection.cs e09f770ddfeb7644d0d836a9d9747944a76a1ca464e4301b7469c52433d69051 0
|
||||
Wizard\PlayoutNextTurnTagCollection.cs Wizard\PlayoutNextTurnTagCollection.cs 6f5c85cc3a8d3b12c68a8b70769025783e6058bf518eb6467053d986ad2b0200 0
|
||||
Wizard\PlayptnBaseStatsRateInfo.cs Wizard\PlayptnBaseStatsRateInfo.cs 43d28ea1977f721d3b106f12bcfb601fd69816fe8fcfd0717a8fa8691ec95fa2 0
|
||||
Wizard\PlayptnBaseStatsRateTagCollection.cs Wizard\PlayptnBaseStatsRateTagCollection.cs 4ed539fff8051a4474c1114bcd0c6892cf1b255d1ce5c60129657081c2cc0d60 0
|
||||
Wizard\PolicyCollectionWithTypeBase.cs Wizard\PolicyCollectionWithTypeBase.cs d6e70cd2c96ad62d6dfadff5a3c6fc8318c31e8661f0a1abce61165156136aa4 0
|
||||
Wizard\PracticeAISettingData.cs Wizard\PracticeAISettingData.cs 59f4b1180f859de742f31f4af61dd7997d9f5d0e09d0f15c605586a9d6d732f0 0
|
||||
Wizard\PracticeAISettingDataSet.cs Wizard\PracticeAISettingDataSet.cs d718d5d948ff6fb0a57614b84d7f11a04c99bfcf099c6f3916e56522017f22fc 0
|
||||
Wizard\PremiumCardConversionDialogParts.cs Wizard\PremiumCardConversionDialogParts.cs ef813540d655bcf33bcdf994acfdae8185dc8dcf85976520da2f394c6125733a 0
|
||||
Wizard\PreprocessTagCollection.cs Wizard\PreprocessTagCollection.cs 2f22016f344bf7a05815f0d60d7721a9ecaa1094dced3c3007c77b4372cb2368 0
|
||||
Wizard\PrereleasePurchaseInfo.cs Wizard\PrereleasePurchaseInfo.cs 8876aa1902f358c9eda8c46c5911a45e8d9a836a900d9a4b0d437149112dcf37 0
|
||||
Wizard\PriorityTagCollection.cs Wizard\PriorityTagCollection.cs 1c9656863a2740157fd0737e77528180d66e246cd672a820d6a94c2d38429693 0
|
||||
Wizard\PuppetAttackParam.cs Wizard\PuppetAttackParam.cs dbfa38756de17fa26e09165c070c91640812540465c66dac3592aa0582594127 0
|
||||
Wizard\PuppetAttackTagCollection.cs Wizard\PuppetAttackTagCollection.cs e284ebdeb61706237dbf83d8b7fb0145f703aa375cd170e5f39b7af2d43db446 0
|
||||
Wizard\PurchaseConfirm.cs Wizard\PurchaseConfirm.cs 91ab7d0a239b6ddf305b5395e8cb058c5714a0b6a5d4e1534990e912ec2af0d2 0
|
||||
Wizard\PurchaseRewardInfo.cs Wizard\PurchaseRewardInfo.cs 68266e03484b149bbe1ec5d0d26ca99f5377e33cf6194af6c332ae021d96c925 0
|
||||
Wizard\PuzzleBattleMasterData.cs Wizard\PuzzleBattleMasterData.cs d1724a7755e6ffd48ced04db5853dbfec787b6190c235471eb96b8ababf766c0 0
|
||||
Wizard\PuzzleQuestData.cs Wizard\PuzzleQuestData.cs da6724883671e227cfd3b5b8eb64af071bed3ffec7ecb95e84710b18db96b901 0
|
||||
Wizard\PuzzleQuestInfo.cs Wizard\PuzzleQuestInfo.cs 17e215c00ac4d2ec648d5a3c7a70393fea406889685c88434b6d526571811f7b 0
|
||||
Wizard\PuzzleQuestSelectDialog.cs Wizard\PuzzleQuestSelectDialog.cs 2f297d0ea4730615c2657a05777994e224732fe8003c9e231b307d5eb8b500ba 0
|
||||
Wizard\PuzzleQuestStatus.cs Wizard\PuzzleQuestStatus.cs 080f93e95b6fb21f06ca4e7874ef9050bd4bcb62338f5c0e12b05de722cecca9 0
|
||||
Wizard\QuestAllConfirmDialog.cs Wizard\QuestAllConfirmDialog.cs 797160bab5654b592f9bd5e9390e42008336c0ba9e0aeea1aabdab7a0e435bed 0
|
||||
Wizard\QuestBattleData.cs Wizard\QuestBattleData.cs 2c7b710d636f9f2112f6216b78f6516f17e573803db9277c03e2d04200b2e23a 0
|
||||
Wizard\QuestBossData.cs Wizard\QuestBossData.cs 54bea11a04848ecbba06458cc3fb23ee38eb80ffe096871a490c3c3e10730f7a 0
|
||||
Wizard\QuestGaugeItem.cs Wizard\QuestGaugeItem.cs dd1dc88a5b96dcf53a47bfead6786c42c20b7b422547f9946b5213d534309b7f 0
|
||||
Wizard\QuestInfoTask.cs Wizard\QuestInfoTask.cs b6da4bc6326ab5b8a11367cd77cc00a563847486bd62528ec1badcd71451e271 0
|
||||
Wizard\QuestItem.cs Wizard\QuestItem.cs 6f873d6290ba0122b8c6789fb23e5ba9ec1a602bbe11e8fe50dad5eff8b712cd 0
|
||||
Wizard\QuestItemBase.cs Wizard\QuestItemBase.cs 8f6330477afc45f7c23044fb7fb0aa5309a26cac11e74c3c70c76cdffcc7c664 0
|
||||
Wizard\QuestItemTitle.cs Wizard\QuestItemTitle.cs d0f78fd42450feff168cc3777d1fbb4009d4ca135884099df42b4ebacb86d9b0 0
|
||||
Wizard\QuestMissionData.cs Wizard\QuestMissionData.cs 66851df2ee770b75efee5a16e28a3e0dc23fda420f4c5888746af055c258a2e9 0
|
||||
Wizard\QuestMissionDetail.cs Wizard\QuestMissionDetail.cs cb9bca006c7b2cf01d8b52f79bb8309cf2df03b52b0fd9ba989e811343cf3938 0
|
||||
Wizard\QuestOpenPuzzleDialogTask.cs Wizard\QuestOpenPuzzleDialogTask.cs 3aed83f56b6aeebb345d6836cdc86fac3ae19cae47223f3ae8c7bd9e91d9c740 0
|
||||
Wizard\QuestOpponentData.cs Wizard\QuestOpponentData.cs 85b29720e35ba0937b5bbd8bfc28dee787a7945bb0aa1cc829c668069f633daf 0
|
||||
Wizard\QuestPointConfirmDialog.cs Wizard\QuestPointConfirmDialog.cs c5c4b1e31fe40f7de6fa17f9d16ef66074d1fdcd6ddfc4128a57dc6e8d274f38 0
|
||||
Wizard\QuestRewardInfo.cs Wizard\QuestRewardInfo.cs c0d8c01dd78824d62c5f145bea4141a576db63d39ca2230e35eb41fe48342e97 0
|
||||
Wizard\QuestSelectionButtonBase.cs Wizard\QuestSelectionButtonBase.cs a6376f737ad9c5e89199eb572562d3e85f8537bf4b0e349df1d95462cb8f2230 0
|
||||
Wizard\QuestSelectionButtonData.cs Wizard\QuestSelectionButtonData.cs 63f83ab58371f7a90664d831e88932b1c6ef39b5e93b99308aecd0d87fe381ab 0
|
||||
Wizard\QuestSelectionPage.cs Wizard\QuestSelectionPage.cs 4a4a0e23ca749a3e634e45fd0edab5c1a4902651f56b982a057136a705940685 0
|
||||
Wizard\RallyCountPlusTagCollection.cs Wizard\RallyCountPlusTagCollection.cs 4925407e467310dbb38e525aa9a90f4dede317572f982adf5d8fc273bb6ade51 0
|
||||
Wizard\Rank.cs Wizard\Rank.cs 1bbdd3efaf38a8a9e587ae8094b0db792cb81d1df7cf63252f739347b1803cba 0
|
||||
Wizard\RankMatchAISettingData.cs Wizard\RankMatchAISettingData.cs 210b88babcc6daff656bdc2fe24edcd0a9556351f2b147d5f04a37f52a770f42 0
|
||||
Wizard\RankMatchAISettingDataSet.cs Wizard\RankMatchAISettingDataSet.cs a0dd289c49ede4aac584291fdeeb060cc0c9b70c4e1a123cad6cab216ea2de55 0
|
||||
Wizard\ReanimateBonusTagCollection.cs Wizard\ReanimateBonusTagCollection.cs 6ac7d8043c9a315e74aa1533f36f00468f432fb4043367c6c7f6881ca06b9e34 0
|
||||
Wizard\ReanimateEvoTagCollection.cs Wizard\ReanimateEvoTagCollection.cs a266712e3ded29167a94fd881ee344b35eaf3eaad8f1359736d2c76ee0e02881 0
|
||||
Wizard\ReceiveTurnEndToJudgeResult.cs Wizard\ReceiveTurnEndToJudgeResult.cs ef2f76201ccef6b81ce3b2ff37016bc839e7126f5772524f74d114d3d826e6b9 0
|
||||
Wizard\ReferableVirtualCardBuildParameterCollection.cs Wizard\ReferableVirtualCardBuildParameterCollection.cs b04760995eddf63a9f8f7dcc1ca3064092bc880a67eb1ba7f808e77dfd7cf829 0
|
||||
Wizard\ReincarnationSimulationTagCollection.cs Wizard\ReincarnationSimulationTagCollection.cs 863e9c6fd3b131c9564048419b2af5967689b9389fb803c8bc4b079185a578b0 0
|
||||
Wizard\RemainTime.cs Wizard\RemainTime.cs cad4a6d7241987deccf91cab20b07146a393262888f556743b959d015c58c7cb 0
|
||||
Wizard\RemoveByDestroyTagCollection.cs Wizard\RemoveByDestroyTagCollection.cs 6bb0f29c81a74b7bab7c062244773c4a7c366ea76836db7ca5abe860d097c38b 0
|
||||
Wizard\RemoveSkillTagCollection.cs Wizard\RemoveSkillTagCollection.cs 4b31000c33a964929a361f964499aeddd2e884862600c4488c86d49e8a21120f 0
|
||||
Wizard\ReplaySkipAnimation.cs Wizard\ReplaySkipAnimation.cs 028d4fbc5d2ac366f5a90c86245482b36f37990c22eedd1f9b1109b5e673d346 0
|
||||
Wizard\ResonanceTagCollection.cs Wizard\ResonanceTagCollection.cs 18e5ba29b08bf24bdf9b6f2078c6180099c9d468b1ab5c1fa05a0452199169ad 0
|
||||
Wizard\RewardBase.cs Wizard\RewardBase.cs ea35849169b3987c450abbaece54578234821d644bf3289fc0307fd8ca14fe23 0
|
||||
Wizard\SceneTransition.cs Wizard\SceneTransition.cs 3858aa170b79fe0d46824439ee34bd85865732bc0c96dfa9bc8b37f5a28a0670 0
|
||||
Wizard\SecretBossInfo.cs Wizard\SecretBossInfo.cs 5ee84152be88797d9d5147965973aad8011e7ad23e07bf2c2a4df512012f99b9 0
|
||||
Wizard\SelectBuyNumPopupBase.cs Wizard\SelectBuyNumPopupBase.cs ecea78a81f059d7e3d7bf18e05ef61bfa39a85e0b72b0f53991e8edbf498c90e 0
|
||||
Wizard\SelectSkinCardInfo.cs Wizard\SelectSkinCardInfo.cs 6011046eb19f8a1d354683c144f769a09f56ff42f43a4d4245aeb1beaac72fa2 0
|
||||
Wizard\SelfAndOtherEvoTagCollection.cs Wizard\SelfAndOtherEvoTagCollection.cs dcd522c9567e370f36d467501d30d5f7e8f0e570f6ba60272c95b014705198de 0
|
||||
Wizard\SetAITribeTagCollection.cs Wizard\SetAITribeTagCollection.cs 69b942da626b35c3f41096f752dc2456adf3315ed15777644baea2fe80f87f7a 0
|
||||
Wizard\ShopCommonRewardInfo.cs Wizard\ShopCommonRewardInfo.cs 1362db5cce7666eec06fa52b47a631df8de00dfaf4c89a8b329f4c5d081f3b75 0
|
||||
Wizard\ShopDrumrollScrollManager.cs Wizard\ShopDrumrollScrollManager.cs 74fb76307264f57d77e4d68ae067a6c94e544c1a36f799649be1871f61ec51de 0
|
||||
Wizard\ShopExpirtyInfo.cs Wizard\ShopExpirtyInfo.cs 93d265032ad665bb5b1752f8891e40cf0b2b7380def77a83298c9d7ef344ffd9 0
|
||||
Wizard\SimpleScrollViewUI.cs Wizard\SimpleScrollViewUI.cs c09d0cd5935fa0157c07d98226df86270f51d94cccc6e66d0fca4a901f868899 0
|
||||
Wizard\SimulationAdditionalActionInfoSet.cs Wizard\SimulationAdditionalActionInfoSet.cs c20debde6f1f635e218fc5027f7b2939a6160e86a13c2166efac15732e1bee81 0
|
||||
Wizard\SimulationResult.cs Wizard\SimulationResult.cs e7664bfdf29cce647808d1fa5989de992affa051e552a2fbe4c627ccc37c55f4 0
|
||||
Wizard\Sleeve.cs Wizard\Sleeve.cs 7f871310a61810e786bb5daeb65e994c5deb2f1c2f6269065892a4d325553e80 0
|
||||
Wizard\SleeveCategory.cs Wizard\SleeveCategory.cs d636241391f0421028aec23fa83b44af32beb01a3af5bc14469fe076b8016a38 0
|
||||
Wizard\SleeveMgr.cs Wizard\SleeveMgr.cs 65624ba278a3238a02189445cf03fdf423d1e8985338d938a389c002e5bbf497 0
|
||||
Wizard\SleeveSeries.cs Wizard\SleeveSeries.cs 9a3658f9b77625a36c9ce51c8797c3fec4f8a9d48b541e828a372b71490b45ba 0
|
||||
Wizard\SpotCardData.cs Wizard\SpotCardData.cs ac20fd44447242b9ecc761f3b4acf3bb407f3ea542f48fb56926d2385cd3e814 0
|
||||
Wizard\StoryAISettingData.cs Wizard\StoryAISettingData.cs 14402dc36fa4ae13f154c8110141087145efb387c94292f7a5102dd3b671151d 0
|
||||
Wizard\StoryAISettingDataSet.cs Wizard\StoryAISettingDataSet.cs 76693a53b4022593dd67cd8d08b41c2ab7647d8b3663176b13909ca0e6c11900 0
|
||||
Wizard\SummonTagCollection.cs Wizard\SummonTagCollection.cs 584ee636f3d8826973893728e77f5a72cc4c4b608357b6bccb993f17abf46976 0
|
||||
Wizard\SystemText.cs Wizard\SystemText.cs 1450cdaf4d2f61346fb8743ca0be089647c64f328b825d2e1f9d9ce667655dc3 0
|
||||
Wizard\TagCollection.cs Wizard\TagCollection.cs 16016406df9b7e9287ba64d32b57297059ee1a1fe2f3b57845ec7ad4588630ea 0
|
||||
Wizard\TagCollectionType.cs Wizard\TagCollectionType.cs 6723cd1be89e3669a02e640d2b4528d8908b0322f25fef413e8b147e3aea3101 0
|
||||
Wizard\TagCollectionWithTypeBase.cs Wizard\TagCollectionWithTypeBase.cs 9ba0688d57518d19a3ed80819ae1501bd59c911e7749388aff097dfae8f46aee 0
|
||||
Wizard\TargetSelectType.cs Wizard\TargetSelectType.cs 91ab18f9c069784e1140a187eabd8248761618a577811296f36db07f9b87265b 0
|
||||
Wizard\TargetTagCollection.cs Wizard\TargetTagCollection.cs 1bd2fb66e58c9fae3d23fbce351972577da664c2b959ee92e0547e2396c82eb9 0
|
||||
Wizard\TextLineCreater.cs Wizard\TextLineCreater.cs fdb7f0a918c2f5b92268954b3980724f29cb16a8098ea67c2d99633ae5bd1e92 0
|
||||
Wizard\TokenPlayPattern.cs Wizard\TokenPlayPattern.cs c14d846afb81b876291013c077cbd503bebd27b651b5b78708e93d68758e2e7b 0
|
||||
Wizard\TreasureBoxCpResultInfo.cs Wizard\TreasureBoxCpResultInfo.cs 77141091f1b85fdfa04005a5551b5d9ae29322c1446c70411e410daec2fe4bc5 0
|
||||
Wizard\TurnEndTagCollection.cs Wizard\TurnEndTagCollection.cs 176accc9ed7bbafa5b36a25cbd85caa6bad54acabdbe1f786160ba11737cbdf2 0
|
||||
Wizard\TurnStartTagCollection.cs Wizard\TurnStartTagCollection.cs a6190321dd648393cb52de200be2bdd7dadeca06f602fd13c9803fd3d84e2849 0
|
||||
Wizard\TutorialAreaSelect.cs Wizard\TutorialAreaSelect.cs fd8c11bbe4a98a5407fc1bdae75f3fae5fab2a996cde2a54a7fcbd5a73115352 0
|
||||
Wizard\TutorialData.cs Wizard\TutorialData.cs 2fc9577f9c08b7803e3673d18eee530d3a61d95d0d8b8d5c166e97ab4dc557ed 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
|
||||
Wizard\UIGauge.cs Wizard\UIGauge.cs 0118ff5fbb35e3386abbda434cac738fc420ecbac5dcba1e532483f4ac9b0d40 0
|
||||
Wizard\UILabelEffectOverwriter.cs Wizard\UILabelEffectOverwriter.cs d91ad280e420b0b04a1e1fda0b58c993d0523b2dce9f58e40bf2fd98aaf9943b 0
|
||||
Wizard\UILabelGradientOverwriter.cs Wizard\UILabelGradientOverwriter.cs 61d81c1710dbdcfdd5f2ecc07bfaf1aea701f80c45b46c4556705782c43a4eec 0
|
||||
Wizard\UIParticleEffectGroup.cs Wizard\UIParticleEffectGroup.cs dcc425e476a98214ce77ae6c41500e8a082e3c4ecdea1b06455ffc80da4f85ff 0
|
||||
Wizard\UIShaderSprite.cs Wizard\UIShaderSprite.cs 26f4dc6be5c3fa99f59e54582797b045ad343fb40fb1338a187f723ee0c75251 0
|
||||
Wizard\UISpriteAtlasOverwriter.cs Wizard\UISpriteAtlasOverwriter.cs 0f3455b58b740cab260d97bf28d1b8e73ba0ba6938f62d4b81021b3329e07bd7 0
|
||||
Wizard\UnlimitedRestrictedCard.cs Wizard\UnlimitedRestrictedCard.cs 295618ea53573f498923f63bfabd0b3543552761811830b83e2a18980edfc311 0
|
||||
Wizard\UserGoods.cs Wizard\UserGoods.cs c21dd8bc5521e705da0994f68771149a54d461f49d00fbd54f9d8673bb047eb3 0
|
||||
Wizard\WhenGetOffTagCollection.cs Wizard\WhenGetOffTagCollection.cs 56009d6b9acb7df9d376670526228b9b51d19fadd14325cc60166a0a0d82d7d1 0
|
||||
Wizard\WhenNecromanceTagCollection.cs Wizard\WhenNecromanceTagCollection.cs 2576488749e9fa264bac47d56edcca8f30e7b0eaa08459f85ea0286f39453925 0
|
||||
Wizard\WhenPlayTagCollection.cs Wizard\WhenPlayTagCollection.cs 4b4ee7e60d9fc7d6ac23ce8b3cec928d542ea6bb55d3637ad66093f0cba30141 0
|
||||
Wizard\WizardUIButton.cs Wizard\WizardUIButton.cs e078cf8215ad02ac1c0fd4a7fe66ab7151dcf704fc230c199a12caab67719d5b 0
|
||||
Wizard\_3dCardFrameManager.cs Wizard\_3dCardFrameManager.cs d23f7bd3cc2ddbb86f9a40d1dea6941796cf7562f9dd0f804b6acccd9a345396 0
|
||||
Wizard\eColorCodeId.cs Wizard\eColorCodeId.cs 4c853d61f36776bc6a652c11a6eabdb4dbde7ff8ff5fbc410fb4b878a17edcb1 0
|
||||
WrapContentsScrollBarSize.cs WrapContentsScrollBarSize.cs 90b8b14191d5016037bc1b907ef9408f9aecc63e8a2562cd58db8991345a538e 0
|
||||
iTween.cs iTween.cs 8da77cd885d8fb1e8727e91681ab5ac00a889d0fcc9b973a4162f15a0b642a54 0
|
||||
|
||||
|
166
SVSim.BattleEngine/Engine/AchievedInfo.cs
Normal file
166
SVSim.BattleEngine/Engine/AchievedInfo.cs
Normal file
@@ -0,0 +1,166 @@
|
||||
using System.Collections.Generic;
|
||||
using LitJson;
|
||||
using Wizard;
|
||||
using Wizard.Lottery;
|
||||
|
||||
public class AchievedInfo
|
||||
{
|
||||
private const string ACHIEVEMENT = "achieved_achievement_list";
|
||||
|
||||
private const string MISSION = "achieved_mission_list";
|
||||
|
||||
private const string REWARD = "achieved_mission_reward_list";
|
||||
|
||||
private const string VICTORY_REWARD = "win_reward_list";
|
||||
|
||||
private const string GRAND_MASTER_REWARD = "grand_master_reward_list";
|
||||
|
||||
private const string MISSION_START = "mission_start_data";
|
||||
|
||||
private const string BEGINNER_MISSION_REWARD = "achieved_beginner_mission_reward_list";
|
||||
|
||||
private const string BEGINNER_MISSION_REWARD_MESSAGE = "achieved_beginner_mission_list";
|
||||
|
||||
private const string BATTLE_PASS_REWARD_LIST = "battle_pass_reward_list";
|
||||
|
||||
private const string BATTLE_PASS_MESSAGE_LIST = "battle_pass_message_list";
|
||||
|
||||
private const long DONT_NOTIFY_IF_SMALLER_THAN_SECONDS = 10L;
|
||||
|
||||
public List<UserMission> _missions;
|
||||
|
||||
public List<UserAchievement> _achievements;
|
||||
|
||||
public List<ReceivedReward> _rewards;
|
||||
|
||||
public List<ReceivedReward> _victoryRewards;
|
||||
|
||||
public LotteryApplyData _lotteryData = LotteryApplyData.EmptyData();
|
||||
|
||||
public AchievedInfo()
|
||||
{
|
||||
_missions = new List<UserMission>();
|
||||
_achievements = new List<UserAchievement>();
|
||||
_rewards = new List<ReceivedReward>();
|
||||
_victoryRewards = new List<ReceivedReward>();
|
||||
}
|
||||
|
||||
public AchievedInfo(JsonData data)
|
||||
: this()
|
||||
{
|
||||
Read(data);
|
||||
}
|
||||
|
||||
public void Read(JsonData data)
|
||||
{
|
||||
if (data.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (data.Keys.Contains("achieved_mission_list"))
|
||||
{
|
||||
JsonData jsonData = data["achieved_mission_list"];
|
||||
if (jsonData != null)
|
||||
{
|
||||
for (int i = 0; i < jsonData.Count; i++)
|
||||
{
|
||||
_missions.Add(UserMission.CreateAchievedMission(jsonData[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.Keys.Contains("achieved_achievement_list"))
|
||||
{
|
||||
JsonData jsonData2 = data["achieved_achievement_list"];
|
||||
if (jsonData2 != null)
|
||||
{
|
||||
for (int j = 0; j < jsonData2.Count; j++)
|
||||
{
|
||||
UserAchievement userAchievement = UserAchievement.CreateCompletedAchievement(jsonData2[j]);
|
||||
if (!string.IsNullOrEmpty(userAchievement.OsId))
|
||||
{
|
||||
AchievementImpl.instance.ReleaseAchievement(userAchievement.OsId);
|
||||
}
|
||||
_achievements.Add(userAchievement);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.Keys.Contains("grand_master_reward_list"))
|
||||
{
|
||||
JsonData jsonData3 = data["grand_master_reward_list"];
|
||||
if (jsonData3 != null)
|
||||
{
|
||||
for (int k = 0; k < jsonData3.Count; k++)
|
||||
{
|
||||
_rewards.Add(ReceivedReward.CreateFromBattleResultGrandMaster(jsonData3[k]));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.Keys.Contains("achieved_mission_reward_list"))
|
||||
{
|
||||
JsonData jsonData4 = data["achieved_mission_reward_list"];
|
||||
if (jsonData4 != null)
|
||||
{
|
||||
for (int l = 0; l < jsonData4.Count; l++)
|
||||
{
|
||||
_rewards.Add(ReceivedReward.CreateFromBattleResult(jsonData4[l]));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.Keys.Contains("win_reward_list"))
|
||||
{
|
||||
JsonData jsonData5 = data["win_reward_list"];
|
||||
if (jsonData5 != null)
|
||||
{
|
||||
for (int m = 0; m < jsonData5.Count; m++)
|
||||
{
|
||||
_victoryRewards.Add(ReceivedReward.CreateVictoryReward(jsonData5[m]));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.Keys.Contains("achieved_beginner_mission_reward_list"))
|
||||
{
|
||||
JsonData jsonData6 = data["achieved_beginner_mission_reward_list"];
|
||||
if (jsonData6 != null)
|
||||
{
|
||||
for (int n = 0; n < jsonData6.Count; n++)
|
||||
{
|
||||
_rewards.Add(ReceivedReward.CreateFromBeginnerMissionReward(jsonData6[n]));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.Keys.Contains("achieved_beginner_mission_list"))
|
||||
{
|
||||
JsonData jsonData7 = data["achieved_beginner_mission_list"];
|
||||
if (jsonData7 != null)
|
||||
{
|
||||
for (int num = 0; num < jsonData7.Count; num++)
|
||||
{
|
||||
_missions.Add(UserMission.CreateAchievedMission(jsonData7[num]));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.Keys.Contains("battle_pass_reward_list"))
|
||||
{
|
||||
JsonData jsonData8 = data["battle_pass_reward_list"];
|
||||
if (jsonData8 != null)
|
||||
{
|
||||
for (int num2 = 0; num2 < jsonData8.Count; num2++)
|
||||
{
|
||||
_rewards.Add(ReceivedReward.CreateFromBattlePassReward(jsonData8[num2]));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.Keys.Contains("battle_pass_message_list"))
|
||||
{
|
||||
JsonData jsonData9 = data["battle_pass_message_list"];
|
||||
if (jsonData9 != null)
|
||||
{
|
||||
for (int num3 = 0; num3 < jsonData9.Count; num3++)
|
||||
{
|
||||
_missions.Add(UserMission.CreateAchievedMission(jsonData9[num3]));
|
||||
}
|
||||
}
|
||||
}
|
||||
_lotteryData = LotteryApplyData.Parse(data);
|
||||
}
|
||||
}
|
||||
106
SVSim.BattleEngine/Engine/AddTargetInfo.cs
Normal file
106
SVSim.BattleEngine/Engine/AddTargetInfo.cs
Normal file
@@ -0,0 +1,106 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Wizard;
|
||||
|
||||
public class AddTargetInfo
|
||||
{
|
||||
private BattleCardBase _ownerCard;
|
||||
|
||||
private ConditionSkillFilterCollection _conditionFilter;
|
||||
|
||||
private ApplySkillTargetFilterCollection _targetFilter;
|
||||
|
||||
private Func<SkillBase, bool> typeCheck;
|
||||
|
||||
private string _conditionFilterText;
|
||||
|
||||
private string _targetFilterText;
|
||||
|
||||
private string _skillTypeText;
|
||||
|
||||
private string _ownerCardtype;
|
||||
|
||||
private SkillCreator _skillCreator;
|
||||
|
||||
public AddTargetInfo(BattleCardBase ownerCard, string conditionFilterText, string targetFilterText, string skillTypeText, string ownerCardType, SkillBase skill)
|
||||
{
|
||||
_ownerCard = ownerCard;
|
||||
_conditionFilterText = conditionFilterText;
|
||||
_targetFilterText = targetFilterText;
|
||||
_skillTypeText = skillTypeText;
|
||||
_ownerCardtype = ownerCardType;
|
||||
_conditionFilter = new ConditionSkillFilterCollection();
|
||||
_targetFilter = new ApplySkillTargetFilterCollection();
|
||||
typeCheck = SetTypeCheck(_skillTypeText, _ownerCardtype);
|
||||
_skillCreator = _ownerCard.CreateSkillCreator(_ownerCard.SelfBattlePlayer, _ownerCard.OpponentBattlePlayer, _ownerCard.ResourceMgr);
|
||||
string[] array = _conditionFilterText.Split('&');
|
||||
List<SkillFilterCreator.ContentInfo> list = new List<SkillFilterCreator.ContentInfo>();
|
||||
for (int i = 0; i < array.Length; i++)
|
||||
{
|
||||
SkillFilterCreator.ParseContentInfo(array[i], out var retParsedInfo);
|
||||
list.Add(retParsedInfo);
|
||||
}
|
||||
SkillCreator.SetupSkillConditionOld(_conditionFilter, list, _ownerCard, skill);
|
||||
string[] array2 = _targetFilterText.Split('&');
|
||||
List<SkillFilterCreator.ContentInfo> list2 = new List<SkillFilterCreator.ContentInfo>();
|
||||
for (int j = 0; j < array2.Length; j++)
|
||||
{
|
||||
SkillFilterCreator.ParseContentInfo(array2[j], out var retParsedInfo2);
|
||||
list2.Add(retParsedInfo2);
|
||||
}
|
||||
_skillCreator.SetupSkillTargetOld(_targetFilter, _ownerCard, list2, skill);
|
||||
}
|
||||
|
||||
public List<BattleCardBase> GetAddTargetCard(SkillBase skill, BattlePlayerReadOnlyInfoPair pair, SkillConditionCheckerOption checkerOption, SkillOptionValue optionValue)
|
||||
{
|
||||
if (typeCheck(skill) && FilterComparison(skill.ApplyFilterCollection))
|
||||
{
|
||||
return _targetFilter.Filtering(pair, checkerOption, optionValue).Cast<BattleCardBase>().ToList();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private Func<SkillBase, bool> SetTypeCheck(string skillType, string ownerCardType)
|
||||
{
|
||||
if (skillType != null && skillType == "damage")
|
||||
{
|
||||
return (SkillBase skill) => CardTypeCheck(skill.SkillPrm.ownerCard, ownerCardType) && skill is Skill_damage;
|
||||
}
|
||||
return (SkillBase skill) => CardTypeCheck(skill.SkillPrm.ownerCard, ownerCardType) && skill is Skill_none;
|
||||
}
|
||||
|
||||
private bool CardTypeCheck(BattleCardBase card, string ownerCardType)
|
||||
{
|
||||
return ownerCardType switch
|
||||
{
|
||||
"all" => true,
|
||||
"unit" => card.IsUnit,
|
||||
"spell" => card.IsSpell,
|
||||
"field" => card.IsField,
|
||||
"chant_field" => card.IsChantField,
|
||||
_ => false,
|
||||
};
|
||||
}
|
||||
|
||||
private bool FilterComparison(ApplySkillTargetFilterCollection ownerSkillFilter)
|
||||
{
|
||||
if (_conditionFilter.BattlePlayerFilter.GetType() == ownerSkillFilter.BattlePlayerFilter.GetType() && _conditionFilter.TargetFilter.GetType() == ownerSkillFilter.TargetFilter.GetType())
|
||||
{
|
||||
foreach (ISkillCardFilter cardType in _conditionFilter.CardFilterList)
|
||||
{
|
||||
if (!ownerSkillFilter.CardFilterList.Any((ISkillCardFilter s) => s.GetType() == cardType.GetType()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public AddTargetInfo Clone(BattleCardBase ownerCard)
|
||||
{
|
||||
return new AddTargetInfo(ownerCard, _conditionFilterText, _targetFilterText, _skillTypeText, _ownerCardtype, null);
|
||||
}
|
||||
}
|
||||
2651
SVSim.BattleEngine/Engine/ApiType.cs
Normal file
2651
SVSim.BattleEngine/Engine/ApiType.cs
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,90 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Wizard;
|
||||
using Wizard.Battle;
|
||||
|
||||
public class ApplySkillTargetFilterCollection : SkillFilterCollectionBase
|
||||
{
|
||||
public List<ISkillCustomSelectFilter> ApplyCustomSelectFilterList { get; set; }
|
||||
|
||||
public List<ISkillExclutionFilter> ApplyExclutionFilterList { get; private set; }
|
||||
|
||||
public ISkillSelectFilter ApplySelectFilter { get; set; }
|
||||
|
||||
public List<ApplySkillTargetFilterCollection> ApplyAndFilter { get; set; }
|
||||
|
||||
public ApplySkillTargetFilterCollection()
|
||||
{
|
||||
ApplyCustomSelectFilterList = new List<ISkillCustomSelectFilter>();
|
||||
ApplyExclutionFilterList = new List<ISkillExclutionFilter>();
|
||||
ApplyAndFilter = new List<ApplySkillTargetFilterCollection>();
|
||||
}
|
||||
|
||||
public List<IReadOnlyBattleCardInfo> Filtering(BattlePlayerReadOnlyInfoPair pair, SkillConditionCheckerOption checkerOption, SkillOptionValue optionValue)
|
||||
{
|
||||
List<IReadOnlyBattleCardInfo> list = new List<IReadOnlyBattleCardInfo>();
|
||||
List<IReadOnlyBattleCardInfo> AndFilterTargets = new List<IReadOnlyBattleCardInfo>();
|
||||
IEnumerable<IBattlePlayerReadOnlyInfo> battlePlayerInfos = null;
|
||||
if (ApplyAndFilter.Count <= 0)
|
||||
{
|
||||
if (base.BattlePlayerFilter != null)
|
||||
{
|
||||
battlePlayerInfos = base.BattlePlayerFilter.Filtering(pair);
|
||||
}
|
||||
if (base.TargetFilter != null)
|
||||
{
|
||||
list = base.TargetFilter.Filtering(battlePlayerInfos, checkerOption).ToList();
|
||||
if (BattleManagerBase.GetIns().XorShiftRandom(isSelf: true) != null && BattleManagerBase.GetIns().XorShiftRandom(isSelf: false) == null && !pair.ReadOnlySelf.IsPlayer && (base.TargetFilter is SkillTargetInHandCardFilter || base.TargetFilter is SkillTargetReturnCardFilter || base.TargetFilter is SkillTargetTokenDrawCardFilter))
|
||||
{
|
||||
return list;
|
||||
}
|
||||
}
|
||||
foreach (ISkillCardFilter cardFilter in base.CardFilterList)
|
||||
{
|
||||
list = cardFilter.Filtering(list, optionValue).ToList();
|
||||
}
|
||||
int i = 0;
|
||||
for (int count = ApplyCustomSelectFilterList.Count; i < count; i++)
|
||||
{
|
||||
list = ApplyCustomSelectFilterList[i].Filtering(list, battlePlayerInfos, checkerOption).ToList();
|
||||
}
|
||||
for (int j = 0; j < ApplyExclutionFilterList.Count; j++)
|
||||
{
|
||||
list = ApplyExclutionFilterList[j].Filtering(list, battlePlayerInfos, checkerOption, optionValue).ToList();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int k = 0; k < ApplyAndFilter.Count; k++)
|
||||
{
|
||||
List<BattleCardBase> cards = ApplyAndFilter[k].Filtering(pair, checkerOption, optionValue).Cast<BattleCardBase>().ToList();
|
||||
List<IReadOnlyBattleCardInfo> collection = (from IReadOnlyBattleCardInfo x in ApplyAndFilter[k].SelectFilter.Filtering(cards, optionValue, checkerOption)
|
||||
where !AndFilterTargets.Contains(x)
|
||||
select x).ToList();
|
||||
AndFilterTargets.AddRange(collection);
|
||||
}
|
||||
}
|
||||
List<IReadOnlyBattleCardInfo> list2 = list.ToList();
|
||||
list2.AddRange(AndFilterTargets);
|
||||
return list2;
|
||||
}
|
||||
|
||||
public bool SimpleFiltering(IReadOnlyBattleCardInfo targetCard, BattlePlayerReadOnlyInfoPair pair, SkillConditionCheckerOption checkerOption, SkillOptionValue optionValue)
|
||||
{
|
||||
List<IReadOnlyBattleCardInfo> list = new List<IReadOnlyBattleCardInfo> { targetCard };
|
||||
IEnumerable<IBattlePlayerReadOnlyInfo> battlePlayerInfos = base.BattlePlayerFilter.Filtering(pair);
|
||||
for (int i = 0; i < base.CardFilterList.Count; i++)
|
||||
{
|
||||
list = base.CardFilterList[i].Filtering(list, optionValue).ToList();
|
||||
}
|
||||
for (int j = 0; j < ApplyCustomSelectFilterList.Count; j++)
|
||||
{
|
||||
list = ApplyCustomSelectFilterList[j].Filtering(list, battlePlayerInfos, checkerOption).ToList();
|
||||
}
|
||||
for (int k = 0; k < ApplyExclutionFilterList.Count; k++)
|
||||
{
|
||||
list = ApplyExclutionFilterList[k].Filtering(list, battlePlayerInfos, checkerOption, optionValue).ToList();
|
||||
}
|
||||
return list.Count() > 0;
|
||||
}
|
||||
}
|
||||
117
SVSim.BattleEngine/Engine/ArrowControl.cs
Normal file
117
SVSim.BattleEngine/Engine/ArrowControl.cs
Normal file
@@ -0,0 +1,117 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class ArrowControl : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject ArrowHead;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject ArrowEfc;
|
||||
|
||||
[SerializeField]
|
||||
private int DivideCnt = 10;
|
||||
|
||||
[SerializeField]
|
||||
private bool isEvo;
|
||||
|
||||
private IList<GameObject> ArrowEfcList;
|
||||
|
||||
private GameObject FromObj;
|
||||
|
||||
private GameObject ToObj;
|
||||
|
||||
private bool isOn;
|
||||
|
||||
private bool _isTargettingEnemy;
|
||||
|
||||
private float ChangeTime;
|
||||
|
||||
private IList<int> ArrowTarList;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
ArrowEfcList = new List<GameObject>();
|
||||
ArrowEfcList.Add(ArrowEfc);
|
||||
for (int i = 1; i < DivideCnt; i++)
|
||||
{
|
||||
GameObject gameObject = Object.Instantiate(ArrowEfc);
|
||||
if (!(null == gameObject))
|
||||
{
|
||||
gameObject.transform.parent = base.transform;
|
||||
ArrowEfcList.Add(gameObject);
|
||||
}
|
||||
}
|
||||
ArrowTarList = new List<int>();
|
||||
for (int j = 0; j < DivideCnt; j++)
|
||||
{
|
||||
ArrowTarList.Add(j);
|
||||
}
|
||||
HideArrow();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (isOn)
|
||||
{
|
||||
SetArrowLine();
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowArrow(GameObject fromObj, GameObject toObj, bool isTargettingEnemy)
|
||||
{
|
||||
FromObj = fromObj;
|
||||
ToObj = toObj;
|
||||
_isTargettingEnemy = isTargettingEnemy;
|
||||
isOn = true;
|
||||
base.gameObject.SetActive(value: true);
|
||||
}
|
||||
|
||||
public void HideArrow()
|
||||
{
|
||||
isOn = false;
|
||||
for (int i = 0; i < DivideCnt; i++)
|
||||
{
|
||||
ArrowEfcList[i].SetActive(value: false);
|
||||
}
|
||||
base.gameObject.SetActive(value: false);
|
||||
}
|
||||
|
||||
private void SetArrowLine()
|
||||
{
|
||||
if (isEvo)
|
||||
{
|
||||
ChangeTime -= Time.deltaTime * 5f;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeTime -= Time.deltaTime;
|
||||
}
|
||||
if (ChangeTime <= 0f)
|
||||
{
|
||||
ChangeTime = 1f;
|
||||
ArrowTarList.Add(ArrowTarList[0]);
|
||||
ArrowTarList.RemoveAt(0);
|
||||
}
|
||||
ArrowHead.transform.position = ToObj.transform.position;
|
||||
Vector3 position = FromObj.transform.position;
|
||||
Vector3 position2 = ToObj.transform.position;
|
||||
Vector3 p = (_isTargettingEnemy ? position : position2) + Vector3.back * Vector3.Distance(position, position2) + Vector3.down * Vector3.Distance(position, position2) * -0.5f;
|
||||
Vector3[] array = new Vector3[DivideCnt];
|
||||
array = MotionUtils.GetBezierQuad(position, p, position2, DivideCnt);
|
||||
for (int i = 0; i < array.Length; i++)
|
||||
{
|
||||
float num = 1f - ChangeTime;
|
||||
if (ArrowTarList[i] != 0)
|
||||
{
|
||||
ArrowEfcList[i].SetActive(value: true);
|
||||
ArrowEfcList[i].transform.position = (array[ArrowTarList[i]] - array[ArrowTarList[i] - 1]) * num + array[ArrowTarList[i] - 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
ArrowEfcList[i].SetActive(value: false);
|
||||
ArrowEfcList[i].transform.position = array[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
74
SVSim.BattleEngine/Engine/AttachedSkillInformation.cs
Normal file
74
SVSim.BattleEngine/Engine/AttachedSkillInformation.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
using System.Collections.Generic;
|
||||
using Wizard.Battle;
|
||||
|
||||
public class AttachedSkillInformation
|
||||
{
|
||||
public SkillCollectionBase AttachedSkills { get; protected set; }
|
||||
|
||||
public List<string> OwnerCardNameList { get; protected set; }
|
||||
|
||||
public List<int> OwnerCardIdList { get; protected set; }
|
||||
|
||||
public List<long> DuplicateBanNum { get; protected set; }
|
||||
|
||||
public List<SkillBase> CreatorSkillList { get; protected set; }
|
||||
|
||||
public List<int> CreatorSkillIndexList { get; protected set; }
|
||||
|
||||
public AttachedSkillInformation(BattleCardBase card)
|
||||
{
|
||||
AttachedSkills = new SkillCollectionBase(card);
|
||||
OwnerCardNameList = new List<string>();
|
||||
OwnerCardIdList = new List<int>();
|
||||
DuplicateBanNum = new List<long>();
|
||||
CreatorSkillList = new List<SkillBase>();
|
||||
CreatorSkillIndexList = new List<int>();
|
||||
}
|
||||
|
||||
public AttachedSkillInformation(BattleCardBase card, SkillCollectionBase skills, List<string> nameList, List<int> idList, List<long> duplicateBanNum, List<SkillBase> createrList, List<int> creatorSkillIndexList)
|
||||
{
|
||||
AttachedSkills = skills.Clone(card);
|
||||
OwnerCardNameList = new List<string>(nameList);
|
||||
OwnerCardIdList = new List<int>(idList);
|
||||
DuplicateBanNum = new List<long>(duplicateBanNum);
|
||||
CreatorSkillList = new List<SkillBase>(createrList);
|
||||
CreatorSkillIndexList = new List<int>(creatorSkillIndexList);
|
||||
}
|
||||
|
||||
public void Add(SkillBase skill, string ownerCardName, int ownerCardID, long duplicateBanNum, SkillBase creatorSkill, int index)
|
||||
{
|
||||
AttachedSkills.Add(skill);
|
||||
OwnerCardNameList.Add(ownerCardName);
|
||||
OwnerCardIdList.Add(ownerCardID);
|
||||
DuplicateBanNum.Add(duplicateBanNum);
|
||||
CreatorSkillList.Add(creatorSkill);
|
||||
CreatorSkillIndexList.Add(index);
|
||||
}
|
||||
|
||||
public void Remove(SkillBase skill, BattleCardBase owner, long duplicateBanNum, SkillBase creatorSkill, int index)
|
||||
{
|
||||
string name = owner.GetName();
|
||||
int cardId = owner.CardId;
|
||||
Remove(skill, name, cardId, duplicateBanNum, creatorSkill, index);
|
||||
}
|
||||
|
||||
public void Remove(SkillBase skill, string ownerCardName, int ownerCardID, long duplicateBanNum, SkillBase creatorSkill, int index)
|
||||
{
|
||||
AttachedSkills.Remove(skill);
|
||||
OwnerCardNameList.Remove(ownerCardName);
|
||||
OwnerCardIdList.Remove(ownerCardID);
|
||||
DuplicateBanNum.Remove(duplicateBanNum);
|
||||
CreatorSkillList.Remove(creatorSkill);
|
||||
CreatorSkillIndexList.Remove(index);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
AttachedSkills.Clear();
|
||||
OwnerCardNameList.Clear();
|
||||
OwnerCardIdList.Clear();
|
||||
DuplicateBanNum.Clear();
|
||||
CreatorSkillList.Clear();
|
||||
CreatorSkillIndexList.Clear();
|
||||
}
|
||||
}
|
||||
15
SVSim.BattleEngine/Engine/AttachingAbilityInfo.cs
Normal file
15
SVSim.BattleEngine/Engine/AttachingAbilityInfo.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.Collections.Generic;
|
||||
using Wizard.Battle;
|
||||
|
||||
public class AttachingAbilityInfo
|
||||
{
|
||||
public SkillBase Skill { get; private set; }
|
||||
|
||||
public List<IReadOnlyBattleCardInfo> TargetCards { get; private set; }
|
||||
|
||||
public AttachingAbilityInfo(SkillBase skill, List<IReadOnlyBattleCardInfo> targetCards)
|
||||
{
|
||||
Skill = skill;
|
||||
TargetCards = targetCards;
|
||||
}
|
||||
}
|
||||
154
SVSim.BattleEngine/Engine/BMFont.cs
Normal file
154
SVSim.BattleEngine/Engine/BMFont.cs
Normal file
@@ -0,0 +1,154 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
[Serializable]
|
||||
public class BMFont
|
||||
{
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
private int mSize = 16;
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
private int mBase;
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
private int mWidth;
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
private int mHeight;
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
private string mSpriteName;
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
private List<BMGlyph> mSaved = new List<BMGlyph>();
|
||||
|
||||
private Dictionary<int, BMGlyph> mDict = new Dictionary<int, BMGlyph>();
|
||||
|
||||
public bool isValid => mSaved.Count > 0;
|
||||
|
||||
public int charSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return mSize;
|
||||
}
|
||||
set
|
||||
{
|
||||
mSize = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int baseOffset
|
||||
{
|
||||
get
|
||||
{
|
||||
return mBase;
|
||||
}
|
||||
set
|
||||
{
|
||||
mBase = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int texWidth
|
||||
{
|
||||
get
|
||||
{
|
||||
return mWidth;
|
||||
}
|
||||
set
|
||||
{
|
||||
mWidth = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int texHeight
|
||||
{
|
||||
get
|
||||
{
|
||||
return mHeight;
|
||||
}
|
||||
set
|
||||
{
|
||||
mHeight = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int glyphCount
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!isValid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return mSaved.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public string spriteName
|
||||
{
|
||||
get
|
||||
{
|
||||
return mSpriteName;
|
||||
}
|
||||
set
|
||||
{
|
||||
mSpriteName = value;
|
||||
}
|
||||
}
|
||||
|
||||
public List<BMGlyph> glyphs => mSaved;
|
||||
|
||||
public BMGlyph GetGlyph(int index, bool createIfMissing)
|
||||
{
|
||||
BMGlyph value = null;
|
||||
if (mDict.Count == 0)
|
||||
{
|
||||
int i = 0;
|
||||
for (int count = mSaved.Count; i < count; i++)
|
||||
{
|
||||
BMGlyph bMGlyph = mSaved[i];
|
||||
mDict.Add(bMGlyph.index, bMGlyph);
|
||||
}
|
||||
}
|
||||
if (!mDict.TryGetValue(index, out value) && createIfMissing)
|
||||
{
|
||||
value = new BMGlyph();
|
||||
value.index = index;
|
||||
mSaved.Add(value);
|
||||
mDict.Add(index, value);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
public BMGlyph GetGlyph(int index)
|
||||
{
|
||||
return GetGlyph(index, createIfMissing: false);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
mDict.Clear();
|
||||
mSaved.Clear();
|
||||
}
|
||||
|
||||
public void Trim(int xMin, int yMin, int xMax, int yMax)
|
||||
{
|
||||
if (isValid)
|
||||
{
|
||||
int i = 0;
|
||||
for (int count = mSaved.Count; i < count; i++)
|
||||
{
|
||||
mSaved[i]?.Trim(xMin, yMin, xMax, yMax);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
88
SVSim.BattleEngine/Engine/BMGlyph.cs
Normal file
88
SVSim.BattleEngine/Engine/BMGlyph.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
[Serializable]
|
||||
public class BMGlyph
|
||||
{
|
||||
public int index;
|
||||
|
||||
public int x;
|
||||
|
||||
public int y;
|
||||
|
||||
public int width;
|
||||
|
||||
public int height;
|
||||
|
||||
public int offsetX;
|
||||
|
||||
public int offsetY;
|
||||
|
||||
public int advance;
|
||||
|
||||
public int channel;
|
||||
|
||||
public List<int> kerning;
|
||||
|
||||
public int GetKerning(int previousChar)
|
||||
{
|
||||
if (kerning != null && previousChar != 0)
|
||||
{
|
||||
int i = 0;
|
||||
for (int count = kerning.Count; i < count; i += 2)
|
||||
{
|
||||
if (kerning[i] == previousChar)
|
||||
{
|
||||
return kerning[i + 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void SetKerning(int previousChar, int amount)
|
||||
{
|
||||
if (kerning == null)
|
||||
{
|
||||
kerning = new List<int>();
|
||||
}
|
||||
for (int i = 0; i < kerning.Count; i += 2)
|
||||
{
|
||||
if (kerning[i] == previousChar)
|
||||
{
|
||||
kerning[i + 1] = amount;
|
||||
return;
|
||||
}
|
||||
}
|
||||
kerning.Add(previousChar);
|
||||
kerning.Add(amount);
|
||||
}
|
||||
|
||||
public void Trim(int xMin, int yMin, int xMax, int yMax)
|
||||
{
|
||||
int num = x + width;
|
||||
int num2 = y + height;
|
||||
if (x < xMin)
|
||||
{
|
||||
int num3 = xMin - x;
|
||||
x += num3;
|
||||
width -= num3;
|
||||
offsetX += num3;
|
||||
}
|
||||
if (y < yMin)
|
||||
{
|
||||
int num4 = yMin - y;
|
||||
y += num4;
|
||||
height -= num4;
|
||||
offsetY += num4;
|
||||
}
|
||||
if (num > xMax)
|
||||
{
|
||||
width -= num - xMax;
|
||||
}
|
||||
if (num2 > yMax)
|
||||
{
|
||||
height -= num2 - yMax;
|
||||
}
|
||||
}
|
||||
}
|
||||
93
SVSim.BattleEngine/Engine/BMSymbol.cs
Normal file
93
SVSim.BattleEngine/Engine/BMSymbol.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
[Serializable]
|
||||
public class BMSymbol
|
||||
{
|
||||
public string sequence;
|
||||
|
||||
public string spriteName;
|
||||
|
||||
private UISpriteData mSprite;
|
||||
|
||||
private bool mIsValid;
|
||||
|
||||
private int mLength;
|
||||
|
||||
private int mOffsetX;
|
||||
|
||||
private int mOffsetY;
|
||||
|
||||
private int mWidth;
|
||||
|
||||
private int mHeight;
|
||||
|
||||
private int mAdvance;
|
||||
|
||||
private Rect mUV;
|
||||
|
||||
public int length
|
||||
{
|
||||
get
|
||||
{
|
||||
if (mLength == 0)
|
||||
{
|
||||
mLength = sequence.Length;
|
||||
}
|
||||
return mLength;
|
||||
}
|
||||
}
|
||||
|
||||
public int offsetX => mOffsetX;
|
||||
|
||||
public int offsetY => mOffsetY;
|
||||
|
||||
public int width => mWidth;
|
||||
|
||||
public int height => mHeight;
|
||||
|
||||
public int advance => mAdvance;
|
||||
|
||||
public Rect uvRect => mUV;
|
||||
|
||||
public void MarkAsChanged()
|
||||
{
|
||||
mIsValid = false;
|
||||
}
|
||||
|
||||
public bool Validate(UIAtlas atlas)
|
||||
{
|
||||
if (atlas == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!mIsValid)
|
||||
{
|
||||
if (string.IsNullOrEmpty(spriteName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
mSprite = ((atlas != null) ? atlas.GetSprite(spriteName) : null);
|
||||
if (mSprite != null)
|
||||
{
|
||||
Texture texture = atlas.texture;
|
||||
if (texture == null)
|
||||
{
|
||||
mSprite = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
mUV = new Rect(mSprite.x, mSprite.y, mSprite.width, mSprite.height);
|
||||
mUV = NGUIMath.ConvertToTexCoords(mUV, texture.width, texture.height);
|
||||
mOffsetX = mSprite.paddingLeft;
|
||||
mOffsetY = mSprite.paddingTop;
|
||||
mWidth = mSprite.width;
|
||||
mHeight = mSprite.height;
|
||||
mAdvance = mSprite.width + (mSprite.paddingLeft + mSprite.paddingRight);
|
||||
mIsValid = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return mSprite != null;
|
||||
}
|
||||
}
|
||||
272
SVSim.BattleEngine/Engine/BackGroundBase.cs
Normal file
272
SVSim.BattleEngine/Engine/BackGroundBase.cs
Normal file
@@ -0,0 +1,272 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class BackGroundBase
|
||||
{
|
||||
protected string _bgmId;
|
||||
|
||||
protected BattleCamera _battleCamera;
|
||||
|
||||
protected GameObject _fieldModel;
|
||||
|
||||
protected GameObject _fieldParticles;
|
||||
|
||||
protected IDictionary<string, Animation> m_FieldAnimationDictionary;
|
||||
|
||||
protected IDictionary<string, GameObject> _fieldObjDictionary;
|
||||
|
||||
protected IDictionary<string, Animator> m_FieldAnimatorDictionary;
|
||||
|
||||
protected IDictionary<string, ParticleSystem> _fieldParticleSystemDictionary;
|
||||
|
||||
protected IDictionary<string, int> _gimicCntDictionary;
|
||||
|
||||
public string[] GimicAudioList;
|
||||
|
||||
protected string _str3DFieldNo;
|
||||
|
||||
protected string _str3DFieldPath;
|
||||
|
||||
protected BattleManagerBase m_BtlMgrIns;
|
||||
|
||||
protected string m_FieldAssetPath;
|
||||
|
||||
protected List<string> m_SoundAssetPathList;
|
||||
|
||||
protected float m_RandomActionTime;
|
||||
|
||||
protected bool IsFieldRandom;
|
||||
|
||||
private Coroutine battleLoadCoroutine;
|
||||
|
||||
public virtual int FieldId => 1;
|
||||
|
||||
public virtual int FieldEffectId => FieldId;
|
||||
|
||||
public GameObject Field { get; protected set; }
|
||||
|
||||
public GameObject m_Battle3DContainer { get; protected set; }
|
||||
|
||||
public GameObject m_BattleCutInContainer { get; protected set; }
|
||||
|
||||
public SetShaderGlobalColorBG SetShaderGlobalColorBG { get; protected set; }
|
||||
|
||||
public bool IsLoadDone { get; protected set; }
|
||||
|
||||
public BackGroundBase(string bgmId = "NONE")
|
||||
{
|
||||
_battleCamera = null;
|
||||
m_Battle3DContainer = null;
|
||||
m_BattleCutInContainer = null;
|
||||
m_BtlMgrIns = BattleManagerBase.GetIns();
|
||||
IsLoadDone = false;
|
||||
_str3DFieldNo = "";
|
||||
_str3DFieldPath = "";
|
||||
m_FieldAssetPath = "";
|
||||
Field = null;
|
||||
_fieldModel = null;
|
||||
_fieldParticles = null;
|
||||
_bgmId = bgmId;
|
||||
m_RandomActionTime = 0f;
|
||||
IsFieldRandom = false;
|
||||
m_SoundAssetPathList = new List<string>();
|
||||
_fieldObjDictionary = new Dictionary<string, GameObject>();
|
||||
m_FieldAnimationDictionary = new Dictionary<string, Animation>();
|
||||
m_FieldAnimatorDictionary = new Dictionary<string, Animator>();
|
||||
_fieldParticleSystemDictionary = new Dictionary<string, ParticleSystem>();
|
||||
_gimicCntDictionary = new Dictionary<string, int>();
|
||||
SetShaderGlobalColorBG = null;
|
||||
Physics.gravity = new Vector3(0f, 0f, 9.8f);
|
||||
_str3DFieldNo = GetFieldIdString(FieldId);
|
||||
_gimicCntDictionary.Add("FieldGimic1", 0);
|
||||
_gimicCntDictionary.Add("FieldGimic2", 0);
|
||||
_gimicCntDictionary.Add("FieldGimic3", 0);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
UnityEngine.Object.DestroyImmediate(Field);
|
||||
Field = null;
|
||||
_fieldModel = null;
|
||||
_fieldParticles = null;
|
||||
_fieldObjDictionary.Clear();
|
||||
m_FieldAnimationDictionary.Clear();
|
||||
m_FieldAnimatorDictionary.Clear();
|
||||
_fieldParticleSystemDictionary.Clear();
|
||||
m_SoundAssetPathList.Clear();
|
||||
_gimicCntDictionary.Clear();
|
||||
SetShaderGlobalColorBG = null;
|
||||
BattleCoroutine.GetInstance().StopCoroutine(battleLoadCoroutine);
|
||||
}
|
||||
|
||||
public void CreateField(BattleCamera battleCamera, GameObject battle3DContainer, GameObject cutInContainer)
|
||||
{
|
||||
_battleCamera = battleCamera;
|
||||
m_Battle3DContainer = battle3DContainer;
|
||||
m_BattleCutInContainer = cutInContainer;
|
||||
Camera componentInChildren = m_Battle3DContainer.GetComponentInChildren<Camera>();
|
||||
Camera component = componentInChildren.transform.Find("Camera 3DGround").GetComponent<Camera>();
|
||||
_battleCamera.SetUp(componentInChildren, m_BattleCutInContainer.transform.Find("Camera").GetComponent<UICamera>(), component);
|
||||
LoadField();
|
||||
}
|
||||
|
||||
protected void LoadField()
|
||||
{
|
||||
IsLoadDone = false;
|
||||
m_BtlMgrIns = BattleManagerBase.GetIns();
|
||||
_str3DFieldNo = GetFieldIdString(FieldEffectId);
|
||||
_str3DFieldPath = "3DField" + GetFieldIdString(FieldId);
|
||||
m_SoundAssetPathList.Add($"s/se_field_{_str3DFieldNo}.acb");
|
||||
m_SoundAssetPathList.Add(string.Format("b/bgm_field_{0}.acb", (_bgmId != "NONE") ? GetFieldIdString(_bgmId) : _str3DFieldNo));
|
||||
m_SoundAssetPathList.Add(string.Format("b/bgm_field_{0}.awb", (_bgmId != "NONE") ? GetFieldIdString(_bgmId) : _str3DFieldNo));
|
||||
m_FieldAssetPath = Toolbox.ResourcesManager.GetAssetTypePath(_str3DFieldPath, ResourcesManager.AssetLoadPathType.Field3D);
|
||||
List<string> additionalAssetList = CollectAdditionalAssets();
|
||||
GameMgr.GetIns().GetEffectMgr().InitCommonEffect(string.Format("Json/FIeld" + _str3DFieldNo + "EffectData", _str3DFieldNo), isBattle: true);
|
||||
battleLoadCoroutine = BattleCoroutine.GetInstance().StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(m_SoundAssetPathList, delegate
|
||||
{
|
||||
BattleCoroutine.GetInstance().StartCoroutine(Toolbox.ResourcesManager.LoadAssetAsync(m_FieldAssetPath, delegate
|
||||
{
|
||||
Toolbox.ResourcesManager.BattleListAssetPathList.AddRange(m_SoundAssetPathList);
|
||||
Toolbox.ResourcesManager.BattleListAssetPathList.Add(m_FieldAssetPath);
|
||||
(UnityEngine.Object.Instantiate(Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(_str3DFieldPath, ResourcesManager.AssetLoadPathType.Field3D, isfetch: true))) as GameObject).name = _str3DFieldPath;
|
||||
if (additionalAssetList.IsNotNullOrEmpty())
|
||||
{
|
||||
BattleCoroutine.GetInstance().StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(additionalAssetList, delegate
|
||||
{
|
||||
Toolbox.ResourcesManager.BattleListAssetPathList.AddRange(additionalAssetList);
|
||||
BattleFieldBuild();
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
BattleFieldBuild();
|
||||
}
|
||||
}));
|
||||
}));
|
||||
}
|
||||
|
||||
private string GetFieldIdString(int fieldId)
|
||||
{
|
||||
return fieldId.ToString((fieldId < 100) ? "00" : "0000");
|
||||
}
|
||||
|
||||
private string GetFieldIdString(string fileldId)
|
||||
{
|
||||
if (int.TryParse(fileldId, out var result))
|
||||
{
|
||||
return result.ToString((result < 100) ? "00" : "0000");
|
||||
}
|
||||
return fileldId;
|
||||
}
|
||||
|
||||
protected virtual void BattleFieldBuild()
|
||||
{
|
||||
}
|
||||
|
||||
protected virtual List<string> CollectAdditionalAssets()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public virtual void StartFieldSetEffect(Vector3 pos)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void StartFieldTapEffect(int areaId, Vector3 pos)
|
||||
{
|
||||
BattleManagerBase.GetIns().BattlePlayer.PlayerBattleView.IsTouchable();
|
||||
}
|
||||
|
||||
public void StartFieldOpening()
|
||||
{
|
||||
PlayBgm();
|
||||
OpeningVfx.OpenningLogStep = "StartFieldOpening";
|
||||
IsFieldRandom = true;
|
||||
BattleCoroutine.GetInstance().StartCoroutine(RunFieldOpening());
|
||||
}
|
||||
|
||||
public void PlayBgm()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlayBGM(string.Format("bgm_field_{0}", (_bgmId != "NONE") ? GetFieldIdString(_bgmId) : _str3DFieldNo), 0f, 0L);
|
||||
}
|
||||
|
||||
protected virtual IEnumerator RunFieldOpening()
|
||||
{
|
||||
yield return new WaitForSeconds(0f);
|
||||
}
|
||||
|
||||
public static IEnumerator ObjectChecker(float fWaitSecs, string strObjectFind, Action callback)
|
||||
{
|
||||
while (GameObject.Find(strObjectFind) == null || !GameMgr.GetIns().GetEffectMgr().IsFieldEffectReady || !GameMgr.GetIns().GetEffectMgr().IsBattleUIEffectReady)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
callback();
|
||||
}
|
||||
|
||||
public void StartFieldGimic(GameObject obj)
|
||||
{
|
||||
if (!GameMgr.GetIns().IsReplayBattle && BattleManagerBase.GetIns().BattlePlayer.PlayerBattleView.IsTouchable())
|
||||
{
|
||||
BattleCoroutine.GetInstance().StartCoroutine(RunFieldGimic(obj));
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual IEnumerator RunFieldGimic(GameObject obj)
|
||||
{
|
||||
yield return new WaitForSeconds(0f);
|
||||
}
|
||||
|
||||
public void StartFieldShake()
|
||||
{
|
||||
BattleCoroutine.GetInstance().StartCoroutine(RunFieldShake());
|
||||
}
|
||||
|
||||
protected virtual IEnumerator RunFieldShake()
|
||||
{
|
||||
yield return new WaitForSeconds(0f);
|
||||
}
|
||||
|
||||
public virtual void UpdateFieldRandom()
|
||||
{
|
||||
}
|
||||
|
||||
public void AddParticleToFieldObjDictionary(string targetPath)
|
||||
{
|
||||
string[] array = targetPath.Split('/');
|
||||
List<Transform> list = new List<Transform>();
|
||||
list.Add(_fieldParticles.transform);
|
||||
List<Transform> list2 = new List<Transform>();
|
||||
for (int i = 0; i < array.Length; i++)
|
||||
{
|
||||
list2 = new List<Transform>();
|
||||
for (int j = 0; j < list.Count; j++)
|
||||
{
|
||||
list2.AddRange(FindAllChildByName(list[j], array[i]));
|
||||
}
|
||||
list = new List<Transform>(list2);
|
||||
}
|
||||
for (int k = 0; k < list2.Count; k++)
|
||||
{
|
||||
_fieldObjDictionary.Add(targetPath + "_" + k, list2[k].gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
public List<Transform> FindAllChildByName(Transform parent, string name)
|
||||
{
|
||||
List<Transform> list = new List<Transform>();
|
||||
for (int i = 0; i < parent.childCount; i++)
|
||||
{
|
||||
Transform child = parent.GetChild(i);
|
||||
if (child.name == name)
|
||||
{
|
||||
list.Add(child);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
79
SVSim.BattleEngine/Engine/BattleCamera.cs
Normal file
79
SVSim.BattleEngine/Engine/BattleCamera.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
using UnityEngine;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class BattleCamera
|
||||
{
|
||||
public UICamera m_CutInCamera;
|
||||
|
||||
public Camera Camera;
|
||||
|
||||
public Camera _backgroundCamera;
|
||||
|
||||
public Vector3 BattleCameraPos { get; private set; }
|
||||
|
||||
public Vector3 BattleCameraRot { get; private set; }
|
||||
|
||||
public BattleCamera()
|
||||
{
|
||||
Camera = null;
|
||||
}
|
||||
|
||||
public void SetUp(Camera camera, UICamera cutInCamera, Camera backgroundCamera)
|
||||
{
|
||||
Camera = camera;
|
||||
m_CutInCamera = cutInCamera;
|
||||
_backgroundCamera = backgroundCamera;
|
||||
BattleCameraPos = Camera.transform.localPosition;
|
||||
BattleCameraRot = Camera.transform.eulerAngles;
|
||||
}
|
||||
|
||||
public VfxBase ShakeCamera(Vector3 amount, float time, float delay)
|
||||
{
|
||||
ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create();
|
||||
parallelVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
iTween.ShakePosition(Camera.gameObject, iTween.Hash("amount", amount, "time", time, "delay", delay));
|
||||
}));
|
||||
return parallelVfxPlayer;
|
||||
}
|
||||
|
||||
public static VfxBase ShakeCameraGameObject(GameObject obj, Vector3 amount, float time, float delay)
|
||||
{
|
||||
ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create();
|
||||
parallelVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
iTween.ShakePosition(obj, iTween.Hash("amount", amount, "time", time, "delay", delay));
|
||||
}));
|
||||
return parallelVfxPlayer;
|
||||
}
|
||||
|
||||
public VfxBase ShakeComplete()
|
||||
{
|
||||
return InstantVfx.Create(delegate
|
||||
{
|
||||
Camera.transform.localPosition = BattleCameraPos;
|
||||
Camera.transform.eulerAngles = BattleCameraRot;
|
||||
iTween.Stop(Camera.gameObject);
|
||||
});
|
||||
}
|
||||
|
||||
public static VfxBase ShakeCompleteGameObject(GameObject obj, Vector3 position, Vector3 euler)
|
||||
{
|
||||
return InstantVfx.Create(delegate
|
||||
{
|
||||
obj.transform.localPosition = position;
|
||||
obj.transform.eulerAngles = euler;
|
||||
iTween.Stop(obj);
|
||||
});
|
||||
}
|
||||
|
||||
public Camera Get3DCamera()
|
||||
{
|
||||
return Camera;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Camera = null;
|
||||
}
|
||||
}
|
||||
124
SVSim.BattleEngine/Engine/BattleControl.cs
Normal file
124
SVSim.BattleEngine/Engine/BattleControl.cs
Normal file
@@ -0,0 +1,124 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.UI;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class BattleControl : MonoBehaviour
|
||||
{
|
||||
private BattleManagerBase m_BtlMgrIns;
|
||||
|
||||
private int FirstAttack;
|
||||
|
||||
public void Init()
|
||||
{
|
||||
m_BtlMgrIns = BattleManagerBase.GetIns();
|
||||
GameMgr.GetIns().GetInputMgr().SetLayerMask(512);
|
||||
LocalLog.AccumulateLastTraceLog("StartBattleCoroutine ");
|
||||
StartCoroutine(WaitLoadOpponentObjectToBattleStart(m_BtlMgrIns.LoadOpponentObjects()));
|
||||
}
|
||||
|
||||
private IEnumerator WaitLoadOpponentObjectToBattleStart(VfxBase vfx)
|
||||
{
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
FirstAttack = ToolboxGame.RealTimeNetworkAgent.GetIsFirstPlayer();
|
||||
}
|
||||
while (!vfx.IsEnd)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
LocalLog.AccumulateLastTraceLog("DecideFirstUser End ");
|
||||
m_BtlMgrIns.StartOpening(FirstAttack);
|
||||
}
|
||||
|
||||
public void BattleEnd(UIManager.ViewScene MoveTo, Action callback = null, Action<UIManager.ChangeViewSceneParam> paramCustomize = null, object sceneParam = null)
|
||||
{
|
||||
ToolboxGame.UIManager.gameObject.SetActive(value: true);
|
||||
UIManager.ChangeViewSceneParam changeViewSceneParam = new UIManager.ChangeViewSceneParam();
|
||||
changeViewSceneParam.OnBeforeChange = delegate
|
||||
{
|
||||
BattleManagerBase.GetIns().DisposeBattleGameObj();
|
||||
};
|
||||
changeViewSceneParam.OnChange = delegate
|
||||
{
|
||||
GameMgr.GetIns().GetEffectMgr().DestroyBattleEffectContainer();
|
||||
GameMgr.GetIns().GetDataMgr().ResetEnemyData();
|
||||
GameMgr.GetIns().DestroyBattleManagements();
|
||||
GameMgr.GetIns().GetGameObjMgr().GetUIContainer()
|
||||
.SetActive(value: false);
|
||||
if (callback != null)
|
||||
{
|
||||
callback();
|
||||
}
|
||||
};
|
||||
paramCustomize.Call(changeViewSceneParam);
|
||||
StartCoroutine(UnloadAllResources(MoveTo, changeViewSceneParam, null, sceneParam));
|
||||
}
|
||||
|
||||
private IEnumerator UnloadAllResources(UIManager.ViewScene MoveTo = UIManager.ViewScene.None, UIManager.ChangeViewSceneParam param = null, Action callback = null, object sceneParam = null)
|
||||
{
|
||||
BattleLogManager.GetInstance().Clear();
|
||||
GameMgr.GetIns().GetEffectMgr().ClearLastCacheEffect();
|
||||
StopAllTweens();
|
||||
yield return Resources.UnloadUnusedAssets();
|
||||
GC.Collect();
|
||||
callback?.Invoke();
|
||||
if (MoveTo != UIManager.ViewScene.None)
|
||||
{
|
||||
UIManager.GetInstance().ChangeViewScene(MoveTo, param, sceneParam);
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator BattleEnd(Action callback = null)
|
||||
{
|
||||
BattleRelease();
|
||||
yield return Resources.UnloadUnusedAssets();
|
||||
GC.Collect();
|
||||
callback?.Invoke();
|
||||
}
|
||||
|
||||
public void BattleRelease()
|
||||
{
|
||||
ToolboxGame.UIManager.gameObject.SetActive(value: true);
|
||||
GameMgr.GetIns().GetEffectMgr().DestroyBattleEffectContainer();
|
||||
GameMgr.GetIns().GetDataMgr().ResetEnemyData();
|
||||
if (BattleManagerBase.GetIns() != null)
|
||||
{
|
||||
BattleManagerBase.GetIns().DisposeBattleGameObj();
|
||||
}
|
||||
GameMgr.GetIns().DestroyBattleManagements();
|
||||
GameMgr.GetIns().GetGameObjMgr().GetUIContainer()
|
||||
.SetActive(value: false);
|
||||
BattleLogManager.GetInstance().Clear();
|
||||
GameMgr.GetIns().GetEffectMgr().ClearLastCacheEffect();
|
||||
StopAllTweens();
|
||||
}
|
||||
|
||||
private void StopAllTweens()
|
||||
{
|
||||
HashSet<GameObject> hashSet = new HashSet<GameObject>();
|
||||
for (int i = 0; i < iTween.tweens.Count; i++)
|
||||
{
|
||||
if (iTween.tweens[i] != null)
|
||||
{
|
||||
GameObject gameObject = (GameObject)iTween.tweens[i]["target"];
|
||||
if (gameObject != null)
|
||||
{
|
||||
hashSet.Add(gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (GameObject item in hashSet)
|
||||
{
|
||||
if (item != null)
|
||||
{
|
||||
iTween.Stop(item);
|
||||
}
|
||||
}
|
||||
iTween.tweens.Clear();
|
||||
}
|
||||
}
|
||||
246
SVSim.BattleEngine/Engine/BattleEnemy.cs
Normal file
246
SVSim.BattleEngine/Engine/BattleEnemy.cs
Normal file
@@ -0,0 +1,246 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle;
|
||||
using Wizard.Battle.Player.Emotion;
|
||||
using Wizard.Battle.View;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class BattleEnemy : BattlePlayerBase
|
||||
{
|
||||
private readonly Vector3 OFFSET_THINK_ICON_FROM_CLASSVIEW = new Vector3(0.62f, 0.15f, 0f);
|
||||
|
||||
private IEmotion _emotion;
|
||||
|
||||
private readonly Vector3 FIELD_CENTER_POSITION = new Vector3(0f, 0.25f, 0f);
|
||||
|
||||
public override bool IsGameFirst => !base.BattleMgr.IsFirst;
|
||||
|
||||
public override bool IsPlayer => false;
|
||||
|
||||
public override IBattlePlayerView BattleView => BattleEnemyView;
|
||||
|
||||
public override IEmotion Emotion => _emotion;
|
||||
|
||||
public virtual IBattlePlayerView BattleEnemyView { get; protected set; }
|
||||
|
||||
public bool EnableEnemyAI { get; set; }
|
||||
|
||||
public override int Turn
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!base.BattleMgr.IsFirst)
|
||||
{
|
||||
return base.BattleMgr.FirstTurn;
|
||||
}
|
||||
return base.BattleMgr.SecondTurn;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (base.BattleMgr.IsFirst)
|
||||
{
|
||||
base.BattleMgr.SecondTurn = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
base.BattleMgr.FirstTurn = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public event Action<List<int>> OnMulliganEndForReplay;
|
||||
|
||||
public BattleEnemy(BattleManagerBase battleMgr, BattleCamera battleCamera, BackGroundBase backGround, IInnerOptionsBuilder innerOptionsBuilder)
|
||||
: base(battleMgr, battleCamera, backGround, innerOptionsBuilder)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
BattleEnemyView = new BattleEnemyView(this);
|
||||
}
|
||||
|
||||
protected override void CreateSelfBattleCard()
|
||||
{
|
||||
EnemyClassBattleCard item = new EnemyClassBattleCard(new ClassBattleCardBase.ClassBuildInfo(_isPlayer: false, 20, this, base.BattleMgr.BattlePlayer, base.BattleMgr, base.BattleMgr.BattleResourceMgr));
|
||||
base.ClassAndInPlayCardList.Add(item);
|
||||
}
|
||||
|
||||
public override void Setup(BattlePlayerBase opponentBattlePlayer)
|
||||
{
|
||||
_emotion = _innerOptionsBuilder.CreateEnemyEmotion((IClassBattleCardView)base.Class.BattleCardView);
|
||||
base.Setup(opponentBattlePlayer);
|
||||
}
|
||||
|
||||
public override void SetupClone(BattlePlayerBase sourceBattlePlayer, BattlePlayerBase virtualOpponentBattlePlayer, CloneActualFlags cloneFlags)
|
||||
{
|
||||
sourceBattlePlayer.CopyToVirtualBase(this, virtualOpponentBattlePlayer, cloneFlags);
|
||||
}
|
||||
|
||||
public override VfxBase StartTurnControl(string log = "")
|
||||
{
|
||||
if (GameMgr.GetIns().IsAdminWatch)
|
||||
{
|
||||
UpdateHandCardsPlayability();
|
||||
}
|
||||
Turn++;
|
||||
SequentialVfxPlayer sequentialVfxPlayer = TurnEvolveControl(BattleView.EpIcon);
|
||||
VfxBase vfx = TurnStart();
|
||||
sequentialVfxPlayer.Register(vfx);
|
||||
VfxBase vfx2 = BattleManagerBase.GetIns().JudgeBattleResult();
|
||||
sequentialVfxPlayer.Register(vfx2);
|
||||
sequentialVfxPlayer.Register(CreateThinkingVfx(base.BattleMgr));
|
||||
return sequentialVfxPlayer;
|
||||
}
|
||||
|
||||
public VfxBase CreateThinkingVfx(BattleManagerBase battleMgr)
|
||||
{
|
||||
if (GameMgr.GetIns().IsAdminWatch)
|
||||
{
|
||||
return NullVfx.GetInstance();
|
||||
}
|
||||
return new DelaySetupVfx(() => new ThinkIconShowVfx(delegate
|
||||
{
|
||||
Vector3 position = base.BattleCamera.Get3DCamera().WorldToScreenPoint(base.Class.BattleCardView.Transform.position + OFFSET_THINK_ICON_FROM_CLASSVIEW);
|
||||
return UIManager.GetInstance().getCamera().ScreenToWorldPoint(position);
|
||||
}, battleMgr.BattleResourceMgr));
|
||||
}
|
||||
|
||||
public override VfxBase UsePp(int pp, bool isNewReplayMoveTurn = false)
|
||||
{
|
||||
base.UsePp(pp);
|
||||
int usedPp = base.Pp;
|
||||
int maxPp = base.PpTotal;
|
||||
Vector3 labelPosition = default(Vector3);
|
||||
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
|
||||
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
Vector3 position = base.BattleCamera.Get3DCamera().WorldToScreenPoint(StatusPanelControl.GetPPPanel().transform.Find("PPIcon/PPLabel").transform.position);
|
||||
labelPosition = UIManager.GetInstance().getCamera().ScreenToWorldPoint(position);
|
||||
}));
|
||||
sequentialVfxPlayer.Register(new DelaySetupVfx(() => m_vfxCreator.CreateUsePp(usedPp, maxPp, labelPosition, isNewReplayMoveTurn)));
|
||||
return sequentialVfxPlayer;
|
||||
}
|
||||
|
||||
protected override VfxBase TurnStartDrawCard(SkillProcessor skillProcessor)
|
||||
{
|
||||
NullVfx.GetInstance();
|
||||
int drawCount = ((IsGameFirst || Turn != 1) ? 1 : 2);
|
||||
VfxWith<IEnumerable<BattleCardBase>> vfxWith = RandomCardDraw(drawCount, skillProcessor);
|
||||
VfxBase vfxBase = CardDrawVfx(vfxWith.Value);
|
||||
SequentialVfxPlayer result = SequentialVfxPlayer.Create(vfxWith.Vfx, vfxBase);
|
||||
if (!base.Class.IsDead && EnableEnemyAI)
|
||||
{
|
||||
base.BattleMgr.EnemyAI.ExecuteEnemyAI(useWait: true);
|
||||
}
|
||||
_ = base.Class.IsDead;
|
||||
return result;
|
||||
}
|
||||
|
||||
public override VfxBase CardDrawVfx(IEnumerable<BattleCardBase> DrawList, bool skipShuffle = false, bool isOpenDrawSkill = false)
|
||||
{
|
||||
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
|
||||
if (GameMgr.GetIns().IsAdminWatch)
|
||||
{
|
||||
foreach (BattleCardBase card in DrawList)
|
||||
{
|
||||
if (card.BaseCost != card.Cost)
|
||||
{
|
||||
List<int> costList = card.BattleCardView.GetUseCostList(card.Cost);
|
||||
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
card.BattleCardView.UpdateCost(costList);
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
sequentialVfxPlayer.Register(new OpponentDrawCardVfx(DrawList, isOpenDrawSkill));
|
||||
sequentialVfxPlayer.Register(new OpponentDrawCardToHandVfx(DrawList.ToList(), 0.4f, isOpenDrawSkill, skipShuffle));
|
||||
return sequentialVfxPlayer;
|
||||
}
|
||||
|
||||
public override VfxBase TurnEnd()
|
||||
{
|
||||
ParallelVfxPlayer result = ParallelVfxPlayer.Create(base.TurnEnd(), new ThinkIconHideVfx(base.BattleMgr.BattleResourceMgr));
|
||||
if (GameMgr.GetIns().IsAdminWatch)
|
||||
{
|
||||
foreach (BattleCardBase handCard in base.HandCardList)
|
||||
{
|
||||
handCard.BattleCardView.HideCanPlayEffect();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected override void SetActive()
|
||||
{
|
||||
if (GameMgr.GetIns().IsAdminWatch)
|
||||
{
|
||||
UpdateHandCardsPlayability();
|
||||
}
|
||||
if (!IsGameFirst || Turn != 1)
|
||||
{
|
||||
base.IsChoiceBraveEffectTiming = true;
|
||||
BattleEnemyView.UpdateChoiceBraveButtonPulsateEffectAndSprite();
|
||||
}
|
||||
}
|
||||
|
||||
public override BattlePlayerBase CreateVirtualPlayer()
|
||||
{
|
||||
return new VirtualBattleEnemy(base.BattleMgr, base.BattleCamera, base.BackGround);
|
||||
}
|
||||
|
||||
public override void UpdateHandCardsPlayability(bool areArrowsForcedOff = false)
|
||||
{
|
||||
foreach (BattleCardBase handCard in _opponentBattlePlayer.HandCardList)
|
||||
{
|
||||
handCard.BattleCardView.areArrowsForcedOff = areArrowsForcedOff;
|
||||
handCard.BattleCardView.UpdateMovability();
|
||||
}
|
||||
if (!GameMgr.GetIns().IsAdmin)
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach (BattleCardBase handCard2 in base.HandCardList)
|
||||
{
|
||||
handCard2.BattleCardView.areArrowsForcedOff = areArrowsForcedOff;
|
||||
handCard2.BattleCardView.UpdateMovability();
|
||||
}
|
||||
if (base.IsSelfTurn)
|
||||
{
|
||||
BattleView.UpdateChoiceBraveButtonPulsateEffectAndSprite();
|
||||
}
|
||||
}
|
||||
|
||||
public override VfxBase MoveToHand(List<BattleCardBase> cardsToMoveToHand)
|
||||
{
|
||||
return SequentialVfxPlayer.Create(new OpponentDrawCardToHandVfx(cardsToMoveToHand.ToList(), 0.3f), InstantVfx.Create(delegate
|
||||
{
|
||||
UpdateHandCardsPlayability();
|
||||
}));
|
||||
}
|
||||
|
||||
public override EffectBattle GetSkillEffect(string skillEffectPath)
|
||||
{
|
||||
return GameMgr.GetIns().GetEffectMgr().GetEnemyEffectBattle(skillEffectPath);
|
||||
}
|
||||
|
||||
public override Vector3 GetFieldCenterPosition()
|
||||
{
|
||||
return FIELD_CENTER_POSITION;
|
||||
}
|
||||
|
||||
public override VfxBase TurnStartDraw(SkillProcessor skillProcessor)
|
||||
{
|
||||
return base.TurnStartDraw(skillProcessor);
|
||||
}
|
||||
|
||||
public void CallRecordingMulliganEnd(List<int> cardIndexList)
|
||||
{
|
||||
this.OnMulliganEndForReplay.Call(cardIndexList);
|
||||
}
|
||||
}
|
||||
25
SVSim.BattleEngine/Engine/BattleFinishParam.cs
Normal file
25
SVSim.BattleEngine/Engine/BattleFinishParam.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System.Collections.Generic;
|
||||
using Wizard;
|
||||
|
||||
public class BattleFinishParam : BaseParam
|
||||
{
|
||||
public int class_id;
|
||||
|
||||
public int total_turn;
|
||||
|
||||
public int evolve_count;
|
||||
|
||||
public int enemy_evolve_count;
|
||||
|
||||
public int battle_result;
|
||||
|
||||
public int is_retire;
|
||||
|
||||
public Dictionary<string, int> mission;
|
||||
|
||||
public string recovery_data;
|
||||
|
||||
public int SDTRB;
|
||||
|
||||
public string[] prosessing_time_data;
|
||||
}
|
||||
29
SVSim.BattleEngine/Engine/BattleLifeTimeSharedObject.cs
Normal file
29
SVSim.BattleEngine/Engine/BattleLifeTimeSharedObject.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class BattleLifeTimeSharedObject
|
||||
{
|
||||
private Dictionary<string, SkillCreator.SkillBuildInfo> _skillBuildInfoSharedObject;
|
||||
|
||||
public BattleLifeTimeSharedObject()
|
||||
{
|
||||
_skillBuildInfoSharedObject = new Dictionary<string, SkillCreator.SkillBuildInfo>();
|
||||
}
|
||||
|
||||
~BattleLifeTimeSharedObject()
|
||||
{
|
||||
_skillBuildInfoSharedObject.Clear();
|
||||
}
|
||||
|
||||
public void SetSkillBuildInfo(string key, SkillCreator.SkillBuildInfo value)
|
||||
{
|
||||
if (!_skillBuildInfoSharedObject.ContainsKey(key))
|
||||
{
|
||||
_skillBuildInfoSharedObject.Add(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
public SkillCreator.SkillBuildInfo GetSkillBuildInfo(string key)
|
||||
{
|
||||
return _skillBuildInfoSharedObject.GetValueOrDefault(key, null);
|
||||
}
|
||||
}
|
||||
609
SVSim.BattleEngine/Engine/BattleMenuMgr.cs
Normal file
609
SVSim.BattleEngine/Engine/BattleMenuMgr.cs
Normal file
@@ -0,0 +1,609 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.View;
|
||||
using Wizard.RoomMatch;
|
||||
|
||||
public class BattleMenuMgr : NonDialogPopup
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject UserPanel;
|
||||
|
||||
[SerializeField]
|
||||
private NguiObjs UserPanelP;
|
||||
|
||||
[SerializeField]
|
||||
private NguiObjs UserPanelE;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject CharPanelP;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject CharPanelE;
|
||||
|
||||
[SerializeField]
|
||||
private UITexture CharTextureP;
|
||||
|
||||
[SerializeField]
|
||||
private UITexture CharTextureE;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _roomIDRoot;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _roomIDLabel;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _winnerRewardRoot;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _winnerRewardBox;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _winnerRewardNameLabel;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _vsRoot;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _ratingRoot;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _backSpriteRoot;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _backSpriteButton;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _defaultMenuRoot;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _titleLine;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _titleLineWithFormat;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _formatLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _formatIcon;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _tsRotaionFormatLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _retireButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _retireButtonLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _settingButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _settingButtonLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _backButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _backButtonLabel;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _questMenuRoot;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _questRetireButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _questRetireButtonLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _questSettingButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _questSettingButtonLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _questBackButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _questBackButtonLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _questMissionButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _questMissionButtonLabel;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _questMissionDialogPrefab;
|
||||
|
||||
[SerializeField]
|
||||
private ClassInfoParts _classInfoP;
|
||||
|
||||
[SerializeField]
|
||||
private ClassInfoParts _classInfoE;
|
||||
|
||||
[SerializeField]
|
||||
private ClassInfoParts _classInfoWithSubClassP;
|
||||
|
||||
[SerializeField]
|
||||
private ClassInfoParts _classInfoWithSubClassE;
|
||||
|
||||
[SerializeField]
|
||||
private FlexibleGrid _subClassGridP;
|
||||
|
||||
[SerializeField]
|
||||
private FlexibleGrid _subClassGridE;
|
||||
|
||||
[SerializeField]
|
||||
private MyRotationParts _myRotationInfoP;
|
||||
|
||||
[SerializeField]
|
||||
private MyRotationParts _myRotationInfoE;
|
||||
|
||||
private Dictionary<string, Vector3> defPosDict = new Dictionary<string, Vector3>();
|
||||
|
||||
public const float OPEN_DURATION_TIME = 0.3f;
|
||||
|
||||
private bool IsQuestBattle => GameMgr.GetIns().GetDataMgr().IsQuestBattleType();
|
||||
|
||||
public GameObject QuestMissionDialogPrefab => _questMissionDialogPrefab;
|
||||
|
||||
public void DisplayBattleMenu(Action retireAction, Action settingAction, Action backAction, Action questMissionAction)
|
||||
{
|
||||
InitializeBattleMenu();
|
||||
iTween.MoveTo(UserPanel, iTween.Hash("position", defPosDict["UserPanel"], "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
iTween.MoveTo(CharPanelP, iTween.Hash("position", defPosDict["CharPanelP"], "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
iTween.MoveTo(CharPanelE, iTween.Hash("position", defPosDict["CharPanelE"], "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
TweenAlpha.Begin(UserPanel, 0f, 0f);
|
||||
TweenAlpha.Begin(UserPanel, 0.3f, 1f);
|
||||
if (IsQuestBattle && !BattleManagerBase.GetIns().IsPuzzleMgr && GameMgr.GetIns().GetDataMgr().m_BattleType != DataMgr.BattleType.BossRushQuest && GameMgr.GetIns().GetDataMgr().m_BattleType != DataMgr.BattleType.SecretBossQuest)
|
||||
{
|
||||
SetupQuestButtonMenu(retireAction, settingAction, backAction, questMissionAction);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetupDefaultButtonMenu(retireAction, settingAction, backAction);
|
||||
}
|
||||
TweenAlpha.Begin(base.gameObject, 0f, 0f);
|
||||
TweenAlpha.Begin(base.gameObject, 0.3f, 1f);
|
||||
TweenAlpha.Begin(_backSpriteRoot.gameObject, 0f, 0f);
|
||||
TweenAlpha.Begin(_backSpriteRoot.gameObject, 0.3f, 1f);
|
||||
}
|
||||
|
||||
private void InitializeBattleMenu()
|
||||
{
|
||||
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
|
||||
NetworkUserInfoData networkUserInfoData = GameMgr.GetIns().GetNetworkUserInfoData();
|
||||
PuzzleQuestData puzzleQuestData = null;
|
||||
bool isPuzzleMgr = BattleManagerBase.GetIns().IsPuzzleMgr;
|
||||
if (isPuzzleMgr)
|
||||
{
|
||||
puzzleQuestData = Data.Master.PuzzleQuestDataList.First((PuzzleQuestData data) => data.Id == GameMgr.GetIns().GetDataMgr().PuzzleQuestId);
|
||||
}
|
||||
string text = PlayerStaticData.UserName.ToString();
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
text = networkUserInfoData.GetSelfName();
|
||||
}
|
||||
UserPanelP.labels[0].text = text;
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
UserPanelE.labels[0].text = VideoHostingUtil.GetUserNameHidden(networkUserInfoData.GetOpponentName().ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelE.labels[0].text = dataMgr.GetEnemyCharaData().chara_name;
|
||||
}
|
||||
if (dataMgr.m_BattleType == DataMgr.BattleType.RankBattle)
|
||||
{
|
||||
if (PlayerStaticData.IsMasterRankCurrentFormat())
|
||||
{
|
||||
UserPanelP.labels[1].text = PlayerStaticData.UserMasterPointCurrentFormat().ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
int num = PlayerStaticData.UserBattlePointCurrentFormat();
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
num = networkUserInfoData.GetSelfBattlePoint();
|
||||
}
|
||||
UserPanelP.labels[1].text = num.ToString();
|
||||
}
|
||||
if (networkUserInfoData.GetOpponentIsMasterRank())
|
||||
{
|
||||
UserPanelE.labels[1].text = networkUserInfoData.GetOpponentMasterPoint().ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelE.labels[1].text = networkUserInfoData.GetOpponentBattlePoint().ToString();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelP.labels[1].gameObject.SetActive(value: false);
|
||||
UserPanelE.labels[1].gameObject.SetActive(value: false);
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
UserPanelP.textures[0].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(networkUserInfoData.GetSelfEmblemId().ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else if (isPuzzleMgr)
|
||||
{
|
||||
UserPanelP.textures[0].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(puzzleQuestData.PlayerEmblemId.ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerStaticData.AttachUserEmblemTexture(UserPanelP.textures[0], PlayerStaticData.EmblemTexSize.M);
|
||||
}
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
UserPanelE.textures[0].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(networkUserInfoData.GetOpponentEmblemId().ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else
|
||||
{
|
||||
int num2 = 100000000;
|
||||
if (isPuzzleMgr)
|
||||
{
|
||||
num2 = puzzleQuestData.EnemyEmblemId;
|
||||
}
|
||||
else if (dataMgr.m_BattleType == DataMgr.BattleType.Quest)
|
||||
{
|
||||
num2 = dataMgr.QuestBattleData.EmblemId;
|
||||
}
|
||||
else if (dataMgr.m_BattleType == DataMgr.BattleType.BossRushQuest || dataMgr.m_BattleType == DataMgr.BattleType.SecretBossQuest)
|
||||
{
|
||||
num2 = dataMgr.BossRushBattleData.EmblemId;
|
||||
}
|
||||
string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(num2.ToString(), ResourcesManager.AssetLoadPathType.Emblem_M);
|
||||
if (Toolbox.ResourcesManager.IsLoadedAssetBundle(assetTypePath))
|
||||
{
|
||||
UserPanelE.textures[0].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(num2.ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelE.textures[0].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(num2.ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
DegreeHelper.InitializeDegree(UserPanelP.textures[1], networkUserInfoData.GetSelfDegreeId(), DegreeHelper.DegreeType.SMALL);
|
||||
}
|
||||
else if (isPuzzleMgr)
|
||||
{
|
||||
DegreeHelper.InitializeDegree(UserPanelP.textures[1], puzzleQuestData.PlayerDegreeId, DegreeHelper.DegreeType.MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
DegreeHelper.InitializeDegree(UserPanelP.textures[1], PlayerStaticData.UserDegreeID, DegreeHelper.DegreeType.SMALL);
|
||||
}
|
||||
int num3 = (GameMgr.GetIns().IsNetworkBattle ? networkUserInfoData.GetOpponentDegreeId() : (isPuzzleMgr ? puzzleQuestData.EnemyDegreeId : ((dataMgr.m_BattleType == DataMgr.BattleType.Quest) ? dataMgr.QuestBattleData.DegreeId : ((dataMgr.m_BattleType != DataMgr.BattleType.BossRushQuest && dataMgr.m_BattleType != DataMgr.BattleType.SecretBossQuest) ? dataMgr.PracticeDifficultyDegreeId : dataMgr.BossRushBattleData.DegreeId))));
|
||||
if ((dataMgr.m_BattleType != DataMgr.BattleType.Practice || dataMgr.PracticeDifficultyDegreeId != -1 || isPuzzleMgr) && (!dataMgr.IsQuestBattleType() || num3 != -1) && dataMgr.m_BattleType != DataMgr.BattleType.Story)
|
||||
{
|
||||
DegreeHelper.InitializeDegree(UserPanelE.textures[1], num3, DegreeHelper.DegreeType.SMALL);
|
||||
}
|
||||
UserPanelE.textures[1].gameObject.SetActive(value: true);
|
||||
if (dataMgr.m_BattleType != DataMgr.BattleType.Practice && dataMgr.m_BattleType != DataMgr.BattleType.Story && dataMgr.m_BattleType != DataMgr.BattleType.Quest && dataMgr.m_BattleType != DataMgr.BattleType.BossRushQuest && dataMgr.m_BattleType != DataMgr.BattleType.SecretBossQuest)
|
||||
{
|
||||
if (GameMgr.GetIns().IsWatchBattle || UserPanelP.textures[2].mainTexture == null)
|
||||
{
|
||||
UserPanelP.textures[2].mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(networkUserInfoData.GetSelfRank().ToString("00"), ResourcesManager.AssetLoadPathType.RankIcon_S, isfetch: true)) as Texture;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerStaticData.AttachUserRankTexture(UserPanelP.textures[2], PlayerStaticData.RankTexSize.S);
|
||||
}
|
||||
UserPanelE.textures[2].mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(networkUserInfoData.GetOpponentRank().ToString("00"), ResourcesManager.AssetLoadPathType.RankIcon_S, isfetch: true)) as Texture;
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelP.textures[2].gameObject.SetActive(value: false);
|
||||
UserPanelE.textures[2].gameObject.SetActive(value: false);
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
UIUtil.SetCountryTexture(UserPanelP.textures[3], networkUserInfoData.GetSelfCountryCode());
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flag = !string.IsNullOrEmpty(PlayerStaticData.UserCountryCode);
|
||||
UserPanelP.textures[3].gameObject.SetActive(flag);
|
||||
if (flag)
|
||||
{
|
||||
PlayerStaticData.AttachUserCountryTexture(UserPanelP.textures[3], PlayerStaticData.CountryTexSize.M);
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelP.textures[3].mainTexture = null;
|
||||
}
|
||||
}
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
UIUtil.SetCountryTexture(UserPanelE.textures[3], networkUserInfoData.GetOpponentCountryCode());
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelE.textures[3].gameObject.SetActive(value: false);
|
||||
UserPanelE.textures[3].mainTexture = null;
|
||||
}
|
||||
_myRotationInfoP.gameObject.SetActive(value: false);
|
||||
if (dataMgr.TryGetPlayerSubClassId(out var subClassId))
|
||||
{
|
||||
SetClassInfoWithSubClass(dataMgr.GetPlayerCharaData(), networkUserInfoData.GetSelfChaosId(), subClassId, _classInfoP, _classInfoWithSubClassP, _subClassGridP);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dataMgr.TryGetPlayerMyRotationInfo(out var myRotationInfo))
|
||||
{
|
||||
_myRotationInfoP.gameObject.SetActive(value: true);
|
||||
_myRotationInfoP.SetMyRotationInfo(myRotationInfo);
|
||||
_myRotationInfoP.Reposition();
|
||||
}
|
||||
_classInfoP.InitByCharaPrm(dataMgr.GetPlayerCharaData(), networkUserInfoData.GetSelfChaosId());
|
||||
_classInfoWithSubClassP.gameObject.SetActive(value: false);
|
||||
}
|
||||
_myRotationInfoE.gameObject.SetActive(value: false);
|
||||
if (dataMgr.TryGetEnemySubClassId(out var subClassId2))
|
||||
{
|
||||
SetClassInfoWithSubClass(dataMgr.GetEnemyCharaData(), networkUserInfoData.GetOpponentChaosId(), subClassId2, _classInfoE, _classInfoWithSubClassE, _subClassGridE);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dataMgr.TryGetEnemyMyRotationInfo(out var myRotationInfo2))
|
||||
{
|
||||
_myRotationInfoE.gameObject.SetActive(value: true);
|
||||
_myRotationInfoE.SetMyRotationInfo(myRotationInfo2);
|
||||
_myRotationInfoE.Reposition();
|
||||
}
|
||||
_classInfoE.InitByCharaPrm(dataMgr.GetEnemyCharaData(), networkUserInfoData.GetOpponentChaosId());
|
||||
_classInfoWithSubClassE.gameObject.SetActive(value: false);
|
||||
}
|
||||
BattleManagerBase ins = BattleManagerBase.GetIns();
|
||||
string playerSkinId = dataMgr.GetPlayerSkinId().ToString("00");
|
||||
ResourcesManager.AssetLoadPathType assetTypePlayer = (ins.BattlePlayer.IsSkinEvolved ? ResourcesManager.AssetLoadPathType.ClassCharaEvolve : ResourcesManager.AssetLoadPathType.ClassCharaBase);
|
||||
string playerClassAssetName = Toolbox.ResourcesManager.GetAssetTypePath(playerSkinId, assetTypePlayer);
|
||||
if (Toolbox.ResourcesManager.IsLoadedAssetBundle(playerClassAssetName))
|
||||
{
|
||||
CharTextureP.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(playerSkinId, assetTypePlayer, isfetch: true));
|
||||
}
|
||||
else
|
||||
{
|
||||
StartCoroutine(Toolbox.ResourcesManager.LoadAssetAsync(playerClassAssetName, delegate
|
||||
{
|
||||
Toolbox.ResourcesManager.BattleListAssetPathList.Add(playerClassAssetName);
|
||||
CharTextureP.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(playerSkinId, assetTypePlayer, isfetch: true));
|
||||
}));
|
||||
}
|
||||
string enemySkinId = dataMgr.GetEnemySkinId().ToString("00");
|
||||
ResourcesManager.AssetLoadPathType assetTypeEnemy = (ins.BattleEnemy.IsSkinEvolved ? ResourcesManager.AssetLoadPathType.ClassCharaEvolve : ResourcesManager.AssetLoadPathType.ClassCharaBase);
|
||||
string enemyClassAssetName = Toolbox.ResourcesManager.GetAssetTypePath(enemySkinId, assetTypeEnemy);
|
||||
if (Toolbox.ResourcesManager.IsLoadedAssetBundle(enemyClassAssetName))
|
||||
{
|
||||
CharTextureE.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(enemySkinId, assetTypeEnemy, isfetch: true));
|
||||
}
|
||||
else
|
||||
{
|
||||
StartCoroutine(Toolbox.ResourcesManager.LoadAssetAsync(enemyClassAssetName, delegate
|
||||
{
|
||||
Toolbox.ResourcesManager.BattleListAssetPathList.Add(enemyClassAssetName);
|
||||
CharTextureE.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(enemySkinId, assetTypeEnemy, isfetch: true));
|
||||
}));
|
||||
}
|
||||
bool activeOfficialUserIconSprite = (GameMgr.GetIns().IsWatchBattle ? networkUserInfoData.GetSelfIsOfficialUser() : PlayerStaticData.IsOfficialUserDisplay);
|
||||
bool activeOfficialUserIconSprite2 = GameMgr.GetIns().IsNetworkBattle && networkUserInfoData.GetOpponentIsOfficialUser();
|
||||
UserPanelP.gameObject.GetComponent<BattleMenuUserPanel>().SetActiveOfficialUserIconSprite(activeOfficialUserIconSprite);
|
||||
UserPanelE.gameObject.GetComponent<BattleMenuUserPanel>().SetActiveOfficialUserIconSprite(activeOfficialUserIconSprite2);
|
||||
defPosDict["UserPanel"] = UserPanel.transform.localPosition + (IsQuestBattle ? new Vector3(0f, -7f, 0f) : Vector3.zero);
|
||||
defPosDict["CharPanelP"] = CharPanelP.transform.localPosition;
|
||||
defPosDict["CharPanelE"] = CharPanelE.transform.localPosition;
|
||||
UserPanel.transform.localPosition = defPosDict["UserPanel"] + Vector3.down * 50f;
|
||||
CharPanelP.transform.localPosition = defPosDict["CharPanelP"] + Vector3.left * 300f;
|
||||
CharPanelE.transform.localPosition = defPosDict["CharPanelE"] + Vector3.right * 300f;
|
||||
TweenAlpha.Begin(UserPanel, 0f, 0f);
|
||||
if (dataMgr.GetEnemyBattleSkillReverse() == 0)
|
||||
{
|
||||
CharTextureE.uvRect = new Rect(1f, 0f, -1f, 1f);
|
||||
}
|
||||
_SetupRoomIDObj();
|
||||
SetupRankWinnerReward();
|
||||
if (CustomPreference.GetTextLanguage() == Global.LANG_TYPE.Kor.ToString())
|
||||
{
|
||||
_ratingRoot.SetActive(value: true);
|
||||
}
|
||||
else
|
||||
{
|
||||
_ratingRoot.SetActive(value: false);
|
||||
}
|
||||
}
|
||||
|
||||
private static void SetClassInfoWithSubClass(ClassCharacterMasterData charaData, int chaosId, int subClassId, ClassInfoParts defaultClassInfoParts, ClassInfoParts classInfoParts, FlexibleGrid grid)
|
||||
{
|
||||
classInfoParts.gameObject.SetActive(value: true);
|
||||
defaultClassInfoParts.ClassNameLabel.text = string.Empty;
|
||||
classInfoParts.InitByCharaPrm(charaData, chaosId);
|
||||
classInfoParts.SetSubClass((CardBasePrm.ClanType)subClassId);
|
||||
UIUtil.AdjustClassInfoPartsSize(classInfoParts, grid, defaultClassInfoParts.ClassNameLabel.width);
|
||||
}
|
||||
|
||||
private void _SetupRoomIDObj()
|
||||
{
|
||||
_roomIDRoot.SetActive(value: false);
|
||||
if (GameMgr.GetIns().IsReplayBattle || !GameMgr.GetIns().GetDataMgr().IsRoomBattleType())
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (RoomBase.IsConnectControllerActive())
|
||||
{
|
||||
if (!RoomBase.ConnectController.IsGathering)
|
||||
{
|
||||
_roomIDRoot.SetActive(value: true);
|
||||
_roomIDLabel.text = $"{RoomBase.ConnectController.DisplayRoomID:00000}";
|
||||
}
|
||||
}
|
||||
else if (Data.BattleRecoveryInfo != null && !Data.BattleRecoveryInfo.IsGatheringRoom)
|
||||
{
|
||||
_roomIDRoot.SetActive(value: true);
|
||||
_roomIDLabel.text = $"{PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.ROOM_MATCH_DISPLAY_ID):00000}";
|
||||
}
|
||||
}
|
||||
|
||||
private void SetupRankWinnerReward()
|
||||
{
|
||||
if (GameMgr.GetIns().GetDataMgr().m_BattleType != DataMgr.BattleType.RankBattle && GameMgr.GetIns().GetDataMgr().m_BattleType != DataMgr.BattleType.TwoPick)
|
||||
{
|
||||
return;
|
||||
}
|
||||
RankWinnerReward rankWinnerReward = GameMgr.GetIns()._rankWinnerReward;
|
||||
if (rankWinnerReward == null)
|
||||
{
|
||||
int value = PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.BATTLE_WINNER_REWARD_GRADE);
|
||||
string value2 = PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.BATTLE_WINNER_REWARD_STRING);
|
||||
if (value != 0 && value2 != "")
|
||||
{
|
||||
GameMgr.GetIns()._rankWinnerReward = UIManager.GetInstance().createRankWinnerReward();
|
||||
GameMgr.GetIns()._rankWinnerReward.SetInfomation(value, value2);
|
||||
GameMgr.GetIns()._rankWinnerReward.gameObject.SetActive(value: false);
|
||||
rankWinnerReward = GameMgr.GetIns()._rankWinnerReward;
|
||||
}
|
||||
else
|
||||
{
|
||||
_winnerRewardRoot.SetActive(value: false);
|
||||
}
|
||||
}
|
||||
if (rankWinnerReward != null)
|
||||
{
|
||||
UIManager.GetInstance().AttachAtlas(_winnerRewardRoot);
|
||||
_winnerRewardNameLabel.text = rankWinnerReward.RewardString;
|
||||
_winnerRewardBox.spriteName = rankWinnerReward.GetBoxSpriteName();
|
||||
_winnerRewardBox.transform.localPosition = rankWinnerReward.GetBattleMenuBoxPosition();
|
||||
_winnerRewardRoot.SetActive(value: true);
|
||||
_vsRoot.SetActive(value: false);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetupDefaultButtonMenu(Action retireAction, Action settingAction, Action backAction)
|
||||
{
|
||||
_defaultMenuRoot.SetActive(value: true);
|
||||
_questMenuRoot.SetActive(value: false);
|
||||
if (Data.CurrentFormat != Format.Max && DataMgr.IsEnableFormatIconBattleType(GameMgr.GetIns().GetDataMgr().m_BattleType))
|
||||
{
|
||||
_titleLine.SetActive(value: false);
|
||||
_titleLineWithFormat.SetActive(value: true);
|
||||
if (Data.CurrentFormat != Format.Rotation || CustomPreference.GetTextLanguage() != Global.LANG_TYPE.Jpn.ToString())
|
||||
{
|
||||
_formatLabel.gameObject.SetActive(value: true);
|
||||
_formatIcon.gameObject.SetActive(value: true);
|
||||
_tsRotaionFormatLabel.gameObject.SetActive(value: false);
|
||||
_formatLabel.text = UIUtil.GetFormatName(Data.CurrentFormat);
|
||||
_formatIcon.spriteName = UIUtil.GetFormatSmallSpriteName(Data.CurrentFormat);
|
||||
}
|
||||
else
|
||||
{
|
||||
_formatLabel.gameObject.SetActive(value: false);
|
||||
_formatIcon.gameObject.SetActive(value: false);
|
||||
_tsRotaionFormatLabel.gameObject.SetActive(value: true);
|
||||
_tsRotaionFormatLabel.text = UIUtil.GetFormatName(Data.CurrentFormat);
|
||||
}
|
||||
UIUtil.AddPositionY(_retireButton.transform, -5f);
|
||||
}
|
||||
else
|
||||
{
|
||||
_titleLine.SetActive(value: true);
|
||||
_titleLineWithFormat.SetActive(value: false);
|
||||
_formatLabel.gameObject.SetActive(value: false);
|
||||
_formatIcon.gameObject.SetActive(value: false);
|
||||
_tsRotaionFormatLabel.gameObject.SetActive(value: false);
|
||||
}
|
||||
SetButton(_retireButton, _retireButtonLabel, GetRetireButtonText(), delegate
|
||||
{
|
||||
UnityEngine.Object.Destroy(base.gameObject);
|
||||
retireAction();
|
||||
}, Se.TYPE.SYS_BTN_DECIDE);
|
||||
SetButton(_settingButton, _settingButtonLabel, Data.SystemText.Get("Common_0209"), delegate
|
||||
{
|
||||
UnityEngine.Object.Destroy(base.gameObject);
|
||||
settingAction();
|
||||
}, Se.TYPE.SYS_BTN_DECIDE);
|
||||
SetButton(_backButton, _backButtonLabel, Data.SystemText.Get("Battle_0406"), delegate
|
||||
{
|
||||
backAction();
|
||||
UnityEngine.Object.Destroy(base.gameObject);
|
||||
}, Se.TYPE.SYS_BTN_CANCEL);
|
||||
_backSpriteButton.onClick.Add(new EventDelegate(Close));
|
||||
}
|
||||
|
||||
private void SetupQuestButtonMenu(Action retireAction, Action settingAction, Action backAction, Action questMissionAction)
|
||||
{
|
||||
_defaultMenuRoot.SetActive(value: false);
|
||||
_questMenuRoot.SetActive(value: true);
|
||||
SetButton(_questRetireButton, _questRetireButtonLabel, GetRetireButtonText(), delegate
|
||||
{
|
||||
UnityEngine.Object.Destroy(base.gameObject);
|
||||
retireAction();
|
||||
}, Se.TYPE.SYS_BTN_DECIDE);
|
||||
SetButton(_questSettingButton, _questSettingButtonLabel, Data.SystemText.Get("Common_0209"), delegate
|
||||
{
|
||||
UnityEngine.Object.Destroy(base.gameObject);
|
||||
settingAction();
|
||||
}, Se.TYPE.SYS_BTN_DECIDE);
|
||||
SetButton(_questBackButton, _questBackButtonLabel, Data.SystemText.Get("Battle_0406"), delegate
|
||||
{
|
||||
backAction();
|
||||
UnityEngine.Object.Destroy(base.gameObject);
|
||||
}, Se.TYPE.SYS_BTN_CANCEL);
|
||||
SetButton(_questMissionButton, _questMissionButtonLabel, Data.SystemText.Get("Quest_0013"), delegate
|
||||
{
|
||||
UnityEngine.Object.Destroy(base.gameObject);
|
||||
questMissionAction();
|
||||
}, Se.TYPE.SYS_BTN_DECIDE);
|
||||
_backSpriteButton.onClick.Add(new EventDelegate(Close));
|
||||
}
|
||||
|
||||
private string GetRetireButtonText()
|
||||
{
|
||||
string result = Data.SystemText.Get("Common_0051");
|
||||
if (GameMgr.GetIns().IsReplayBattle)
|
||||
{
|
||||
result = Data.SystemText.Get("Common_0149");
|
||||
}
|
||||
else if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
result = Data.SystemText.Get("Common_0147");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void SetButton(UIButton button, UILabel label, string text, Action action, Se.TYPE se)
|
||||
{
|
||||
label.text = text;
|
||||
button.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(se);
|
||||
action();
|
||||
}));
|
||||
}
|
||||
|
||||
public void SetSettingButtonDisable()
|
||||
{
|
||||
UIManager.SetObjectToGrey(_settingButton.gameObject, b: true);
|
||||
UIManager.SetObjectToGrey(_questSettingButton.gameObject, b: true);
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
if (_defaultMenuRoot.activeSelf)
|
||||
{
|
||||
EventDelegate.Execute(_backButton.onClick);
|
||||
}
|
||||
else if (_questMenuRoot.activeSelf)
|
||||
{
|
||||
EventDelegate.Execute(_questBackButton.onClick);
|
||||
}
|
||||
}
|
||||
}
|
||||
346
SVSim.BattleEngine/Engine/BattlePlayer.cs
Normal file
346
SVSim.BattleEngine/Engine/BattlePlayer.cs
Normal file
@@ -0,0 +1,346 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle;
|
||||
using Wizard.Battle.Player.Emotion;
|
||||
using Wizard.Battle.UI;
|
||||
using Wizard.Battle.View;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class BattlePlayer : BattlePlayerBase
|
||||
{
|
||||
private readonly Vector3 FIELD_CENTER_POSITION = new Vector3(0f, -0.3f, 0f);
|
||||
|
||||
private BattleUIContainer _battleUIContainer;
|
||||
|
||||
protected CanNotTouchCardVfx _canNotTouchCardVfx;
|
||||
|
||||
public bool _isPlayerActive;
|
||||
|
||||
public int PlayCardTouchCount;
|
||||
|
||||
public bool IsTimeOverTurnEndProcessing;
|
||||
|
||||
public bool IsDuringChoiceBrave;
|
||||
|
||||
public override bool IsGameFirst => base.BattleMgr.IsFirst;
|
||||
|
||||
public override bool IsPlayer => true;
|
||||
|
||||
public override IBattlePlayerView BattleView => PlayerBattleView;
|
||||
|
||||
public virtual IPlayerView PlayerBattleView { get; protected set; }
|
||||
|
||||
public override IEmotion Emotion => PlayerEmotion;
|
||||
|
||||
public IPlayerEmotion PlayerEmotion { get; protected set; }
|
||||
|
||||
public bool IsTurnStartEffectNotFinished { get; set; }
|
||||
|
||||
public override bool CanChoiceBraveThisTurn
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!base.IsAlreadyChoiceBraveInThisTurn && !IsTimeOverTurnEndProcessing)
|
||||
{
|
||||
return base.IsChoiceBraveEffectTiming;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool CanChoiceBrave
|
||||
{
|
||||
get
|
||||
{
|
||||
if (CanChoiceBraveThisTurn && base.CanPlayAnyChoiceBraveCard && BattleView.IsTouchable() && !BattleView.IsSelecting && !CantPlayChoiceBrave)
|
||||
{
|
||||
return !PlayerBattleView.IsMoving();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public event Func<VfxBase> OnAfterPlayerTurnStart;
|
||||
|
||||
public event Action OnPlayerActive;
|
||||
|
||||
public event Action<List<BattleCardBase>> OnMulliganEndForReplay;
|
||||
|
||||
public BattlePlayer(BattleManagerBase battleMgr, BattleCamera battleCamera, BackGroundBase backGround, IInnerOptionsBuilder innerOptionsBuilder)
|
||||
: base(battleMgr, battleCamera, backGround, innerOptionsBuilder)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
PlayerBattleView = new BattlePlayerView(this);
|
||||
}
|
||||
|
||||
protected override void CreateSelfBattleCard()
|
||||
{
|
||||
PlayerClassBattleCard item = new PlayerClassBattleCard(new ClassBattleCardBase.ClassBuildInfo(_isPlayer: true, 20, this, base.BattleMgr.BattleEnemy, base.BattleMgr, base.BattleMgr.BattleResourceMgr));
|
||||
base.ClassAndInPlayCardList.Add(item);
|
||||
}
|
||||
|
||||
public override void Setup(BattlePlayerBase opponentBattlePlayer)
|
||||
{
|
||||
if (_battleUIContainer == null && !(this is VirtualBattlePlayer) && (base.IsSelfTurn || IsTurnStartEffectNotFinished))
|
||||
{
|
||||
_battleUIContainer = base.BattleMgr.BattleUIContainer;
|
||||
_battleUIContainer.DisableMenu();
|
||||
}
|
||||
PlayerEmotion = _innerOptionsBuilder.CreatePlayerEmotion((IClassBattleCardView)base.Class.BattleCardView);
|
||||
base.OnTurnEnd += (SkillProcessor skill) => InstantVfx.Create(delegate
|
||||
{
|
||||
if (!GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
PlayerBattleView.TurnEndButtonUI.ChangeButtonView(base.IsSelfTurn);
|
||||
}
|
||||
});
|
||||
opponentBattlePlayer.OnTurnStartAfterDraw += () => InstantVfx.Create(delegate
|
||||
{
|
||||
EnableBattleMenu();
|
||||
ITurnEndButtonUI turnEndButtonUI = PlayerBattleView.TurnEndButtonUI;
|
||||
if (!turnEndButtonUI.GameObject.activeSelf)
|
||||
{
|
||||
GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_UI_TURN_1, turnEndButtonUI.GetBtnPosition());
|
||||
}
|
||||
turnEndButtonUI.GameObject.SetActive(value: true);
|
||||
turnEndButtonUI.EnableButton();
|
||||
turnEndButtonUI.HideBtn();
|
||||
turnEndButtonUI.ChangeButtonView(base.IsSelfTurn);
|
||||
});
|
||||
base.Setup(opponentBattlePlayer);
|
||||
}
|
||||
|
||||
public override void SetupClone(BattlePlayerBase sourceBattlePlayer, BattlePlayerBase virtualOpponentBattlePlayer, CloneActualFlags cloneFlags)
|
||||
{
|
||||
sourceBattlePlayer.CopyToVirtualBase(this, virtualOpponentBattlePlayer, cloneFlags);
|
||||
}
|
||||
|
||||
public override void SetupCardEvent(BattleCardBase card)
|
||||
{
|
||||
base.SetupCardEvent(card);
|
||||
card.OnPlay += delegate
|
||||
{
|
||||
foreach (BattleCardBase item in base.HandCardList.Where((BattleCardBase c) => c != card))
|
||||
{
|
||||
item.BattleCardView.UpdateMovability();
|
||||
}
|
||||
BattleView.UpdateChoiceBraveButtonPulsateEffectAndSprite();
|
||||
return NullVfx.GetInstance();
|
||||
};
|
||||
}
|
||||
|
||||
public override VfxBase TurnStart()
|
||||
{
|
||||
VfxBase vfxBase = base.TurnStart();
|
||||
if (base.BattleMgr.IsRecovery)
|
||||
{
|
||||
EnableBattleMenu();
|
||||
if (base.IsSelfTurn)
|
||||
{
|
||||
_isPlayerActive = true;
|
||||
}
|
||||
}
|
||||
return SequentialVfxPlayer.Create(vfxBase, InstantVfx.Create(PlayerBattleView.UpdateTurnEndPulseEffect));
|
||||
}
|
||||
|
||||
public void TurnStartEffectEnd()
|
||||
{
|
||||
IsTurnStartEffectNotFinished = false;
|
||||
}
|
||||
|
||||
private void EnableBattleMenu()
|
||||
{
|
||||
if (_battleUIContainer != null)
|
||||
{
|
||||
_battleUIContainer.EnableMenu();
|
||||
}
|
||||
}
|
||||
|
||||
public override VfxBase StartTurnControl(string log = "")
|
||||
{
|
||||
if (_canNotTouchCardVfx == null)
|
||||
{
|
||||
_canNotTouchCardVfx = new CanNotTouchCardVfx();
|
||||
BattleManagerBase.GetIns().VfxMgr.RegisterImmediateVfx(_canNotTouchCardVfx);
|
||||
}
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
NetworkBattleManagerBase networkBattleManagerBase = BattleManagerBase.GetIns() as NetworkBattleManagerBase;
|
||||
if (networkBattleManagerBase.turnEndTimeController != null)
|
||||
{
|
||||
networkBattleManagerBase.turnEndTimeController.AddTurnEndTimerLog("TurnStart" + log);
|
||||
}
|
||||
}
|
||||
PlayerEmotion.ResetPlayCount();
|
||||
Turn++;
|
||||
SequentialVfxPlayer sequentialVfxPlayer = TurnEvolveControl(PlayerBattleView.EpIcon);
|
||||
VfxBase vfx = TurnStart();
|
||||
sequentialVfxPlayer.Register(vfx);
|
||||
VfxBase allFuncVfxResults = this.OnAfterPlayerTurnStart.GetAllFuncVfxResults();
|
||||
this.OnAfterPlayerTurnStart = null;
|
||||
sequentialVfxPlayer.Register(allFuncVfxResults);
|
||||
VfxBase vfx2 = base.BattleMgr.JudgeBattleResult();
|
||||
sequentialVfxPlayer.Register(vfx2);
|
||||
return sequentialVfxPlayer;
|
||||
}
|
||||
|
||||
public override VfxBase UsePp(int pp, bool isNewReplayMoveTurn = false)
|
||||
{
|
||||
base.UsePp(pp);
|
||||
if (BattleManagerBase.IsForecast)
|
||||
{
|
||||
return NullVfx.GetInstance();
|
||||
}
|
||||
int pp2 = base.Pp;
|
||||
Vector3 zero = Vector3.zero;
|
||||
zero = BattleView.GetPPLabelPosition();
|
||||
return m_vfxCreator.CreateUsePp(pp2, base.PpTotal, zero, isNewReplayMoveTurn);
|
||||
}
|
||||
|
||||
protected override VfxBase TurnStartDrawCard(SkillProcessor skillProcessor)
|
||||
{
|
||||
int drawCount = ((IsGameFirst || Turn != 1) ? 1 : 2);
|
||||
VfxWith<IEnumerable<BattleCardBase>> vfxWith = RandomCardDraw(drawCount, skillProcessor);
|
||||
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
|
||||
sequentialVfxPlayer.Register(vfxWith.Vfx);
|
||||
sequentialVfxPlayer.Register(CardDrawVfx(vfxWith.Value));
|
||||
BattleLogManager.GetInstance().AddLogOverDrawCards(vfxWith.Value.Where((BattleCardBase s) => !s.IsInHand).ToList());
|
||||
return sequentialVfxPlayer;
|
||||
}
|
||||
|
||||
public override VfxBase TurnEnd()
|
||||
{
|
||||
bool flag = false;
|
||||
if (BattleManagerBase.GetIns().VfxMgr.IsEnd && IsTimeOverTurnEndProcessing)
|
||||
{
|
||||
base.HandControl.RearrangeHand(0.4f, base.HandCardList.ConvertToViewList());
|
||||
flag = true;
|
||||
}
|
||||
_isPlayerActive = false;
|
||||
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create(base.TurnEnd());
|
||||
foreach (BattleCardBase handCard in base.HandCardList)
|
||||
{
|
||||
handCard.BattleCardView.HideCanPlayEffect();
|
||||
}
|
||||
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
base.NowTurnEvol = true;
|
||||
}));
|
||||
if (IsTimeOverTurnEndProcessing && !flag)
|
||||
{
|
||||
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
base.HandControl.RearrangeHand(0.4f, base.HandCardList.ConvertToViewList());
|
||||
}));
|
||||
}
|
||||
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
IsTimeOverTurnEndProcessing = false;
|
||||
}));
|
||||
return sequentialVfxPlayer;
|
||||
}
|
||||
|
||||
public override void HandCardToField(BattleCardBase targetCard, SkillBase skill = null)
|
||||
{
|
||||
base.HandCardToField(targetCard, skill);
|
||||
if (base.HandCardList.Count <= 0)
|
||||
{
|
||||
base.BattleMgr.VfxMgr.RegisterImmediateVfx(BattleView.HandUnfocus());
|
||||
}
|
||||
}
|
||||
|
||||
protected override void SetActive()
|
||||
{
|
||||
PlayerActive();
|
||||
this.OnPlayerActive.Call();
|
||||
_isPlayerActive = true;
|
||||
}
|
||||
|
||||
protected override void PlayerActive()
|
||||
{
|
||||
TurnStartEffectEnd();
|
||||
EnableBattleMenu();
|
||||
if (!GameMgr.GetIns().IsWatchBattle && !GameMgr.GetIns().IsReplayBattle)
|
||||
{
|
||||
ITurnEndButtonUI turnEndButtonUI = PlayerBattleView.TurnEndButtonUI;
|
||||
turnEndButtonUI.StartTurnEndCountdown();
|
||||
turnEndButtonUI.ChangeButtonView(base.IsSelfTurn);
|
||||
GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_UI_TURN_1, turnEndButtonUI.GetBtnPosition());
|
||||
}
|
||||
_canNotTouchCardVfx.End();
|
||||
_canNotTouchCardVfx = null;
|
||||
if (!IsGameFirst || Turn != 1)
|
||||
{
|
||||
base.IsChoiceBraveEffectTiming = true;
|
||||
PlayerBattleView.UpdateChoiceBraveButtonPulsateEffectAndSprite();
|
||||
}
|
||||
}
|
||||
|
||||
public override BattlePlayerBase CreateVirtualPlayer()
|
||||
{
|
||||
return new VirtualBattlePlayer(base.BattleMgr, base.BattleCamera, base.BackGround);
|
||||
}
|
||||
|
||||
public override void UpdateHandCardsPlayability(bool areArrowsForcedOff = false)
|
||||
{
|
||||
foreach (BattleCardBase handCard in base.HandCardList)
|
||||
{
|
||||
handCard.BattleCardView.areArrowsForcedOff = areArrowsForcedOff;
|
||||
handCard.BattleCardView.UpdateMovability();
|
||||
}
|
||||
if (base.IsSelfTurn && !GameMgr.GetIns().IsNewReplayBattle)
|
||||
{
|
||||
CantPlayChoiceBrave = areArrowsForcedOff;
|
||||
BattleView.UpdateChoiceBraveButtonPulsateEffectAndSprite();
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsDrawing()
|
||||
{
|
||||
if (base.HandCardList.Count != 0)
|
||||
{
|
||||
return base.HandCardList[0].IsOnDraw;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public override VfxBase MoveToHand(List<BattleCardBase> cardsToMoveToHand)
|
||||
{
|
||||
ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create();
|
||||
foreach (BattleCardBase item in cardsToMoveToHand)
|
||||
{
|
||||
parallelVfxPlayer.Register(item.CreateMoveToHandVfx());
|
||||
}
|
||||
return SequentialVfxPlayer.Create(parallelVfxPlayer, InstantVfx.Create(delegate
|
||||
{
|
||||
UpdateHandCardsPlayability();
|
||||
}));
|
||||
}
|
||||
|
||||
public override VfxBase CardDrawVfx(IEnumerable<BattleCardBase> cards, bool skipShuffle = false, bool isOpenDrawSkill = false)
|
||||
{
|
||||
return m_vfxCreator.CreateCardDraw(cards, isOpenDrawSkill);
|
||||
}
|
||||
|
||||
public override EffectBattle GetSkillEffect(string skillEffectPath)
|
||||
{
|
||||
return GameMgr.GetIns().GetEffectMgr().GetEffectBattle(skillEffectPath);
|
||||
}
|
||||
|
||||
public override Vector3 GetFieldCenterPosition()
|
||||
{
|
||||
return FIELD_CENTER_POSITION;
|
||||
}
|
||||
|
||||
public void CallRecordingMulliganEnd(List<BattleCardBase> cards)
|
||||
{
|
||||
this.OnMulliganEndForReplay.Call(cards);
|
||||
}
|
||||
}
|
||||
916
SVSim.BattleEngine/Engine/BattleResultUIController.cs
Normal file
916
SVSim.BattleEngine/Engine/BattleResultUIController.cs
Normal file
@@ -0,0 +1,916 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using LitJson;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.Recovery;
|
||||
|
||||
public class BattleResultUIController : MonoBehaviour
|
||||
{
|
||||
private enum MenuDialogSelect
|
||||
{
|
||||
None = -1,
|
||||
Button1,
|
||||
ButtonClose
|
||||
}
|
||||
|
||||
public const string BattleResultObjectPass = "Prefab/UI/BattleResult/BattleResultUI";
|
||||
|
||||
public const string RankMatchBattleResultObjectPass = "Prefab/UI/BattleResult/RankMatchBattleResultUI";
|
||||
|
||||
public const string QuestBattleResultObjectPass = "Prefab/UI/BattleResult/QuestSpecialBattleResultUI";
|
||||
|
||||
public const string ColosseumBattleResultObjectPass = "Prefab/UI/BattleResult/ColosseumBattleResultUI";
|
||||
|
||||
public const string PLUS_STRING = "+";
|
||||
|
||||
public static readonly Color PLUS_START_COLOR = new Color32(byte.MaxValue, 192, 0, 0);
|
||||
|
||||
public static readonly Color PLUS_END_COLOR = new Color32(byte.MaxValue, 192, 0, byte.MaxValue);
|
||||
|
||||
public static readonly Color MINUS_START_COLOR = new Color32(128, 192, byte.MaxValue, 0);
|
||||
|
||||
public const float GAUGEUP_DURATION = 0.5f;
|
||||
|
||||
public const float GAUGEUP_DELAY = 0.5f;
|
||||
|
||||
public const float GAUGEUP_LABEL_DURATION = 0.3f;
|
||||
|
||||
public const float GAUGEUP_LABEL_MOVE_DISTANCE = 10f;
|
||||
|
||||
public const float GAUGEUP_LABEL_DISAPPEAR_DURATION = 0.5f;
|
||||
|
||||
public const float GAUGEUP_LABEL_DISAPPEAR_DELAY = 0.5f;
|
||||
|
||||
[SerializeField]
|
||||
public RankMatchBattleResult RankMatchBattleResultObject;
|
||||
|
||||
[SerializeField]
|
||||
public QuestSpecialBattleResult QuestBattleResultObject;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _battlePassResultPanel;
|
||||
|
||||
[SerializeField]
|
||||
private Transform _acncorNoneRoot;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _backGroundWithRank;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _backGroundNotNeedRank;
|
||||
|
||||
[Header("共通")]
|
||||
[SerializeField]
|
||||
public UIPanel MainPanel;
|
||||
|
||||
[SerializeField]
|
||||
public NguiObjs ClassCharObj;
|
||||
|
||||
[SerializeField]
|
||||
public UITexture Bg;
|
||||
|
||||
[SerializeField]
|
||||
public UISprite ArcaneIn;
|
||||
|
||||
[SerializeField]
|
||||
public UISprite ArcaneOut;
|
||||
|
||||
[SerializeField]
|
||||
public UISprite ResultTitle;
|
||||
|
||||
[Header("クラス情報")]
|
||||
[SerializeField]
|
||||
public GameObject ClassInfo;
|
||||
|
||||
[SerializeField]
|
||||
private ClassInfoParts _classInfoParts;
|
||||
|
||||
[SerializeField]
|
||||
private UITexture ClassLvImg;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel ClassLvLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIGauge ClassGaugeBar;
|
||||
|
||||
[SerializeField]
|
||||
private ParticleSystem ClassGaugeEfc;
|
||||
|
||||
[SerializeField]
|
||||
public UILabel ClassExpAddLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel ClassExpNextTitle;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel ClassExpNextLabel;
|
||||
|
||||
[Header("下部ボタン")]
|
||||
[SerializeField]
|
||||
public UIAnchor AnchorBottom;
|
||||
|
||||
[SerializeField]
|
||||
public UIGrid ButtonGrid;
|
||||
|
||||
[SerializeField]
|
||||
public NguiObjs MissionBtnObj;
|
||||
|
||||
[SerializeField]
|
||||
public NguiObjs HomeBtnObj;
|
||||
|
||||
[SerializeField]
|
||||
public NguiObjs RetryBtnObj;
|
||||
|
||||
[SerializeField]
|
||||
public NguiObjs ReportBtnObj;
|
||||
|
||||
[Header("タイトル画像")]
|
||||
[SerializeField]
|
||||
private GameObject _titleRoot;
|
||||
|
||||
[SerializeField]
|
||||
public UISprite TitleWin;
|
||||
|
||||
[SerializeField]
|
||||
public UISprite TitleLose;
|
||||
|
||||
[SerializeField]
|
||||
public UISprite TitleDraw;
|
||||
|
||||
[SerializeField]
|
||||
public UISprite TitleMatch;
|
||||
|
||||
[Header("通知表示")]
|
||||
[SerializeField]
|
||||
public NguiObjs ResultInfo;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _notificationAnimationParent;
|
||||
|
||||
[SerializeField]
|
||||
private NotificatonAnimation _notificationAnimationPrefab;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _battlePassBG;
|
||||
|
||||
private string _resultTypeMsg = "";
|
||||
|
||||
[SerializeField]
|
||||
private GameObject m_MissionBase;
|
||||
|
||||
public IDictionary<string, Vector3> DefaultPosDict = new Dictionary<string, Vector3>();
|
||||
|
||||
private int _classLv;
|
||||
|
||||
private int _classLvPrev;
|
||||
|
||||
private int _classLvMax;
|
||||
|
||||
private int _classExp;
|
||||
|
||||
private int _nowClassExp;
|
||||
|
||||
private int _nextClassExp;
|
||||
|
||||
private IList<NguiObjs> _missionLogList = new List<NguiObjs>();
|
||||
|
||||
private int _beforeClassExp;
|
||||
|
||||
private IList<int> _classExpList = new List<int>();
|
||||
|
||||
private bool _isResultTutorial;
|
||||
|
||||
private bool _isUsingSpecialDeck;
|
||||
|
||||
private int _usingSpecialDeckClassId;
|
||||
|
||||
private List<string> _resultAssetList = new List<string>();
|
||||
|
||||
private INextSceneSelector _nextSceneSelector;
|
||||
|
||||
[NonSerialized]
|
||||
public IBattleResultReporter resultReporter;
|
||||
|
||||
private IResultAnimationHandler resultAnimationHandler;
|
||||
|
||||
public const int MISSION_SPRITE_WIDTH = 800;
|
||||
|
||||
private const int MISSION_MARGIN = 24;
|
||||
|
||||
private const string MAINTENANCE_TIME_KEY = "maintenance_time";
|
||||
|
||||
private int _selectedClassId;
|
||||
|
||||
private NotificatonAnimation _notificationAnimation;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _missionSelect;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _retrySelect;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _homeSelect;
|
||||
|
||||
private const int MISSION_SELECT = 0;
|
||||
|
||||
private const int RETRY_SELECT = 1;
|
||||
|
||||
private const int HOME_SELECT = 2;
|
||||
|
||||
public DialogBase _missionDialog;
|
||||
|
||||
private MenuDialogSelect _menuDialogSelect = MenuDialogSelect.None;
|
||||
|
||||
[NonSerialized]
|
||||
public bool IsRewardWait;
|
||||
|
||||
public bool ResultMsgWindowFlag { get; private set; }
|
||||
|
||||
public bool ResultMsgReportBtnFlag { get; private set; }
|
||||
|
||||
public bool IsWin { get; set; }
|
||||
|
||||
public int AddClassExp { get; private set; }
|
||||
|
||||
public bool IsDraw { get; private set; }
|
||||
|
||||
public bool IsResultOn { get; private set; }
|
||||
|
||||
public bool AlreadyResultRecovery { get; set; }
|
||||
|
||||
public bool GreySpriteBGVisible
|
||||
{
|
||||
set
|
||||
{
|
||||
_battlePassBG.gameObject.SetActive(value);
|
||||
}
|
||||
}
|
||||
|
||||
public IBattleResultReporter ResultReporter => resultReporter;
|
||||
|
||||
public event Action OnResultFinish;
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
VideoHostingUtil.SetHUDScene(VideoHostingUtil.HUDScene.Home);
|
||||
GameMgr.GetIns().GetEffectMgr().Stop(EffectMgr.EffectType.CMN_RESULT_BACK_1);
|
||||
GameMgr.GetIns().GetEffectMgr().Stop(EffectMgr.EffectType.CMN_RESULT_BACK_2);
|
||||
GameMgr.GetIns().GetEffectMgr().Stop(EffectMgr.EffectType.CMN_RESULT_BACK_3);
|
||||
if (resultAnimationHandler != null)
|
||||
{
|
||||
resultAnimationHandler.Destroy();
|
||||
}
|
||||
if (GameMgr.GetIns()._rankWinnerReward != null)
|
||||
{
|
||||
GameMgr.GetIns()._rankWinnerReward.RemoveObject();
|
||||
GameMgr.GetIns()._rankWinnerReward = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_titleRoot.SetActive(value: true);
|
||||
IsResultOn = false;
|
||||
DefaultPosDict["ClassCharObj"] = ClassCharObj.transform.localPosition;
|
||||
DefaultPosDict["ResultTitle"] = ResultTitle.transform.localPosition;
|
||||
DefaultPosDict["ClassInfo"] = ClassInfo.transform.localPosition;
|
||||
DefaultPosDict["ButtonGrid"] = ButtonGrid.transform.localPosition;
|
||||
MainPanel.alpha = 0f;
|
||||
TitleMatch.alpha = 0f;
|
||||
Toolbox.AudioManager.AddCueSheet("bgm_btl_jingle", "bgm_btl_jingle.acb", "b/", "bgm_btl_jingle.awb");
|
||||
ButtonGrid.gameObject.SetActive(value: false);
|
||||
IsDraw = false;
|
||||
base.gameObject.SetActive(value: false);
|
||||
if (RankMatchBattleResultObject != null)
|
||||
{
|
||||
RankMatchBattleResultObject.Init();
|
||||
}
|
||||
if (QuestBattleResultObject != null)
|
||||
{
|
||||
QuestBattleResultObject.Init();
|
||||
}
|
||||
}
|
||||
|
||||
public void StartUI(bool win, BattleCamera battleCamera)
|
||||
{
|
||||
base.gameObject.SetActive(value: true);
|
||||
if (IsResultOn)
|
||||
{
|
||||
return;
|
||||
}
|
||||
IsResultOn = true;
|
||||
Toolbox.AudioManager.AddCueSheet("bgm_btl_jingle", "bgm_btl_jingle.acb", "b/", "bgm_btl_jingle.awb");
|
||||
VideoHostingUtil.SetHUDScene(VideoHostingUtil.HUDScene.BattleResult);
|
||||
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
|
||||
int skinId = dataMgr.GetPlayerSkinId();
|
||||
bool isEvolve = BattleManagerBase.GetIns().BattlePlayer.IsSkinEvolved;
|
||||
if (!BattleManagerBase.IsTutorial)
|
||||
{
|
||||
if (win)
|
||||
{
|
||||
_resultAssetList.Add(Toolbox.ResourcesManager.GetAssetTypePath(skinId.ToString("00"), isEvolve ? ResourcesManager.AssetLoadPathType.ClassCharaEvolveWin : ResourcesManager.AssetLoadPathType.ClassCharaBaseWin));
|
||||
string text = dataMgr.GetPlayerEmotionData()[ClassCharaPrm.EmotionType.WIN].GetVoiceId(isEvolve);
|
||||
if (BattleManagerBase.GetIns().IsPuzzleMgr)
|
||||
{
|
||||
string clearVoiceId = (BattleManagerBase.GetIns() as PuzzleBattleManager).PuzzleQuestData.ClearVoiceId;
|
||||
if (!string.IsNullOrEmpty(clearVoiceId))
|
||||
{
|
||||
text = clearVoiceId;
|
||||
}
|
||||
}
|
||||
_ = isEvolve;
|
||||
_resultAssetList.Add("v/vo_" + text + ".acb");
|
||||
}
|
||||
else
|
||||
{
|
||||
_resultAssetList.Add(Toolbox.ResourcesManager.GetAssetTypePath(skinId.ToString("00"), isEvolve ? ResourcesManager.AssetLoadPathType.ClassCharaEvolveLose : ResourcesManager.AssetLoadPathType.ClassCharaBaseLose));
|
||||
_resultAssetList.Add("v/vo_" + dataMgr.GetPlayerEmotionData()[ClassCharaPrm.EmotionType.LOSE].GetVoiceId(isEvolve) + ".acb");
|
||||
}
|
||||
}
|
||||
if (dataMgr.IsFormatEnableBattleType())
|
||||
{
|
||||
int num = PlayerStaticData.UserRankCurrentFormat();
|
||||
_resultAssetList.Add(Toolbox.ResourcesManager.GetAssetTypePath(num.ToString("00"), ResourcesManager.AssetLoadPathType.RankIcon_L));
|
||||
}
|
||||
List<GameObject> list = new List<GameObject>();
|
||||
list.Add(ClassGaugeEfc.gameObject);
|
||||
if (RankMatchBattleResultObject != null)
|
||||
{
|
||||
list.Add(RankMatchBattleResultObject.RankGaugeEfc.gameObject);
|
||||
}
|
||||
if (QuestBattleResultObject != null)
|
||||
{
|
||||
list.Add(QuestBattleResultObject.QuestPointGaugeEffect.gameObject);
|
||||
}
|
||||
GameMgr.GetIns().GetEffectMgr().SetUIParticleShader(list, delegate
|
||||
{
|
||||
GameMgr.GetIns().GetEffectMgr().InitCommonEffect("Json/EffectResultData", isBattle: true, isField: false, isBattleEffect: true, delegate
|
||||
{
|
||||
Toolbox.ResourcesManager.StartCoroutine_LoadAssetGroupAsync(_resultAssetList, delegate
|
||||
{
|
||||
Toolbox.ResourcesManager.BattleListAssetPathList.AddRange(_resultAssetList);
|
||||
IsWin = win;
|
||||
DataMgr.BattleType battleType = dataMgr.m_BattleType;
|
||||
if (battleType == DataMgr.BattleType.Story && Data.SelectedStoryInfo.IsTutorialCategory)
|
||||
{
|
||||
_isResultTutorial = true;
|
||||
_nextSceneSelector = new TutorialNextSceneSelector(this);
|
||||
resultReporter = new TutorialResultReporter();
|
||||
resultAnimationHandler = new TutorialResultAnimationHandler(battleCamera);
|
||||
}
|
||||
else
|
||||
{
|
||||
ResourcesManager.AssetLoadPathType type = ((!isEvolve) ? (IsWin ? ResourcesManager.AssetLoadPathType.ClassCharaBaseWin : ResourcesManager.AssetLoadPathType.ClassCharaBaseLose) : (IsWin ? ResourcesManager.AssetLoadPathType.ClassCharaEvolveWin : ResourcesManager.AssetLoadPathType.ClassCharaEvolveLose));
|
||||
Texture mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(skinId.ToString("00"), type, isfetch: true)) as Texture;
|
||||
ClassCharObj.textures[0].mainTexture = mainTexture;
|
||||
_classInfoParts.InitByCharaPrm(dataMgr.GetPlayerCharaData());
|
||||
ClassLvImg.mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(dataMgr.GetPlayerClassId().ToString("00"), ResourcesManager.AssetLoadPathType.ClassCharaIconLevel, isfetch: true)) as Texture;
|
||||
if (battleType == DataMgr.BattleType.TwoPick)
|
||||
{
|
||||
_isUsingSpecialDeck = true;
|
||||
if (Data.TwoPickInfo.deckInfo != null)
|
||||
{
|
||||
_usingSpecialDeckClassId = Data.TwoPickInfo.deckInfo.classId;
|
||||
}
|
||||
else
|
||||
{
|
||||
_usingSpecialDeckClassId = Data.BattleRecoveryInfo.chara_id;
|
||||
}
|
||||
}
|
||||
SetResultFunc(battleCamera);
|
||||
}
|
||||
ResultSetupEnd();
|
||||
});
|
||||
});
|
||||
}, isBattle: true);
|
||||
}
|
||||
|
||||
private void SetResultFunc(BattleCamera battleCamera)
|
||||
{
|
||||
if (GameMgr.GetIns().IsReplayBattle)
|
||||
{
|
||||
_nextSceneSelector = new NullNextSceneSelector(this);
|
||||
resultReporter = new RoomMatchResultReporter();
|
||||
resultAnimationHandler = new RoomMatchResultAnimationHandler(battleCamera);
|
||||
return;
|
||||
}
|
||||
switch (GameMgr.GetIns().GetDataMgr().m_BattleType)
|
||||
{
|
||||
case DataMgr.BattleType.FreeBattle:
|
||||
_nextSceneSelector = new NetworkMatchNextSceneSelector(this);
|
||||
resultReporter = new FreeMatchResultReporter();
|
||||
resultAnimationHandler = new FreeMatchResultAnimationHandler(battleCamera);
|
||||
break;
|
||||
case DataMgr.BattleType.RankBattle:
|
||||
_nextSceneSelector = new NetworkMatchNextSceneSelector(this);
|
||||
resultReporter = new RankMatchResultReporter();
|
||||
resultAnimationHandler = new RankMatchResultAnimationHandler(battleCamera);
|
||||
break;
|
||||
case DataMgr.BattleType.Practice:
|
||||
if (GameMgr.GetIns().IsPuzzleQuest)
|
||||
{
|
||||
_nextSceneSelector = new PracticePuzzleNextSceneSelector(this);
|
||||
resultReporter = new PracticePuzzleResultReporter();
|
||||
resultAnimationHandler = new PracticeResultAnimationHandler(battleCamera);
|
||||
}
|
||||
else
|
||||
{
|
||||
_nextSceneSelector = new PracticeNextSceneSelector(this);
|
||||
resultReporter = new PracticeResultReporter();
|
||||
resultAnimationHandler = new PracticeResultAnimationHandler(battleCamera);
|
||||
}
|
||||
break;
|
||||
case DataMgr.BattleType.ColosseumNormal:
|
||||
case DataMgr.BattleType.ColosseumTwoPick:
|
||||
case DataMgr.BattleType.ColosseumHof:
|
||||
case DataMgr.BattleType.ColosseumWindFall:
|
||||
case DataMgr.BattleType.ColosseumAvatar:
|
||||
_nextSceneSelector = new ArenaNextSceneSelector(this);
|
||||
resultReporter = new ColosseumResultReporter();
|
||||
resultAnimationHandler = new ColosseumResultAnimationHandler(battleCamera);
|
||||
break;
|
||||
case DataMgr.BattleType.CompetitionNormal:
|
||||
case DataMgr.BattleType.CompetitionTwoPick:
|
||||
_nextSceneSelector = new ArenaNextSceneSelector(this);
|
||||
resultReporter = new CompetitionResultReporter();
|
||||
resultAnimationHandler = new CompetitionResultAnimationHandler(battleCamera);
|
||||
break;
|
||||
case DataMgr.BattleType.TwoPick:
|
||||
case DataMgr.BattleType.Sealed:
|
||||
_nextSceneSelector = new ArenaNextSceneSelector(this);
|
||||
resultReporter = new ArenaResultReporter();
|
||||
resultAnimationHandler = new ArenaResultAnimationHandler(battleCamera);
|
||||
break;
|
||||
case DataMgr.BattleType.RoomBattle:
|
||||
case DataMgr.BattleType.RoomTwoPick:
|
||||
case DataMgr.BattleType.TwoPickBackdraft:
|
||||
_nextSceneSelector = new NullNextSceneSelector(this);
|
||||
resultReporter = new RoomMatchResultReporter();
|
||||
resultAnimationHandler = new RoomMatchResultAnimationHandler(battleCamera);
|
||||
break;
|
||||
case DataMgr.BattleType.Story:
|
||||
_nextSceneSelector = new StoryNextSceneSelector(this);
|
||||
resultReporter = new StoryResultReporter();
|
||||
resultAnimationHandler = new StoryResultAnimationHandler(battleCamera);
|
||||
break;
|
||||
case DataMgr.BattleType.Quest:
|
||||
case DataMgr.BattleType.BossRushQuest:
|
||||
case DataMgr.BattleType.SecretBossQuest:
|
||||
_nextSceneSelector = new QuestNextSceneSelector(this);
|
||||
resultReporter = new QuestResultReporter();
|
||||
resultAnimationHandler = new QuestSpecialResultAnimationHandler(battleCamera, GetComponent<QuestSpecialBattleResult>());
|
||||
break;
|
||||
}
|
||||
if (BattleManagerBase.GetIns().IsPuzzleMgr && !IsWin)
|
||||
{
|
||||
_nextSceneSelector = new NullNextSceneSelector(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void ResultSetupEnd()
|
||||
{
|
||||
_nextSceneSelector.Setup(IsWin, base.gameObject);
|
||||
ClassCharObj.transform.localPosition = DefaultPosDict["ClassCharObj"] + Vector3.right * 1200f;
|
||||
ResultTitle.transform.localPosition = DefaultPosDict["ResultTitle"] + Vector3.up * 500f;
|
||||
ClassInfo.transform.localPosition = DefaultPosDict["ClassInfo"] + Vector3.left * 2000f;
|
||||
ButtonGrid.transform.localPosition = DefaultPosDict["ButtonGrid"] + Vector3.down * 200f;
|
||||
for (int i = 0; i < _missionLogList.Count; i++)
|
||||
{
|
||||
_missionLogList[i].gameObject.SetActive(value: false);
|
||||
}
|
||||
ClassCharObj.gameObject.SetActive(value: true);
|
||||
ResultTitle.gameObject.SetActive(value: true);
|
||||
ClassInfo.gameObject.SetActive(value: true);
|
||||
ButtonGrid.gameObject.SetActive(value: true);
|
||||
ArcaneIn.transform.localScale = Vector3.one * 0.01f;
|
||||
ArcaneOut.transform.localScale = Vector3.one * 0.01f;
|
||||
ArcaneIn.alpha = 0f;
|
||||
ArcaneOut.alpha = 0f;
|
||||
ClassExpAddLabel.alpha = 0f;
|
||||
ResultInfo.labels[0].alpha = 0f;
|
||||
ResultInfo.sprites[0].alpha = 0f;
|
||||
ButtonGrid.repositionNow = true;
|
||||
ClassExpNextTitle.text = Data.SystemText.Get("Battle_0205");
|
||||
Format format = Data.CurrentFormat;
|
||||
if (GameMgr.GetIns().GetDataMgr().IsDipslayHighRankFormat())
|
||||
{
|
||||
format = PlayerStaticData.HighRankFormat();
|
||||
}
|
||||
if (format == Format.PreRotation)
|
||||
{
|
||||
format = Format.Rotation;
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
resultReporter.Destroy();
|
||||
StartCoroutine(resultAnimationHandler.m_resultAnimationAgent.RunUI(this, _nextSceneSelector, IsWin));
|
||||
}
|
||||
else
|
||||
{
|
||||
StartCoroutine(GetServerData());
|
||||
}
|
||||
if (RankMatchBattleResultObject != null)
|
||||
{
|
||||
RankMatchBattleResultObject.ResultSetupEnd(format);
|
||||
}
|
||||
if (QuestBattleResultObject != null)
|
||||
{
|
||||
QuestBattleResultObject.ResultSetupEnd(format);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetBattlePassGauge(Action completeAction)
|
||||
{
|
||||
if (_battlePassResultPanel == null || !PlayerPrefsWrapper.GetBool(PlayerPrefsWrapper.BATTLE_PASS_SHOW_RESULT) || !resultReporter.IsDataExist)
|
||||
{
|
||||
completeAction();
|
||||
return;
|
||||
}
|
||||
JsonData finishResponseData = resultReporter.GetFinishResponseData();
|
||||
if (finishResponseData != null && finishResponseData["data"].Keys.Contains("battle_pass_gauge_info"))
|
||||
{
|
||||
BattlePassGaugeInfo battlePassGaugeInfo = new BattlePassGaugeInfo(finishResponseData["data"]["battle_pass_gauge_info"]);
|
||||
if (battlePassGaugeInfo.IsMaxPoint && battlePassGaugeInfo.IsBeforeMaxPoint)
|
||||
{
|
||||
completeAction();
|
||||
return;
|
||||
}
|
||||
GreySpriteBGVisible = true;
|
||||
BattlePassResultPanel component = UnityEngine.Object.Instantiate(_battlePassResultPanel, _acncorNoneRoot).GetComponent<BattlePassResultPanel>();
|
||||
component.Initialize(battlePassGaugeInfo);
|
||||
component.SetPointupAnimation(completeAction);
|
||||
}
|
||||
else
|
||||
{
|
||||
completeAction();
|
||||
}
|
||||
}
|
||||
|
||||
public void CreateMissionList()
|
||||
{
|
||||
SystemText systemText = Data.SystemText;
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
dialogBase.SetTitleLabel(systemText.Get("Mission_0003"));
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.CloseBtn);
|
||||
dialogBase.ScrollView.transform.DestroyChildren();
|
||||
dialogBase.ScrollView.panel.leftAnchor.absolute = 24;
|
||||
dialogBase.ScrollView.panel.rightAnchor.absolute = -24;
|
||||
GameObject gameObject = new GameObject("table");
|
||||
dialogBase.ScrollView.contentPivot = UIWidget.Pivot.Top;
|
||||
dialogBase.AttachToScrollView(gameObject.transform);
|
||||
UITable uITable = gameObject.AddComponent<UITable>();
|
||||
uITable.columns = 1;
|
||||
uITable.keepWithinPanel = true;
|
||||
uITable.cellAlignment = UIWidget.Pivot.Center;
|
||||
uITable.pivot = UIWidget.Pivot.Center;
|
||||
ResourceHandler resourceHandler = base.gameObject.AddMissingComponent<ResourceHandler>();
|
||||
int count = Data.MissionInfo.data.user_mission_list.Count;
|
||||
for (int i = 0; i < Data.MissionInfo.data.user_mission_list.Count; i++)
|
||||
{
|
||||
UserMission mission = Data.MissionInfo.data.user_mission_list[i];
|
||||
GameObject obj = UnityEngine.Object.Instantiate(m_MissionBase);
|
||||
obj.transform.parent = uITable.transform;
|
||||
obj.transform.localPosition = Vector3.zero;
|
||||
obj.transform.localScale = Vector3.one;
|
||||
obj.SetActive(value: true);
|
||||
obj.GetComponent<UISprite>().width = 800;
|
||||
obj.GetComponent<AchievementWindowBase>().SetMission(mission, resourceHandler, canChangeMissions: false, i != count - 1, displayChange: false);
|
||||
}
|
||||
_missionDialog = dialogBase;
|
||||
StartCoroutine(ResetMissionScrollPos(dialogBase.ScrollView));
|
||||
UIManager.GetInstance().closeInSceneCenterLoading();
|
||||
}
|
||||
|
||||
private IEnumerator ResetMissionScrollPos(UIScrollView scroll)
|
||||
{
|
||||
yield return new WaitForSeconds(0.1f);
|
||||
scroll.ResetPosition();
|
||||
}
|
||||
|
||||
private IEnumerator GetServerData()
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("GetServerData ");
|
||||
LocalLog.SendClientInfoTraceLog(delegate
|
||||
{
|
||||
resultReporter.Report(IsWin);
|
||||
});
|
||||
while (!resultReporter.IsEnd)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
LocalLog.AccumulateLastTraceLog("GetServerData ReporterEnd");
|
||||
if (!resultReporter.IsDataExist)
|
||||
{
|
||||
Toolbox.NetworkManager.NetworkUI.OpenGoToTitleErrorPopUp(Data.SystemText.Get("ErrorHeader_3502"), Data.SystemText.Get("Error_3502"), "");
|
||||
yield break;
|
||||
}
|
||||
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
|
||||
if (RankMatchBattleResultObject != null)
|
||||
{
|
||||
RankMatchBattleResultObject.GetServerData();
|
||||
}
|
||||
if (QuestBattleResultObject != null)
|
||||
{
|
||||
QuestBattleResultObject.GetServerData(resultReporter);
|
||||
}
|
||||
if (dataMgr.IsColosseumBattleType())
|
||||
{
|
||||
SetBackGroundNeedBattlePoint(needBattlePoint: false);
|
||||
}
|
||||
GameMgr.GetIns().GetDataMgr().CacheSingleRecovryData();
|
||||
RecoveryRecordManagerBase.DeleteRecoveryFile();
|
||||
AddClassExp = resultReporter.ClassExp;
|
||||
resultReporter.Destroy();
|
||||
if (!_isResultTutorial)
|
||||
{
|
||||
if (_isUsingSpecialDeck)
|
||||
{
|
||||
_selectedClassId = ((_usingSpecialDeckClassId != 0) ? _usingSpecialDeckClassId : dataMgr.GetPlayerClassId());
|
||||
}
|
||||
else
|
||||
{
|
||||
_selectedClassId = dataMgr.GetPlayerClassId();
|
||||
}
|
||||
_beforeClassExp = dataMgr.GetClassPrm(_selectedClassId).GetClassCharaExp();
|
||||
}
|
||||
_classExpList.Clear();
|
||||
for (int num = 0; num < Data.Load.data._classCharaExpList.Count; num++)
|
||||
{
|
||||
_classExpList.Add(Data.Load.data._classCharaExpList[num].necessary_exp);
|
||||
}
|
||||
_classLvMax = _classExpList.Count;
|
||||
SetClassExp(0, isLvUpCheck: false);
|
||||
_classLvPrev = _classLv;
|
||||
StartCoroutine(resultAnimationHandler.m_resultAnimationAgent.RunUI(this, _nextSceneSelector, IsWin));
|
||||
}
|
||||
|
||||
public void PrepareAchievementLog()
|
||||
{
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
List<NotificatonAnimation.Param> list = new List<NotificatonAnimation.Param>();
|
||||
JsonData finishResponseData = resultReporter.GetFinishResponseData();
|
||||
if (finishResponseData != null && finishResponseData["data"].Keys.Contains("maintenance_time"))
|
||||
{
|
||||
DateTime dateTime = DateTime.Parse(finishResponseData["data"]["maintenance_time"].ToString());
|
||||
list.Add(new NotificatonAnimation.Param(NotificatonAnimation.Param.Type.MaintenanceOnResult, Data.SystemText.Get("System_0044", ConvertTime.ToLocal(dateTime))));
|
||||
}
|
||||
if (finishResponseData != null && finishResponseData["data"].Keys.Contains("gathering_notification"))
|
||||
{
|
||||
string valueOrDefault = finishResponseData["data"]["gathering_notification"].GetValueOrDefault("matching_established_message", string.Empty);
|
||||
if (!string.IsNullOrEmpty(valueOrDefault))
|
||||
{
|
||||
list.Add(new NotificatonAnimation.Param(NotificatonAnimation.Param.Type.GatheringMatching, valueOrDefault));
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < resultReporter.UserMission.Count; i++)
|
||||
{
|
||||
list.Add(new NotificatonAnimation.Param(NotificatonAnimation.Param.Type.Result, resultReporter.UserMission[i].achieved_message));
|
||||
}
|
||||
for (int j = 0; j < resultReporter.UserAchievement.Count; j++)
|
||||
{
|
||||
list.Add(new NotificatonAnimation.Param(NotificatonAnimation.Param.Type.Result, resultReporter.UserAchievement[j].achieved_message));
|
||||
}
|
||||
StartCoroutine(ShowAchieveLog(list));
|
||||
}
|
||||
|
||||
public void RewardCheck()
|
||||
{
|
||||
IsRewardWait = false;
|
||||
}
|
||||
|
||||
public void FinishResult()
|
||||
{
|
||||
this.OnResultFinish.Call();
|
||||
}
|
||||
|
||||
public void SettingAddClassExpTextAnimation()
|
||||
{
|
||||
iTween.ValueTo(base.gameObject, iTween.Hash("from", 0, "to", AddClassExp, "time", 0.5f, "delay", 0.5f, "onstart", "StartClassExp", "onupdate", "UpdateClassExp", "oncomplete", "CompleteClassExp", "easetype", iTween.EaseType.easeOutQuad));
|
||||
bool flag = AddClassExp >= 0;
|
||||
ClassExpAddLabel.text = (flag ? "+" : string.Empty) + AddClassExp;
|
||||
ClassExpAddLabel.color = (flag ? PLUS_START_COLOR : MINUS_START_COLOR);
|
||||
TweenAlpha.Begin(ClassExpAddLabel.gameObject, 0.3f, 1f);
|
||||
iTween.MoveFrom(ClassExpAddLabel.gameObject, iTween.Hash("y", ClassExpAddLabel.transform.localPosition.y - 10f, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
}
|
||||
|
||||
private void StartClassExp()
|
||||
{
|
||||
ClassGaugeEfc.gameObject.SetActive(value: true);
|
||||
ClassGaugeEfc.Play();
|
||||
}
|
||||
|
||||
private void UpdateClassExp(int num)
|
||||
{
|
||||
SetClassExp(num, isLvUpCheck: true);
|
||||
}
|
||||
|
||||
public void SetClassExp(int num, bool isLvUpCheck)
|
||||
{
|
||||
_classExp = _beforeClassExp + num;
|
||||
_classLv = GetClassLv(_classExp);
|
||||
_nowClassExp = GetClassExpNow(_classExp);
|
||||
_nextClassExp = Mathf.Max(0, _classExpList[_classLv - 1] - _nowClassExp);
|
||||
ClassLvLabel.text = _classLv.ToString();
|
||||
ClassExpNextLabel.text = _nextClassExp.ToString();
|
||||
if (AddClassExp >= 0)
|
||||
{
|
||||
ClassExpAddLabel.text = ((AddClassExp - num >= 0) ? "+" : "") + (AddClassExp - num);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClassExpAddLabel.text = (AddClassExp - num).ToString();
|
||||
}
|
||||
ClassGaugeBar.Value = (((float)_classExpList[_classLv - 1] >= 0f) ? Mathf.Min((float)_nowClassExp / (float)_classExpList[_classLv - 1], 1f) : 1f);
|
||||
if (isLvUpCheck && _classLv > _classLvPrev)
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_RESULT_LEVELUP);
|
||||
GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_RESULT_LVUP_1, ClassLvImg.transform.position);
|
||||
GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_RESULT_GAUGE_1, ClassGaugeBar.GetTransformGaugeStartEdge().position);
|
||||
_classLvPrev = _classLv;
|
||||
}
|
||||
}
|
||||
|
||||
private void CompleteClassExp()
|
||||
{
|
||||
ClassGaugeEfc.Stop();
|
||||
TweenAlpha.Begin(ClassExpAddLabel.gameObject, 0.5f, 0f).delay = 0.5f;
|
||||
SetClassLvAndExp();
|
||||
}
|
||||
|
||||
public void SetClassLvAndExp()
|
||||
{
|
||||
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
|
||||
switch (dataMgr.m_BattleType)
|
||||
{
|
||||
case DataMgr.BattleType.FreeBattle:
|
||||
_classLv = Data.FreeMatchFinish.data.class_chara_level;
|
||||
_classExp = Data.FreeMatchFinish.data.class_chara_experience;
|
||||
break;
|
||||
case DataMgr.BattleType.RankBattle:
|
||||
_classLv = Data.RankMatchFinish.data.class_chara_level;
|
||||
_classExp = Data.RankMatchFinish.data.class_chara_experience;
|
||||
break;
|
||||
case DataMgr.BattleType.Story:
|
||||
_classLv = Data.StoryFinish.data.class_chara_level;
|
||||
_classExp = Data.StoryFinish.data.class_chara_experience;
|
||||
break;
|
||||
case DataMgr.BattleType.Practice:
|
||||
_classLv = Data.PracticeFinish.data.class_chara_level;
|
||||
_classExp = Data.PracticeFinish.data.class_chara_experience;
|
||||
break;
|
||||
case DataMgr.BattleType.RoomBattle:
|
||||
_classLv = Data.FreeMatchFinish.data.class_chara_level;
|
||||
_classExp = Data.FreeMatchFinish.data.class_chara_experience;
|
||||
break;
|
||||
case DataMgr.BattleType.Quest:
|
||||
case DataMgr.BattleType.BossRushQuest:
|
||||
case DataMgr.BattleType.SecretBossQuest:
|
||||
_classLv = Data.QuestFinish.data.class_chara_level;
|
||||
_classExp = Data.QuestFinish.data.class_chara_experience;
|
||||
break;
|
||||
}
|
||||
ClassCharaPrm classPrm = dataMgr.GetClassPrm(_selectedClassId);
|
||||
classPrm.SetClassCharaLv(_classLv);
|
||||
classPrm.SetClassCharaExp(_classExp);
|
||||
}
|
||||
|
||||
private int GetClassLv(int num)
|
||||
{
|
||||
int num2 = 1;
|
||||
int num3 = 0;
|
||||
for (int i = 0; i < _classExpList.Count; i++)
|
||||
{
|
||||
num3 += _classExpList[i];
|
||||
if (num < num3)
|
||||
{
|
||||
break;
|
||||
}
|
||||
num2++;
|
||||
}
|
||||
return Mathf.Min(num2, _classLvMax);
|
||||
}
|
||||
|
||||
private int GetClassExpNow(int num)
|
||||
{
|
||||
int num2 = num;
|
||||
for (int i = 0; i < _classExpList.Count && num2 >= _classExpList[i]; i++)
|
||||
{
|
||||
num2 -= _classExpList[i];
|
||||
}
|
||||
return num2;
|
||||
}
|
||||
|
||||
private IEnumerator ShowAchieveLog(List<NotificatonAnimation.Param> paramList)
|
||||
{
|
||||
if (_notificationAnimation != null)
|
||||
{
|
||||
UnityEngine.Object.Destroy(_notificationAnimation.gameObject);
|
||||
_notificationAnimation = null;
|
||||
}
|
||||
_notificationAnimation = NGUITools.AddChild(_notificationAnimationParent, _notificationAnimationPrefab.gameObject).GetComponent<NotificatonAnimation>();
|
||||
yield return StartCoroutine(_notificationAnimation.Exec(paramList));
|
||||
}
|
||||
|
||||
public void SetSpecialResultTypeText(string text)
|
||||
{
|
||||
_resultTypeMsg = text;
|
||||
ResultMsgWindowFlag = true;
|
||||
}
|
||||
|
||||
public void SetBattleFinishConsistency()
|
||||
{
|
||||
IsDraw = true;
|
||||
ResultMsgReportBtnFlag = true;
|
||||
}
|
||||
|
||||
public IEnumerator ShowSpecialResultInfo()
|
||||
{
|
||||
ResultInfo.labels[0].text = _resultTypeMsg;
|
||||
ResultInfo.labels[0].alpha = 0f;
|
||||
ResultInfo.sprites[0].alpha = 0f;
|
||||
ResultInfo.labels[0].transform.localPosition = Vector3.right * 200f;
|
||||
ResultInfo.sprites[0].transform.localScale = new Vector3(0.01f, 0.1f, 1f);
|
||||
TweenAlpha.Begin(ResultInfo.sprites[0].gameObject, 0.2f, 1f);
|
||||
iTween.ScaleTo(ResultInfo.sprites[0].gameObject, iTween.Hash("scale", new Vector3(1f, 0.1f, 1f), "time", 0.2f, "islocal", true, "easetype", iTween.EaseType.easeInQuad));
|
||||
iTween.ScaleTo(ResultInfo.sprites[0].gameObject, iTween.Hash("scale", Vector3.one, "time", 0.5f, "delay", 0.2f, "islocal", true, "easetype", iTween.EaseType.easeOutBack));
|
||||
yield return new WaitForSeconds(0.5f);
|
||||
TweenAlpha.Begin(ResultInfo.labels[0].gameObject, 0.2f, 1f);
|
||||
iTween.MoveTo(ResultInfo.labels[0].gameObject, iTween.Hash("position", Vector3.zero, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
yield return new WaitForSeconds(2f);
|
||||
TweenAlpha.Begin(ResultInfo.sprites[0].gameObject, 0.1f, 0f).delay = 0.2f;
|
||||
TweenAlpha.Begin(ResultInfo.labels[0].gameObject, 0.1f, 0f).delay = 0.2f;
|
||||
iTween.ScaleTo(ResultInfo.sprites[0].gameObject, iTween.Hash("scale", new Vector3(1f, 0.1f, 1f), "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
iTween.MoveTo(ResultInfo.labels[0].gameObject, iTween.Hash("position", Vector3.left * 200f, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
}
|
||||
|
||||
public void Recovery()
|
||||
{
|
||||
ClassInfo.SetActive(value: false);
|
||||
ClassInfo.SetActive(value: true);
|
||||
}
|
||||
|
||||
public IEnumerator RunMatch()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_RANK_UP_MACH_BEGIN);
|
||||
TweenAlpha.Begin(TitleMatch.gameObject, 0.2f, 1f);
|
||||
TitleMatch.transform.localScale = Vector3.one * 10f;
|
||||
iTween.ScaleTo(TitleMatch.gameObject, iTween.Hash("scale", Vector3.one * 0.8f, "time", 0.2f, "easetype", iTween.EaseType.easeInQuad));
|
||||
yield return new WaitForSeconds(0.2f);
|
||||
GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_RESULT_MATCH_1, Vector3.back);
|
||||
TitleMatch.transform.localScale = Vector3.one;
|
||||
iTween.ScaleTo(TitleMatch.gameObject, iTween.Hash("scale", Vector3.one * 1.1f, "time", 3f, "easetype", iTween.EaseType.linear));
|
||||
yield return new WaitForSeconds(2.5f);
|
||||
TweenAlpha.Begin(TitleMatch.gameObject, 0.3f, 0f);
|
||||
iTween.ScaleTo(TitleMatch.gameObject, iTween.Hash("scale", Vector3.one * 10f, "time", 0.3f, "easetype", iTween.EaseType.easeInExpo));
|
||||
yield return new WaitForSeconds(0.3f);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_missionDialog != null)
|
||||
{
|
||||
MenuDialogUpdate(_missionDialog);
|
||||
}
|
||||
}
|
||||
|
||||
private void MenuDialogUpdate(DialogBase dialog)
|
||||
{
|
||||
InputMgr inputMgr = GameMgr.GetIns().GetInputMgr();
|
||||
if (inputMgr.IsKeyboardCancel())
|
||||
{
|
||||
_missionDialog.CloseWithoutSelect();
|
||||
_menuDialogSelect = MenuDialogSelect.None;
|
||||
}
|
||||
bool flag = false;
|
||||
if (inputMgr.IsKeyboardLeftArrow() || inputMgr.IsKeyboardRightArrow())
|
||||
{
|
||||
_menuDialogSelect = ((_menuDialogSelect == MenuDialogSelect.Button1) ? MenuDialogSelect.ButtonClose : MenuDialogSelect.Button1);
|
||||
flag = true;
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
dialog.KeyboardSelectButton(DialogBase.KeyboardDialogSelect.Button1, _menuDialogSelect == MenuDialogSelect.Button1);
|
||||
dialog.KeyboardSelectButton(DialogBase.KeyboardDialogSelect.CloseButton, _menuDialogSelect == MenuDialogSelect.ButtonClose);
|
||||
}
|
||||
if (inputMgr.IsKeyboardEnter() && _menuDialogSelect != MenuDialogSelect.None)
|
||||
{
|
||||
_missionDialog.CloseWithoutSelect();
|
||||
_menuDialogSelect = MenuDialogSelect.None;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetBackGroundNeedBattlePoint(bool needBattlePoint)
|
||||
{
|
||||
_backGroundWithRank.gameObject.SetActive(needBattlePoint);
|
||||
_backGroundNotNeedRank.gameObject.SetActive(!needBattlePoint);
|
||||
}
|
||||
}
|
||||
584
SVSim.BattleEngine/Engine/BattleStartControl.cs
Normal file
584
SVSim.BattleEngine/Engine/BattleStartControl.cs
Normal file
@@ -0,0 +1,584 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class BattleStartControl : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UIPanel MainPanel;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite BgBlack;
|
||||
|
||||
[SerializeField]
|
||||
private UITexture CharP;
|
||||
|
||||
[SerializeField]
|
||||
private UITexture CharE;
|
||||
|
||||
[SerializeField]
|
||||
private ClassInfoParts ClassInfoP;
|
||||
|
||||
[SerializeField]
|
||||
private ClassInfoParts ClassInfoE;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel ClassNameP;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel ClassNameE;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel CharaNameP;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel CharaNameE;
|
||||
|
||||
[SerializeField]
|
||||
private ClassInfoParts _classInfoWithSubClassP;
|
||||
|
||||
[SerializeField]
|
||||
private ClassInfoParts _classInfoWithSubClassE;
|
||||
|
||||
[SerializeField]
|
||||
private FlexibleGrid _subClassGridP;
|
||||
|
||||
[SerializeField]
|
||||
private FlexibleGrid _subClassGridE;
|
||||
|
||||
[SerializeField]
|
||||
private MyRotationParts _myRotationInfoP;
|
||||
|
||||
[SerializeField]
|
||||
private MyRotationParts _myRotationInfoE;
|
||||
|
||||
[SerializeField]
|
||||
private NguiObjs UserPanelP;
|
||||
|
||||
[SerializeField]
|
||||
private NguiObjs UserPanelE;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite VsArcane;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite VsLine;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite VsTitle;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite CardP;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite CardE;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel CardLabelP;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel CardLabelE;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel TurnLabel;
|
||||
|
||||
private IDictionary<string, Vector3> DefaultPosDict = new Dictionary<string, Vector3>();
|
||||
|
||||
private string CardFrontSpriteName = "battle_card_marigan_00";
|
||||
|
||||
private string CardBackSpriteName = "battle_card_marigan_03";
|
||||
|
||||
public bool IsReady { get; private set; }
|
||||
|
||||
public void SetUp(SBattleLoad battleLoad)
|
||||
{
|
||||
if (GameMgr.GetIns().IsNetworkBattle && !BattleManagerBase.GetIns().IsRecovery && !GameMgr.GetIns().IsWatchBattle && !GameMgr.GetIns().IsReplayBattle)
|
||||
{
|
||||
StartCoroutine(CheckAbleToInitialize(battleLoad));
|
||||
}
|
||||
else
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator CheckAbleToInitialize(SBattleLoad battleLoad)
|
||||
{
|
||||
while (GameMgr.GetIns().GetNetworkUserInfoData().SelfBattleStartInfo == null || GameMgr.GetIns().GetNetworkUserInfoData().OppoBattleStartInfo == null)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
battleLoad.LoadOpponentAssets(delegate
|
||||
{
|
||||
Initialize();
|
||||
});
|
||||
}
|
||||
|
||||
private void Initialize()
|
||||
{
|
||||
MainPanel.alpha = 0f;
|
||||
InitBattleStartControl();
|
||||
base.gameObject.SetActive(value: false);
|
||||
IsReady = true;
|
||||
}
|
||||
|
||||
private void InitBattleStartControl()
|
||||
{
|
||||
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
|
||||
NetworkUserInfoData networkUserInfoData = GameMgr.GetIns().GetNetworkUserInfoData();
|
||||
PuzzleQuestData puzzleQuestData = null;
|
||||
bool isPuzzleMgr = BattleManagerBase.GetIns().IsPuzzleMgr;
|
||||
if (isPuzzleMgr)
|
||||
{
|
||||
puzzleQuestData = Data.Master.PuzzleQuestDataList.First((PuzzleQuestData data) => data.Id == GameMgr.GetIns().GetDataMgr().PuzzleQuestId);
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
DegreeHelper.InitializeDegree(UserPanelP.textures[0], networkUserInfoData.GetSelfDegreeId(), DegreeHelper.DegreeType.MIDDLE);
|
||||
}
|
||||
else if (isPuzzleMgr)
|
||||
{
|
||||
DegreeHelper.InitializeDegree(UserPanelP.textures[0], puzzleQuestData.PlayerDegreeId, DegreeHelper.DegreeType.MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
DegreeHelper.InitializeDegree(UserPanelP.textures[0], PlayerStaticData.UserDegreeID, DegreeHelper.DegreeType.MIDDLE);
|
||||
}
|
||||
int num = (GameMgr.GetIns().IsNetworkBattle ? networkUserInfoData.GetOpponentDegreeId() : (isPuzzleMgr ? puzzleQuestData.EnemyDegreeId : ((dataMgr.m_BattleType == DataMgr.BattleType.Quest) ? dataMgr.QuestBattleData.DegreeId : ((dataMgr.m_BattleType != DataMgr.BattleType.BossRushQuest && dataMgr.m_BattleType != DataMgr.BattleType.SecretBossQuest) ? dataMgr.PracticeDifficultyDegreeId : dataMgr.BossRushBattleData.DegreeId))));
|
||||
if (GameMgr.GetIns().IsNetworkBattle || (dataMgr.m_BattleType == DataMgr.BattleType.Practice && dataMgr.PracticeDifficultyDegreeId != -1) || (dataMgr.IsQuestBattleType() && num != -1))
|
||||
{
|
||||
DegreeHelper.InitializeDegree(UserPanelE.textures[0], num, DegreeHelper.DegreeType.MIDDLE);
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
UserPanelP.textures[1].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(networkUserInfoData.GetSelfEmblemId().ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else if (isPuzzleMgr)
|
||||
{
|
||||
UserPanelP.textures[1].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(puzzleQuestData.PlayerEmblemId.ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerStaticData.AttachUserEmblemTexture(UserPanelP.textures[1], PlayerStaticData.EmblemTexSize.M);
|
||||
}
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
UserPanelE.textures[1].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(networkUserInfoData.GetOpponentEmblemId().ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else if (isPuzzleMgr)
|
||||
{
|
||||
UserPanelE.textures[1].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(puzzleQuestData.EnemyEmblemId.ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else if (dataMgr.m_BattleType == DataMgr.BattleType.Quest)
|
||||
{
|
||||
UserPanelE.textures[1].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(dataMgr.QuestBattleData.EmblemId.ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else if (dataMgr.m_BattleType == DataMgr.BattleType.BossRushQuest || dataMgr.m_BattleType == DataMgr.BattleType.SecretBossQuest)
|
||||
{
|
||||
UserPanelE.textures[1].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(dataMgr.BossRushBattleData.EmblemId.ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelE.textures[1].mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(100000000.ToString(), ResourcesManager.AssetLoadPathType.Emblem_M, isfetch: true));
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
UIUtil.SetCountryTexture(UserPanelP.textures[2], networkUserInfoData.GetSelfCountryCode());
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flag = !string.IsNullOrEmpty(PlayerStaticData.UserCountryCode);
|
||||
UserPanelP.textures[2].gameObject.SetActive(flag);
|
||||
if (flag)
|
||||
{
|
||||
PlayerStaticData.AttachUserCountryTexture(UserPanelP.textures[2], PlayerStaticData.CountryTexSize.M);
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelP.textures[2].mainTexture = null;
|
||||
}
|
||||
}
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
UIUtil.SetCountryTexture(UserPanelE.textures[2], networkUserInfoData.GetOpponentCountryCode());
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelE.textures[2].gameObject.SetActive(value: false);
|
||||
UserPanelE.textures[2].mainTexture = null;
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
UserPanelP.textures[3].mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(networkUserInfoData.GetSelfRank().ToString("00"), ResourcesManager.AssetLoadPathType.RankIcon_S, isfetch: true)) as Texture;
|
||||
}
|
||||
else if (dataMgr.IsDipslayHighRankFormat())
|
||||
{
|
||||
PlayerStaticData.LoadUserRankTexture(PlayerStaticData.HighRankFormat());
|
||||
PlayerStaticData.AttachUserRankTexture(UserPanelP.textures[3], PlayerStaticData.RankTexSize.S);
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelP.textures[3].mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(PlayerStaticData.UserRankCurrentFormat().ToString("00"), ResourcesManager.AssetLoadPathType.RankIcon_S, isfetch: true)) as Texture;
|
||||
}
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
UserPanelE.textures[3].mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(networkUserInfoData.GetOpponentRank().ToString("00"), ResourcesManager.AssetLoadPathType.RankIcon_S, isfetch: true)) as Texture;
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
UserPanelP.labels[0].text = networkUserInfoData.GetSelfName();
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelP.labels[0].text = PlayerStaticData.UserName.ToString();
|
||||
}
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
UserPanelE.labels[0].text = VideoHostingUtil.GetUserNameHidden(networkUserInfoData.GetOpponentName().ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
UserPanelE.labels[0].text = dataMgr.GetEnemyCharaData().chara_name;
|
||||
}
|
||||
Format inFormat = Data.CurrentFormat;
|
||||
if (dataMgr.IsDipslayHighRankFormat())
|
||||
{
|
||||
inFormat = PlayerStaticData.HighRankFormat();
|
||||
}
|
||||
bool flag2 = dataMgr.m_BattleType == DataMgr.BattleType.RankBattle;
|
||||
UILabel uILabel = UserPanelP.labels[1];
|
||||
UILabel uILabel2 = UserPanelE.labels[1];
|
||||
uILabel.gameObject.SetActive(flag2);
|
||||
uILabel2.gameObject.SetActive(flag2);
|
||||
if (flag2)
|
||||
{
|
||||
if (PlayerStaticData.IsMasterRank(inFormat))
|
||||
{
|
||||
uILabel.text = PlayerStaticData.UserMasterPoint(inFormat).ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
uILabel.text = PlayerStaticData.UserBattlePoint(inFormat).ToString();
|
||||
}
|
||||
if (GameMgr.GetIns().IsNetworkBattle)
|
||||
{
|
||||
if (networkUserInfoData.GetOpponentIsMasterRank())
|
||||
{
|
||||
uILabel2.text = networkUserInfoData.GetOpponentMasterPoint().ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
uILabel2.text = networkUserInfoData.GetOpponentBattlePoint().ToString();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uILabel2.text = "0";
|
||||
}
|
||||
}
|
||||
bool activeOfficialUserIconSprite = (GameMgr.GetIns().IsWatchBattle ? networkUserInfoData.GetSelfIsOfficialUser() : PlayerStaticData.IsOfficialUserDisplay);
|
||||
bool activeOfficialUserIconSprite2 = GameMgr.GetIns().IsNetworkBattle && networkUserInfoData.GetOpponentIsOfficialUser();
|
||||
UserPanelP.gameObject.GetComponent<BattleStartUserPanel>().SetActiveOfficialUserIconSprite(activeOfficialUserIconSprite);
|
||||
UserPanelE.gameObject.GetComponent<BattleStartUserPanel>().SetActiveOfficialUserIconSprite(activeOfficialUserIconSprite2);
|
||||
DefaultPosDict["UserPanelP"] = UserPanelP.transform.localPosition;
|
||||
DefaultPosDict["UserPanelE"] = UserPanelE.transform.localPosition;
|
||||
DefaultPosDict["CharP"] = CharP.transform.localPosition;
|
||||
DefaultPosDict["CharE"] = CharE.transform.localPosition;
|
||||
DefaultPosDict["ClassNameP"] = ClassNameP.transform.localPosition;
|
||||
DefaultPosDict["ClassNameE"] = ClassNameE.transform.localPosition;
|
||||
DefaultPosDict["CharaNameP"] = CharaNameP.transform.localPosition;
|
||||
DefaultPosDict["CharaNameE"] = CharaNameE.transform.localPosition;
|
||||
DefaultPosDict["CardP"] = CardP.transform.localPosition;
|
||||
DefaultPosDict["CardE"] = CardE.transform.localPosition;
|
||||
DefaultPosDict["TurnLabel"] = TurnLabel.transform.localPosition;
|
||||
}
|
||||
|
||||
public VfxBase CreateStartVfx(float waitTime)
|
||||
{
|
||||
if (BattleManagerBase.GetIns().IsRecovery)
|
||||
{
|
||||
return InstantVfx.Create(delegate
|
||||
{
|
||||
base.gameObject.SetActive(value: false);
|
||||
});
|
||||
}
|
||||
base.gameObject.SetActive(value: true);
|
||||
float rot;
|
||||
Vector3 p1;
|
||||
Vector3 p2;
|
||||
Vector3[] path;
|
||||
return SequentialVfxPlayer.Create(InstantVfx.Create(delegate
|
||||
{
|
||||
int playerSkinId = GameMgr.GetIns().GetDataMgr().GetPlayerSkinId();
|
||||
Texture mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(playerSkinId.ToString("00"), ResourcesManager.AssetLoadPathType.ClassCharaBase, isfetch: true)) as Texture;
|
||||
CharP.mainTexture = mainTexture;
|
||||
CharP.material = null;
|
||||
mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(GameMgr.GetIns().GetDataMgr().GetEnemySkinId()
|
||||
.ToString("00"), ResourcesManager.AssetLoadPathType.ClassCharaBase, isfetch: true)) as Texture;
|
||||
CharE.mainTexture = mainTexture;
|
||||
CharE.material = null;
|
||||
NetworkUserInfoData networkUserInfoData = GameMgr.GetIns().GetNetworkUserInfoData();
|
||||
_myRotationInfoP.gameObject.SetActive(value: false);
|
||||
if (GameMgr.GetIns().GetDataMgr().TryGetPlayerSubClassId(out var subClassId))
|
||||
{
|
||||
SetClassInfoWithSubClass(GameMgr.GetIns().GetDataMgr().GetPlayerCharaData(), networkUserInfoData.GetSelfChaosId(), subClassId, ClassInfoP, _classInfoWithSubClassP, _subClassGridP);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GameMgr.GetIns().GetDataMgr().TryGetPlayerMyRotationInfo(out var myRotationInfo))
|
||||
{
|
||||
_myRotationInfoP.gameObject.SetActive(value: true);
|
||||
_myRotationInfoP.SetMyRotationInfo(myRotationInfo);
|
||||
_myRotationInfoP.Reposition();
|
||||
}
|
||||
ClassInfoP.InitByCharaPrm(GameMgr.GetIns().GetDataMgr().GetPlayerCharaData(), networkUserInfoData.GetSelfChaosId());
|
||||
_classInfoWithSubClassP.gameObject.SetActive(value: false);
|
||||
}
|
||||
_myRotationInfoE.gameObject.SetActive(value: false);
|
||||
if (GameMgr.GetIns().GetDataMgr().TryGetEnemySubClassId(out var subClassId2))
|
||||
{
|
||||
SetClassInfoWithSubClass(GameMgr.GetIns().GetDataMgr().GetEnemyCharaData(), networkUserInfoData.GetOpponentChaosId(), subClassId2, ClassInfoE, _classInfoWithSubClassE, _subClassGridE);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GameMgr.GetIns().GetDataMgr().TryGetEnemyMyRotationInfo(out var myRotationInfo2))
|
||||
{
|
||||
_myRotationInfoE.gameObject.SetActive(value: true);
|
||||
_myRotationInfoE.SetMyRotationInfo(myRotationInfo2);
|
||||
_myRotationInfoE.Reposition();
|
||||
}
|
||||
ClassInfoE.InitByCharaPrm(GameMgr.GetIns().GetDataMgr().GetEnemyCharaData(), networkUserInfoData.GetOpponentChaosId());
|
||||
_classInfoWithSubClassE.gameObject.SetActive(value: false);
|
||||
}
|
||||
UserPanelP.transform.localPosition = DefaultPosDict["UserPanelP"];
|
||||
UserPanelE.transform.localPosition = DefaultPosDict["UserPanelE"];
|
||||
CharP.transform.localPosition = DefaultPosDict["CharP"];
|
||||
CharE.transform.localPosition = DefaultPosDict["CharE"];
|
||||
ClassNameP.transform.localPosition = DefaultPosDict["ClassNameP"];
|
||||
ClassNameE.transform.localPosition = DefaultPosDict["ClassNameE"];
|
||||
CharaNameP.transform.localPosition = DefaultPosDict["CharaNameP"];
|
||||
CharaNameE.transform.localPosition = DefaultPosDict["CharaNameE"];
|
||||
CardP.transform.localPosition = DefaultPosDict["CardP"] + Vector3.down * 1000f;
|
||||
CardE.transform.localPosition = DefaultPosDict["CardE"] + Vector3.down * 1000f;
|
||||
TurnLabel.transform.localPosition = DefaultPosDict["TurnLabel"];
|
||||
BgBlack.alpha = 0f;
|
||||
CharP.alpha = 0f;
|
||||
CharE.alpha = 0f;
|
||||
ClassNameP.alpha = 0f;
|
||||
ClassNameE.alpha = 0f;
|
||||
CharaNameP.alpha = 0f;
|
||||
CharaNameE.alpha = 0f;
|
||||
VsArcane.alpha = 0f;
|
||||
VsLine.alpha = 0f;
|
||||
VsTitle.alpha = 0f;
|
||||
CardP.color = Color.white;
|
||||
CardE.color = Color.white;
|
||||
TurnLabel.alpha = 0f;
|
||||
TweenAlpha.Begin(UserPanelP.gameObject, 0f, 0f);
|
||||
TweenAlpha.Begin(UserPanelE.gameObject, 0f, 0f);
|
||||
VsArcane.transform.localScale = Vector3.one;
|
||||
CardLabelP.text = Data.SystemText.Get("Battle_0430");
|
||||
CardLabelE.text = Data.SystemText.Get("Battle_0431");
|
||||
MainPanel.alpha = 1f;
|
||||
}), InstantVfx.Create(delegate
|
||||
{
|
||||
TweenAlpha.Begin(VsTitle.gameObject, 0.3f, 1f);
|
||||
VsTitle.transform.localScale = Vector3.one * 10f;
|
||||
iTween.ScaleTo(VsTitle.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeInCubic));
|
||||
}), WaitVfx.Create(0.3f), InstantVfx.Create(delegate
|
||||
{
|
||||
TweenAlpha.Begin(BgBlack.gameObject, 0.3f, 0.5f);
|
||||
EffectMgr.EffectType type = EffectMgr.EffectType.CMN_START_VS_1;
|
||||
Se.TYPE setype = Se.TYPE.BATTLE_START_VS;
|
||||
DataMgr.SpecialBattleSetting specialBattleSettingInfo = GameMgr.GetIns().GetDataMgr().SpecialBattleSettingInfo;
|
||||
if (specialBattleSettingInfo != null && specialBattleSettingInfo.IsVsEffectOverride)
|
||||
{
|
||||
type = EffectMgr.EffectType.CMN_START_VS_ST2;
|
||||
setype = Se.TYPE.BATTLE_START_VS_ST2;
|
||||
}
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(setype);
|
||||
GameMgr.GetIns().GetEffectMgr().Start(type, Vector3.zero);
|
||||
TweenAlpha.Begin(VsLine.gameObject, 0.3f, 1f);
|
||||
VsLine.transform.localScale = new Vector3(0.1f, 1f, 1f);
|
||||
iTween.ScaleTo(VsLine.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
|
||||
TweenAlpha.Begin(VsArcane.gameObject, 0.3f, 1f);
|
||||
VsArcane.transform.localRotation = Quaternion.identity;
|
||||
VsArcane.transform.localScale = Vector3.one * 0.1f;
|
||||
iTween.ScaleTo(VsArcane.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeInOutQuad));
|
||||
iTween.RotateAdd(VsArcane.gameObject, iTween.Hash("z", 360f, "time", 2f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
TweenAlpha.Begin(CharP.gameObject, 0.3f, 1f);
|
||||
TweenAlpha.Begin(CharE.gameObject, 0.3f, 1f);
|
||||
CharP.transform.localPosition = DefaultPosDict["CharP"] + Vector3.right * 500f;
|
||||
CharE.transform.localPosition = DefaultPosDict["CharE"] + Vector3.left * 500f;
|
||||
if (GameMgr.GetIns().GetDataMgr().GetEnemyBattleSkillReverse() == 0)
|
||||
{
|
||||
CharE.uvRect = new Rect(0f, 0f, 1f, 1f);
|
||||
}
|
||||
iTween.MoveTo(CharP.gameObject, iTween.Hash("position", DefaultPosDict["CharP"], "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
iTween.MoveTo(CharE.gameObject, iTween.Hash("position", DefaultPosDict["CharE"], "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
TweenAlpha.Begin(ClassNameP.gameObject, 0.3f, 1f).delay = 0.1f;
|
||||
TweenAlpha.Begin(ClassNameE.gameObject, 0.3f, 1f).delay = 0.1f;
|
||||
ClassNameP.transform.localPosition = DefaultPosDict["ClassNameP"] + Vector3.right * 200f;
|
||||
ClassNameE.transform.localPosition = DefaultPosDict["ClassNameE"] + Vector3.left * 200f;
|
||||
iTween.MoveTo(ClassNameP.gameObject, iTween.Hash("position", DefaultPosDict["ClassNameP"], "time", 0.5f, "delay", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
iTween.MoveTo(ClassNameE.gameObject, iTween.Hash("position", DefaultPosDict["ClassNameE"], "time", 0.5f, "delay", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
TweenAlpha.Begin(CharaNameP.gameObject, 0.3f, 1f).delay = 0.1f;
|
||||
TweenAlpha.Begin(CharaNameE.gameObject, 0.3f, 1f).delay = 0.1f;
|
||||
CharaNameP.transform.localPosition = DefaultPosDict["CharaNameP"] + Vector3.right * 200f;
|
||||
CharaNameE.transform.localPosition = DefaultPosDict["CharaNameE"] + Vector3.left * 200f;
|
||||
iTween.MoveTo(CharaNameP.gameObject, iTween.Hash("position", DefaultPosDict["CharaNameP"], "time", 0.5f, "delay", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
iTween.MoveTo(CharaNameE.gameObject, iTween.Hash("position", DefaultPosDict["CharaNameE"], "time", 0.5f, "delay", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
TweenAlpha.Begin(UserPanelP.gameObject, 0.3f, 1f);
|
||||
TweenAlpha.Begin(UserPanelE.gameObject, 0.3f, 1f);
|
||||
UserPanelP.transform.localPosition = DefaultPosDict["UserPanelP"] + Vector3.left * 500f;
|
||||
UserPanelE.transform.localPosition = DefaultPosDict["UserPanelE"] + Vector3.right * 500f;
|
||||
iTween.MoveTo(UserPanelP.gameObject, iTween.Hash("position", DefaultPosDict["UserPanelP"], "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
iTween.MoveTo(UserPanelE.gameObject, iTween.Hash("position", DefaultPosDict["UserPanelE"], "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
}), WaitVfx.Create(waitTime), InstantVfx.Create(delegate
|
||||
{
|
||||
TweenAlpha.Begin(BgBlack.gameObject, 0.3f, 0.9f);
|
||||
TweenAlpha.Begin(VsTitle.gameObject, 0.3f, 0f);
|
||||
iTween.ScaleTo(VsTitle.gameObject, iTween.Hash("scale", Vector3.one * 2f, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
TweenAlpha.Begin(VsArcane.gameObject, 0.3f, 0f);
|
||||
iTween.ScaleTo(VsArcane.gameObject, iTween.Hash("scale", Vector3.one * 5f, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
TweenAlpha.Begin(ClassNameP.gameObject, 0.3f, 0f);
|
||||
iTween.MoveTo(ClassNameP.gameObject, iTween.Hash("x", DefaultPosDict["ClassNameP"].x - 200f, "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
TweenAlpha.Begin(ClassNameE.gameObject, 0.3f, 0f);
|
||||
iTween.MoveTo(ClassNameE.gameObject, iTween.Hash("x", DefaultPosDict["ClassNameE"].x + 200f, "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
TweenAlpha.Begin(CharaNameP.gameObject, 0.3f, 0f);
|
||||
iTween.MoveTo(CharaNameP.gameObject, iTween.Hash("x", DefaultPosDict["CharaNameP"].x - 200f, "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
TweenAlpha.Begin(CharaNameE.gameObject, 0.3f, 0f);
|
||||
iTween.MoveTo(CharaNameE.gameObject, iTween.Hash("x", DefaultPosDict["CharaNameE"].x + 200f, "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
TweenAlpha.Begin(UserPanelP.gameObject, 0.3f, 0f);
|
||||
iTween.MoveTo(UserPanelP.gameObject, iTween.Hash("x", DefaultPosDict["UserPanelP"].x + 200f, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
TweenAlpha.Begin(UserPanelE.gameObject, 0.3f, 0f);
|
||||
iTween.MoveTo(UserPanelE.gameObject, iTween.Hash("x", DefaultPosDict["UserPanelE"].x - 200f, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
|
||||
}), InstantVfx.Create(delegate
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.DRAW);
|
||||
CardP.spriteName = CardFrontSpriteName;
|
||||
CardE.spriteName = CardFrontSpriteName;
|
||||
iTween.MoveTo(CardP.gameObject, iTween.Hash("position", DefaultPosDict["CardP"], "time", 0.4f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
iTween.MoveTo(CardE.gameObject, iTween.Hash("position", DefaultPosDict["CardE"], "time", 0.4f, "delay", 0.05f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
}), WaitVfx.Create(0.5f), InstantVfx.Create(delegate
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_MOVE_SINGLE_1);
|
||||
iTween.MoveTo(CardP.gameObject, iTween.Hash("position", Vector3.zero, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeInOutCubic));
|
||||
iTween.MoveTo(CardE.gameObject, iTween.Hash("position", Vector3.zero, "time", 0.3f, "delay", 0.05f, "islocal", true, "easetype", iTween.EaseType.easeInOutCubic));
|
||||
iTween.ScaleTo(CardP.gameObject, iTween.Hash("scale", new Vector3(0.01f, 1.2f, 1f), "time", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeInQuad));
|
||||
iTween.ScaleTo(CardE.gameObject, iTween.Hash("scale", new Vector3(0.01f, 1.2f, 1f), "time", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeInQuad));
|
||||
}), WaitVfx.Create(0.1f), InstantVfx.Create(delegate
|
||||
{
|
||||
CardP.depth = 0;
|
||||
CardE.depth = 2;
|
||||
CardLabelP.text = "";
|
||||
CardLabelE.text = "";
|
||||
CardP.spriteName = CardBackSpriteName;
|
||||
CardE.spriteName = CardBackSpriteName;
|
||||
iTween.ScaleTo(CardP.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
|
||||
iTween.ScaleTo(CardE.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
|
||||
}), WaitVfx.Create(0.2f), InstantVfx.Create(delegate
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_MOVE_SINGLE_2);
|
||||
rot = Random.value * 30f - 15f;
|
||||
p1 = (Vector3)MotionUtils.GetPositionByAngle(rot) * 400f;
|
||||
p2 = (Vector3)MotionUtils.GetPositionByAngle(rot + 180f) * 100f;
|
||||
path = MotionUtils.GetBezierCubic(Vector3.zero, p1, p2, Vector3.zero, 20);
|
||||
iTween.MoveTo(CardP.gameObject, iTween.Hash("path", path, "movetopath", false, "time", 0.2f, "islocal", true, "easetype", iTween.EaseType.linear));
|
||||
path = MotionUtils.GetBezierCubic(Vector3.zero, p1 * -1f, p2 * -1f, Vector3.zero, 20);
|
||||
iTween.MoveTo(CardE.gameObject, iTween.Hash("path", path, "movetopath", false, "time", 0.2f, "islocal", true, "easetype", iTween.EaseType.linear));
|
||||
}), WaitVfx.Create(0.1f), InstantVfx.Create(delegate
|
||||
{
|
||||
CardP.depth = 2;
|
||||
CardE.depth = 0;
|
||||
}), WaitVfx.Create(0.1f), InstantVfx.Create(delegate
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_MOVE_SINGLE_2);
|
||||
rot = Random.value * 30f - 15f + 180f;
|
||||
p1 = (Vector3)MotionUtils.GetPositionByAngle(rot) * 320f;
|
||||
p2 = (Vector3)MotionUtils.GetPositionByAngle(rot + 180f) * 80f;
|
||||
path = MotionUtils.GetBezierCubic(Vector3.zero, p1, p2, Vector3.zero, 20);
|
||||
iTween.MoveTo(CardP.gameObject, iTween.Hash("path", path, "movetopath", false, "time", 0.16f, "islocal", true, "easetype", iTween.EaseType.linear));
|
||||
path = MotionUtils.GetBezierCubic(Vector3.zero, p1 * -1f, p2 * -1f, Vector3.zero, 20);
|
||||
iTween.MoveTo(CardE.gameObject, iTween.Hash("path", path, "movetopath", false, "time", 0.16f, "islocal", true, "easetype", iTween.EaseType.linear));
|
||||
}), WaitVfx.Create(0.08f), InstantVfx.Create(delegate
|
||||
{
|
||||
CardP.depth = 0;
|
||||
CardE.depth = 2;
|
||||
}), WaitVfx.Create(0.08f), InstantVfx.Create(delegate
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_MOVE_SINGLE_2);
|
||||
rot = Random.value * 30f - 15f;
|
||||
p1 = (Vector3)MotionUtils.GetPositionByAngle(rot) * 320f;
|
||||
p2 = (Vector3)MotionUtils.GetPositionByAngle(rot + 180f) * 80f;
|
||||
path = MotionUtils.GetBezierCubic(Vector3.zero, p1, p2, Vector3.zero, 20);
|
||||
iTween.MoveTo(CardP.gameObject, iTween.Hash("path", path, "movetopath", false, "time", 0.12f, "islocal", true, "easetype", iTween.EaseType.linear));
|
||||
path = MotionUtils.GetBezierCubic(Vector3.zero, p1 * -1f, p2 * -1f, Vector3.zero, 20);
|
||||
iTween.MoveTo(CardE.gameObject, iTween.Hash("path", path, "movetopath", false, "time", 0.12f, "islocal", true, "easetype", iTween.EaseType.linear));
|
||||
}), WaitVfx.Create(0.06f), InstantVfx.Create(delegate
|
||||
{
|
||||
CardP.depth = 2;
|
||||
CardE.depth = 0;
|
||||
}), WaitVfx.Create(0.06f), InstantVfx.Create(delegate
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_MOVE_SINGLE_1);
|
||||
iTween.MoveTo(CardP.gameObject, iTween.Hash("position", new Vector3(240f, -160f, 0f), "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
iTween.MoveTo(CardE.gameObject, iTween.Hash("position", new Vector3(-240f, 160f, 0f), "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
}), WaitVfx.Create(0.3f), InstantVfx.Create(delegate
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_MOVE_SINGLE_3);
|
||||
iTween.ScaleTo(CardP.gameObject, iTween.Hash("scale", new Vector3(0.01f, 1.2f, 1f), "time", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeInQuad));
|
||||
iTween.ScaleTo(CardE.gameObject, iTween.Hash("scale", new Vector3(0.01f, 1.2f, 1f), "time", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeInQuad));
|
||||
}), WaitVfx.Create(0.1f), InstantVfx.Create(delegate
|
||||
{
|
||||
GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_START_CARD_1, CardP.transform.position);
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.DRAW_CARD_OPEN);
|
||||
CardP.spriteName = CardFrontSpriteName;
|
||||
CardE.spriteName = CardFrontSpriteName;
|
||||
if (BattleManagerBase.GetIns().IsFirst)
|
||||
{
|
||||
CardLabelP.text = Data.SystemText.Get("Battle_0430");
|
||||
CardLabelE.text = Data.SystemText.Get("Battle_0431");
|
||||
TurnLabel.text = Data.SystemText.Get("Battle_0432");
|
||||
}
|
||||
else
|
||||
{
|
||||
CardLabelP.text = Data.SystemText.Get("Battle_0431");
|
||||
CardLabelE.text = Data.SystemText.Get("Battle_0430");
|
||||
TurnLabel.text = Data.SystemText.Get("Battle_0433");
|
||||
}
|
||||
TweenAlpha.Begin(TurnLabel.gameObject, 0.3f, 1f);
|
||||
TurnLabel.transform.localPosition = DefaultPosDict["TurnLabel"] + Vector3.right * 50f;
|
||||
iTween.MoveTo(TurnLabel.gameObject, iTween.Hash("position", DefaultPosDict["TurnLabel"], "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
TweenColor.Begin(CardE.gameObject, 0.1f, Color.gray);
|
||||
TweenColor.Begin(CardLabelE.gameObject, 0.1f, Color.gray);
|
||||
iTween.ScaleTo(CardP.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
|
||||
iTween.ScaleTo(CardE.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
|
||||
}), WaitVfx.Create(1.5f), InstantVfx.Create(delegate
|
||||
{
|
||||
TweenAlpha.Begin(BgBlack.gameObject, 0.1f, 0f);
|
||||
TweenAlpha.Begin(CardP.gameObject, 0.1f, 0f);
|
||||
TweenAlpha.Begin(CardE.gameObject, 0.1f, 0f);
|
||||
TweenAlpha.Begin(CharP.gameObject, 0.1f, 0f);
|
||||
TweenAlpha.Begin(CharE.gameObject, 0.1f, 0f);
|
||||
TweenAlpha.Begin(VsLine.gameObject, 0.1f, 0f);
|
||||
TweenAlpha.Begin(TurnLabel.gameObject, 0.1f, 0f);
|
||||
}), WaitVfx.Create(0.1f), InstantVfx.Create(delegate
|
||||
{
|
||||
base.gameObject.SetActive(value: false);
|
||||
}));
|
||||
}
|
||||
|
||||
private static void SetClassInfoWithSubClass(ClassCharacterMasterData charaData, int chaosId, int subClassId, ClassInfoParts defaultClassInfoParts, ClassInfoParts classInfoParts, FlexibleGrid grid)
|
||||
{
|
||||
classInfoParts.gameObject.SetActive(value: true);
|
||||
defaultClassInfoParts.ClassNameLabel.text = string.Empty;
|
||||
classInfoParts.InitByCharaPrm(charaData, chaosId);
|
||||
classInfoParts.SetSubClass((CardBasePrm.ClanType)subClassId);
|
||||
UIUtil.AdjustClassInfoPartsSize(classInfoParts, grid, 375);
|
||||
}
|
||||
}
|
||||
220
SVSim.BattleEngine/Engine/BattleUIContainer.cs
Normal file
220
SVSim.BattleEngine/Engine/BattleUIContainer.cs
Normal file
@@ -0,0 +1,220 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
|
||||
public class BattleUIContainer : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
public BattleButtonControl ButtonControl;
|
||||
|
||||
[SerializeField]
|
||||
private WizardUIButton BattleMenuBtn;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton TurnEndBtn;
|
||||
|
||||
[SerializeField]
|
||||
public Transform EnemyChoiceBraveBtn;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _battery;
|
||||
|
||||
private const float LONG_PRESS_TIME = 0.2f;
|
||||
|
||||
private float? _predictionWaitTime;
|
||||
|
||||
public Action<bool> ShowPrediction;
|
||||
|
||||
private bool _enableMenuRequest;
|
||||
|
||||
private InputMgr _inputMgr;
|
||||
|
||||
public bool PlayerCardPlaying;
|
||||
|
||||
private bool _forceDisableMenu;
|
||||
|
||||
public GameObject Battery => _battery;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
BattleMenuBtn.onPress.Clear();
|
||||
BattleMenuBtn.onPress.Add(new EventDelegate(delegate
|
||||
{
|
||||
ButtonControl.OnPressMenuBtn();
|
||||
}));
|
||||
if (!GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
TurnEndBtn.onClick.Clear();
|
||||
TurnEndBtn.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
ButtonControl.OnPressTurnEnd();
|
||||
}));
|
||||
}
|
||||
_predictionWaitTime = null;
|
||||
UIEventListener.Get(TurnEndBtn.gameObject).onPress = delegate(GameObject obj, bool isPress)
|
||||
{
|
||||
if (isPress)
|
||||
{
|
||||
_predictionWaitTime = Time.realtimeSinceStartup;
|
||||
}
|
||||
else
|
||||
{
|
||||
_predictionWaitTime = null;
|
||||
if (ShowPrediction != null)
|
||||
{
|
||||
ShowPrediction(obj: false);
|
||||
}
|
||||
}
|
||||
};
|
||||
UIEventListener.Get(TurnEndBtn.gameObject).onHover = delegate(GameObject obj, bool isHover)
|
||||
{
|
||||
if (BattleManagerBase.UseCustomMouse && UIManager.GetInstance().ApplicationHasFocus)
|
||||
{
|
||||
if (isHover)
|
||||
{
|
||||
_predictionWaitTime = Time.realtimeSinceStartup;
|
||||
}
|
||||
else
|
||||
{
|
||||
_predictionWaitTime = null;
|
||||
if (ShowPrediction != null)
|
||||
{
|
||||
ShowPrediction(isHover);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
UIEventListener.Get(TurnEndBtn.gameObject).onDragOut = delegate
|
||||
{
|
||||
_predictionWaitTime = null;
|
||||
if (ShowPrediction != null)
|
||||
{
|
||||
ShowPrediction(obj: false);
|
||||
}
|
||||
};
|
||||
_inputMgr = GameMgr.GetIns().GetInputMgr();
|
||||
}
|
||||
|
||||
public void EnableMenu()
|
||||
{
|
||||
if (!PlayerCardPlaying && !_forceDisableMenu)
|
||||
{
|
||||
BattleMenuBtn.isEnabled = true;
|
||||
SetEnableReset(isEnable: true);
|
||||
SetEnableHint(isEnable: true);
|
||||
}
|
||||
}
|
||||
|
||||
public void RequestEnableMenuWhenTouchable()
|
||||
{
|
||||
_enableMenuRequest = true;
|
||||
}
|
||||
|
||||
private void TryEnableMenu()
|
||||
{
|
||||
if (BattleManagerBase.GetIns().GetBattlePlayer(isPlayer: true).BattleView.IsTouchable())
|
||||
{
|
||||
EnableMenu();
|
||||
_enableMenuRequest = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void ForceEnableMenu()
|
||||
{
|
||||
_forceDisableMenu = false;
|
||||
EnableMenu();
|
||||
}
|
||||
|
||||
public void DisableMenu(bool isForceDisable = false)
|
||||
{
|
||||
if (isForceDisable || (!BattleManagerBase.GetIns().IsRecovery && !GameMgr.GetIns().IsReplayBattle && !GameMgr.GetIns().IsWatchBattle))
|
||||
{
|
||||
BattleMenuBtn.isEnabled = false;
|
||||
SetEnableReset(isEnable: false);
|
||||
SetEnableHint(isEnable: false);
|
||||
}
|
||||
}
|
||||
|
||||
public void ForceDisableMenu()
|
||||
{
|
||||
_forceDisableMenu = true;
|
||||
_enableMenuRequest = false;
|
||||
DisableMenu();
|
||||
}
|
||||
|
||||
public void SetEnableReset(bool isEnable)
|
||||
{
|
||||
BattleManagerBase ins = BattleManagerBase.GetIns();
|
||||
if (ins is PuzzleBattleManager)
|
||||
{
|
||||
(ins as PuzzleBattleManager).ResetButton.SetState((!isEnable) ? UIButtonColor.State.Disabled : UIButtonColor.State.Normal, immediate: false);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetEnableHint(bool isEnable)
|
||||
{
|
||||
BattleManagerBase ins = BattleManagerBase.GetIns();
|
||||
if (ins is PuzzleBattleManager)
|
||||
{
|
||||
(ins as PuzzleBattleManager).HintButton.isEnabled = isEnable;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsEnableMenu()
|
||||
{
|
||||
return BattleMenuBtn.isEnabled;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
UIManager instance = UIManager.GetInstance();
|
||||
GameMgr ins = GameMgr.GetIns();
|
||||
BattleManagerBase ins2 = BattleManagerBase.GetIns();
|
||||
if (_enableMenuRequest)
|
||||
{
|
||||
if (BattleMenuBtn.isEnabled)
|
||||
{
|
||||
_enableMenuRequest = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
TryEnableMenu();
|
||||
}
|
||||
}
|
||||
if (!Input.GetMouseButton(0) && instance != null && instance.IsCurrentScene(UIManager.ViewScene.Battle) && !instance.isOpenLoading() && !instance.isFading() && ins.GetInputMgr().isBackKeyEnable && !BattleManagerBase.IsTutorial)
|
||||
{
|
||||
if (BattleMenuBtn.gameObject.activeInHierarchy && BattleMenuBtn.isActiveAndEnabled && !instance.isOpenDialog())
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.Escape) && IsEnableMenu())
|
||||
{
|
||||
ButtonControl.OnPressMenuBtn();
|
||||
}
|
||||
if (BattleManagerBase.UseKeyboardTurnEndSpaceShortcut && _inputMgr.IsKeyboardSpace() && ins2.BattlePlayer.PlayerBattleView.TurnEndButtonUI.GameObject.activeInHierarchy && ins2.BattlePlayer.PlayerBattleView.TurnEndButtonUI.GetEnableLabel && ins2.BattlePlayer.IsSelfTurn && _inputMgr.KeyboardEnableControlSpace)
|
||||
{
|
||||
ButtonControl.OnPressTurnEnd();
|
||||
}
|
||||
}
|
||||
else if (instance.isOpenDialog() && !ButtonControl.IsSettingMenuOpen && !ButtonControl.IsRetireMenuOpen && !ButtonControl.IsQuestMissionOpen && Input.GetKeyDown(KeyCode.Escape))
|
||||
{
|
||||
ins2.BattlePlayer.PlayerBattleView.IsMenuCloseEscape = true;
|
||||
ButtonControl.HideBattleMenu();
|
||||
}
|
||||
}
|
||||
if (TurnEndBtn.state == UIButtonColor.State.Pressed || BattleManagerBase.UseCustomMouse)
|
||||
{
|
||||
if (ShowPrediction != null && _predictionWaitTime.HasValue && _predictionWaitTime.Value + 0.2f < Time.realtimeSinceStartup)
|
||||
{
|
||||
ShowPrediction(obj: true);
|
||||
_predictionWaitTime = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_predictionWaitTime = null;
|
||||
}
|
||||
if (ins.IsWatchBattle && ins2.IsBattleEnd)
|
||||
{
|
||||
ButtonControl.HideAllMenu(isWithoutSE: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
219
SVSim.BattleEngine/Engine/Bgm.cs
Normal file
219
SVSim.BattleEngine/Engine/Bgm.cs
Normal file
@@ -0,0 +1,219 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using CriWare;
|
||||
using Cute;
|
||||
using Wizard;
|
||||
|
||||
public class Bgm
|
||||
{
|
||||
public enum BGM_TYPE
|
||||
{
|
||||
NONE,
|
||||
TITLE,
|
||||
TITLE_SPECIAL_1,
|
||||
TITLE_SPECIAL_2,
|
||||
HOME,
|
||||
BATTLE_STANDBY,
|
||||
BATTLE,
|
||||
SYS_WIN_LOOP,
|
||||
SYS_LOSE_LOOP,
|
||||
COLOSSEUM_FINAL,
|
||||
GRANDPRIX_SPECIAL,
|
||||
GRANDPRIX_SPECIAL_FINAL,
|
||||
SEALED,
|
||||
QUEST,
|
||||
COMPETITION_LOBBY,
|
||||
BINGO,
|
||||
MAX
|
||||
}
|
||||
|
||||
private class BgmInfo
|
||||
{
|
||||
public string CueName { get; private set; }
|
||||
|
||||
public string CueSheet { get; private set; }
|
||||
|
||||
public BgmInfo(string cueName, string cueSheet)
|
||||
{
|
||||
CueName = cueName;
|
||||
CueSheet = cueSheet;
|
||||
}
|
||||
}
|
||||
|
||||
private const string CATEGORY_NAME = "BGM";
|
||||
|
||||
private Dictionary<BGM_TYPE, BgmInfo> m_AudioData;
|
||||
|
||||
private string m_PlayBgmCueName;
|
||||
|
||||
private int m_CurrentBgmIdx;
|
||||
|
||||
private int m_MaxBgmCount;
|
||||
|
||||
private float m_volume;
|
||||
|
||||
private bool m_isMuted;
|
||||
|
||||
public Bgm()
|
||||
{
|
||||
m_AudioData = new Dictionary<BGM_TYPE, BgmInfo>();
|
||||
m_PlayBgmCueName = null;
|
||||
m_CurrentBgmIdx = 0;
|
||||
m_MaxBgmCount = Toolbox.AudioManager.GetBgmMaxCount();
|
||||
SetVolume(PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.BGM_VOLUME));
|
||||
Mute(PlayerPrefsWrapper.GetBool(PlayerPrefsWrapper.SOUND_MUTE));
|
||||
}
|
||||
|
||||
public void AddList(BGM_TYPE BgmType, string cueName, string cueSheet = null)
|
||||
{
|
||||
if (!m_AudioData.ContainsKey(BgmType))
|
||||
{
|
||||
m_AudioData.Add(BgmType, new BgmInfo(cueName, (cueSheet == null) ? cueName : cueSheet));
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveList(BGM_TYPE BgmType)
|
||||
{
|
||||
if (m_AudioData.ContainsKey(BgmType))
|
||||
{
|
||||
m_AudioData.Remove(BgmType);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Play(BGM_TYPE BgmType, float FadeTime = 0f, long startTime = 0L)
|
||||
{
|
||||
if (BgmType != BGM_TYPE.NONE)
|
||||
{
|
||||
BgmInfo bgmInfo = m_AudioData[BgmType];
|
||||
string cueSheet = bgmInfo.CueSheet;
|
||||
m_PlayBgmCueName = bgmInfo.CueName;
|
||||
Toolbox.AudioManager.PlayBgmFromName(cueSheet, m_PlayBgmCueName, cueSheet, cueSheet, m_CurrentBgmIdx, loop: false, FadeTime, 0f, startTime);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void PlayCrossFade(BGM_TYPE BgmType, float fadeOutTime, float fadeInTime, long startTime)
|
||||
{
|
||||
if (BgmType != BGM_TYPE.NONE)
|
||||
{
|
||||
BgmInfo bgmInfo = m_AudioData[BgmType];
|
||||
string cueSheet = bgmInfo.CueSheet;
|
||||
m_PlayBgmCueName = bgmInfo.CueName;
|
||||
Toolbox.AudioManager.StopFadeBgm(m_CurrentBgmIdx, fadeOutTime);
|
||||
m_CurrentBgmIdx = (m_CurrentBgmIdx + 1) % m_MaxBgmCount;
|
||||
Toolbox.AudioManager.PlayBgmFromName(cueSheet, m_PlayBgmCueName, cueSheet, cueSheet, m_CurrentBgmIdx, loop: false, fadeInTime, 0f, startTime);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void PlayFadeOut(BGM_TYPE BgmType, float FadeOutTime = 0f, float FadeInTime = 0f)
|
||||
{
|
||||
Toolbox.AudioManager.StopFadeBgm(m_CurrentBgmIdx, FadeOutTime);
|
||||
if (BgmType != BGM_TYPE.NONE)
|
||||
{
|
||||
m_CurrentBgmIdx = (m_CurrentBgmIdx + 1) % m_MaxBgmCount;
|
||||
BgmInfo bgmInfo = m_AudioData[BgmType];
|
||||
string cueSheet = bgmInfo.CueSheet;
|
||||
m_PlayBgmCueName = bgmInfo.CueName;
|
||||
Toolbox.AudioManager.PlayBgmFromName(cueSheet, m_PlayBgmCueName, cueSheet, cueSheet, m_CurrentBgmIdx, loop: false, FadeInTime, FadeOutTime, 0L);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Play(string cuename, float fadeInTime, long startTime)
|
||||
{
|
||||
if (IsPreInstall(cuename, out var type))
|
||||
{
|
||||
Play(type, fadeInTime, startTime);
|
||||
return;
|
||||
}
|
||||
m_PlayBgmCueName = cuename;
|
||||
Toolbox.AudioManager.PlayBgmFromName(cuename, cuename, cuename, cuename, m_CurrentBgmIdx, loop: false, fadeInTime, 0f, startTime);
|
||||
}
|
||||
|
||||
public virtual void PlayCrossFade(string cuename, float fadeOutTime, float fadeInTime, long startTime)
|
||||
{
|
||||
if (IsPreInstall(cuename, out var type))
|
||||
{
|
||||
PlayCrossFade(type, fadeOutTime, fadeInTime, startTime);
|
||||
return;
|
||||
}
|
||||
m_PlayBgmCueName = cuename;
|
||||
Toolbox.AudioManager.StopFadeBgm(m_CurrentBgmIdx, fadeOutTime);
|
||||
m_CurrentBgmIdx = (m_CurrentBgmIdx + 1) % m_MaxBgmCount;
|
||||
Toolbox.AudioManager.PlayBgmFromName(cuename, cuename, cuename, cuename, m_CurrentBgmIdx, loop: false, fadeInTime, 0f, startTime);
|
||||
}
|
||||
|
||||
public virtual void Pause()
|
||||
{
|
||||
for (int i = 0; i < m_MaxBgmCount; i++)
|
||||
{
|
||||
Toolbox.AudioManager.PauseBgm(isPause: true, i);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Stop(float FadeTime, Action onStopped)
|
||||
{
|
||||
m_PlayBgmCueName = null;
|
||||
AudioManager audioManager = Toolbox.AudioManager;
|
||||
audioManager.StopFadeBgm(m_CurrentBgmIdx, FadeTime);
|
||||
audioManager.StartCoroutine_DelayMethod(FadeTime, onStopped);
|
||||
}
|
||||
|
||||
public virtual void StopAll(float FadeTime)
|
||||
{
|
||||
m_PlayBgmCueName = null;
|
||||
for (int i = 0; i < m_MaxBgmCount; i++)
|
||||
{
|
||||
Toolbox.AudioManager.StopFadeBgm(i, FadeTime);
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsPlayBGM(BGM_TYPE bgmType)
|
||||
{
|
||||
if (bgmType != BGM_TYPE.NONE)
|
||||
{
|
||||
return m_AudioData[bgmType].CueName == m_PlayBgmCueName;
|
||||
}
|
||||
return m_PlayBgmCueName != null;
|
||||
}
|
||||
|
||||
public string GetCueSheet(BGM_TYPE bgmType)
|
||||
{
|
||||
return m_AudioData[bgmType].CueSheet;
|
||||
}
|
||||
|
||||
public bool IsPreInstall(string cuename, out BGM_TYPE type)
|
||||
{
|
||||
foreach (KeyValuePair<BGM_TYPE, BgmInfo> audioDatum in m_AudioData)
|
||||
{
|
||||
BgmInfo value = audioDatum.Value;
|
||||
if (value.CueName == cuename && value.CueSheet == SoundMgr.PREINSTALL_CUESHEET)
|
||||
{
|
||||
type = audioDatum.Key;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
type = BGM_TYPE.NONE;
|
||||
return false;
|
||||
}
|
||||
|
||||
public void SetVolume(float Prm)
|
||||
{
|
||||
CriAtomExCategory.SetVolume("BGM", Prm);
|
||||
m_volume = Prm;
|
||||
}
|
||||
|
||||
public void Mute(bool isMute)
|
||||
{
|
||||
CriAtomExCategory.Mute("BGM", isMute);
|
||||
m_isMuted = isMute;
|
||||
}
|
||||
|
||||
public float GetVolume()
|
||||
{
|
||||
return m_volume;
|
||||
}
|
||||
|
||||
public bool IsMuted()
|
||||
{
|
||||
return m_isMuted;
|
||||
}
|
||||
}
|
||||
7
SVSim.BattleEngine/Engine/BuffCountInfo.cs
Normal file
7
SVSim.BattleEngine/Engine/BuffCountInfo.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
public class BuffCountInfo : TurnAndIntValue
|
||||
{
|
||||
public BuffCountInfo(int turn, bool isSelfTurn)
|
||||
: base(-1, turn, isSelfTurn)
|
||||
{
|
||||
}
|
||||
}
|
||||
395
SVSim.BattleEngine/Engine/BuffDetailInfoUI.cs
Normal file
395
SVSim.BattleEngine/Engine/BuffDetailInfoUI.cs
Normal file
@@ -0,0 +1,395 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.UI;
|
||||
|
||||
public class BuffDetailInfoUI : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UILabel _titleLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _buffLabel;
|
||||
|
||||
private const float TITLE_HEIGHT = 50f;
|
||||
|
||||
public const string NOT_SHOW_BUFF_DETAIL_STORY_SPECIAL_BATTLE_ID = "42";
|
||||
|
||||
public float Height => 50f + (float)_buffLabel.height;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
_titleLabel.text = Data.SystemText.Get("BattleLog_0268");
|
||||
}
|
||||
|
||||
public void SetBuffDetailLabel(BattleCardBase cardBase)
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
List<SkillBase> allBuffSkills = GetAllBuffSkills(cardBase, cardBase.BuffInfoList.Select((BuffInfo b) => b.SkillFrom).ToList());
|
||||
if (!cardBase.IsClass)
|
||||
{
|
||||
if (cardBase.Cost != cardBase.BaseCost)
|
||||
{
|
||||
int num = cardBase.Cost - cardBase.BaseCost;
|
||||
string text = ((num > 0) ? ("+" + num) : num.ToString());
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0273", text));
|
||||
}
|
||||
if (allBuffSkills.Any((SkillBase s) => s is Skill_powerup || s is Skill_power_down))
|
||||
{
|
||||
int currentAtkBuff = cardBase.GetCurrentAtkBuff();
|
||||
int currentLifeBuff = cardBase.GetCurrentLifeBuff();
|
||||
if (currentAtkBuff != 0 || currentLifeBuff != 0)
|
||||
{
|
||||
string retAttack = string.Empty;
|
||||
string retLife = string.Empty;
|
||||
BattleLogUtility.GetBuffValueStringFormatted(currentAtkBuff, currentLifeBuff, ref retAttack, ref retLife);
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0040", retAttack, retLife));
|
||||
}
|
||||
}
|
||||
bool flag = allBuffSkills.Any((SkillBase s) => s is Skill_quick && (!cardBase.IsInHand || s.OnWhenPlayStart == 0));
|
||||
bool flag2 = allBuffSkills.Any((SkillBase s) => s is Skill_rush && (!cardBase.IsInHand || s.OnWhenPlayStart == 0));
|
||||
bool flag3 = allBuffSkills.Any((SkillBase s) => s is Skill_killer && (!cardBase.IsInHand || s.OnWhenPlayStart == 0));
|
||||
bool flag4 = allBuffSkills.Any((SkillBase s) => s is Skill_drain && (!cardBase.IsInHand || s.OnWhenPlayStart == 0));
|
||||
if (ExistCopiedSkillNeedDetailText(cardBase))
|
||||
{
|
||||
IEnumerable<BuffInfo> source = cardBase.BuffInfoList.Where((BuffInfo b) => b.IsCopied);
|
||||
for (int num2 = 0; num2 < source.Count(); num2++)
|
||||
{
|
||||
if (source.ElementAt(num2).SkillFrom is SkillBaseCopy skillBaseCopy)
|
||||
{
|
||||
switch (skillBaseCopy.SkillType)
|
||||
{
|
||||
case "quick":
|
||||
flag = true;
|
||||
break;
|
||||
case "rush":
|
||||
flag2 = true;
|
||||
break;
|
||||
case "killer":
|
||||
flag3 = true;
|
||||
break;
|
||||
case "drain":
|
||||
flag4 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0011"));
|
||||
}
|
||||
if (flag2)
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0012"));
|
||||
}
|
||||
if (flag3)
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0009"));
|
||||
}
|
||||
if (flag4)
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0006"));
|
||||
}
|
||||
if (allBuffSkills.Any((SkillBase s) => s is Skill_attack_count && (!cardBase.IsInHand || s.OnWhenPlayStart == 0)))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0018", cardBase.MaxAttackableCount.ToString()));
|
||||
}
|
||||
if (allBuffSkills.Any((SkillBase s) => s is Skill_ignore_guard && (!cardBase.IsInHand || s.OnWhenPlayStart == 0)))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0008"));
|
||||
}
|
||||
if (allBuffSkills.Any((SkillBase s) => s is Skill_consume_ep_modifier && (!cardBase.IsInHand || s.OnWhenPlayStart == 0)) || NeedNoConsumeEpText(cardBase))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0201"));
|
||||
}
|
||||
}
|
||||
IEnumerable<Skill_shield> source2 = from s in allBuffSkills
|
||||
where s is Skill_shield && (!cardBase.IsInHand || s.OnWhenPlayStart == 0)
|
||||
select (Skill_shield)s;
|
||||
if (source2.Any())
|
||||
{
|
||||
if (source2.Any((Skill_shield s) => s.IsAllDamageShield))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0274"));
|
||||
}
|
||||
if (source2.Any((Skill_shield s) => s.IsNextDamageShield))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0275"));
|
||||
}
|
||||
if (source2.Any((Skill_shield s) => s.IsSkillDamageShield))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0276"));
|
||||
}
|
||||
if (source2.Any((Skill_shield s) => s.IsSpellDamageShield))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0277"));
|
||||
}
|
||||
}
|
||||
List<Skill_damage_cut> source3 = (from s in allBuffSkills
|
||||
where s is Skill_damage_cut && (!cardBase.IsInHand || s.OnWhenPlayStart == 0)
|
||||
select (Skill_damage_cut)s).ToList();
|
||||
if (source3.Any())
|
||||
{
|
||||
if (source3.Any((Skill_damage_cut s) => s.IsAllDamageCut))
|
||||
{
|
||||
int num3 = -source3.Where((Skill_damage_cut s) => s.IsAllDamageCut).Sum((Skill_damage_cut s) => s.CutAmount);
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0278", num3.ToString()));
|
||||
}
|
||||
if (source3.Any((Skill_damage_cut s) => s.IsNextDamageCut))
|
||||
{
|
||||
int num4 = -source3.Where((Skill_damage_cut s) => s.IsNextDamageCut).Sum((Skill_damage_cut s) => s.CutAmount);
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0279", num4.ToString()));
|
||||
}
|
||||
if (source3.Any((Skill_damage_cut s) => s.IsSkillDamageCut))
|
||||
{
|
||||
int num5 = -source3.Where((Skill_damage_cut s) => s.IsSkillDamageCut).Sum((Skill_damage_cut s) => s.CutAmount);
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0280", num5.ToString()));
|
||||
}
|
||||
if (source3.Any((Skill_damage_cut s) => s.IsDamageClipping))
|
||||
{
|
||||
List<int> list = (from s in source3
|
||||
where s.ClippingMax != int.MaxValue
|
||||
select s.ClippingMax).ToList();
|
||||
if (source3.Any((Skill_damage_cut s) => !IsNotShowDamageCutLifeLowerLimitBuffDetail(s)))
|
||||
{
|
||||
list.AddRange(from s in source3
|
||||
where s.LifeLowerLimit != -1
|
||||
select (!(s.SkillPrm.ownerCard is UnitBattleCard)) ? (s.SkillPrm.ownerCard.SelfBattlePlayer.Class.Life - 1) : (s.SkillPrm.ownerCard.Life - 1));
|
||||
}
|
||||
if (list.Any())
|
||||
{
|
||||
int num6 = list.Min();
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0281", (num6 + 1).ToString(), num6.ToString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
_buffLabel.text = stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public void SetBuffDetailLabelInReplay(List<NetworkBattleReceiver.ReplayBuffInfoLabel> buffInfoTextTypeList, BattleCardBase card)
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
if (!card.IsClass)
|
||||
{
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.Cost))
|
||||
{
|
||||
int num = card.Cost - card.BaseCost;
|
||||
string text = ((num > 0) ? ("+" + num) : num.ToString());
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0273", text));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.StatusBuff))
|
||||
{
|
||||
string retAttack = string.Empty;
|
||||
string retLife = string.Empty;
|
||||
BattleLogUtility.GetBuffValueStringFormatted(card.GetCurrentAtkBuff(), card.GetCurrentLifeBuff(), ref retAttack, ref retLife);
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0040", retAttack, retLife));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.Quick))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0011"));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.Rush))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0012"));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.Killer))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0009"));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.Drain))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0006"));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.AttackCount))
|
||||
{
|
||||
int value = buffInfoTextTypeList.FirstOrDefault((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.AttackCount).Value;
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0018", value.ToString()));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.IgnoreGuard))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0008"));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.ConsumeEpModifier))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0201"));
|
||||
}
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.AllDamageShield))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0274"));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.NextDamageShield))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0275"));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.SkillDamageShield))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0276"));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.SpellDamageShield))
|
||||
{
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0277"));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.AllDamageCut))
|
||||
{
|
||||
int num2 = -buffInfoTextTypeList.FirstOrDefault((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.AllDamageCut).Value;
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0278", num2.ToString()));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.NextDamageCut))
|
||||
{
|
||||
int num3 = -buffInfoTextTypeList.FirstOrDefault((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.NextDamageCut).Value;
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0279", num3.ToString()));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.SkillDamageCut))
|
||||
{
|
||||
int num4 = -buffInfoTextTypeList.FirstOrDefault((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.SkillDamageCut).Value;
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0280", num4.ToString()));
|
||||
}
|
||||
if (buffInfoTextTypeList.Any((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.DamageClipping))
|
||||
{
|
||||
int value2 = buffInfoTextTypeList.FirstOrDefault((NetworkBattleReceiver.ReplayBuffInfoLabel b) => b.Type == NetworkBattleReceiver.ReplayBuffInfoTextType.DamageClipping).Value;
|
||||
AppendBuffText(stringBuilder, Data.SystemText.Get("BattleLog_0281", (value2 + 1).ToString(), value2.ToString()));
|
||||
}
|
||||
_buffLabel.text = stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public static List<SkillBase> GetAllBuffSkills(BattleCardBase cardBase, List<SkillBase> buffSkills)
|
||||
{
|
||||
List<SkillBase> list = new List<SkillBase>();
|
||||
foreach (SkillBase buffSkill in buffSkills)
|
||||
{
|
||||
if (buffSkill is Skill_attach_skill)
|
||||
{
|
||||
IEnumerable<SkillBase> source = from b in buffSkill.GetBuffInfoContainer()
|
||||
where cardBase == b._targetCard
|
||||
select b._attachSkill;
|
||||
list.AddRange(GetAllBuffSkills(cardBase, source.Where((SkillBase s) => !cardBase.IsClass || !ExistClassSkillNeedBuffDetailText(s)).ToList()));
|
||||
}
|
||||
else
|
||||
{
|
||||
list.Add(buffSkill);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public void AppendBuffText(StringBuilder buffTextsStringBuilder, string buffText)
|
||||
{
|
||||
if (buffTextsStringBuilder.Length > 0)
|
||||
{
|
||||
buffTextsStringBuilder.Append("\r\n");
|
||||
}
|
||||
buffTextsStringBuilder.Append(buffText);
|
||||
}
|
||||
|
||||
public static bool NeedBuffDetailText(BattleCardBase cardBase)
|
||||
{
|
||||
if (cardBase is ClassBattleCardBase)
|
||||
{
|
||||
return cardBase.BuffInfoList.Any((BuffInfo s) => ExistClassSkillNeedBuffDetailText(s.SkillFrom));
|
||||
}
|
||||
if (!cardBase.BuffInfoList.Exists((BuffInfo b) => ExistSkillNeedBuffDetailText(cardBase, b.SkillFrom)))
|
||||
{
|
||||
return NeedNoConsumeEpText(cardBase);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool IsNotShowDamageCutLifeLowerLimitBuffDetail(SkillBase skill)
|
||||
{
|
||||
bool num = skill is Skill_damage_cut { IsDamageClipping: not false } skill_damage_cut && skill_damage_cut.LifeLowerLimit != -1;
|
||||
DataMgr.SpecialBattleSetting specialBattleSettingInfo = GameMgr.GetIns().GetDataMgr().SpecialBattleSettingInfo;
|
||||
if (num && specialBattleSettingInfo != null && specialBattleSettingInfo.Id == "42")
|
||||
{
|
||||
return skill.SkillPrm.ownerCard is EnemyClassBattleCard;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool ExistSkillNeedBuffDetailText(BattleCardBase cardBase, SkillBase skill)
|
||||
{
|
||||
if (cardBase.IsInHand && skill.Option.Contains("(timing:when_play)"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!(skill is Skill_quick) && !(skill is Skill_ignore_guard) && !(skill is Skill_attack_count) && !(skill is Skill_shield) && !(skill is Skill_damage_cut) && !(skill is Skill_rush) && !ExistSkillCostChangeNeedDetailText(cardBase, skill) && !(skill is Skill_consume_ep_modifier) && !(skill is Skill_killer) && !(skill is Skill_drain) && !ExistSKillPowerChangeNeedDetailText(cardBase, skill) && !ExistAttachSkillNeedDetailText(cardBase, skill))
|
||||
{
|
||||
return ExistCopiedSkillNeedDetailText(cardBase);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static bool ExistClassSkillNeedBuffDetailText(SkillBase skill)
|
||||
{
|
||||
if (!(skill is Skill_shield))
|
||||
{
|
||||
if (skill is Skill_damage_cut)
|
||||
{
|
||||
return !IsNotShowDamageCutLifeLowerLimitBuffDetail(skill);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool NeedNoConsumeEpText(BattleCardBase cardBase)
|
||||
{
|
||||
if (cardBase.BuffInfoList.Any((BuffInfo b) => b.SkillFrom is Skill_consume_ep_modifier))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (DetailPanelControl.IsNeedNoConsumeEp(cardBase))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool ExistSKillPowerChangeNeedDetailText(BattleCardBase cardBase, SkillBase skill)
|
||||
{
|
||||
if (skill is Skill_powerup || skill is Skill_power_down)
|
||||
{
|
||||
int currentAtkBuff = cardBase.GetCurrentAtkBuff();
|
||||
int currentLifeBuff = cardBase.GetCurrentLifeBuff();
|
||||
if (currentAtkBuff == 0)
|
||||
{
|
||||
return currentLifeBuff != 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool ExistAttachSkillNeedDetailText(BattleCardBase cardBase, SkillBase skill)
|
||||
{
|
||||
if (skill is Skill_attach_skill)
|
||||
{
|
||||
return skill.GetBuffInfoContainer().Any((SkillBase.BuffInfoContainer b) => cardBase == b._targetCard && ExistSkillNeedBuffDetailText(cardBase, b._attachSkill));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool ExistCopiedSkillNeedDetailText(BattleCardBase cardBase)
|
||||
{
|
||||
return cardBase.BuffInfoList.Any(delegate(BuffInfo b)
|
||||
{
|
||||
if (!b.IsCopied)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return b.SkillFrom is SkillBaseCopy skillBaseCopy && skillBaseCopy.IsNeedDetail;
|
||||
});
|
||||
}
|
||||
|
||||
private static bool ExistSkillCostChangeNeedDetailText(BattleCardBase cardBase, SkillBase skill)
|
||||
{
|
||||
if (skill is Skill_cost_change)
|
||||
{
|
||||
return cardBase.Cost != cardBase.BaseCost;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
119
SVSim.BattleEngine/Engine/BuffInfo.cs
Normal file
119
SVSim.BattleEngine/Engine/BuffInfo.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Wizard;
|
||||
|
||||
public class BuffInfo
|
||||
{
|
||||
public List<int> CopiedSkillDescriptionValueList = new List<int>();
|
||||
|
||||
public List<int> CopiedEvoSkillDescriptionValueList = new List<int>();
|
||||
|
||||
public int BaseCardIDFrom { get; private set; }
|
||||
|
||||
public int CardIDFrom { get; private set; }
|
||||
|
||||
public SkillBase SkillFrom { get; private set; }
|
||||
|
||||
public BattleCardBase OwnerCard { get; private set; }
|
||||
|
||||
public BattleCardBase PreviousOwner { get; private set; }
|
||||
|
||||
public BattleCardBase TargetCard { get; set; }
|
||||
|
||||
public bool IsCopied { get; set; }
|
||||
|
||||
public bool IsPlayer { get; set; }
|
||||
|
||||
public bool IsCopiedEvolutionSkill { get; set; }
|
||||
|
||||
public bool IsEvolutionSkill { get; set; }
|
||||
|
||||
public bool IsSaveBurialRiteSkill { get; set; }
|
||||
|
||||
public bool IsGetonSkill { get; set; }
|
||||
|
||||
public bool IsHiddenClassLogSkill { get; set; }
|
||||
|
||||
public string DivergenceId { get; set; }
|
||||
|
||||
public bool IsReserveTokenDrawSkill { get; set; }
|
||||
|
||||
public BossRushSpecialSkill SpecialSkillInfo { get; set; }
|
||||
|
||||
public BuffInfo(int fromBaseCardID, int fromCardID, SkillBase fromSkill, BattleCardBase ownerCard = null, bool isPlayer = false, string divergenceId = "")
|
||||
{
|
||||
BaseCardIDFrom = fromBaseCardID;
|
||||
CardIDFrom = fromCardID;
|
||||
SkillFrom = fromSkill;
|
||||
PreviousOwner = null;
|
||||
if (SkillFrom != null)
|
||||
{
|
||||
IsPlayer = SkillFrom.SkillPrm.ownerCard.IsPlayer;
|
||||
IsEvolutionSkill = SkillFrom.SkillPrm.ownerCard.EvolutionSkills != null && SkillFrom.SkillPrm.ownerCard.EvolutionSkills.Any((SkillBase skill) => skill == SkillFrom);
|
||||
DivergenceId = SkillFrom.OptionValue.GetOption(SkillFilterCreator.ContentKeyword.divergence_id, "_OPT_NULL_");
|
||||
OwnerCard = SkillFrom.SkillPrm.ownerCard;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsPlayer = isPlayer;
|
||||
DivergenceId = divergenceId;
|
||||
OwnerCard = ownerCard;
|
||||
}
|
||||
}
|
||||
|
||||
public string GetAttachFromCardName()
|
||||
{
|
||||
return CardMaster.GetInstanceForBattle().GetCardParameterFromId(BaseCardIDFrom).CardName;
|
||||
}
|
||||
|
||||
public void SetPreviousOwner(BattleCardBase card)
|
||||
{
|
||||
PreviousOwner = card;
|
||||
}
|
||||
|
||||
private BuffInfo(BuffInfo buff)
|
||||
{
|
||||
BaseCardIDFrom = buff.BaseCardIDFrom;
|
||||
CardIDFrom = buff.CardIDFrom;
|
||||
SkillFrom = buff.SkillFrom;
|
||||
OwnerCard = buff.OwnerCard;
|
||||
PreviousOwner = buff.PreviousOwner;
|
||||
IsCopied = buff.IsCopied;
|
||||
IsCopiedEvolutionSkill = buff.IsCopiedEvolutionSkill;
|
||||
IsPlayer = buff.IsPlayer;
|
||||
IsEvolutionSkill = buff.IsEvolutionSkill;
|
||||
IsSaveBurialRiteSkill = buff.IsSaveBurialRiteSkill;
|
||||
IsGetonSkill = buff.IsGetonSkill;
|
||||
IsHiddenClassLogSkill = buff.IsHiddenClassLogSkill;
|
||||
DivergenceId = buff.DivergenceId;
|
||||
IsReserveTokenDrawSkill = buff.IsReserveTokenDrawSkill;
|
||||
}
|
||||
|
||||
public BuffInfo Clone()
|
||||
{
|
||||
return new BuffInfo(this);
|
||||
}
|
||||
|
||||
public bool IsBuffGaveSkill(SkillBase skill)
|
||||
{
|
||||
if (SkillFrom is SkillBaseCopy skillBaseCopy && skillBaseCopy.CopiedSkillList.Any((SkillBase s) => skill.IsSameSkill(s)))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return SkillFrom == skill;
|
||||
}
|
||||
|
||||
public BattleCardBase GetDisplayCard()
|
||||
{
|
||||
BattleCardBase result = OwnerCard;
|
||||
if (PreviousOwner != null)
|
||||
{
|
||||
result = PreviousOwner;
|
||||
}
|
||||
if (IsSaveBurialRiteSkill || IsGetonSkill || IsReserveTokenDrawSkill)
|
||||
{
|
||||
result = TargetCard;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
95
SVSim.BattleEngine/Engine/CantPlayCardFilterInfo.cs
Normal file
95
SVSim.BattleEngine/Engine/CantPlayCardFilterInfo.cs
Normal file
@@ -0,0 +1,95 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Wizard;
|
||||
using Wizard.Battle;
|
||||
|
||||
public class CantPlayCardFilterInfo
|
||||
{
|
||||
private BattlePlayerPair _playerPair;
|
||||
|
||||
private SkillOptionValue _optionValue;
|
||||
|
||||
private SkillConditionCheckerOption _checkerOption;
|
||||
|
||||
private ISkillBattlePlayerFilter _playerFilter;
|
||||
|
||||
private ISkillTargetFilter _targetFilter;
|
||||
|
||||
private List<ISkillCardFilter> _cardFilterList;
|
||||
|
||||
private ValueWithOperator _cardId;
|
||||
|
||||
private bool _hasCardIdFilter;
|
||||
|
||||
public bool IsCantPlaySpell { get; private set; }
|
||||
|
||||
public bool IsCantPlayField { get; private set; }
|
||||
|
||||
public CantPlayCardFilterInfo(BattleCardBase owner, SkillBase skill)
|
||||
{
|
||||
_playerFilter = SkillFilterCreator.CreateBattlePlayerFilter(SkillFilterCreator.ContentKeyword.me);
|
||||
_targetFilter = new SkillTargetHandFilter();
|
||||
_cardFilterList = CreateCardFilterList(skill.OptionValue);
|
||||
_playerPair = new BattlePlayerPair(owner.SelfBattlePlayer, owner.OpponentBattlePlayer);
|
||||
_optionValue = skill.OptionValue;
|
||||
_checkerOption = new SkillConditionCheckerOption();
|
||||
_hasCardIdFilter = _cardFilterList.Any((ISkillCardFilter c) => c is SkillParameterBaseCardIdFilter);
|
||||
IsCantPlaySpell = _cardFilterList.Any((ISkillCardFilter c) => c is SkillSpellFilter);
|
||||
IsCantPlayField = _cardFilterList.Any((ISkillCardFilter c) => c is SkillFieldFilter);
|
||||
}
|
||||
|
||||
private List<ISkillCardFilter> CreateCardFilterList(SkillOptionValue option)
|
||||
{
|
||||
List<ISkillCardFilter> list = new List<ISkillCardFilter>();
|
||||
switch (option.GetString(SkillFilterCreator.ContentKeyword.card_type))
|
||||
{
|
||||
case "unit":
|
||||
list.Add(new SkillUnitFilter());
|
||||
break;
|
||||
case "class":
|
||||
list.Add(new SkillClassFilter());
|
||||
break;
|
||||
case "spell":
|
||||
list.Add(new SkillSpellFilter());
|
||||
break;
|
||||
case "field":
|
||||
list.Add(new SkillFieldFilter());
|
||||
break;
|
||||
case "all":
|
||||
list.Add(new SkillAllCardFilter());
|
||||
break;
|
||||
}
|
||||
ValueWithOperator valueWithOperator = option.GetValueWithOperator(SkillFilterCreator.ContentKeyword.base_card_id);
|
||||
if (valueWithOperator != null)
|
||||
{
|
||||
_cardId = new ValueWithOperator(option.ParseInt(valueWithOperator.Value).ToString(), valueWithOperator.Operator);
|
||||
list.Add(new SkillParameterBaseCardIdFilter(_cardId.Value, _cardId.Operator));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public bool CheckCantPlay(BattleCardBase targetCard)
|
||||
{
|
||||
IEnumerable<IBattlePlayerReadOnlyInfo> battlePlayerInfos = _playerFilter.Filtering(_playerPair);
|
||||
IEnumerable<IReadOnlyBattleCardInfo> enumerable = _targetFilter.Filtering(battlePlayerInfos, _checkerOption);
|
||||
for (int i = 0; i < _cardFilterList.Count; i++)
|
||||
{
|
||||
enumerable = _cardFilterList[i].Filtering(enumerable, _optionValue);
|
||||
}
|
||||
return enumerable.Any((IReadOnlyBattleCardInfo c) => c.IsPlayer == targetCard.IsPlayer && c.Index == targetCard.Index);
|
||||
}
|
||||
|
||||
public bool CheckCantPlayTransformId(BattleCardBase originalCard)
|
||||
{
|
||||
if (!_hasCardIdFilter || _cardId == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Skill_transform accelerateOrCrystallizeTransformSkill = originalCard.GetAccelerateOrCrystallizeTransformSkill();
|
||||
if (accelerateOrCrystallizeTransformSkill == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return SkillCompareFuncCreator.Create(_cardId.Operator)(_optionValue.ParseInt(_cardId.Value), accelerateOrCrystallizeTransformSkill.TransformId);
|
||||
}
|
||||
}
|
||||
317
SVSim.BattleEngine/Engine/CardBasePrm.cs
Normal file
317
SVSim.BattleEngine/Engine/CardBasePrm.cs
Normal file
@@ -0,0 +1,317 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Wizard;
|
||||
|
||||
public static class CardBasePrm
|
||||
{
|
||||
public enum CharaType
|
||||
{
|
||||
CLASS = 0,
|
||||
NORMAL = 1,
|
||||
FIELD = 2,
|
||||
CHANT_FIELD = 3,
|
||||
SPELL = 4,
|
||||
EVOLUTION = 5,
|
||||
MAX = 6,
|
||||
NONE = 6
|
||||
}
|
||||
|
||||
public enum ClanType
|
||||
{
|
||||
ALL = 0,
|
||||
MIN = 1,
|
||||
ELF = 1,
|
||||
ROYAL = 2,
|
||||
WITCH = 3,
|
||||
DRAGON = 4,
|
||||
NECRO = 5,
|
||||
VAMPIRE = 6,
|
||||
BISHOP = 7,
|
||||
NEMESIS = 8,
|
||||
MAX = 9,
|
||||
NONE = 10,
|
||||
SHADOW = 99
|
||||
}
|
||||
|
||||
public enum TribeType
|
||||
{
|
||||
ALL = 0,
|
||||
LORD = 1,
|
||||
LEGION = 2,
|
||||
WHITE_RITUAL = 3,
|
||||
MANARIA = 4,
|
||||
ARTIFACT = 5,
|
||||
LOOTING = 6,
|
||||
MACHINE = 7,
|
||||
FOOD = 8,
|
||||
LEVIN = 9,
|
||||
NATURE = 10,
|
||||
BANQUET = 11,
|
||||
HERO = 12,
|
||||
ARMED = 13,
|
||||
CHESS = 14,
|
||||
HELLBOUND = 15,
|
||||
SCHOOL = 16,
|
||||
MAX = 17,
|
||||
NONE = 17
|
||||
}
|
||||
|
||||
public enum TribeChangeType
|
||||
{
|
||||
CHANGE,
|
||||
ADD
|
||||
}
|
||||
|
||||
public class TribeInfo
|
||||
{
|
||||
public List<TribeType> TribeTypeList { get; private set; }
|
||||
|
||||
public TribeChangeType ChangeType { get; private set; }
|
||||
|
||||
public TribeInfo(List<TribeType> tribe, TribeChangeType type)
|
||||
{
|
||||
TribeTypeList = tribe;
|
||||
ChangeType = type;
|
||||
}
|
||||
}
|
||||
|
||||
public const int MAX_LIFE = 20;
|
||||
|
||||
public const int BERSERK_COUNT = 10;
|
||||
|
||||
public const int AVARICE_COUNT = 2;
|
||||
|
||||
public const int WRATH_COUNT = 7;
|
||||
|
||||
public const int AWAKE_PP = 7;
|
||||
|
||||
public const int MAX_DRAW_CARD = 8;
|
||||
|
||||
private static List<TribeType> _defaultType;
|
||||
|
||||
public static List<TribeType> DefaultType
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_defaultType == null)
|
||||
{
|
||||
_defaultType = new List<TribeType> { TribeType.ALL };
|
||||
}
|
||||
return _defaultType;
|
||||
}
|
||||
}
|
||||
|
||||
public static CharaType ToStrCharaType(string str)
|
||||
{
|
||||
CharaType result = CharaType.MAX;
|
||||
try
|
||||
{
|
||||
result = (CharaType)Enum.Parse(typeof(CharaType), str);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static bool ToBoolIsFoil(string str)
|
||||
{
|
||||
int num = int.Parse(str);
|
||||
bool result = false;
|
||||
if (num == 1)
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ClanType ToStrClanType(string str)
|
||||
{
|
||||
int value = int.Parse(str);
|
||||
ClanType result = ClanType.NONE;
|
||||
try
|
||||
{
|
||||
result = (ClanType)Enum.ToObject(typeof(ClanType), value);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static bool ClanTypeIsUseable(ClanType type)
|
||||
{
|
||||
if (type >= ClanType.MIN)
|
||||
{
|
||||
return type < ClanType.MAX;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static TribeType ToStrTribeType(string str)
|
||||
{
|
||||
TribeType result = TribeType.MAX;
|
||||
try
|
||||
{
|
||||
result = (TribeType)Enum.Parse(typeof(TribeType), str);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ClanType GetClanType(string clan)
|
||||
{
|
||||
using (IEnumerator<string> enumerator = ((IEnumerable<string>)clan.Split('.', '=')).GetEnumerator())
|
||||
{
|
||||
while (enumerator.MoveNext())
|
||||
{
|
||||
switch (enumerator.Current)
|
||||
{
|
||||
case "all":
|
||||
return ClanType.ALL;
|
||||
case "elf":
|
||||
return ClanType.MIN;
|
||||
case "royal":
|
||||
return ClanType.ROYAL;
|
||||
case "witch":
|
||||
return ClanType.WITCH;
|
||||
case "dragon":
|
||||
return ClanType.DRAGON;
|
||||
case "necro":
|
||||
return ClanType.NECRO;
|
||||
case "vampire":
|
||||
return ClanType.VAMPIRE;
|
||||
case "bishop":
|
||||
return ClanType.BISHOP;
|
||||
case "nemesis":
|
||||
return ClanType.NEMESIS;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ClanType.NONE;
|
||||
}
|
||||
|
||||
public static List<TribeType> CreateTribeTypeList(string tribe, bool isTribeCheck = false, bool notEqual = false)
|
||||
{
|
||||
string text = "";
|
||||
List<TribeType> list = new List<TribeType>();
|
||||
if (isTribeCheck)
|
||||
{
|
||||
text = (notEqual ? "tribe!=" : "tribe=");
|
||||
}
|
||||
if (tribe.Contains(text + "all"))
|
||||
{
|
||||
list.Add(TribeType.ALL);
|
||||
}
|
||||
if (tribe.Contains(text + "legion"))
|
||||
{
|
||||
list.Add(TribeType.LEGION);
|
||||
}
|
||||
if (tribe.Contains(text + "lord"))
|
||||
{
|
||||
list.Add(TribeType.LORD);
|
||||
}
|
||||
if (tribe.Contains(text + "white_ritual"))
|
||||
{
|
||||
list.Add(TribeType.WHITE_RITUAL);
|
||||
}
|
||||
if (tribe.Contains(text + "manaria"))
|
||||
{
|
||||
list.Add(TribeType.MANARIA);
|
||||
}
|
||||
if (tribe.Contains(text + "artifact"))
|
||||
{
|
||||
list.Add(TribeType.ARTIFACT);
|
||||
}
|
||||
if (tribe.Contains(text + "looting"))
|
||||
{
|
||||
list.Add(TribeType.LOOTING);
|
||||
}
|
||||
if (tribe.Contains(text + "machine"))
|
||||
{
|
||||
list.Add(TribeType.MACHINE);
|
||||
}
|
||||
if (tribe.Contains(text + "food"))
|
||||
{
|
||||
list.Add(TribeType.FOOD);
|
||||
}
|
||||
if (tribe.Contains(text + "levin"))
|
||||
{
|
||||
list.Add(TribeType.LEVIN);
|
||||
}
|
||||
if (tribe.Contains(text + "nature"))
|
||||
{
|
||||
list.Add(TribeType.NATURE);
|
||||
}
|
||||
if (tribe.Contains(text + "banquet"))
|
||||
{
|
||||
list.Add(TribeType.BANQUET);
|
||||
}
|
||||
if (tribe.Contains(text + "hero"))
|
||||
{
|
||||
list.Add(TribeType.HERO);
|
||||
}
|
||||
if (tribe.Contains(text + "armed"))
|
||||
{
|
||||
list.Add(TribeType.ARMED);
|
||||
}
|
||||
if (tribe.Contains(text + "chess"))
|
||||
{
|
||||
list.Add(TribeType.CHESS);
|
||||
}
|
||||
if (tribe.Contains(text + "hellbound"))
|
||||
{
|
||||
list.Add(TribeType.HELLBOUND);
|
||||
}
|
||||
if (tribe.Contains(text + "school"))
|
||||
{
|
||||
list.Add(TribeType.SCHOOL);
|
||||
}
|
||||
if (list.Count == 0)
|
||||
{
|
||||
list.Add(TribeType.MAX);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public static bool IsFollowerCard(CharaType type)
|
||||
{
|
||||
return type == CharaType.NORMAL;
|
||||
}
|
||||
|
||||
public static bool IsSpellCard(CharaType type)
|
||||
{
|
||||
return type == CharaType.SPELL;
|
||||
}
|
||||
|
||||
public static bool IsAmuletCard(CharaType type)
|
||||
{
|
||||
if (type != CharaType.FIELD)
|
||||
{
|
||||
return type == CharaType.CHANT_FIELD;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static string GetCardTypeName(CharaType type)
|
||||
{
|
||||
string result = string.Empty;
|
||||
switch (type)
|
||||
{
|
||||
case CharaType.NORMAL:
|
||||
case CharaType.EVOLUTION:
|
||||
result = Data.SystemText.Get("Card_0044");
|
||||
break;
|
||||
case CharaType.SPELL:
|
||||
result = Data.SystemText.Get("Card_0045");
|
||||
break;
|
||||
case CharaType.FIELD:
|
||||
case CharaType.CHANT_FIELD:
|
||||
result = Data.SystemText.Get("Card_0046");
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
104
SVSim.BattleEngine/Engine/CardDataModel.cs
Normal file
104
SVSim.BattleEngine/Engine/CardDataModel.cs
Normal file
@@ -0,0 +1,104 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class CardDataModel
|
||||
{
|
||||
public int Index { get; set; }
|
||||
|
||||
public int CardId { get; set; }
|
||||
|
||||
public int RedrawCardPosition { get; set; }
|
||||
|
||||
public bool isOpponent { get; set; }
|
||||
|
||||
public NetworkBattleDefine.NetworkCardPlaceState fromState { get; set; }
|
||||
|
||||
public List<NetworkBattleDefine.NetworkCardPlaceState> ToStateList { get; set; }
|
||||
|
||||
public int skillCardIndex { get; set; }
|
||||
|
||||
public int publishedActiveSkillCount { get; set; }
|
||||
|
||||
public int skillMovementNum { get; set; }
|
||||
|
||||
public bool IsAttachSkill { get; set; }
|
||||
|
||||
public int skillAttachCardIndex { get; set; }
|
||||
|
||||
public int skillAttachSkillIndex { get; set; }
|
||||
|
||||
public List<int> skillKeyCardIdxList { get; set; }
|
||||
|
||||
public List<int> SkillKeyCardIdList { get; set; }
|
||||
|
||||
public int playCardCost { get; set; }
|
||||
|
||||
public int? AddLife { get; set; }
|
||||
|
||||
public int? SetLife { get; set; }
|
||||
|
||||
public int? AddAtk { get; set; }
|
||||
|
||||
public int? SetAtk { get; set; }
|
||||
|
||||
public int Clan { get; set; }
|
||||
|
||||
public string Tribe { get; set; }
|
||||
|
||||
public bool IsOpen { get; set; }
|
||||
|
||||
public int Spellboost { get; set; } = -1;
|
||||
|
||||
public int? AddChantCount { get; set; }
|
||||
|
||||
public int? SetChantCount { get; set; }
|
||||
|
||||
public int UnionBurstCount { get; set; }
|
||||
|
||||
public int SkyboundArtCount { get; set; }
|
||||
|
||||
public int SkillIndex { get; set; }
|
||||
|
||||
public string AttachTarget { get; private set; }
|
||||
|
||||
public int RandomTargetIndex { get; set; } = -1;
|
||||
|
||||
public List<int> FusionIngredientList { get; set; }
|
||||
|
||||
public bool IsInvoked { get; set; }
|
||||
|
||||
public bool IsGotUnapproved { get; set; }
|
||||
|
||||
public int SkillCallCount { get; set; }
|
||||
|
||||
public int SkillValueCount { get; set; }
|
||||
|
||||
public int? SkillValueParameter { get; set; }
|
||||
|
||||
public int activate { get; set; }
|
||||
|
||||
public bool IsHighlander { get; set; }
|
||||
|
||||
public CardDataModel()
|
||||
{
|
||||
Clan = -1;
|
||||
Tribe = "NONE";
|
||||
playCardCost = -1;
|
||||
publishedActiveSkillCount = -1;
|
||||
SkillCallCount = -1;
|
||||
SkillValueCount = -1;
|
||||
SkillValueParameter = null;
|
||||
activate = -1;
|
||||
SkillIndex = -1;
|
||||
IsHighlander = false;
|
||||
ToStateList = new List<NetworkBattleDefine.NetworkCardPlaceState>();
|
||||
skillKeyCardIdxList = new List<int>();
|
||||
SkillKeyCardIdList = new List<int>();
|
||||
UnionBurstCount = -1;
|
||||
SkyboundArtCount = -1;
|
||||
}
|
||||
|
||||
public void SetAttachTarget(string attach)
|
||||
{
|
||||
AttachTarget = attach;
|
||||
}
|
||||
}
|
||||
188
SVSim.BattleEngine/Engine/CardDetailBase.cs
Normal file
188
SVSim.BattleEngine/Engine/CardDetailBase.cs
Normal file
@@ -0,0 +1,188 @@
|
||||
using System;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.View;
|
||||
|
||||
public class CardDetailBase : MonoBehaviour
|
||||
{
|
||||
[Serializable]
|
||||
public class BgSizeInfo
|
||||
{
|
||||
public int Line;
|
||||
|
||||
public int BgSize;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class DetailPanelInfo
|
||||
{
|
||||
public GameObject _root;
|
||||
|
||||
public UILabel _nameLabel;
|
||||
|
||||
public UITexture _logImage;
|
||||
|
||||
public UIScrollView _scrollView;
|
||||
|
||||
public UISprite _bg;
|
||||
|
||||
public int _maxLine;
|
||||
|
||||
public UIPanel DiscPanelObject;
|
||||
|
||||
public UILabel DiscLabel;
|
||||
|
||||
public BoxCollider DiscCollider;
|
||||
|
||||
public UIScrollBar DiscScrollBar;
|
||||
|
||||
public int DefaultBgHeight;
|
||||
|
||||
public UILabel _costLabel;
|
||||
|
||||
public UILabel _signLabel;
|
||||
|
||||
public UILabel _zeroCostLabel;
|
||||
|
||||
public UILabel _signedCostLabel;
|
||||
|
||||
public UISprite _costSprite;
|
||||
|
||||
public UILabel _classLabel;
|
||||
|
||||
public UISprite _classBG;
|
||||
|
||||
public GameObject _myRotationInfo;
|
||||
|
||||
public UILabel _myRotationClassLabel;
|
||||
|
||||
public GameObject _myRotationBonusIconOriginal;
|
||||
|
||||
public UIGrid _myRotationBonusIconGrid;
|
||||
|
||||
public FlexibleGrid _myRotationInfoGrid;
|
||||
|
||||
public UIRect RootAnchor;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private const int EVO_OR_FUSION_BUTTON_OFFSET = 65;
|
||||
|
||||
private const int CLASS_LABEL_HEIGHT = 89;
|
||||
|
||||
private const int PANEL_BOTTOM__ANCHOR = 4;
|
||||
|
||||
private const int PANEL_BOTTOM__ANCHOR_SCROLL = 16;
|
||||
|
||||
[SerializeField]
|
||||
protected DetailPanelInfo _followerPanel;
|
||||
|
||||
[SerializeField]
|
||||
protected DetailPanelInfo _followerEvoPanel;
|
||||
|
||||
[SerializeField]
|
||||
protected DetailPanelInfo _nonFollowerPanel;
|
||||
|
||||
protected void SetFollowerDetailLabel(string skillDisc, string evoSkillDisc, bool needEvolutionOrFusionButton, bool resetScrollPosition = true)
|
||||
{
|
||||
_nonFollowerPanel._root.SetActive(value: false);
|
||||
_followerPanel._root.SetActive(value: true);
|
||||
_followerEvoPanel._root.SetActive(value: true);
|
||||
int num = CheckTextLineCount(_followerPanel.DiscLabel, skillDisc);
|
||||
int num2 = CheckTextLineCount(_followerEvoPanel.DiscLabel, evoSkillDisc);
|
||||
if (num >= _followerPanel._maxLine && num2 < _followerEvoPanel._maxLine)
|
||||
{
|
||||
num = Mathf.Min(9 - num2, num);
|
||||
}
|
||||
else if (num < _followerPanel._maxLine && num2 >= _followerEvoPanel._maxLine)
|
||||
{
|
||||
num2 = Mathf.Min(9 - num, num2);
|
||||
}
|
||||
else if (num >= _followerPanel._maxLine && num2 >= _followerEvoPanel._maxLine)
|
||||
{
|
||||
num = _followerPanel._maxLine;
|
||||
num2 = _followerEvoPanel._maxLine;
|
||||
}
|
||||
SetDescLabelText(_followerPanel, skillDisc, num, needEvolutionOrFusionButton: false, resetScrollPosition);
|
||||
SetDescLabelText(_followerEvoPanel, evoSkillDisc, num2, needEvolutionOrFusionButton, resetScrollPosition);
|
||||
_followerEvoPanel.RootAnchor.UpdateAnchors();
|
||||
}
|
||||
|
||||
protected void SetDescLabelText(DetailPanelInfo panel, string discText, bool needEvolutionOrFusionButton = false, bool resetScrollPosition = true, bool isClass = false)
|
||||
{
|
||||
SetDescLabelText(panel, discText, panel._maxLine, needEvolutionOrFusionButton, resetScrollPosition, isClass);
|
||||
}
|
||||
|
||||
protected void SetDescLabelText(DetailPanelInfo panel, string discText, int maxLine, bool needEvolutionOrFusionButton = false, bool resetScrollPosition = true, bool isClass = false)
|
||||
{
|
||||
UILabel discLabel = panel.DiscLabel;
|
||||
UIScrollView scrollView = panel._scrollView;
|
||||
UISprite bg = panel._bg;
|
||||
discLabel.text = Global.GetConvertWrapText(discLabel, discText);
|
||||
discLabel.ProcessText();
|
||||
int textLineCount = Global.GetTextLineCount(discLabel.processedText);
|
||||
bool flag = textLineCount > maxLine;
|
||||
if (bg != null)
|
||||
{
|
||||
bg.height = panel.DefaultBgHeight + Mathf.Min(textLineCount, maxLine) * (panel.DiscLabel.fontSize + panel.DiscLabel.spacingY);
|
||||
if (needEvolutionOrFusionButton)
|
||||
{
|
||||
bg.height += 65;
|
||||
}
|
||||
if (isClass)
|
||||
{
|
||||
bg.height = 89;
|
||||
}
|
||||
bg.gameObject.SetActive(value: false);
|
||||
bg.gameObject.SetActive(value: true);
|
||||
bg.ResetAndUpdateAnchors();
|
||||
}
|
||||
panel.DiscPanelObject.bottomAnchor.absolute = (flag ? 16 : 4) + (needEvolutionOrFusionButton ? 65 : 0);
|
||||
panel.DiscPanelObject.gameObject.SetActive(value: false);
|
||||
panel.DiscPanelObject.gameObject.SetActive(value: true);
|
||||
panel.DiscPanelObject.UpdateAnchors();
|
||||
scrollView.enabled = flag;
|
||||
panel.DiscScrollBar.gameObject.SetActive(flag);
|
||||
if (resetScrollPosition)
|
||||
{
|
||||
scrollView.ResetPosition();
|
||||
}
|
||||
scrollView.UpdateScrollbars();
|
||||
}
|
||||
|
||||
private int CheckTextLineCount(UILabel label, string discText)
|
||||
{
|
||||
label.text = Global.GetConvertWrapText(label, discText);
|
||||
label.ProcessText();
|
||||
return Global.GetTextLineCount(label.processedText);
|
||||
}
|
||||
|
||||
protected void SetDetailKeywordEvents(Action<BattleCardBase, GameObject, CardParameter> onClick, BattleCardBase card, CardParameter baseParameter, DetailPanelControl control)
|
||||
{
|
||||
SetDetailKeywordEvent(_followerPanel, onClick, card, baseParameter, control);
|
||||
SetDetailKeywordEvent(_followerEvoPanel, onClick, card, baseParameter, control);
|
||||
SetDetailKeywordEvent(_nonFollowerPanel, onClick, card, baseParameter, control);
|
||||
}
|
||||
|
||||
private void SetDetailKeywordEvent(DetailPanelInfo panelInfo, Action<BattleCardBase, GameObject, CardParameter> onClick, BattleCardBase card, CardParameter baseParameter, DetailPanelControl control)
|
||||
{
|
||||
UILabel label = panelInfo.DiscLabel;
|
||||
BoxCollider discCollider = panelInfo.DiscCollider;
|
||||
if (label.text != " ")
|
||||
{
|
||||
UIEventListener.Get(discCollider.gameObject).onClick = delegate
|
||||
{
|
||||
onClick.Call(card, label.gameObject, baseParameter);
|
||||
};
|
||||
BattlePlayerView.SetKeyWordColor(discCollider.gameObject, label, control);
|
||||
}
|
||||
else
|
||||
{
|
||||
UIEventListener.Get(discCollider.gameObject).onClick = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
39
SVSim.BattleEngine/Engine/CardDetailFilterCategory.cs
Normal file
39
SVSim.BattleEngine/Engine/CardDetailFilterCategory.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class CardDetailFilterCategory : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UILabel _categoryName;
|
||||
|
||||
[SerializeField]
|
||||
private UIGrid _grid;
|
||||
|
||||
public List<CardDetailFilterKeyWord> AllKeyWord { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
AllKeyWord = new List<CardDetailFilterKeyWord>();
|
||||
}
|
||||
|
||||
public void Initialize(string name)
|
||||
{
|
||||
_categoryName.text = name;
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
foreach (CardDetailFilterKeyWord item in AllKeyWord)
|
||||
{
|
||||
item.Reset();
|
||||
}
|
||||
}
|
||||
|
||||
public void AddChild(CardDetailFilterKeyWord keyword)
|
||||
{
|
||||
keyword.transform.parent = _grid.transform;
|
||||
keyword.transform.localScale = Vector3.one;
|
||||
_grid.Reposition();
|
||||
AllKeyWord.Add(keyword);
|
||||
}
|
||||
}
|
||||
193
SVSim.BattleEngine/Engine/CardDetailFilterDialog.cs
Normal file
193
SVSim.BattleEngine/Engine/CardDetailFilterDialog.cs
Normal file
@@ -0,0 +1,193 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
|
||||
public class CardDetailFilterDialog : MonoBehaviour
|
||||
{
|
||||
private const int DIALOG_PANEL_DEPTH = 15;
|
||||
|
||||
[SerializeField]
|
||||
private CardDetailFilterCategory _categoryOriginal;
|
||||
|
||||
[SerializeField]
|
||||
private CardDetailFilterKeyWord _keywordOriginal;
|
||||
|
||||
[SerializeField]
|
||||
private FlexibleGrid _grid;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _resetButton;
|
||||
|
||||
private List<CardDetailFilterCategory> _allCategory = new List<CardDetailFilterCategory>();
|
||||
|
||||
private List<string> _saveList;
|
||||
|
||||
private bool _initializeFinish;
|
||||
|
||||
private bool _isChanged;
|
||||
|
||||
private Dictionary<string, bool> _existKeyWordDictionary;
|
||||
|
||||
public Action OnChange { get; set; }
|
||||
|
||||
public DialogBase Dialog { get; private set; }
|
||||
|
||||
public static CardDetailFilterDialog Create(GameObject prefab, List<string> saveList, Dictionary<string, bool> existKeyWordDictionary)
|
||||
{
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
dialogBase.SetTitleLabel(Data.SystemText.Get("Card_0227"));
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.CloseBtn);
|
||||
dialogBase.SetPanelDepth(15);
|
||||
GameObject gameObject = UnityEngine.Object.Instantiate(prefab);
|
||||
dialogBase.SetObj(gameObject);
|
||||
CardDetailFilterDialog component = gameObject.GetComponent<CardDetailFilterDialog>();
|
||||
component.Dialog = dialogBase;
|
||||
component._saveList = saveList;
|
||||
component._existKeyWordDictionary = existKeyWordDictionary;
|
||||
return component;
|
||||
}
|
||||
|
||||
private bool IsCheckedInSaveList(string keyword)
|
||||
{
|
||||
if (_saveList != null)
|
||||
{
|
||||
return _saveList.Contains(keyword);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_categoryOriginal.gameObject.SetActive(value: false);
|
||||
_keywordOriginal.gameObject.SetActive(value: false);
|
||||
foreach (string category in Data.Master.CardFilterKeyWord.CategoryList)
|
||||
{
|
||||
AddCategory(Data.SystemText.Get(category), Data.Master.CardFilterKeyWord.GetCategory(category));
|
||||
}
|
||||
_grid.Reposition();
|
||||
UIEventListener.Get(_resetButton.gameObject).onClick = delegate
|
||||
{
|
||||
OnClickResetButton();
|
||||
};
|
||||
_initializeFinish = true;
|
||||
}
|
||||
|
||||
private void AddCategory(string categoryName, List<string> keyList)
|
||||
{
|
||||
List<string> list = new List<string>();
|
||||
foreach (string key2 in keyList)
|
||||
{
|
||||
string key = Data.Master.BattleKeyWordTitleDic[key2];
|
||||
if (_existKeyWordDictionary == null || _existKeyWordDictionary.ContainsKey(key))
|
||||
{
|
||||
list.Add(key2);
|
||||
}
|
||||
}
|
||||
if (list.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
CardDetailFilterCategory component = NGUITools.AddChild(_grid.gameObject, _categoryOriginal.gameObject).GetComponent<CardDetailFilterCategory>();
|
||||
_allCategory.Add(component);
|
||||
component.name = "category_" + categoryName;
|
||||
component.gameObject.SetActive(value: true);
|
||||
component.Initialize(categoryName);
|
||||
foreach (string item in list)
|
||||
{
|
||||
string keyword = Data.Master.BattleKeyWordTitleDic[item];
|
||||
CardDetailFilterKeyWord component2 = UnityEngine.Object.Instantiate(_keywordOriginal.gameObject).GetComponent<CardDetailFilterKeyWord>();
|
||||
component2.gameObject.SetActive(value: true);
|
||||
component2.Initialize(keyword);
|
||||
component2.OnValueChange = delegate
|
||||
{
|
||||
if (_initializeFinish)
|
||||
{
|
||||
_isChanged = true;
|
||||
}
|
||||
};
|
||||
component.AddChild(component2);
|
||||
if (IsCheckedInSaveList(keyword))
|
||||
{
|
||||
component2.SetChecked();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_isChanged)
|
||||
{
|
||||
_isChanged = false;
|
||||
List<string> filterList = GetFilterList();
|
||||
if (!IsSameList(_saveList, filterList))
|
||||
{
|
||||
_saveList = filterList;
|
||||
OnChange.Call();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int GetListCount(List<string> list)
|
||||
{
|
||||
return list?.Count ?? 0;
|
||||
}
|
||||
|
||||
private bool IsSameList(List<string> list1, List<string> list2)
|
||||
{
|
||||
if (GetListCount(list1) == 0 && GetListCount(list2) == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (GetListCount(list1) != GetListCount(list2))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
foreach (string item in list1)
|
||||
{
|
||||
if (!list2.Contains(item))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
foreach (string item2 in list2)
|
||||
{
|
||||
if (!list1.Contains(item2))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void OnClickResetButton()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_COMMON_BUTTON);
|
||||
foreach (CardDetailFilterCategory item in _allCategory)
|
||||
{
|
||||
item.Reset();
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> GetFilterList()
|
||||
{
|
||||
List<string> list = null;
|
||||
foreach (CardDetailFilterCategory item in _allCategory)
|
||||
{
|
||||
foreach (CardDetailFilterKeyWord item2 in item.AllKeyWord)
|
||||
{
|
||||
if (item2.IsEnableKeyWord)
|
||||
{
|
||||
if (list == null)
|
||||
{
|
||||
list = new List<string>();
|
||||
}
|
||||
list.Add(item2.KeyWord);
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
51
SVSim.BattleEngine/Engine/CardDetailFilterKeyWord.cs
Normal file
51
SVSim.BattleEngine/Engine/CardDetailFilterKeyWord.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
public class CardDetailFilterKeyWord : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UIToggle _toggle;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _label;
|
||||
|
||||
private bool _checkedCache;
|
||||
|
||||
public bool IsEnableKeyWord => _toggle.value;
|
||||
|
||||
public string KeyWord { get; private set; }
|
||||
|
||||
public Action OnValueChange { get; set; }
|
||||
|
||||
private void Start()
|
||||
{
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
_checkedCache = false;
|
||||
_toggle.value = false;
|
||||
}
|
||||
|
||||
public void SetChecked()
|
||||
{
|
||||
_checkedCache = true;
|
||||
_toggle.value = true;
|
||||
}
|
||||
|
||||
public void Initialize(string keyword)
|
||||
{
|
||||
EventDelegate.Add(_toggle.onChange, delegate
|
||||
{
|
||||
if (_toggle.value != _checkedCache)
|
||||
{
|
||||
_checkedCache = _toggle.value;
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(_toggle.value ? Se.TYPE.SYS_TOGGLE_ON : Se.TYPE.SYS_TOGGLE_OFF);
|
||||
}
|
||||
OnValueChange.Call();
|
||||
});
|
||||
_label.text = keyword;
|
||||
KeyWord = keyword;
|
||||
}
|
||||
}
|
||||
36
SVSim.BattleEngine/Engine/CardDetailFilterOffButton.cs
Normal file
36
SVSim.BattleEngine/Engine/CardDetailFilterOffButton.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
public class CardDetailFilterOffButton : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UILabel _label;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _button;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _backGround;
|
||||
|
||||
private string _keyword;
|
||||
|
||||
public Action<string> OnClick { get; set; }
|
||||
|
||||
private void Start()
|
||||
{
|
||||
EventDelegate.Add(_button.onClick, delegate
|
||||
{
|
||||
OnClick.Call(_keyword);
|
||||
});
|
||||
}
|
||||
|
||||
public void Initialize(string text)
|
||||
{
|
||||
_keyword = text;
|
||||
_label.text = text;
|
||||
_label.InitializeFont();
|
||||
_label.ProcessText();
|
||||
_backGround.ResetAndUpdateAnchors();
|
||||
}
|
||||
}
|
||||
2620
SVSim.BattleEngine/Engine/CardDetailUI.cs
Normal file
2620
SVSim.BattleEngine/Engine/CardDetailUI.cs
Normal file
File diff suppressed because it is too large
Load Diff
30
SVSim.BattleEngine/Engine/CardFilterKeyWordMaster.cs
Normal file
30
SVSim.BattleEngine/Engine/CardFilterKeyWordMaster.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class CardFilterKeyWordMaster
|
||||
{
|
||||
private Dictionary<string, List<string>> _allData = new Dictionary<string, List<string>>();
|
||||
|
||||
public List<string> CategoryList { get; private set; }
|
||||
|
||||
public CardFilterKeyWordMaster()
|
||||
{
|
||||
CategoryList = new List<string>();
|
||||
}
|
||||
|
||||
public void Add(string[] line)
|
||||
{
|
||||
string item = line[0];
|
||||
string text = line[1];
|
||||
if (!CategoryList.Contains(text))
|
||||
{
|
||||
CategoryList.Add(text);
|
||||
_allData[text] = new List<string>();
|
||||
}
|
||||
_allData[text].Add(item);
|
||||
}
|
||||
|
||||
public List<string> GetCategory(string category)
|
||||
{
|
||||
return _allData[category];
|
||||
}
|
||||
}
|
||||
68
SVSim.BattleEngine/Engine/CardKeyWordCache.cs
Normal file
68
SVSim.BattleEngine/Engine/CardKeyWordCache.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using Wizard;
|
||||
|
||||
public class CardKeyWordCache
|
||||
{
|
||||
public enum Option
|
||||
{
|
||||
None,
|
||||
OnlyCardNames,
|
||||
OnlyCardNamesHiranaga
|
||||
}
|
||||
|
||||
private Dictionary<int, IList<string>> _cache = new Dictionary<int, IList<string>>();
|
||||
|
||||
private Option _option;
|
||||
|
||||
public CardKeyWordCache(Option option = Option.None)
|
||||
{
|
||||
_option = option;
|
||||
}
|
||||
|
||||
public IList<string> Get(CardParameter param, CardKeyWordCommonCache commonCache)
|
||||
{
|
||||
if (_cache.TryGetValue(param.CardId, out var value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
IList<string> cloneList = commonCache.GetCloneList(param);
|
||||
if (_option == Option.OnlyCardNames)
|
||||
{
|
||||
foreach (string item in new List<string>(cloneList))
|
||||
{
|
||||
if (Data.Master.BattleKeyWordDic.ContainsKey(item) && commonCache.GetCardListFromKeyWord(item).Count == 0)
|
||||
{
|
||||
cloneList.Remove(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_option == Option.OnlyCardNamesHiranaga)
|
||||
{
|
||||
foreach (string item2 in new List<string>(cloneList))
|
||||
{
|
||||
if (!Data.Master.BattleKeyWordDic.ContainsKey(item2))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (commonCache.GetCardListFromKeyWord(item2).Count == 0)
|
||||
{
|
||||
cloneList.Remove(item2);
|
||||
continue;
|
||||
}
|
||||
cloneList.Remove(item2);
|
||||
foreach (int item3 in commonCache.GetCardListFromKeyWord(item2))
|
||||
{
|
||||
CardParameter cardParameterFromId = CardMaster.GetInstance(CardMaster.CardMasterId.Default).GetCardParameterFromId(item3);
|
||||
if (Regex.Replace(cardParameterFromId.CardName, "(\\[[a-zA-Z0-9\\/\\-]*(rub\\<[^\\>]*\\>)*\\])", "") == item2)
|
||||
{
|
||||
cloneList.Add(cardParameterFromId.CardHiragana);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_cache[param.CardId] = cloneList;
|
||||
return cloneList;
|
||||
}
|
||||
}
|
||||
22
SVSim.BattleEngine/Engine/CardPack.cs
Normal file
22
SVSim.BattleEngine/Engine/CardPack.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
public class CardPack : HeaderData
|
||||
{
|
||||
public int card_id;
|
||||
|
||||
public int base_card_id;
|
||||
|
||||
public int rarity;
|
||||
|
||||
public string create_time;
|
||||
|
||||
public string update_time;
|
||||
|
||||
public string delete_time;
|
||||
|
||||
public string affected_rows;
|
||||
|
||||
public int SleeveId { get; set; } = 3000011;
|
||||
|
||||
public bool IsSpecialCard { get; set; }
|
||||
|
||||
public bool IsFreePackLeaderSkin { get; set; }
|
||||
}
|
||||
1179
SVSim.BattleEngine/Engine/CardPackManager.cs
Normal file
1179
SVSim.BattleEngine/Engine/CardPackManager.cs
Normal file
File diff suppressed because it is too large
Load Diff
319
SVSim.BattleEngine/Engine/CardTemplate.cs
Normal file
319
SVSim.BattleEngine/Engine/CardTemplate.cs
Normal file
@@ -0,0 +1,319 @@
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.Resource;
|
||||
|
||||
public class CardTemplate : MonoBehaviour
|
||||
{
|
||||
public GameObject CardWrapObjTemp;
|
||||
|
||||
public Transform CardNormalTemp;
|
||||
|
||||
public LODGroup CardNormalLodGroup;
|
||||
|
||||
public MeshRenderer FieldNormalMeshTemp;
|
||||
|
||||
public MeshRenderer FieldEvolMeshTemp;
|
||||
|
||||
public MeshRenderer NormalCardBaseMeshTemp;
|
||||
|
||||
public MeshRenderer EvolCardBaseMeshTemp;
|
||||
|
||||
public UISprite SkillIconTemp;
|
||||
|
||||
public UILabel SkillIconLabelTemp;
|
||||
|
||||
public UILabel LifeLabelTemp;
|
||||
|
||||
public UILabel AtkLabelTemp;
|
||||
|
||||
public UILabel NormalCostLabelTemp;
|
||||
|
||||
public UILabel NormalZeroCostLabelTemp;
|
||||
|
||||
public UILabel NormalSignLabelTemp;
|
||||
|
||||
public UILabel NormalSignedCostLabelTemp;
|
||||
|
||||
public UILabel NormalLifeLabelTemp;
|
||||
|
||||
public UILabel NormalAtkLabelTemp;
|
||||
|
||||
public UILabel NormalNameLabelTemp;
|
||||
|
||||
public UILabel NormalChoiceBraveNameLabelTemp;
|
||||
|
||||
public GameObject FrameEffectNormal;
|
||||
|
||||
public GameObject FrameEffectEvolve;
|
||||
|
||||
public GameObject FrameEffectHandCard;
|
||||
|
||||
public ParticleSystemRenderer[] FrameEffectHandRenderer;
|
||||
|
||||
public GameObject _spellBoostFrameEffect;
|
||||
|
||||
public BoxCollider Collider;
|
||||
|
||||
public BoxCollider NotCancelCollider;
|
||||
|
||||
private bool isPlayer = true;
|
||||
|
||||
private bool _isChoiceBrave;
|
||||
|
||||
public void DynamicSetupMaterials(BattleCardBase card, IBattleResourceMgr resourceMgr)
|
||||
{
|
||||
isPlayer = card.IsPlayer;
|
||||
if (card.IsUnit)
|
||||
{
|
||||
DynamicSetupNormalObjMaterials(card.BaseParameter, resourceMgr);
|
||||
}
|
||||
else if (card.IsSpell)
|
||||
{
|
||||
DynamicSetupSpellObjMaterials(card.BaseParameter, resourceMgr);
|
||||
}
|
||||
else if (card.IsField)
|
||||
{
|
||||
DynamicSetupFieldObjMaterials(card.BaseParameter, resourceMgr);
|
||||
}
|
||||
}
|
||||
|
||||
public void DynamicSetupNormalObjMaterials(CardParameter cardParameter, IBattleResourceMgr resourceMgr)
|
||||
{
|
||||
Material CTexNormal = null;
|
||||
try
|
||||
{
|
||||
CardParameter cardParameterFromId = CardMaster.GetInstanceForBattle().GetCardParameterFromId(cardParameter.NormalCardId);
|
||||
string materialPath = Toolbox.ResourcesManager.GetAssetTypePath(cardParameterFromId.ResourceCardId.ToString(), ResourcesManager.AssetLoadPathType.UnitCardMaterial);
|
||||
Toolbox.ResourcesManager.StartCoroutine_LoadAssetGroupAsync(materialPath, delegate
|
||||
{
|
||||
Toolbox.ResourcesManager.BattleListAssetPathList.Add(materialPath);
|
||||
if (!(CardWrapObjTemp == null))
|
||||
{
|
||||
CTexNormal = Toolbox.ResourcesManager.FindCardMaterial(cardParameter.ResourceCardId, ResourcesManager.AssetLoadPathType.UnitCardMaterial);
|
||||
CardShaderDefine.ReplaceShader(CTexNormal);
|
||||
UnitCardCreator.SetupUnitCardMaterialToCardMesh(CardWrapObjTemp.transform, cardParameter, CTexNormal);
|
||||
}
|
||||
});
|
||||
NormalCardBaseMeshTemp.sharedMaterial = resourceMgr.GetSleeveMaterial(isPlayer);
|
||||
EvolCardBaseMeshTemp.sharedMaterial = resourceMgr.GetSleeveMaterial(isPlayer);
|
||||
AtkLabelTemp.text = cardParameter.Atk.ToString();
|
||||
NormalAtkLabelTemp.text = cardParameter.Atk.ToString();
|
||||
LifeLabelTemp.text = cardParameter.Life.ToString();
|
||||
NormalLifeLabelTemp.text = cardParameter.Life.ToString();
|
||||
NormalCostLabelTemp.text = cardParameter.Cost.ToString();
|
||||
NormalNameLabelTemp.text = cardParameter.CardName;
|
||||
UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(NormalCostLabelTemp, cardParameter.IsFoil);
|
||||
UIManager.GetInstance().getUIBase_CardManager().SetNameLabelStyle(NormalNameLabelTemp, cardParameter.IsFoil);
|
||||
UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(NormalAtkLabelTemp, cardParameter.IsFoil);
|
||||
UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(NormalLifeLabelTemp, cardParameter.IsFoil);
|
||||
Global.SetRepositionNameLabel(NormalNameLabelTemp, cardParameter.CardName, is2D: false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
CTexNormal = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void DynamicSetupSpellObjMaterials(CardParameter cardParameter, IBattleResourceMgr resourceMgr)
|
||||
{
|
||||
CardMaster cardMaster = CardMaster.GetInstanceForBattle();
|
||||
Material[] MaterialArrayNormal = new Material[3];
|
||||
Material CTexNormal = null;
|
||||
try
|
||||
{
|
||||
string materialPath = Toolbox.ResourcesManager.GetAssetTypePath(cardMaster.GetCardParameterFromId(cardParameter.NormalCardId).ResourceCardId.ToString(), ResourcesManager.AssetLoadPathType.SpellCardMaterial);
|
||||
Toolbox.ResourcesManager.StartCoroutine_LoadAssetGroupAsync(materialPath, delegate
|
||||
{
|
||||
Toolbox.ResourcesManager.BattleListAssetPathList.Add(materialPath);
|
||||
if (!(CardWrapObjTemp == null))
|
||||
{
|
||||
bool flag2 = CardMaster.IsChoiceBraveCardCheck(cardParameter.BaseCardId);
|
||||
CTexNormal = Toolbox.ResourcesManager.FindCardMaterial(cardParameter.ResourceCardId, ResourcesManager.AssetLoadPathType.SpellCardMaterial, isEvol: false, CardMaster.IsMutationCardCheck(cardParameter.BaseCardId), cardMaster.GetCardParameterFromId((cardParameter.ResourceCardId / 1000000000 == 1) ? (cardParameter.ResourceCardId / 10) : cardParameter.ResourceCardId).CharType, flag2);
|
||||
CardShaderDefine.ReplaceShader(CTexNormal);
|
||||
UIManager.GetInstance().SetLayerRecursive(CardNormalTemp, 10);
|
||||
if (flag2)
|
||||
{
|
||||
BattleManagerBase.GetIns().BattleResourceMgr.LoadChoiceBraveCardMesh();
|
||||
MeshFilter[] componentsInChildren = CardNormalTemp.GetComponentsInChildren<MeshFilter>();
|
||||
componentsInChildren[0].sharedMesh = resourceMgr.GetChoiceBraveCardMesh(isLow: false);
|
||||
componentsInChildren[1].sharedMesh = resourceMgr.GetChoiceBraveCardMesh(isLow: true);
|
||||
}
|
||||
Material rerityMaterial = resourceMgr.GetRerityMaterial(isHand: true, isSpell: true, cardParameter.Rarity, flag2);
|
||||
if (rerityMaterial != null)
|
||||
{
|
||||
rerityMaterial.shader = Shader.Find(rerityMaterial.shader.name);
|
||||
}
|
||||
MaterialArrayNormal[0] = rerityMaterial;
|
||||
MaterialArrayNormal[1] = CTexNormal;
|
||||
MaterialArrayNormal[2] = CardCreatorBase.GetSharedClassIconMaterial(cardParameter.Clan);
|
||||
LOD[] lODs = CardNormalLodGroup.GetLODs();
|
||||
for (int i = 0; i < lODs.Length; i++)
|
||||
{
|
||||
lODs[i].renderers[0].sharedMaterials = MaterialArrayNormal;
|
||||
}
|
||||
}
|
||||
});
|
||||
NormalCardBaseMeshTemp.sharedMaterial = resourceMgr.GetSleeveMaterial(isPlayer);
|
||||
if (CardMaster.IsChoiceBraveCardCheck(cardParameter.NormalCardId))
|
||||
{
|
||||
SetEffectColor(Global.CARD_HBP_LABEL_COST_COLOR);
|
||||
}
|
||||
bool flag = cardParameter.NormalCardId / 1000000 == 930;
|
||||
if (cardParameter.IsVariableCost)
|
||||
{
|
||||
NormalSignLabelTemp.text = "-";
|
||||
NormalSignedCostLabelTemp.text = "X";
|
||||
ShowSignedCostLabel();
|
||||
NormalChoiceBraveNameLabelTemp.text = cardParameter.CardName;
|
||||
ShowChoiceBraveNameLabel();
|
||||
}
|
||||
else if (flag)
|
||||
{
|
||||
if (cardParameter.Cost != 0)
|
||||
{
|
||||
NormalSignLabelTemp.text = ((cardParameter.Cost > 0) ? "-" : "+");
|
||||
NormalSignedCostLabelTemp.text = Mathf.Abs(cardParameter.Cost).ToString();
|
||||
ShowSignedCostLabel();
|
||||
}
|
||||
else
|
||||
{
|
||||
NormalZeroCostLabelTemp.text = "0";
|
||||
ShowZeroCostLabel();
|
||||
}
|
||||
NormalChoiceBraveNameLabelTemp.text = cardParameter.CardName;
|
||||
ShowChoiceBraveNameLabel();
|
||||
}
|
||||
else
|
||||
{
|
||||
NormalCostLabelTemp.text = cardParameter.Cost.ToString();
|
||||
NormalNameLabelTemp.text = cardParameter.CardName;
|
||||
}
|
||||
SetNumberLabelStyle(cardParameter.IsFoil);
|
||||
SetNameLabelStyle(cardParameter.IsFoil, flag);
|
||||
SetRepositionNameLabel(cardParameter.CardName, flag);
|
||||
}
|
||||
catch
|
||||
{
|
||||
CTexNormal = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void DynamicSetupFieldObjMaterials(CardParameter cardParameter, IBattleResourceMgr resourceMgr)
|
||||
{
|
||||
CardMaster cardMaster = CardMaster.GetInstanceForBattle();
|
||||
Material CTexNormal = null;
|
||||
try
|
||||
{
|
||||
string materialPath = Toolbox.ResourcesManager.GetAssetTypePath(CardMaster.GetInstanceForBattle().GetCardParameterFromId(cardParameter.NormalCardId).ResourceCardId.ToString(), ResourcesManager.AssetLoadPathType.SpellCardMaterial);
|
||||
Toolbox.ResourcesManager.StartCoroutine_LoadAssetGroupAsync(materialPath, delegate
|
||||
{
|
||||
Toolbox.ResourcesManager.BattleListAssetPathList.Add(materialPath);
|
||||
if (!(CardWrapObjTemp == null))
|
||||
{
|
||||
CTexNormal = Toolbox.ResourcesManager.FindCardMaterial(cardParameter.ResourceCardId, ResourcesManager.AssetLoadPathType.SpellCardMaterial, isEvol: false, CardMaster.IsMutationCardCheck(cardParameter.BaseCardId), cardMaster.GetCardParameterFromId(cardParameter.ResourceCardId).CharType);
|
||||
CardShaderDefine.ReplaceShader(CTexNormal);
|
||||
FieldCardCreator.SetupFieldCardMaterialToCardMesh(CardWrapObjTemp.transform, cardParameter, CTexNormal);
|
||||
}
|
||||
});
|
||||
NormalCardBaseMeshTemp.sharedMaterial = resourceMgr.GetSleeveMaterial(isPlayer);
|
||||
NormalCostLabelTemp.text = cardParameter.Cost.ToString();
|
||||
NormalNameLabelTemp.text = cardParameter.CardName;
|
||||
UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(NormalCostLabelTemp, cardParameter.IsFoil);
|
||||
UIManager.GetInstance().getUIBase_CardManager().SetNameLabelStyle(NormalNameLabelTemp, cardParameter.IsFoil);
|
||||
Global.SetRepositionNameLabel(NormalNameLabelTemp, cardParameter.CardName, is2D: false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
CTexNormal = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowNameLabel()
|
||||
{
|
||||
if (_isChoiceBrave)
|
||||
{
|
||||
NormalChoiceBraveNameLabelTemp.alpha = 1f;
|
||||
}
|
||||
else
|
||||
{
|
||||
NormalNameLabelTemp.alpha = 1f;
|
||||
}
|
||||
}
|
||||
|
||||
public void HideNameLabel()
|
||||
{
|
||||
if (_isChoiceBrave)
|
||||
{
|
||||
NormalChoiceBraveNameLabelTemp.alpha = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
NormalNameLabelTemp.alpha = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetEffectStyle(UILabel.Effect effectStyle)
|
||||
{
|
||||
NormalCostLabelTemp.effectStyle = effectStyle;
|
||||
NormalZeroCostLabelTemp.effectStyle = effectStyle;
|
||||
NormalSignLabelTemp.effectStyle = effectStyle;
|
||||
NormalSignedCostLabelTemp.effectStyle = effectStyle;
|
||||
}
|
||||
|
||||
public void SetEffectColor(Color color)
|
||||
{
|
||||
NormalCostLabelTemp.effectColor = color;
|
||||
NormalZeroCostLabelTemp.effectColor = color;
|
||||
NormalSignLabelTemp.effectColor = color;
|
||||
NormalSignedCostLabelTemp.effectColor = color;
|
||||
}
|
||||
|
||||
public void ShowZeroCostLabel()
|
||||
{
|
||||
NormalZeroCostLabelTemp.gameObject.SetActive(value: true);
|
||||
NormalCostLabelTemp.gameObject.SetActive(value: false);
|
||||
NormalSignLabelTemp.gameObject.SetActive(value: false);
|
||||
NormalSignedCostLabelTemp.gameObject.SetActive(value: false);
|
||||
}
|
||||
|
||||
public void ShowSignedCostLabel()
|
||||
{
|
||||
NormalSignLabelTemp.gameObject.SetActive(value: true);
|
||||
NormalSignedCostLabelTemp.gameObject.SetActive(value: true);
|
||||
NormalCostLabelTemp.gameObject.SetActive(value: false);
|
||||
NormalZeroCostLabelTemp.gameObject.SetActive(value: false);
|
||||
}
|
||||
|
||||
public void SetNumberLabelStyle(bool isFoil)
|
||||
{
|
||||
UIBase_CardManager uIBase_CardManager = UIManager.GetInstance().getUIBase_CardManager();
|
||||
uIBase_CardManager.SetNumberLabelStyle(NormalCostLabelTemp, isFoil);
|
||||
uIBase_CardManager.SetNumberLabelStyle(NormalZeroCostLabelTemp, isFoil);
|
||||
uIBase_CardManager.SetNumberLabelStyle(NormalSignLabelTemp, isFoil);
|
||||
uIBase_CardManager.SetNumberLabelStyle(NormalSignedCostLabelTemp, isFoil);
|
||||
}
|
||||
|
||||
public void ShowChoiceBraveNameLabel()
|
||||
{
|
||||
NormalNameLabelTemp.gameObject.SetActive(value: false);
|
||||
NormalChoiceBraveNameLabelTemp.gameObject.SetActive(value: true);
|
||||
_isChoiceBrave = true;
|
||||
}
|
||||
|
||||
public void SetNameLabelStyle(bool isFoil, bool isChoiceBrave)
|
||||
{
|
||||
UIManager.GetInstance().getUIBase_CardManager().SetNameLabelStyle(isChoiceBrave ? NormalChoiceBraveNameLabelTemp : NormalNameLabelTemp, isFoil);
|
||||
}
|
||||
|
||||
public void SetRepositionNameLabel(string cardName, bool isChoiceBrave)
|
||||
{
|
||||
Global.SetRepositionNameLabel(isChoiceBrave ? NormalChoiceBraveNameLabelTemp : NormalNameLabelTemp, cardName, is2D: false);
|
||||
}
|
||||
|
||||
public void SetNormalLabelEnable(bool isEnable)
|
||||
{
|
||||
NormalNameLabelTemp.enabled = isEnable;
|
||||
NormalChoiceBraveNameLabelTemp.enabled = isEnable;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
public class CausedDamageCardParameterModifier : TurnAndIntValue
|
||||
{
|
||||
public int Damage => base.Value;
|
||||
|
||||
public CausedDamageCardParameterModifier(int damage, int turn, bool isSelfTurn)
|
||||
: base(damage, turn, isSelfTurn)
|
||||
{
|
||||
}
|
||||
}
|
||||
332
SVSim.BattleEngine/Engine/ClassCharaPrm.cs
Normal file
332
SVSim.BattleEngine/Engine/ClassCharaPrm.cs
Normal file
@@ -0,0 +1,332 @@
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using LitJson;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
|
||||
public class ClassCharaPrm
|
||||
{
|
||||
public enum MotionType
|
||||
{
|
||||
idle = 1,
|
||||
positive,
|
||||
negative,
|
||||
extra,
|
||||
damage,
|
||||
think,
|
||||
greet,
|
||||
shock,
|
||||
positive_2,
|
||||
negative_2,
|
||||
extra_2,
|
||||
extra_3,
|
||||
negative_2_a,
|
||||
damege_a,
|
||||
extra_1_a,
|
||||
extra_1_b,
|
||||
extra_1_c,
|
||||
extra_2_a,
|
||||
extra_2_b,
|
||||
extra_2_c,
|
||||
z_extra_2,
|
||||
z_damage,
|
||||
z_greet,
|
||||
z_idle,
|
||||
z_negative,
|
||||
z_negative_2,
|
||||
z_negative_2_a,
|
||||
z_positive,
|
||||
z_positive_2,
|
||||
z_shock,
|
||||
z_think
|
||||
}
|
||||
|
||||
public enum FaceType
|
||||
{
|
||||
skin_01 = 1,
|
||||
skin_02,
|
||||
skin_03,
|
||||
skin_04,
|
||||
skin_05,
|
||||
skin_06,
|
||||
skin_07,
|
||||
skin_08,
|
||||
skin_09,
|
||||
skin_10
|
||||
}
|
||||
|
||||
public enum EmotionType
|
||||
{
|
||||
NULL,
|
||||
GREET,
|
||||
THANK,
|
||||
APOLOGY,
|
||||
PRAISE,
|
||||
SURPRISE,
|
||||
CONFUSE,
|
||||
WORRY,
|
||||
PROVOCATION,
|
||||
EXTRA1,
|
||||
EXTRA2,
|
||||
EXTRA3,
|
||||
BATTLESTART_DIFF,
|
||||
BATTLESTART_SAME,
|
||||
WIN,
|
||||
LOSE,
|
||||
SURRENDER_LOSE,
|
||||
EVOLUTION_1,
|
||||
EVOLUTION_2,
|
||||
EVOLUTION_3,
|
||||
DAMAGE_S_1,
|
||||
DAMAGE_S_2,
|
||||
DAMAGE_S_3,
|
||||
DAMAGE_L_1,
|
||||
DAMAGE_L_2,
|
||||
IDLE_1,
|
||||
IDLE_2,
|
||||
IDLE_3,
|
||||
SELECT,
|
||||
STORY_LOSE,
|
||||
LEADER_SELECT,
|
||||
NEGOTIATION_1,
|
||||
NEGOTIATION_2,
|
||||
NEGOTIATION_3,
|
||||
PLAYER_TURN_START_1
|
||||
}
|
||||
|
||||
private static readonly Dictionary<CardBasePrm.ClanType, eColorCodeId> OUTLINE_COLOR = new Dictionary<CardBasePrm.ClanType, eColorCodeId>
|
||||
{
|
||||
{
|
||||
CardBasePrm.ClanType.MIN,
|
||||
eColorCodeId.CLASS_ELF_OUTLINE
|
||||
},
|
||||
{
|
||||
CardBasePrm.ClanType.ROYAL,
|
||||
eColorCodeId.CLASS_ROYAL_OUTLINE
|
||||
},
|
||||
{
|
||||
CardBasePrm.ClanType.WITCH,
|
||||
eColorCodeId.CLASS_WITCH_OUTLINE
|
||||
},
|
||||
{
|
||||
CardBasePrm.ClanType.DRAGON,
|
||||
eColorCodeId.CLASS_DRAGON_OUTLINE
|
||||
},
|
||||
{
|
||||
CardBasePrm.ClanType.NECRO,
|
||||
eColorCodeId.CLASS_NECROMANCER_OUTLINE
|
||||
},
|
||||
{
|
||||
CardBasePrm.ClanType.VAMPIRE,
|
||||
eColorCodeId.CLASS_VANPIRE_OUTLINE
|
||||
},
|
||||
{
|
||||
CardBasePrm.ClanType.BISHOP,
|
||||
eColorCodeId.CLASS_BISHOP_OUTLINE
|
||||
},
|
||||
{
|
||||
CardBasePrm.ClanType.NEMESIS,
|
||||
eColorCodeId.CLASS_NEMESIS_OUTLINE
|
||||
},
|
||||
{
|
||||
CardBasePrm.ClanType.SHADOW,
|
||||
eColorCodeId.CLASS_SHADOW_OUTLINE
|
||||
}
|
||||
};
|
||||
|
||||
private int _defaultCharaId;
|
||||
|
||||
private int _currentCharaId;
|
||||
|
||||
private int ClassCharaLv;
|
||||
|
||||
private int ClassCharaExp;
|
||||
|
||||
private int ClassCharaBattleCount;
|
||||
|
||||
private int ClassCharaWin;
|
||||
|
||||
public ClassCharacterMasterData DefaultCharaData => GameMgr.GetIns().GetDataMgr().GetCharaPrmByCharaId(_defaultCharaId);
|
||||
|
||||
public ClassCharacterMasterData CurrentCharaData
|
||||
{
|
||||
get
|
||||
{
|
||||
ClassCharacterMasterData classCharacterMasterData = GameMgr.GetIns().GetDataMgr().GetCharaPrmByCharaId(_currentCharaId);
|
||||
if (classCharacterMasterData == null)
|
||||
{
|
||||
classCharacterMasterData = DefaultCharaData;
|
||||
}
|
||||
return classCharacterMasterData;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsRandomLeaderSkin { get; set; }
|
||||
|
||||
public List<int> LeaderSkinIdList { get; private set; } = new List<int>();
|
||||
|
||||
public string EmoteNameGreet { get; set; }
|
||||
|
||||
public string TextIdGreet { get; set; }
|
||||
|
||||
public string VoiceIdGreet { get; set; }
|
||||
|
||||
public string EmoteNameThank { get; set; }
|
||||
|
||||
public string TextIdThank { get; set; }
|
||||
|
||||
public string VoiceIdThank { get; set; }
|
||||
|
||||
public string EmoteNameApology { get; set; }
|
||||
|
||||
public string TextIdApology { get; set; }
|
||||
|
||||
public string VoiceIdApology { get; set; }
|
||||
|
||||
public string EmoteNamePraise { get; set; }
|
||||
|
||||
public string TextIdPraise { get; set; }
|
||||
|
||||
public string VoiceIdPraise { get; set; }
|
||||
|
||||
public string EmoteNameSurprise { get; set; }
|
||||
|
||||
public string TextIdSurprise { get; set; }
|
||||
|
||||
public string VoiceIdSurprise { get; set; }
|
||||
|
||||
public string EmoteNameConfuse { get; set; }
|
||||
|
||||
public string TextIdConfuse { get; set; }
|
||||
|
||||
public string VoiceIdConfuse { get; set; }
|
||||
|
||||
public string EmoteNameWorry { get; set; }
|
||||
|
||||
public string TextIdWorry { get; set; }
|
||||
|
||||
public string VoiceIdWorry { get; set; }
|
||||
|
||||
public string EmoteNameProvocation { get; set; }
|
||||
|
||||
public string TextIdProvocation { get; set; }
|
||||
|
||||
public string VoiceIdProvocation { get; set; }
|
||||
|
||||
public void SetDefaultCharaId(int charaId)
|
||||
{
|
||||
_defaultCharaId = charaId;
|
||||
}
|
||||
|
||||
public void SetCurrentCharaId(int charaId)
|
||||
{
|
||||
_currentCharaId = charaId;
|
||||
}
|
||||
|
||||
public void SetClassCharaLv(int classlv)
|
||||
{
|
||||
ClassCharaLv = classlv;
|
||||
}
|
||||
|
||||
public void SetClassCharaExp(int classexp)
|
||||
{
|
||||
ClassCharaExp = classexp;
|
||||
}
|
||||
|
||||
public void SetClassCharaBattleCount(int classbattlecnt)
|
||||
{
|
||||
ClassCharaBattleCount = classbattlecnt;
|
||||
}
|
||||
|
||||
public void AddClassCharaBattleCount()
|
||||
{
|
||||
ClassCharaBattleCount++;
|
||||
}
|
||||
|
||||
public void SetClassCharaWin(int classwin)
|
||||
{
|
||||
ClassCharaWin = classwin;
|
||||
}
|
||||
|
||||
public void AddClassCharaWin()
|
||||
{
|
||||
ClassCharaWin++;
|
||||
}
|
||||
|
||||
public void SetLeaderRandomSkinIdList(JsonData skinIdList)
|
||||
{
|
||||
LeaderSkinIdList.Clear();
|
||||
for (int i = 0; i < skinIdList.Count; i++)
|
||||
{
|
||||
LeaderSkinIdList.Add(skinIdList[i].ToInt());
|
||||
}
|
||||
}
|
||||
|
||||
public int GetClassCharaLv()
|
||||
{
|
||||
return ClassCharaLv;
|
||||
}
|
||||
|
||||
public int GetClassCharaExp()
|
||||
{
|
||||
return ClassCharaExp;
|
||||
}
|
||||
|
||||
public int GetClassCharaBattleCount()
|
||||
{
|
||||
return ClassCharaBattleCount;
|
||||
}
|
||||
|
||||
public int GetClassCharaWin()
|
||||
{
|
||||
return ClassCharaWin;
|
||||
}
|
||||
|
||||
public static Texture GetClassIconTexture(int clan_id)
|
||||
{
|
||||
return Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("class_card_" + clan_id.ToString("00"), ResourcesManager.AssetLoadPathType.CardFrameClassIcon, isfetch: true)) as Texture;
|
||||
}
|
||||
|
||||
public static bool IsEvolutionEmotionType(EmotionType type)
|
||||
{
|
||||
if ((uint)(type - 17) <= 2u)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static string GetIconSpriteName(CardBasePrm.ClanType inClassId)
|
||||
{
|
||||
int num = (int)inClassId;
|
||||
return "icon_class_color_" + num.ToString("00");
|
||||
}
|
||||
|
||||
public static string GetLargeIconSpriteName(CardBasePrm.ClanType inClassId)
|
||||
{
|
||||
int num = (int)inClassId;
|
||||
return "icon_class_color_large_" + num.ToString("00");
|
||||
}
|
||||
|
||||
public static string GetNameText(CardBasePrm.ClanType inClassId)
|
||||
{
|
||||
return Data.SystemText.Get("Common_" + ((int)(104 + inClassId)).ToString("0000"));
|
||||
}
|
||||
|
||||
public static void SetClassLabelSetting(UILabel inLabel, CardBasePrm.ClanType inClassId)
|
||||
{
|
||||
inLabel.effectStyle = LabelDefine.OUTLINE_STYLE_CLASS_NAME;
|
||||
inLabel.effectDistance = LabelDefine.OUTLINE_DISTANCE_CLASS_NAME;
|
||||
inLabel.effectColor = ColorCode.Get(OUTLINE_COLOR[inClassId]);
|
||||
}
|
||||
|
||||
public void SetParamWithUserClassJson(JsonData classJson)
|
||||
{
|
||||
IsRandomLeaderSkin = classJson["is_random_leader_skin"].ToBoolean();
|
||||
SetClassCharaLv(classJson["level"].ToInt());
|
||||
SetClassCharaExp(classJson["exp"].ToInt());
|
||||
SetCurrentCharaId(classJson["leader_skin_id"].ToInt());
|
||||
SetDefaultCharaId(classJson["default_leader_skin_id"].ToInt());
|
||||
SetLeaderRandomSkinIdList(classJson["leader_skin_id_list"]);
|
||||
}
|
||||
}
|
||||
226
SVSim.BattleEngine/Engine/ClassInformationUIController.cs
Normal file
226
SVSim.BattleEngine/Engine/ClassInformationUIController.cs
Normal file
@@ -0,0 +1,226 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Wizard.Battle.UI;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class ClassInformationUIController
|
||||
{
|
||||
private List<IClassInfomationUI> _classInformationUIList;
|
||||
|
||||
public ClassInformationUIController(List<IClassInfomationUI> classInformationUIList)
|
||||
{
|
||||
_classInformationUIList = classInformationUIList;
|
||||
}
|
||||
|
||||
public void SetUpEvent(BattlePlayerBase player)
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].SetUpEvent(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public VfxBase LoadResources(Transform parent, bool isPlayer)
|
||||
{
|
||||
ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create();
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
parallelVfxPlayer.Register(_classInformationUIList[i].LoadResources(parent, isPlayer));
|
||||
}
|
||||
return parallelVfxPlayer;
|
||||
}
|
||||
|
||||
public void ShowInfomation(bool playEffect = true)
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].ShowInfomation(playEffect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void NewReplayUpdateInfomation(NetworkBattleReceiver.ClassInfoUiInfo classInfo)
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].NewReplayUpdateInfomation(classInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool HaveSpecificClassInformationUi(CardBasePrm.ClanType clanType)
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
switch (clanType)
|
||||
{
|
||||
case CardBasePrm.ClanType.MIN:
|
||||
if (_classInformationUIList[i] is ElfInfomationUI)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CardBasePrm.ClanType.ROYAL:
|
||||
if (_classInformationUIList[i] is RoyalInfomationUI)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CardBasePrm.ClanType.WITCH:
|
||||
if (_classInformationUIList[i] is WitchInfomationUI)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CardBasePrm.ClanType.DRAGON:
|
||||
if (_classInformationUIList[i] is DragonInfomationUI)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CardBasePrm.ClanType.NECRO:
|
||||
if (_classInformationUIList[i] is NecromanceInfomationUI)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CardBasePrm.ClanType.VAMPIRE:
|
||||
if (_classInformationUIList[i] is VampireInfomationUI)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CardBasePrm.ClanType.BISHOP:
|
||||
if (_classInformationUIList[i] is BishopInfomationUI)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CardBasePrm.ClanType.NEMESIS:
|
||||
if (_classInformationUIList[i] is NemesisInfomationUI)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void HideInfomation()
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].HideInfomation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void HideOtherInfomation()
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].HideOtherInfomation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void HideAllInfomation()
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].HideAllInfomation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Recovery()
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].Recovery();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SetIsSelect(bool isSelect)
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].SetIsSelect(isSelect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SetInCardFocus(bool inCardFocus)
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].SetInCardFocus(inCardFocus);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SetTouchable(bool isTouchable)
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
_classInformationUIList[i].SetTouchable(isTouchable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SetClassInformationUiPosition(bool isPlayer)
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
(_classInformationUIList[i] as ClassInfomationUIBase).SetClassInformationUiPosition(isPlayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateStatusPanelOnBattle(bool isPlayer)
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
(_classInformationUIList[i] as ClassInfomationUIBase).UpdateStatusPanelOnBattle(isPlayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateInfomation()
|
||||
{
|
||||
for (int i = 0; i < _classInformationUIList.Count; i++)
|
||||
{
|
||||
if (_classInformationUIList[i] != null)
|
||||
{
|
||||
(_classInformationUIList[i] as ClassInfomationUIBase).UpdateInfomation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
63
SVSim.BattleEngine/Engine/ConditionSkillFilterCollection.cs
Normal file
63
SVSim.BattleEngine/Engine/ConditionSkillFilterCollection.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Wizard;
|
||||
|
||||
public class ConditionSkillFilterCollection : SkillFilterCollectionBase
|
||||
{
|
||||
private const int CAP_CONDITION = 8;
|
||||
|
||||
public List<ISkillConditionChecker> ConditionCheckerFilterList { get; set; }
|
||||
|
||||
public List<SkillVariableComareFilter> VariableCompareFilter { get; set; }
|
||||
|
||||
public List<SkillAnyConditionFilter> AnyConditionFilter { get; set; }
|
||||
|
||||
public ConditionSkillFilterCollection()
|
||||
{
|
||||
ConditionCheckerFilterList = new List<ISkillConditionChecker>(8);
|
||||
VariableCompareFilter = new List<SkillVariableComareFilter>();
|
||||
AnyConditionFilter = new List<SkillAnyConditionFilter>();
|
||||
}
|
||||
|
||||
public bool Filtering(BattlePlayerReadOnlyInfoPair playerInfoPair, BattleCardBase ownerCard, SkillConditionCheckerOption checkerOption, SkillOptionValue optionValue, bool isPrePlay, SkillBase skill, bool isSkipTargetAiSelect = false)
|
||||
{
|
||||
SkillCollectionBase.SetupOptionValue(optionValue, playerInfoPair, ownerCard, skill, checkerOption, isPrePlay);
|
||||
bool flag = true;
|
||||
bool flag2 = true;
|
||||
bool flag3 = true;
|
||||
bool flag4 = true;
|
||||
if (VariableCompareFilter.Count() != 0)
|
||||
{
|
||||
bool flag5 = VariableCompareFilter.All((SkillVariableComareFilter s) => s.Filtering(optionValue));
|
||||
if (isSkipTargetAiSelect && VariableCompareFilter.FirstOrDefault().Lhs.Contains("hand_other_self") && ownerCard.SelfBattlePlayer.HandCardList.Count > 0)
|
||||
{
|
||||
flag5 = true;
|
||||
}
|
||||
bool flag6 = ConditionCheckerFilterList.Where((ISkillConditionChecker f) => f is SkillPreprocessBase).All((ISkillConditionChecker f) => f.IsRight(playerInfoPair, checkerOption));
|
||||
flag = flag5 && flag6;
|
||||
}
|
||||
Func<ISkillConditionChecker, Func<BattlePlayerReadOnlyInfoPair, SkillConditionCheckerOption, bool, bool>> checkRightFunc;
|
||||
if (isPrePlay)
|
||||
{
|
||||
checkRightFunc = (ISkillConditionChecker f) => f.IsRightPrePlay;
|
||||
}
|
||||
else
|
||||
{
|
||||
checkRightFunc = (ISkillConditionChecker f) => f.IsRight;
|
||||
}
|
||||
if (ConditionCheckerFilterList.Count() != 0)
|
||||
{
|
||||
flag2 = ConditionCheckerFilterList.All((ISkillConditionChecker c) => checkRightFunc(c)(playerInfoPair, checkerOption, arg3: false));
|
||||
}
|
||||
if (AnyConditionFilter.Count > 0)
|
||||
{
|
||||
flag3 = AnyConditionFilter.All((SkillAnyConditionFilter c) => c.Filtering(playerInfoPair, ownerCard, checkerOption, optionValue, isPrePlay, skill, isSkipTargetAiSelect));
|
||||
}
|
||||
if (base.BattlePlayerFilter != null)
|
||||
{
|
||||
flag4 = FilteringBase(playerInfoPair, checkerOption, optionValue, isSkipTargetAiSelect).Any();
|
||||
}
|
||||
return flag && flag2 && flag4 && flag3;
|
||||
}
|
||||
}
|
||||
41
SVSim.BattleEngine/Engine/ConventionInfo.cs
Normal file
41
SVSim.BattleEngine/Engine/ConventionInfo.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using LitJson;
|
||||
using Wizard;
|
||||
|
||||
public class ConventionInfo
|
||||
{
|
||||
public enum ConventionStatus
|
||||
{
|
||||
DeckEntry = 1,
|
||||
GameStart
|
||||
}
|
||||
|
||||
public ConventionStatus Status { get; private set; }
|
||||
|
||||
public string Id { get; private set; }
|
||||
|
||||
public string Name { get; private set; }
|
||||
|
||||
public string DeckEntryLimitText { get; private set; }
|
||||
|
||||
public string StartTime { get; private set; }
|
||||
|
||||
public BattleParameter BattleParameterInstance { get; set; }
|
||||
|
||||
public bool IsSelectableTurn { get; private set; }
|
||||
|
||||
public ConventionInfo(JsonData data)
|
||||
{
|
||||
Id = data["tournament_id"].ToString();
|
||||
Name = data["name"].ToString();
|
||||
BattleParameterInstance = BattleParameter.JsonToBattleParameter(data);
|
||||
Status = (ConventionStatus)data["status"].ToInt();
|
||||
DeckEntryLimitText = ConvertTime.ToLocal(DateTime.Parse(data["tournament_start_date"].ToString())).ToString();
|
||||
IsSelectableTurn = data["is_selectable_turn"].ToInt() == 1;
|
||||
}
|
||||
|
||||
public ConventionInfo(string id)
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
}
|
||||
93
SVSim.BattleEngine/Engine/Cute/AssetErrorState.cs
Normal file
93
SVSim.BattleEngine/Engine/Cute/AssetErrorState.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Cute;
|
||||
|
||||
public class AssetErrorState
|
||||
{
|
||||
public enum Code
|
||||
{
|
||||
NONE = 0,
|
||||
SERVER_TIMEOUT = 1,
|
||||
SERVER_UNDEFINED_ERROR = 2,
|
||||
LOCAL_CAPACITY_OVER = 4,
|
||||
CANCELED = 8,
|
||||
FILE_READ_ERROR = 0x10,
|
||||
SERVER_NOT_FOUND_ERROR = 0x20
|
||||
}
|
||||
|
||||
public enum DialogDecision
|
||||
{
|
||||
UNDECIDED,
|
||||
RETRY,
|
||||
TERMINATE
|
||||
}
|
||||
|
||||
private Dictionary<string, Code> errors = new Dictionary<string, Code>();
|
||||
|
||||
public DialogDecision lastDialogDecision;
|
||||
|
||||
public int errorFlag { get; private set; }
|
||||
|
||||
public bool canceled { get; private set; }
|
||||
|
||||
public bool HasError()
|
||||
{
|
||||
return errorFlag != 0;
|
||||
}
|
||||
|
||||
public bool HasError(Code code)
|
||||
{
|
||||
return ((uint)errorFlag & (uint)code) != 0;
|
||||
}
|
||||
|
||||
public void SetCanceled()
|
||||
{
|
||||
canceled = true;
|
||||
}
|
||||
|
||||
public int ErrorCount()
|
||||
{
|
||||
return errors.Count;
|
||||
}
|
||||
|
||||
public AssetErrorState()
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
|
||||
public void Report(string filename, Code errorCode)
|
||||
{
|
||||
if (errorCode != Code.NONE)
|
||||
{
|
||||
errorFlag |= (int)errorCode;
|
||||
errors[filename] = errorCode;
|
||||
}
|
||||
}
|
||||
|
||||
public Code Query(string filename)
|
||||
{
|
||||
if (!errors.TryGetValue(filename, out var value))
|
||||
{
|
||||
return Code.NONE;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
errorFlag = 0;
|
||||
lastDialogDecision = DialogDecision.UNDECIDED;
|
||||
errors.Clear();
|
||||
canceled = false;
|
||||
}
|
||||
|
||||
public List<string> GatherErrorFilenames()
|
||||
{
|
||||
List<string> list = new List<string>();
|
||||
foreach (KeyValuePair<string, Code> error in errors)
|
||||
{
|
||||
list.Add(error.Key);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
1231
SVSim.BattleEngine/Engine/Cute/AssetHandle.cs
Normal file
1231
SVSim.BattleEngine/Engine/Cute/AssetHandle.cs
Normal file
File diff suppressed because it is too large
Load Diff
22
SVSim.BattleEngine/Engine/Cute/AssetRequestContext.cs
Normal file
22
SVSim.BattleEngine/Engine/Cute/AssetRequestContext.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
|
||||
namespace Cute;
|
||||
|
||||
public class AssetRequestContext
|
||||
{
|
||||
public Action<AssetHandle> callback { get; set; }
|
||||
|
||||
public AssetErrorState errorState { get; set; }
|
||||
|
||||
public Utility.LeanSemaphore semaphore { get; set; }
|
||||
|
||||
public bool preferSynchronousLoad { get; set; }
|
||||
|
||||
public AssetRequestContext(Action<AssetHandle> callback = null, Utility.LeanSemaphore semaphore = null, AssetErrorState errorState = null, bool preferSynchronousLoad = false)
|
||||
{
|
||||
this.callback = callback;
|
||||
this.semaphore = semaphore;
|
||||
this.errorState = errorState;
|
||||
this.preferSynchronousLoad = preferSynchronousLoad;
|
||||
}
|
||||
}
|
||||
375
SVSim.BattleEngine/Engine/Cute/Certification.cs
Normal file
375
SVSim.BattleEngine/Engine/Cute/Certification.cs
Normal file
@@ -0,0 +1,375 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Text;
|
||||
using Steamworks;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Title;
|
||||
|
||||
namespace Cute;
|
||||
|
||||
public class Certification : MonoBehaviour
|
||||
{
|
||||
public static bool CheckUrlScheme;
|
||||
|
||||
private const int ERROR_CODE_ACCOUNT_REMOVED = 5607;
|
||||
|
||||
private static string udid;
|
||||
|
||||
private static int viewer_id;
|
||||
|
||||
private static int short_udid;
|
||||
|
||||
private static string sessionId;
|
||||
|
||||
private const float DELAY_TIME = 0.02f;
|
||||
|
||||
protected Callback<GetAuthSessionTicketResponse_t> m_GetAuthSessionTicketResponse;
|
||||
|
||||
public static string Udid
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(udid))
|
||||
{
|
||||
udid = Cryptographer.decode(Toolbox.SavedataManager.GetString("UDID"));
|
||||
}
|
||||
return udid;
|
||||
}
|
||||
}
|
||||
|
||||
public static int ViewerId
|
||||
{
|
||||
get
|
||||
{
|
||||
if (viewer_id == 0)
|
||||
{
|
||||
viewer_id = Toolbox.SavedataManager.GetInt("VIEWER_ID");
|
||||
}
|
||||
return viewer_id;
|
||||
}
|
||||
set
|
||||
{
|
||||
Toolbox.SavedataManager.SetInt("VIEWER_ID", value);
|
||||
Toolbox.SavedataManager.Save();
|
||||
viewer_id = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static int ShortUdid
|
||||
{
|
||||
get
|
||||
{
|
||||
if (short_udid == 0)
|
||||
{
|
||||
short_udid = Toolbox.SavedataManager.GetInt("SHORT_UDID");
|
||||
}
|
||||
return short_udid;
|
||||
}
|
||||
set
|
||||
{
|
||||
Toolbox.SavedataManager.SetInt("SHORT_UDID", value);
|
||||
short_udid = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static string SessionId
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(sessionId))
|
||||
{
|
||||
sessionId = ViewerId + Udid;
|
||||
}
|
||||
return Cryptographer.MakeMd5(sessionId);
|
||||
}
|
||||
set
|
||||
{
|
||||
sessionId = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static string dmmViewerId { get; private set; }
|
||||
|
||||
public static string dmmOnetimeToken { get; private set; }
|
||||
|
||||
public static ulong SteamID { get; private set; }
|
||||
|
||||
public static string SteamSessionTicket { get; private set; }
|
||||
|
||||
public static bool IsExistsViewerId()
|
||||
{
|
||||
if (ViewerId != 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static string GetEncodedViewerId()
|
||||
{
|
||||
string s = CryptAES.encrypt(ViewerId.ToString());
|
||||
return Convert.ToBase64String(Encoding.UTF8.GetBytes(s));
|
||||
}
|
||||
|
||||
public static string GetEncodedSessionId()
|
||||
{
|
||||
return Convert.ToBase64String(Encoding.UTF8.GetBytes(SessionId));
|
||||
}
|
||||
|
||||
public static string GetEncodedShortUdid()
|
||||
{
|
||||
return Convert.ToBase64String(Encoding.UTF8.GetBytes(ShortUdid.ToString()));
|
||||
}
|
||||
|
||||
public static string GetKeyChainViewerId()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string GetIDFA()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
public static void SetKeyChainViewerId(string viewerId)
|
||||
{
|
||||
}
|
||||
|
||||
public static void DeleteKeyChainViewerId()
|
||||
{
|
||||
}
|
||||
|
||||
public static void InitializeFileds()
|
||||
{
|
||||
sessionId = null;
|
||||
udid = null;
|
||||
viewer_id = 0;
|
||||
short_udid = 0;
|
||||
Toolbox.SavedataManager.SetInt("VIEWER_ID", 0);
|
||||
Toolbox.SavedataManager.SetInt("SHORT_UDID", 0);
|
||||
Toolbox.SavedataManager.SetString("UDID", "");
|
||||
}
|
||||
|
||||
public IEnumerator Login()
|
||||
{
|
||||
if (ViewerId == 0)
|
||||
{
|
||||
GenerateUdid();
|
||||
SignUpTask signUpTask = new SignUpTask();
|
||||
signUpTask.SetParameter();
|
||||
yield return StartCoroutine(Toolbox.NetworkManager.Connect(signUpTask, delegate
|
||||
{
|
||||
StartCoroutine(GameStartCheckTaskExec());
|
||||
}, delegate
|
||||
{
|
||||
if (Toolbox.BootNetwork != null)
|
||||
{
|
||||
Toolbox.BootNetwork.IsDoneGameStartCheck = false;
|
||||
}
|
||||
OutOfService.ShowServiceEndedDialogIfNeeded();
|
||||
}, delegate
|
||||
{
|
||||
if (Toolbox.BootNetwork != null)
|
||||
{
|
||||
Toolbox.BootNetwork.IsDoneGameStartCheck = false;
|
||||
}
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
yield return StartCoroutine(GameStartCheckTaskExec());
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsiCloudAvailable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void SetiCloudUser()
|
||||
{
|
||||
}
|
||||
|
||||
public static void EraseiCloudUser()
|
||||
{
|
||||
}
|
||||
|
||||
public static string GetiCloudUser()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
public void CheckiCloudUserData(Action<NetworkTask.ResultCode> callback)
|
||||
{
|
||||
GetiCloudUserDataTask.VerifiediCloudUserData.Reset();
|
||||
string text = GetiCloudUser();
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
callback(NetworkTask.ResultCode.Success);
|
||||
return;
|
||||
}
|
||||
GenerateUdid();
|
||||
GetiCloudUserDataTask getiCloudUserDataTask = new GetiCloudUserDataTask();
|
||||
getiCloudUserDataTask.SetParameter(text);
|
||||
StartCoroutine(Toolbox.NetworkManager.Connect(getiCloudUserDataTask, callback));
|
||||
}
|
||||
|
||||
public void MigrateiCloudUserData(Action<NetworkTask.ResultCode> callback)
|
||||
{
|
||||
string parameter = GetiCloudUser();
|
||||
UpdateiCloudUserDataTask updateiCloudUserDataTask = new UpdateiCloudUserDataTask();
|
||||
updateiCloudUserDataTask.SetParameter(parameter);
|
||||
StartCoroutine(Toolbox.NetworkManager.Connect(updateiCloudUserDataTask, callback));
|
||||
}
|
||||
|
||||
public void FirstTimeSaveiCloudUserData()
|
||||
{
|
||||
if (IsiCloudAvailable() && string.IsNullOrEmpty(GetiCloudUser()))
|
||||
{
|
||||
SetiCloudUser();
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator GameStartCheckTaskExec()
|
||||
{
|
||||
GameStartCheckTask gameStartCheckTask = new GameStartCheckTask();
|
||||
gameStartCheckTask.AddSkipCuteCheckResultCode(5607);
|
||||
gameStartCheckTask.SetParameter();
|
||||
bool isRemoveAccount = false;
|
||||
yield return StartCoroutine(Toolbox.NetworkManager.Connect(gameStartCheckTask, delegate
|
||||
{
|
||||
if (Toolbox.BootNetwork != null)
|
||||
{
|
||||
Toolbox.BootNetwork.IsDoneGameStartCheck = true;
|
||||
}
|
||||
URLScheme.ClearCampaignData();
|
||||
}, delegate
|
||||
{
|
||||
if (Toolbox.BootNetwork != null)
|
||||
{
|
||||
Toolbox.BootNetwork.IsDoneGameStartCheck = false;
|
||||
}
|
||||
OutOfService.ShowServiceEndedDialogIfNeeded();
|
||||
}, delegate(int resultCode)
|
||||
{
|
||||
if (Toolbox.BootNetwork != null)
|
||||
{
|
||||
Toolbox.BootNetwork.IsDoneGameStartCheck = false;
|
||||
}
|
||||
URLScheme.ClearCampaignData();
|
||||
if (resultCode == 5607)
|
||||
{
|
||||
isRemoveAccount = true;
|
||||
OnRemoveAccount();
|
||||
}
|
||||
}));
|
||||
if (isRemoveAccount)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnRemoveAccount()
|
||||
{
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateConfirmationDialog(Data.SystemText.Get("MyPage_0097"));
|
||||
dialogBase.SetTitleLabel(Data.SystemText.Get("ErrorHeader_0001"));
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
dialogBase.OnClose = delegate
|
||||
{
|
||||
UserInfoRequest.DeleteUserData();
|
||||
};
|
||||
}
|
||||
|
||||
public void GenerateUdid()
|
||||
{
|
||||
udid = Cryptographer.decode(Toolbox.SavedataManager.GetString("UDID"));
|
||||
if (string.IsNullOrEmpty(udid))
|
||||
{
|
||||
Toolbox.SavedataManager.SetString("UDID", Cryptographer.encode(Guid.NewGuid().ToString()));
|
||||
Toolbox.SavedataManager.Save();
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsLogined()
|
||||
{
|
||||
return !string.IsNullOrEmpty(sessionId);
|
||||
}
|
||||
|
||||
private IEnumerator Start()
|
||||
{
|
||||
while (Toolbox.BootSystem == null)
|
||||
{
|
||||
yield return 0;
|
||||
}
|
||||
SessionId = "";
|
||||
setDmmPlatformData();
|
||||
setSTEAMPlatformData();
|
||||
URLSchemeStart();
|
||||
}
|
||||
|
||||
private void OnApplicationFocus(bool focus)
|
||||
{
|
||||
if (focus)
|
||||
{
|
||||
URLSchemeStart();
|
||||
}
|
||||
}
|
||||
|
||||
private void URLSchemeStart()
|
||||
{
|
||||
if (CheckUrlScheme)
|
||||
{
|
||||
StartCoroutine(Delay(0.02f, delegate
|
||||
{
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator Delay(float waitTime, Action action)
|
||||
{
|
||||
yield return new WaitForSeconds(waitTime);
|
||||
action();
|
||||
}
|
||||
|
||||
private void setSTEAMPlatformData()
|
||||
{
|
||||
try
|
||||
{
|
||||
SteamID = SteamUser.GetSteamID().m_SteamID;
|
||||
m_GetAuthSessionTicketResponse = Callback<GetAuthSessionTicketResponse_t>.Create(OnGetAuthSessionTicketResponse);
|
||||
byte[] array = new byte[1024];
|
||||
SteamNetworkingIdentity pSteamNetworkingIdentity = default(SteamNetworkingIdentity);
|
||||
SteamUser.GetAuthSessionTicket(array, array.Length, out var pcbTicket, ref pSteamNetworkingIdentity);
|
||||
Array.Resize(ref array, (int)pcbTicket);
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (int i = 0; i < pcbTicket; i++)
|
||||
{
|
||||
stringBuilder.AppendFormat("{0:x2}", array[i]);
|
||||
}
|
||||
SteamSessionTicket = stringBuilder.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError("<color=aqua>steam client が起動していない。steamの機能を使えません。</color>");
|
||||
Debug.LogError(ex.Message);
|
||||
Debug.LogError(ex.StackTrace);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnGetAuthSessionTicketResponse(GetAuthSessionTicketResponse_t pCallback)
|
||||
{
|
||||
}
|
||||
|
||||
private void setDmmPlatformData()
|
||||
{
|
||||
}
|
||||
|
||||
public void URLSchemeStartiOS(string message)
|
||||
{
|
||||
URLScheme.URLSchemeStartiOS(message);
|
||||
}
|
||||
}
|
||||
54
SVSim.BattleEngine/Engine/Cute/INetworkUI.cs
Normal file
54
SVSim.BattleEngine/Engine/Cute/INetworkUI.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
namespace Cute;
|
||||
|
||||
public interface INetworkUI
|
||||
{
|
||||
string GetText(string code);
|
||||
|
||||
void StartLoading(bool notEditor = false);
|
||||
|
||||
void StopLoading();
|
||||
|
||||
void GoToMypage();
|
||||
|
||||
void SoftwareRest();
|
||||
|
||||
bool IsKeepLastRequest();
|
||||
|
||||
void SetKeepLastRequest(bool flag);
|
||||
|
||||
void OpenRetryAndToTitleErrorPopUp(string title, string message, string code);
|
||||
|
||||
void OpenGoToMypageErrorPopUp(string title, string message, string code);
|
||||
|
||||
void OpenGoToTitleErrorPopUp(string title, string message, string code);
|
||||
|
||||
void OpenGotoStoreErrorPopup();
|
||||
|
||||
void OpenRetryFailErrorPopup();
|
||||
|
||||
void OpenTimeOutErrorPopUp();
|
||||
|
||||
void OpenHttpStatusErrorPopUp();
|
||||
|
||||
void OpenResourceVersionUpPopUp();
|
||||
|
||||
void OpenSessionErrorPopUp();
|
||||
|
||||
bool isCloseDialogGroupError(int resultCode);
|
||||
|
||||
void OpenCloseOnlyErrorPopUp(int resultCode);
|
||||
|
||||
void OpenStrictServerErrorPopUp(int resultCode);
|
||||
|
||||
void OpenAccountBlockErrorPopUp(int resultCode);
|
||||
|
||||
void OpenAccountLimitedBlockErrorPopUp(int resultCode, string endTimeText);
|
||||
|
||||
void OpenAllMaintenancePopUp(int resultCode, string endTime);
|
||||
|
||||
void OpenEachFunctionMaintenancePopUp(int resultCode);
|
||||
|
||||
void OpenOtherServerErrorPopUp(int resultCode);
|
||||
|
||||
void OpenSocialServiceNoResponseErrorPopup();
|
||||
}
|
||||
406
SVSim.BattleEngine/Engine/Cute/NetworkManager.cs
Normal file
406
SVSim.BattleEngine/Engine/Cute/NetworkManager.cs
Normal file
@@ -0,0 +1,406 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using LitJson;
|
||||
using MessagePack;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
using Wizard;
|
||||
using Wizard.Battle.Phase;
|
||||
using Wizard.Bingo;
|
||||
using Wizard.Scripts.Network.Data.TaskData.BuildDeckPurchase;
|
||||
using Wizard.Scripts.Network.Data.TaskData.ItemPurchase;
|
||||
using Wizard.Scripts.Network.Data.TaskData.SkinPurchase;
|
||||
using Wizard.Scripts.Network.Data.TaskData.SpotCardExchange;
|
||||
|
||||
namespace Cute;
|
||||
|
||||
public class NetworkManager : MonoBehaviour, IManager
|
||||
{
|
||||
public const float TimeOut = 30f;
|
||||
|
||||
public const float TimeOutShort = 2f;
|
||||
|
||||
protected NetworkTask lastRequestTask;
|
||||
|
||||
public bool isConnect;
|
||||
|
||||
public bool isTimeOut;
|
||||
|
||||
public bool isError;
|
||||
|
||||
private bool isEncrypt = true;
|
||||
|
||||
private bool isUseJson;
|
||||
|
||||
private bool _showLoadingIcon = true;
|
||||
|
||||
private IEnumerator connectCoroutine;
|
||||
|
||||
[SerializeField]
|
||||
public Certification _certification;
|
||||
|
||||
public INetworkUI NetworkUI { get; set; }
|
||||
|
||||
private void Start()
|
||||
{
|
||||
Toolbox.NetworkManager = this;
|
||||
}
|
||||
|
||||
public bool IsReachability()
|
||||
{
|
||||
if (Application.internetReachability != NetworkReachability.NotReachable)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public IEnumerator Connect(NetworkTask task, Action<NetworkTask.ResultCode> callbackOnSuccess = null, Action<NetworkTask.ResultCode> callbackOnFailure = null, Action<int> callbackOnResultCodeError = null, bool encrypt = true, bool useJson = false, bool showLoadingIcon = true, bool showErrorDialog = true)
|
||||
{
|
||||
while (isConnect)
|
||||
{
|
||||
yield return 0;
|
||||
}
|
||||
isEncrypt = encrypt;
|
||||
isUseJson = useJson;
|
||||
_showLoadingIcon = showLoadingIcon;
|
||||
if (true)
|
||||
{
|
||||
if (IsBattle())
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("taskStart " + task);
|
||||
}
|
||||
lastRequestTask = task;
|
||||
lastRequestTask.Initialize();
|
||||
lastRequestTask.CallbackOnSuccess = callbackOnSuccess;
|
||||
lastRequestTask.CallbackOnFailure = callbackOnFailure;
|
||||
lastRequestTask.CallbackOnResultCodeError = callbackOnResultCodeError;
|
||||
lastRequestTask.PrepareHeaders();
|
||||
lastRequestTask.PreparePostData(isEncrypt, isUseJson);
|
||||
connectCoroutine = Connect(showErrorDialog);
|
||||
yield return StartCoroutine(connectCoroutine);
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator Connect(bool showErrorDialog)
|
||||
{
|
||||
while (isConnect)
|
||||
{
|
||||
yield return 0;
|
||||
}
|
||||
isConnect = true;
|
||||
isTimeOut = false;
|
||||
isError = false;
|
||||
if (NetworkUI != null && _showLoadingIcon)
|
||||
{
|
||||
NetworkUI.StartLoading();
|
||||
}
|
||||
bool isLogTraceCheckUri = false;
|
||||
if (lastRequestTask is DoMatchingBase || lastRequestTask is FinishTaskBase)
|
||||
{
|
||||
isLogTraceCheckUri = true;
|
||||
}
|
||||
string url = lastRequestTask.Url;
|
||||
_ = lastRequestTask;
|
||||
if (isLogTraceCheckUri)
|
||||
{
|
||||
LogTraceCheck("1");
|
||||
}
|
||||
using UnityWebRequest unityWebRequest = GetUnityWebRequestInstance(url);
|
||||
yield return unityWebRequest.SendWebRequest();
|
||||
if (isLogTraceCheckUri)
|
||||
{
|
||||
LogTraceCheck("2");
|
||||
}
|
||||
float endTime = Time.realtimeSinceStartup + 30f;
|
||||
if (lastRequestTask.GetType().Equals(typeof(CheckSpecialTitleTask)))
|
||||
{
|
||||
endTime = Time.realtimeSinceStartup + 2f;
|
||||
}
|
||||
while (!unityWebRequest.isDone && Time.realtimeSinceStartup < endTime)
|
||||
{
|
||||
yield return 0;
|
||||
}
|
||||
if (isLogTraceCheckUri)
|
||||
{
|
||||
LogTraceCheck("3");
|
||||
}
|
||||
if (NetworkUI != null)
|
||||
{
|
||||
NetworkUI.StopLoading();
|
||||
}
|
||||
if (!unityWebRequest.isDone)
|
||||
{
|
||||
isTimeOut = true;
|
||||
LocalLog.AccumulateTraceLog("Connect is TimeOut");
|
||||
disposeUnityWebRequest(unityWebRequest);
|
||||
if (!lastRequestTask.isSkipCommonTimeOutPopUp())
|
||||
{
|
||||
if (lastRequestTask.GetType().Equals(typeof(PackOpenTask)) || lastRequestTask.GetType().Equals(typeof(BuildDeckBuyTask)) || lastRequestTask.GetType().Equals(typeof(SleeveBuyTask)) || lastRequestTask.GetType().Equals(typeof(SkinBuyMultiRewardTask)) || lastRequestTask.GetType().Equals(typeof(SkinBuyMultiTask)) || lastRequestTask.GetType().Equals(typeof(SkinBuySingleTask)) || lastRequestTask.GetType().Equals(typeof(ItemPurchaseBuyTask)) || lastRequestTask.GetType().Equals(typeof(SpotCardExchangeTask)) || lastRequestTask.GetType().Equals(typeof(CardCreateTask)) || lastRequestTask.GetType().Equals(typeof(CardDestructTask)) || lastRequestTask.GetType().Equals(typeof(StoryFinishTask)) || lastRequestTask.GetType().Equals(typeof(PracticeFinishTask)) || lastRequestTask.GetType().Equals(typeof(BingoDrawTask)) || lastRequestTask.GetType().Equals(typeof(MypageTreasureBoxCpOpenTask)) || lastRequestTask.GetType().Equals(typeof(MypageReceiveSpecialTreasureTask)) || lastRequestTask.GetType().Equals(typeof(FreeCardPackCampaignFinishTask)))
|
||||
{
|
||||
NetworkUI.OpenGoToTitleErrorPopUp(Data.SystemText.Get("ErrorHeader_0012"), Data.SystemText.Get("Error_0012"), "");
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkUI.OpenTimeOutErrorPopUp();
|
||||
}
|
||||
}
|
||||
if (lastRequestTask.CallbackOnFailure != null)
|
||||
{
|
||||
if (lastRequestTask.GetType().Equals(typeof(PaymentPCFinishTask)))
|
||||
{
|
||||
NetworkUI.OpenGoToTitleErrorPopUp(Data.SystemText.Get("ErrorHeader_0012"), Data.SystemText.Get("Error_0012"), "");
|
||||
}
|
||||
else
|
||||
{
|
||||
lastRequestTask.CallbackOnFailure(NetworkTask.ResultCode.TimeOut);
|
||||
}
|
||||
}
|
||||
Toolbox.DeviceManager.ClearIpAddress();
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(unityWebRequest.error))
|
||||
{
|
||||
LocalLog.AccumulateTraceLog("Connect is Error!" + unityWebRequest.error + " responseCode:" + unityWebRequest.responseCode);
|
||||
isError = true;
|
||||
if (showErrorDialog && !lastRequestTask.isSkipCommonHttpStatusErrorPopUp())
|
||||
{
|
||||
if (lastRequestTask.GetType().Equals(typeof(PackOpenTask)) || lastRequestTask.GetType().Equals(typeof(PaymentPCFinishTask)))
|
||||
{
|
||||
NetworkUI.OpenGoToTitleErrorPopUp(Data.SystemText.Get("ErrorHeader_0012"), Data.SystemText.Get("Error_0012"), "");
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkUI.OpenHttpStatusErrorPopUp();
|
||||
}
|
||||
}
|
||||
disposeUnityWebRequest(unityWebRequest);
|
||||
if (lastRequestTask.CallbackOnFailure != null)
|
||||
{
|
||||
lastRequestTask.CallbackOnFailure(NetworkTask.ResultCode.Error);
|
||||
}
|
||||
Toolbox.DeviceManager.ClearIpAddress();
|
||||
}
|
||||
else if (unityWebRequest.isDone)
|
||||
{
|
||||
if (lastRequestTask.CallbackOnUnityWebRequestDone != null)
|
||||
{
|
||||
lastRequestTask.CallbackOnUnityWebRequestDone(unityWebRequest);
|
||||
}
|
||||
else if (unityWebRequest.downloadHandler.text != null && unityWebRequest.downloadHandler.text != "")
|
||||
{
|
||||
try
|
||||
{
|
||||
byte[] bytes = ((!isEncrypt) ? Convert.FromBase64String(unityWebRequest.downloadHandler.text) : CryptAES.decrypt(unityWebRequest.downloadHandler.text));
|
||||
string json = (isUseJson ? MessagePackSerializer.ToJson(bytes) : MessagePackSerializer.ToJson(bytes));
|
||||
lastRequestTask.SetResponseData(JsonMapper.ToObject(json));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
string text = unityWebRequest.downloadHandler.text;
|
||||
disposeUnityWebRequest(unityWebRequest);
|
||||
if (!lastRequestTask.GetType().Equals(typeof(CheckSpecialTitleTask)))
|
||||
{
|
||||
if (!isEncrypt)
|
||||
{
|
||||
LocalLog.AccumulateTraceLog(ex.ToString());
|
||||
throw ex;
|
||||
}
|
||||
Debug.LogError(text);
|
||||
Debug.LogError(ex.Message);
|
||||
Debug.LogError(ex.StackTrace);
|
||||
if (text.Contains("php"))
|
||||
{
|
||||
if (text.Length > 1800)
|
||||
{
|
||||
throw new Exception(text.Substring(1, 1800));
|
||||
}
|
||||
throw new Exception(text);
|
||||
}
|
||||
HandleDeserializeException(ex);
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
if (lastRequestTask != null)
|
||||
{
|
||||
if (lastRequestTask.GetType().Equals(typeof(CheckSpecialTitleTask)))
|
||||
{
|
||||
((CheckSpecialTitleTask)lastRequestTask).ParseTitleCheckData();
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkTask.ERROR_CODE_STATUS num = lastRequestTask.CheckResultCodeToPopupCreate_ReturnStatus();
|
||||
if (num == NetworkTask.ERROR_CODE_STATUS.ERROR)
|
||||
{
|
||||
isError = true;
|
||||
}
|
||||
if (num == NetworkTask.ERROR_CODE_STATUS.ERROR_TO_MAINTENANCE_POPUP && lastRequestTask.CallbackOnFailure != null)
|
||||
{
|
||||
lastRequestTask.CallbackOnFailure(NetworkTask.ResultCode.Maintenance);
|
||||
}
|
||||
if (num == NetworkTask.ERROR_CODE_STATUS.ERROR && lastRequestTask.CallbackOnFailure != null)
|
||||
{
|
||||
lastRequestTask.CallbackOnFailure(NetworkTask.ResultCode.Title);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex2)
|
||||
{
|
||||
disposeUnityWebRequest(unityWebRequest);
|
||||
if (!lastRequestTask.GetType().Equals(typeof(CheckSpecialTitleTask)))
|
||||
{
|
||||
LocalLog.AccumulateTraceLog("NetworkManager Connect Error 2:" + ex2);
|
||||
throw ex2;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LocalLog.AccumulateTraceLog("NetworkManager Connect Error 3");
|
||||
}
|
||||
}
|
||||
ClearLastRequestTask();
|
||||
disposeUnityWebRequest(unityWebRequest);
|
||||
isConnect = false;
|
||||
}
|
||||
|
||||
private void LogTraceCheck(string logMsg)
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("NetworkTrace msg " + logMsg);
|
||||
LocalLog.SubmitAccumulateLastTraceLog();
|
||||
}
|
||||
|
||||
private bool IsBattle()
|
||||
{
|
||||
if (ToolboxGame.RealTimeNetworkAgent != null && BattleManagerBase.GetIns() != null && BattleManagerBase.GetIns().GetCurrentPhase() is MainPhase)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private UnityWebRequest GetUnityWebRequestInstance(string serverUrl)
|
||||
{
|
||||
try
|
||||
{
|
||||
UnityWebRequest unityWebRequest = new UnityWebRequest(serverUrl, "POST");
|
||||
unityWebRequest.uploadHandler = new UploadHandlerRaw(lastRequestTask.Body);
|
||||
unityWebRequest.downloadHandler = new DownloadHandlerBuffer();
|
||||
foreach (KeyValuePair<string, string> item in lastRequestTask.Header)
|
||||
{
|
||||
unityWebRequest.SetRequestHeader(item.Key, item.Value);
|
||||
}
|
||||
return unityWebRequest;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
string text = "";
|
||||
foreach (KeyValuePair<string, string> item2 in lastRequestTask.Header)
|
||||
{
|
||||
text += string.Format("header==={0} : {1}" + Environment.NewLine, item2.Key, item2.Value);
|
||||
}
|
||||
Debug.LogError(ex?.ToString() + ":" + text);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void HandleDeserializeException(Exception e)
|
||||
{
|
||||
SoftwareReset.exec();
|
||||
throw new Exception("復号化に失敗しました。" + e);
|
||||
}
|
||||
|
||||
public void ClearLastRequestTask()
|
||||
{
|
||||
if ((NetworkUI != null && !NetworkUI.IsKeepLastRequest()) || lastRequestTask.isServerResultCodeOK())
|
||||
{
|
||||
if (IsBattle())
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("ClearLastRequestTask " + lastRequestTask);
|
||||
}
|
||||
lastRequestTask = null;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator Retry()
|
||||
{
|
||||
if (lastRequestTask == null)
|
||||
{
|
||||
NetworkUI.OpenRetryFailErrorPopup();
|
||||
yield break;
|
||||
}
|
||||
if (connectCoroutine != null)
|
||||
{
|
||||
StopConnectCoroutine();
|
||||
}
|
||||
connectCoroutine = Connect(showErrorDialog: true);
|
||||
yield return StartCoroutine(connectCoroutine);
|
||||
}
|
||||
|
||||
public void Certification()
|
||||
{
|
||||
_certification.GenerateUdid();
|
||||
}
|
||||
|
||||
public void ReturnToTitle()
|
||||
{
|
||||
NetworkUI.SetKeepLastRequest(flag: false);
|
||||
ClearLastRequestTask();
|
||||
NetworkUI.SoftwareRest();
|
||||
}
|
||||
|
||||
public void GoToMypage()
|
||||
{
|
||||
NetworkUI.SetKeepLastRequest(flag: false);
|
||||
ClearLastRequestTask();
|
||||
NetworkUI.GoToMypage();
|
||||
}
|
||||
|
||||
public void GoToStore()
|
||||
{
|
||||
lastRequestTask.GotoStore();
|
||||
NetworkUI.SetKeepLastRequest(flag: false);
|
||||
ClearLastRequestTask();
|
||||
NetworkUI.SoftwareRest();
|
||||
}
|
||||
|
||||
public void QuitApplication()
|
||||
{
|
||||
NetworkUI.SetKeepLastRequest(flag: false);
|
||||
ClearLastRequestTask();
|
||||
if (Toolbox.mute != null)
|
||||
{
|
||||
Toolbox.mute.Close();
|
||||
Toolbox.mute = null;
|
||||
}
|
||||
Application.Quit();
|
||||
}
|
||||
|
||||
private void disposeUnityWebRequest(UnityWebRequest unityWebRequest)
|
||||
{
|
||||
unityWebRequest.Dispose();
|
||||
}
|
||||
|
||||
public void StopConnectCoroutine()
|
||||
{
|
||||
if (connectCoroutine != null)
|
||||
{
|
||||
if (RealTimeNetworkAgent.IsNormalNetworkBattle())
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("NetworkManager_StopConnectCoroutine " + StackTraceUtility.ExtractStackTrace());
|
||||
}
|
||||
StopCoroutine(connectCoroutine);
|
||||
isConnect = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (RealTimeNetworkAgent.IsNormalNetworkBattle())
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("NetworkManager_Destroy");
|
||||
}
|
||||
}
|
||||
}
|
||||
570
SVSim.BattleEngine/Engine/Cute/NetworkTask.cs
Normal file
570
SVSim.BattleEngine/Engine/Cute/NetworkTask.cs
Normal file
@@ -0,0 +1,570 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using LitJson;
|
||||
using MessagePack;
|
||||
using UnityEngine.Networking;
|
||||
using Wizard;
|
||||
using Wizard.Battle.Recovery;
|
||||
|
||||
namespace Cute;
|
||||
|
||||
public class NetworkTask
|
||||
{
|
||||
public enum ResultCode
|
||||
{
|
||||
Success,
|
||||
Error,
|
||||
TimeOut,
|
||||
Title,
|
||||
Maintenance
|
||||
}
|
||||
|
||||
public enum ERROR_CODE_STATUS
|
||||
{
|
||||
NONE,
|
||||
ERROR,
|
||||
ERROR_TO_MAINTENANCE_POPUP
|
||||
}
|
||||
|
||||
protected Dictionary<string, string> header = new Dictionary<string, string>();
|
||||
|
||||
protected byte[] body;
|
||||
|
||||
protected int resultCode;
|
||||
|
||||
private SkipCuteCheckResultCodes skipCuteCheckResultCodes;
|
||||
|
||||
private bool skipCommonTimeOutPopUp;
|
||||
|
||||
private bool skipCommonHttpStatusErrorPopUp;
|
||||
|
||||
public virtual string Url { get; set; }
|
||||
|
||||
public Action<ResultCode> CallbackOnSuccess { get; set; }
|
||||
|
||||
public Action<ResultCode> CallbackOnFailure { get; set; }
|
||||
|
||||
public Action<int> CallbackOnResultCodeError { get; set; }
|
||||
|
||||
public Action<UnityWebRequest> CallbackOnUnityWebRequestDone { get; set; }
|
||||
|
||||
public Dictionary<string, string> Header => header;
|
||||
|
||||
public byte[] Body => body;
|
||||
|
||||
public PostParams Params { get; set; }
|
||||
|
||||
public JsonData ResponseData { get; private set; }
|
||||
|
||||
public bool IsResourceVersionUpError { get; private set; }
|
||||
|
||||
public bool IsResultSuccess => resultCode == 1;
|
||||
|
||||
public NetworkTask()
|
||||
{
|
||||
skipCuteCheckResultCodes = new SkipCuteCheckResultCodes();
|
||||
Params = new PostParams();
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
ResponseData = null;
|
||||
resultCode = 0;
|
||||
}
|
||||
|
||||
public Dictionary<string, string> PrepareHeaders()
|
||||
{
|
||||
AddHeaderUdid();
|
||||
AddHeaderShortUdid();
|
||||
AddHeaderSessionId();
|
||||
AddHeaderParam();
|
||||
AddHeaderDevice();
|
||||
AddHeaderAppVersion();
|
||||
AddHeaderResVersion();
|
||||
AddHeaderDeviceId();
|
||||
AddHeaderDeviceName();
|
||||
AddHeaderGraphicsDeviceName();
|
||||
AddHeaderIpAddress();
|
||||
AddHeaderPlatformOsVersion();
|
||||
AddHeaderKeyChain();
|
||||
AddHeaderIDFA();
|
||||
AddHeaderLocale();
|
||||
AddHeaderLanguage();
|
||||
AddHeaderCountryCode();
|
||||
AddHeaderPlatform();
|
||||
AddHeaderIsWSS();
|
||||
AddHeaderIsIpv6();
|
||||
AddHeaderDevAccessSecretKey();
|
||||
AddCardMasterHash();
|
||||
return header;
|
||||
}
|
||||
|
||||
public byte[] PreparePostData(bool encrypt = true, bool isUseJson = false)
|
||||
{
|
||||
return CreateBody(encrypt, isUseJson);
|
||||
}
|
||||
|
||||
public void SetResponseData(JsonData data)
|
||||
{
|
||||
ResponseData = data;
|
||||
resultCode = getDataHeader()["result_code"].ToInt();
|
||||
}
|
||||
|
||||
public int GetResultCode()
|
||||
{
|
||||
return resultCode;
|
||||
}
|
||||
|
||||
public ERROR_CODE_STATUS CheckResultCodeToPopupCreate_ReturnStatus(int rc = 0)
|
||||
{
|
||||
INetworkUI networkUI = Toolbox.NetworkManager.NetworkUI;
|
||||
if (isAppVersionUP())
|
||||
{
|
||||
RecoveryRecordManagerBase.DeleteRecoveryFile();
|
||||
networkUI.OpenGotoStoreErrorPopup();
|
||||
return ERROR_CODE_STATUS.ERROR;
|
||||
}
|
||||
if (isResourceVersionUp())
|
||||
{
|
||||
IsResourceVersionUpError = true;
|
||||
setResourceVersion();
|
||||
if (!Url.Contains(CuteNetworkDefine.ApiUrlList[CuteNetworkDefine.ApiType.GameStartCheck]))
|
||||
{
|
||||
RecoveryRecordManagerBase.DeleteRecoveryFile();
|
||||
networkUI.OpenResourceVersionUpPopUp();
|
||||
Parse();
|
||||
return ERROR_CODE_STATUS.ERROR;
|
||||
}
|
||||
}
|
||||
if (isSessionError())
|
||||
{
|
||||
networkUI.OpenSessionErrorPopUp();
|
||||
return ERROR_CODE_STATUS.ERROR;
|
||||
}
|
||||
setSession();
|
||||
if (isUnknownServerError() || isServerProcessedError() || isServerDataBaseError())
|
||||
{
|
||||
networkUI.OpenStrictServerErrorPopUp(resultCode);
|
||||
return ERROR_CODE_STATUS.ERROR;
|
||||
}
|
||||
if (isAccountBlockError())
|
||||
{
|
||||
networkUI.OpenAccountBlockErrorPopUp(resultCode);
|
||||
return ERROR_CODE_STATUS.ERROR;
|
||||
}
|
||||
if (isNeteaseAccountBlockError())
|
||||
{
|
||||
NtDataTranslateManager.GetInstance().ShowRejectLogin();
|
||||
return ERROR_CODE_STATUS.ERROR;
|
||||
}
|
||||
if (isAccountLimitedBlockError())
|
||||
{
|
||||
string accountLimitedBlockEndTime = getAccountLimitedBlockEndTime();
|
||||
networkUI.OpenAccountLimitedBlockErrorPopUp(resultCode, accountLimitedBlockEndTime);
|
||||
return ERROR_CODE_STATUS.ERROR;
|
||||
}
|
||||
if (IsAllMaintenanceError())
|
||||
{
|
||||
string maintenanceEndTime = getMaintenanceEndTime();
|
||||
networkUI.OpenAllMaintenancePopUp(resultCode, maintenanceEndTime);
|
||||
return ERROR_CODE_STATUS.ERROR_TO_MAINTENANCE_POPUP;
|
||||
}
|
||||
if (IsEachFunctionMaintenanceError())
|
||||
{
|
||||
networkUI.OpenEachFunctionMaintenancePopUp(resultCode);
|
||||
return ERROR_CODE_STATUS.ERROR_TO_MAINTENANCE_POPUP;
|
||||
}
|
||||
if (IsCardMaintenanceError())
|
||||
{
|
||||
if (CallbackOnResultCodeError != null)
|
||||
{
|
||||
CallbackOnResultCodeError(resultCode);
|
||||
}
|
||||
return ERROR_CODE_STATUS.ERROR_TO_MAINTENANCE_POPUP;
|
||||
}
|
||||
if (!skipCuteCheckResultCodes.isSkipAll() && !skipCuteCheckResultCodes.Contains(resultCode))
|
||||
{
|
||||
cuteCheckResultCode();
|
||||
}
|
||||
Parse();
|
||||
if (isServerResultCodeOK())
|
||||
{
|
||||
if (CallbackOnSuccess != null)
|
||||
{
|
||||
CallbackOnSuccess(ResultCode.Success);
|
||||
}
|
||||
return ERROR_CODE_STATUS.NONE;
|
||||
}
|
||||
if (CallbackOnResultCodeError != null)
|
||||
{
|
||||
CallbackOnResultCodeError(resultCode);
|
||||
return ERROR_CODE_STATUS.ERROR;
|
||||
}
|
||||
return ERROR_CODE_STATUS.NONE;
|
||||
}
|
||||
|
||||
private void cuteCheckResultCode()
|
||||
{
|
||||
INetworkUI networkUI = Toolbox.NetworkManager.NetworkUI;
|
||||
if (networkUI.isCloseDialogGroupError(resultCode))
|
||||
{
|
||||
networkUI.OpenCloseOnlyErrorPopUp(resultCode);
|
||||
}
|
||||
else if (!isServerResultCodeOK())
|
||||
{
|
||||
networkUI.OpenOtherServerErrorPopUp(resultCode);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual string getAccountLimitedBlockEndTime()
|
||||
{
|
||||
return ResponseData["data"]["account_block_end_time"].ToString();
|
||||
}
|
||||
|
||||
protected virtual string getMaintenanceEndTime()
|
||||
{
|
||||
if (ResponseData["data"].Count > 0 && ResponseData["data"].Keys.Contains("maintenance_end_time") && ResponseData["data"]["maintenance_end_time"].ToString().Length > 0)
|
||||
{
|
||||
return ResponseData["data"]["maintenance_end_time"].ToString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
protected virtual string getUdid()
|
||||
{
|
||||
return Certification.Udid;
|
||||
}
|
||||
|
||||
protected virtual byte[] CreateBody(bool encrypt = true, bool isUseJson = false)
|
||||
{
|
||||
if (isUseJson)
|
||||
{
|
||||
body = _createBodyJson(Params, encrypt);
|
||||
}
|
||||
else
|
||||
{
|
||||
body = _createBodyMsgpack(Params, encrypt);
|
||||
}
|
||||
return body;
|
||||
}
|
||||
|
||||
protected byte[] _createBodyJson(PostParams Params, bool encrypt = true)
|
||||
{
|
||||
byte[] bytes = Encoding.ASCII.GetBytes(JsonMapper.ToJson(Params));
|
||||
if (!encrypt)
|
||||
{
|
||||
return bytes;
|
||||
}
|
||||
return CryptAES.encrypt(bytes);
|
||||
}
|
||||
|
||||
protected byte[] _createBodyMsgpack(PostParams Params, bool encrypt = true)
|
||||
{
|
||||
byte[] array = MessagePackSerializer.FromJson(JsonMapper.ToJson(Params));
|
||||
if (!encrypt)
|
||||
{
|
||||
return array;
|
||||
}
|
||||
return CryptAES.encrypt(array);
|
||||
}
|
||||
|
||||
protected virtual int Parse()
|
||||
{
|
||||
return resultCode;
|
||||
}
|
||||
|
||||
private void AddHeaderUdid()
|
||||
{
|
||||
if (Url.Contains(CuteNetworkDefine.ApiUrlList[CuteNetworkDefine.ApiType.SignUp]) || Url.Contains(CuteNetworkDefine.ApiUrlList[CuteNetworkDefine.ApiType.CheckSpecialTitle]) || Url.Contains(CuteNetworkDefine.ApiUrlList[CuteNetworkDefine.ApiType.CheckiCloudUser]) || Url.Contains(CuteNetworkDefine.ApiUrlList[CuteNetworkDefine.ApiType.MigrateiCloudUser]))
|
||||
{
|
||||
string value = Cryptographer.encode(getUdid());
|
||||
header["UDID"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
private void AddHeaderShortUdid()
|
||||
{
|
||||
string value = Cryptographer.encode(Certification.ShortUdid.ToString());
|
||||
header["SHORT_UDID"] = value;
|
||||
}
|
||||
|
||||
private void AddHeaderSessionId()
|
||||
{
|
||||
header["SID"] = Certification.SessionId;
|
||||
}
|
||||
|
||||
private void AddHeaderParam()
|
||||
{
|
||||
string udid = getUdid();
|
||||
string viewer_id = CryptAES.encrypt(Certification.ViewerId.ToString());
|
||||
Params.viewer_id = viewer_id;
|
||||
Params.steam_id = Certification.SteamID;
|
||||
Params.steam_session_ticket = Certification.SteamSessionTicket;
|
||||
string text = Convert.ToBase64String(MessagePackSerializer.FromJson(JsonMapper.ToJson(Params)));
|
||||
Uri uri = new Uri(Url.Trim());
|
||||
string text2 = udid + uri.AbsolutePath + text;
|
||||
if (Certification.ViewerId != 0)
|
||||
{
|
||||
text2 += Certification.ViewerId;
|
||||
}
|
||||
string value = Cryptographer.ComputeHash(text2);
|
||||
header["PARAM"] = value;
|
||||
}
|
||||
|
||||
private void AddHeaderDevice()
|
||||
{
|
||||
header["DEVICE"] = Toolbox.DeviceManager.GetDeviceType().ToString();
|
||||
}
|
||||
|
||||
private void AddHeaderAppVersion()
|
||||
{
|
||||
header["APP_VER"] = Toolbox.DeviceManager.GetAppVersionName();
|
||||
}
|
||||
|
||||
private void AddHeaderResVersion()
|
||||
{
|
||||
header["RES_VER"] = Toolbox.SavedataManager.GetResourceVersion();
|
||||
}
|
||||
|
||||
private void AddHeaderDeviceId()
|
||||
{
|
||||
header["DEVICE_ID"] = Toolbox.DeviceManager.GetDeviceUniqueIdentifier();
|
||||
}
|
||||
|
||||
private void AddHeaderDeviceName()
|
||||
{
|
||||
header["DEVICE_NAME"] = Uri.EscapeDataString(Toolbox.DeviceManager.GetDeviceName());
|
||||
}
|
||||
|
||||
private void AddHeaderGraphicsDeviceName()
|
||||
{
|
||||
header["GRAPHICS_DEVICE_NAME"] = Uri.EscapeDataString(Toolbox.DeviceManager.GetGraphicsDeviceName(textureCheck: true));
|
||||
}
|
||||
|
||||
private void AddHeaderIpAddress()
|
||||
{
|
||||
header["IP_ADDRESS"] = Toolbox.DeviceManager.GetIpAddress();
|
||||
}
|
||||
|
||||
private void AddHeaderPlatformOsVersion()
|
||||
{
|
||||
header["PLATFORM_OS_VERSION"] = Uri.EscapeDataString(Toolbox.DeviceManager.GetOsVersion());
|
||||
}
|
||||
|
||||
private void AddHeaderPlatform()
|
||||
{
|
||||
header["PLATFORM"] = CustomPreference.GetPlatform().ToString();
|
||||
}
|
||||
|
||||
private void AddHeaderIsWSS()
|
||||
{
|
||||
header["WSS"] = (PlayerPrefsWrapper.GetBool(PlayerPrefsWrapper.IS_SELECT_WSS) ? "1" : "0");
|
||||
}
|
||||
|
||||
private void AddHeaderIsIpv6()
|
||||
{
|
||||
header["IPV6_CONNECTION"] = (PlayerPrefsWrapper.GetBool(PlayerPrefsWrapper.IS_SELECT_IPV6) ? "1" : "0");
|
||||
}
|
||||
|
||||
private void AddCardMasterHash()
|
||||
{
|
||||
string cardMasterHash = CardMasterLocalFileUtility.GetCardMasterHash();
|
||||
if (!string.IsNullOrEmpty(cardMasterHash))
|
||||
{
|
||||
header["CARD_MASTER_HASH"] = cardMasterHash;
|
||||
}
|
||||
}
|
||||
|
||||
private void AddHeaderDevAccessSecretKey()
|
||||
{
|
||||
}
|
||||
|
||||
private void AddHeaderCarrier()
|
||||
{
|
||||
header["CARRIER"] = Toolbox.DeviceManager.GetCarrier();
|
||||
}
|
||||
|
||||
private void AddHeaderKeyChain()
|
||||
{
|
||||
header["KEYCHAIN"] = Certification.GetKeyChainViewerId();
|
||||
}
|
||||
|
||||
private void AddHeaderIDFA()
|
||||
{
|
||||
header["IDFA"] = Certification.GetIDFA();
|
||||
}
|
||||
|
||||
private void AddHeaderLocale()
|
||||
{
|
||||
header["LOCALE"] = Toolbox.DeviceManager.GetLocale();
|
||||
}
|
||||
|
||||
private void AddHeaderLanguage()
|
||||
{
|
||||
string textLanguage = CustomPreference.GetTextLanguage();
|
||||
header["LANGUAGE"] = textLanguage;
|
||||
}
|
||||
|
||||
private void AddHeaderCountryCode()
|
||||
{
|
||||
header["REGION_CODE"] = PlayerStaticData.UserRegionCode;
|
||||
}
|
||||
|
||||
private bool isSessionError()
|
||||
{
|
||||
return resultCode == 201;
|
||||
}
|
||||
|
||||
private bool isUnknownServerError()
|
||||
{
|
||||
return resultCode == 102;
|
||||
}
|
||||
|
||||
private bool isAccountBlockError()
|
||||
{
|
||||
return resultCode == 203;
|
||||
}
|
||||
|
||||
private bool isNeteaseAccountBlockError()
|
||||
{
|
||||
return resultCode == 330;
|
||||
}
|
||||
|
||||
private bool isAccountLimitedBlockError()
|
||||
{
|
||||
return resultCode == 217;
|
||||
}
|
||||
|
||||
private bool isServerProcessedError()
|
||||
{
|
||||
return resultCode == 213;
|
||||
}
|
||||
|
||||
private bool isServerDataBaseError()
|
||||
{
|
||||
return resultCode == 100;
|
||||
}
|
||||
|
||||
public bool isServerResultCodeOK()
|
||||
{
|
||||
if (resultCode != 1 && resultCode != 3502)
|
||||
{
|
||||
return resultCode == 1768;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool IsAllMaintenanceError()
|
||||
{
|
||||
return resultCode == 101;
|
||||
}
|
||||
|
||||
private bool IsEachFunctionMaintenanceError()
|
||||
{
|
||||
if (resultCode >= 2000)
|
||||
{
|
||||
return resultCode <= 2999;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool IsCardMaintenanceError()
|
||||
{
|
||||
if (resultCode != 1710)
|
||||
{
|
||||
return resultCode == 5013;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void setSession()
|
||||
{
|
||||
JsonData dataHeader = getDataHeader();
|
||||
if (dataHeader.Keys.Contains("sid") && dataHeader["sid"] != null && !string.IsNullOrEmpty(dataHeader["sid"].ToString()))
|
||||
{
|
||||
Certification.SessionId = dataHeader["sid"].ToString();
|
||||
}
|
||||
}
|
||||
|
||||
private bool isAppVersionUP()
|
||||
{
|
||||
if (resultCode == 204)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void GotoStore()
|
||||
{
|
||||
BrowserURL.Open(getDataHeader()["store_url"].ToString());
|
||||
}
|
||||
|
||||
private bool isResourceVersionUp()
|
||||
{
|
||||
if (getDataHeader().Keys.Contains("required_res_ver"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private JsonData getDataHeader()
|
||||
{
|
||||
return ResponseData["data_headers"];
|
||||
}
|
||||
|
||||
private void setResourceVersion()
|
||||
{
|
||||
string resourceVersion = getDataHeader()["required_res_ver"].ToString();
|
||||
Toolbox.SavedataManager.SetResourceVersion(resourceVersion);
|
||||
}
|
||||
|
||||
public void AddSkipCuteCheckResultCode(int resultCode)
|
||||
{
|
||||
skipCuteCheckResultCodes.Add(resultCode);
|
||||
}
|
||||
|
||||
public void AddSkipCuteCheckResultCode(List<int> resultCodes)
|
||||
{
|
||||
skipCuteCheckResultCodes.Add(resultCodes);
|
||||
}
|
||||
|
||||
public void SkipAllCuteResultCodeCheckErrorPopup()
|
||||
{
|
||||
skipCuteCheckResultCodes.setSkipAll(pSkipAll: true);
|
||||
}
|
||||
|
||||
public void SkipCuteTimeOutPopup()
|
||||
{
|
||||
skipCommonTimeOutPopUp = true;
|
||||
}
|
||||
|
||||
public bool isSkipCommonTimeOutPopUp()
|
||||
{
|
||||
return skipCommonTimeOutPopUp;
|
||||
}
|
||||
|
||||
public void SkipCuteHttpStatusErrorPopup()
|
||||
{
|
||||
skipCommonHttpStatusErrorPopUp = true;
|
||||
}
|
||||
|
||||
public bool isSkipCommonHttpStatusErrorPopUp()
|
||||
{
|
||||
return skipCommonHttpStatusErrorPopUp;
|
||||
}
|
||||
|
||||
public void ClearSkipCuteCheckResultCode()
|
||||
{
|
||||
skipCuteCheckResultCodes.Clear();
|
||||
}
|
||||
|
||||
public void SkipAllNetworkChecks()
|
||||
{
|
||||
SkipAllCuteResultCodeCheckErrorPopup();
|
||||
SkipCuteTimeOutPopup();
|
||||
SkipCuteHttpStatusErrorPopup();
|
||||
}
|
||||
}
|
||||
10
SVSim.BattleEngine/Engine/Cute/PostParams.cs
Normal file
10
SVSim.BattleEngine/Engine/Cute/PostParams.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace Cute;
|
||||
|
||||
public class PostParams
|
||||
{
|
||||
public string viewer_id = "";
|
||||
|
||||
public ulong steam_id;
|
||||
|
||||
public string steam_session_ticket;
|
||||
}
|
||||
1707
SVSim.BattleEngine/Engine/Cute/ResourcesManager.cs
Normal file
1707
SVSim.BattleEngine/Engine/Cute/ResourcesManager.cs
Normal file
File diff suppressed because it is too large
Load Diff
40
SVSim.BattleEngine/Engine/Cute/SkipCuteCheckResultCodes.cs
Normal file
40
SVSim.BattleEngine/Engine/Cute/SkipCuteCheckResultCodes.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Cute;
|
||||
|
||||
internal class SkipCuteCheckResultCodes
|
||||
{
|
||||
private List<int> resultCodes = new List<int>();
|
||||
|
||||
private bool skipAll;
|
||||
|
||||
public void setSkipAll(bool pSkipAll)
|
||||
{
|
||||
skipAll = pSkipAll;
|
||||
}
|
||||
|
||||
public bool isSkipAll()
|
||||
{
|
||||
return skipAll;
|
||||
}
|
||||
|
||||
public void Add(int resultCode)
|
||||
{
|
||||
resultCodes.Add(resultCode);
|
||||
}
|
||||
|
||||
public void Add(List<int> pResultCodes)
|
||||
{
|
||||
resultCodes.AddRange(pResultCodes);
|
||||
}
|
||||
|
||||
public bool Contains(int resultCode)
|
||||
{
|
||||
return resultCodes.Contains(resultCode);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
resultCodes.Clear();
|
||||
}
|
||||
}
|
||||
731
SVSim.BattleEngine/Engine/Cute/Utility.cs
Normal file
731
SVSim.BattleEngine/Engine/Cute/Utility.cs
Normal file
File diff suppressed because one or more lines are too long
23
SVSim.BattleEngine/Engine/DamageCardParameterModifier.cs
Normal file
23
SVSim.BattleEngine/Engine/DamageCardParameterModifier.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
public class DamageCardParameterModifier : TurnAndIntValue, ICardLifeModifier
|
||||
{
|
||||
public int Damage => base.Value;
|
||||
|
||||
public bool IsClearBeforeModifier => false;
|
||||
|
||||
public bool IsChangeMaxLife => false;
|
||||
|
||||
public DamageCardParameterModifier(int damage, int turn, bool isSelfTurn)
|
||||
: base(damage, turn, isSelfTurn)
|
||||
{
|
||||
}
|
||||
|
||||
public int CalcLife(int baseLife)
|
||||
{
|
||||
return baseLife - Damage;
|
||||
}
|
||||
|
||||
public int CalcMaxLife(int baseMaxLife)
|
||||
{
|
||||
return baseMaxLife;
|
||||
}
|
||||
}
|
||||
105
SVSim.BattleEngine/Engine/DamageClippingInfo.cs
Normal file
105
SVSim.BattleEngine/Engine/DamageClippingInfo.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
public class DamageClippingInfo
|
||||
{
|
||||
private ISkillParameterSelectFilter _maxFilter;
|
||||
|
||||
private ISkillParameterSelectFilter _minFilter;
|
||||
|
||||
private int _clippingMaxRange = -1;
|
||||
|
||||
private int _clippingMinRange = -1;
|
||||
|
||||
public int ClippingMax { get; private set; }
|
||||
|
||||
public int LifeLowerLimit { get; private set; } = -1;
|
||||
|
||||
public int ClippingRangeMax(List<BattleCardBase> cards)
|
||||
{
|
||||
if (_maxFilter != null)
|
||||
{
|
||||
return _maxFilter.Filtering(cards).FirstOrDefault();
|
||||
}
|
||||
return _clippingMaxRange;
|
||||
}
|
||||
|
||||
public int ClippingRangeMin(List<BattleCardBase> cards)
|
||||
{
|
||||
if (_minFilter != null)
|
||||
{
|
||||
return _minFilter.Filtering(cards).FirstOrDefault();
|
||||
}
|
||||
return _clippingMaxRange;
|
||||
}
|
||||
|
||||
public bool IsClipping(BattleCardBase card, int value)
|
||||
{
|
||||
bool flag = _maxFilter != null || _clippingMaxRange != -1;
|
||||
bool flag2 = _minFilter != null || _clippingMinRange != -1;
|
||||
if (!flag && !flag2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
List<BattleCardBase> cards = new List<BattleCardBase> { card };
|
||||
if (!flag || value <= ClippingRangeMax(cards))
|
||||
{
|
||||
if (flag2)
|
||||
{
|
||||
return ClippingRangeMin(cards) <= value;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public DamageClippingInfo(int clippingMax, string maxRange, string minRange, int lifeLowerLimit)
|
||||
{
|
||||
ClippingMax = clippingMax;
|
||||
LifeLowerLimit = lifeLowerLimit;
|
||||
if (maxRange == null)
|
||||
{
|
||||
goto IL_0054;
|
||||
}
|
||||
if (!(maxRange == "self_life"))
|
||||
{
|
||||
if (maxRange == null || maxRange.Length != 0)
|
||||
{
|
||||
goto IL_0054;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_maxFilter = new SkillParameterSelectLifeFilter();
|
||||
}
|
||||
goto IL_0060;
|
||||
IL_0060:
|
||||
if (minRange != null)
|
||||
{
|
||||
if (minRange == "self_life")
|
||||
{
|
||||
_minFilter = new SkillParameterSelectLifeFilter();
|
||||
return;
|
||||
}
|
||||
if (minRange != null && minRange.Length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
_clippingMinRange = int.Parse(minRange);
|
||||
return;
|
||||
IL_0054:
|
||||
_clippingMaxRange = int.Parse(maxRange);
|
||||
goto IL_0060;
|
||||
}
|
||||
|
||||
public bool CheckMaxFilter(Type filterType)
|
||||
{
|
||||
if (_maxFilter != null)
|
||||
{
|
||||
return filterType == _maxFilter.GetType();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
24
SVSim.BattleEngine/Engine/DamageCutInfo.cs
Normal file
24
SVSim.BattleEngine/Engine/DamageCutInfo.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
public class DamageCutInfo
|
||||
{
|
||||
public enum DamageType
|
||||
{
|
||||
ALL,
|
||||
SKILL
|
||||
}
|
||||
|
||||
public int CutAmount { get; private set; }
|
||||
|
||||
public DamageType Type { get; private set; }
|
||||
|
||||
public BattleCardBase OwnerCard { get; private set; }
|
||||
|
||||
public string DuplicateBanSkillNum { get; private set; }
|
||||
|
||||
public DamageCutInfo(int amount, DamageType type, BattleCardBase ownerCard, string _duplicateBanSkillNum)
|
||||
{
|
||||
CutAmount = amount;
|
||||
Type = type;
|
||||
OwnerCard = ownerCard;
|
||||
DuplicateBanSkillNum = _duplicateBanSkillNum;
|
||||
}
|
||||
}
|
||||
44
SVSim.BattleEngine/Engine/DamageInfo.cs
Normal file
44
SVSim.BattleEngine/Engine/DamageInfo.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
public class DamageInfo
|
||||
{
|
||||
public const string DAMAGE_BATTLE = "battle";
|
||||
|
||||
public const string DAMAGE_UNIT = "unit";
|
||||
|
||||
public const string DAMAGE_SPELL = "spell";
|
||||
|
||||
public const string DAMAGE_FIELD = "field";
|
||||
|
||||
public SkillBase Skill { get; private set; }
|
||||
|
||||
public int Damage { get; private set; }
|
||||
|
||||
public string DamageKind
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Skill == null)
|
||||
{
|
||||
return "battle";
|
||||
}
|
||||
if (Skill.SkillPrm.ownerCard.IsUnit)
|
||||
{
|
||||
return "unit";
|
||||
}
|
||||
if (Skill.SkillPrm.ownerCard.IsSpell)
|
||||
{
|
||||
return "spell";
|
||||
}
|
||||
if (Skill.SkillPrm.ownerCard.IsField)
|
||||
{
|
||||
return "field";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public DamageInfo(SkillBase skill, int damage)
|
||||
{
|
||||
Skill = skill;
|
||||
Damage = damage;
|
||||
}
|
||||
}
|
||||
38
SVSim.BattleEngine/Engine/DamageModifier.cs
Normal file
38
SVSim.BattleEngine/Engine/DamageModifier.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class DamageModifier
|
||||
{
|
||||
public List<string> DamageType { get; protected set; }
|
||||
|
||||
public List<CardBasePrm.ClanType> DamageClan { get; protected set; }
|
||||
|
||||
public bool IsUseClass { get; protected set; }
|
||||
|
||||
public int OrderCount { get; protected set; }
|
||||
|
||||
public virtual int Calc(int damage)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public bool IsEffective(string damageType, CardBasePrm.ClanType damageClan, bool isUseClass)
|
||||
{
|
||||
if (isUseClass != IsUseClass)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (IsUseClass)
|
||||
{
|
||||
if (DamageType.Contains(damageType) || DamageType.Contains("_OPT_NULL_"))
|
||||
{
|
||||
if (!DamageClan.Contains(damageClan))
|
||||
{
|
||||
return DamageClan.Contains(CardBasePrm.ClanType.NONE);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
1381
SVSim.BattleEngine/Engine/DataMgr.cs
Normal file
1381
SVSim.BattleEngine/Engine/DataMgr.cs
Normal file
File diff suppressed because it is too large
Load Diff
577
SVSim.BattleEngine/Engine/DeckData.cs
Normal file
577
SVSim.BattleEngine/Engine/DeckData.cs
Normal file
@@ -0,0 +1,577 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using LitJson;
|
||||
using Wizard;
|
||||
|
||||
public class DeckData
|
||||
{
|
||||
public enum UnusableReason
|
||||
{
|
||||
None,
|
||||
MaintenanceCard,
|
||||
FormatRestrictCard,
|
||||
TooLittleCards,
|
||||
TooMuchCards,
|
||||
NonPossessionCard,
|
||||
ShortageMainClassCards,
|
||||
ShortageSubClassCards,
|
||||
ShortageBothClassCards,
|
||||
Unknown
|
||||
}
|
||||
|
||||
public const int DEFAULT_DECK_ID_OFFSET = 90;
|
||||
|
||||
private const string LEADER_SKIN_ID_KEY = "leader_skin_id";
|
||||
|
||||
public const string CARD_ID_ARRAY_KEY = "card_id_array";
|
||||
|
||||
public const int DEFAULT_SLEEVE_ID = 3000011;
|
||||
|
||||
public const int UNSET_SKIN_ID = 0;
|
||||
|
||||
private int _deckId;
|
||||
|
||||
private string _deckName;
|
||||
|
||||
private bool _isComplete;
|
||||
|
||||
private int _deckClassId;
|
||||
|
||||
private int _deckSubClassId = 10;
|
||||
|
||||
private long _sleeveId;
|
||||
|
||||
private int _skinId;
|
||||
|
||||
private List<int> _cardIdList;
|
||||
|
||||
public Format Format { get; private set; }
|
||||
|
||||
public bool IsFormatRestrictError { get; set; }
|
||||
|
||||
public bool IsMaintenanceDeck { get; set; }
|
||||
|
||||
public Format DeckCopyFormat { get; private set; }
|
||||
|
||||
public bool IsRecommend { get; private set; }
|
||||
|
||||
public bool IsContainsNonPossessionCard { get; private set; }
|
||||
|
||||
public bool IsSkinRandom { get; set; }
|
||||
|
||||
public List<int> SelectRandomSkinIdList { get; set; }
|
||||
|
||||
public bool IsReplaceDeckSkin { get; set; }
|
||||
|
||||
public DeckAttributeType DeckAttributeType { get; private set; }
|
||||
|
||||
public DateTime? CreatedTime { get; private set; }
|
||||
|
||||
public string MyRotationId { get; set; }
|
||||
|
||||
public string RotationId { get; set; }
|
||||
|
||||
public bool IsRentalDeck
|
||||
{
|
||||
get
|
||||
{
|
||||
DeckAttributeType deckAttributeType = DeckAttributeType;
|
||||
if ((uint)(deckAttributeType - 2) <= 3u)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsOutOfRotationFormat
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Format == Format.Rotation || Format == Format.PreRotation)
|
||||
{
|
||||
return DeckCopyFormat == Format.Unlimited;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public DeckData(Format format = Format.Max, DeckAttributeType deckAttributeType = DeckAttributeType.Invalid)
|
||||
{
|
||||
_skinId = 0;
|
||||
Format = format;
|
||||
DeckCopyFormat = format;
|
||||
DeckAttributeType = deckAttributeType;
|
||||
}
|
||||
|
||||
public DeckData Clone()
|
||||
{
|
||||
return (DeckData)MemberwiseClone();
|
||||
}
|
||||
|
||||
public void SetDeckID(int deckId)
|
||||
{
|
||||
_deckId = deckId;
|
||||
}
|
||||
|
||||
public void SetDeckName(string deckName)
|
||||
{
|
||||
_deckName = deckName;
|
||||
}
|
||||
|
||||
public void SetDeckIsComplete(bool isComplete)
|
||||
{
|
||||
_isComplete = isComplete;
|
||||
}
|
||||
|
||||
public void SetDeckClassID(int deckClassId)
|
||||
{
|
||||
_deckClassId = deckClassId;
|
||||
}
|
||||
|
||||
public void SetDeckSubClassID(int deckSubClassId)
|
||||
{
|
||||
_deckSubClassId = deckSubClassId;
|
||||
}
|
||||
|
||||
public void SetDeckSleeveID(long sleeveId)
|
||||
{
|
||||
_sleeveId = DataMgr.GetAbleSleeveId(sleeveId);
|
||||
}
|
||||
|
||||
public void SetCardIdList(List<int> cardIdList)
|
||||
{
|
||||
_cardIdList = cardIdList;
|
||||
}
|
||||
|
||||
public void SetEmptyCardIdList()
|
||||
{
|
||||
_cardIdList = new List<int>();
|
||||
}
|
||||
|
||||
public void SetSkinId(int skinId)
|
||||
{
|
||||
_skinId = skinId;
|
||||
}
|
||||
|
||||
public int GetDeckID()
|
||||
{
|
||||
return _deckId;
|
||||
}
|
||||
|
||||
public string GetDeckName()
|
||||
{
|
||||
return _deckName;
|
||||
}
|
||||
|
||||
public bool GetDeckIsComplete()
|
||||
{
|
||||
return _isComplete;
|
||||
}
|
||||
|
||||
private UnusableReason GetUnusableReason()
|
||||
{
|
||||
if (IsMaintenanceDeck)
|
||||
{
|
||||
return UnusableReason.MaintenanceCard;
|
||||
}
|
||||
if (IsFormatRestrictError)
|
||||
{
|
||||
return UnusableReason.FormatRestrictCard;
|
||||
}
|
||||
if (!_isComplete)
|
||||
{
|
||||
int num = ((_cardIdList != null) ? _cardIdList.Count : 0);
|
||||
if (num < 40)
|
||||
{
|
||||
return UnusableReason.TooLittleCards;
|
||||
}
|
||||
if (num > 40)
|
||||
{
|
||||
return UnusableReason.TooMuchCards;
|
||||
}
|
||||
if (Format == Format.Crossover && _cardIdList != null)
|
||||
{
|
||||
CardMaster cardMaster = CardMaster.GetInstance(FormatBehaviorManager.GetDefaultBehaviour(Format).CardMasterId);
|
||||
CardBasePrm.ClanType mainClass = (CardBasePrm.ClanType)_deckClassId;
|
||||
CardBasePrm.ClanType subClass = (CardBasePrm.ClanType)_deckSubClassId;
|
||||
bool num2 = _cardIdList.Count((int cardId) => cardMaster.GetCardParameterFromId(cardId).Clan == mainClass) < 24;
|
||||
bool flag = _cardIdList.Count((int cardId) => cardMaster.GetCardParameterFromId(cardId).Clan == subClass) < 9;
|
||||
if (num2)
|
||||
{
|
||||
if (!flag)
|
||||
{
|
||||
return UnusableReason.ShortageMainClassCards;
|
||||
}
|
||||
return UnusableReason.ShortageBothClassCards;
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
return UnusableReason.ShortageSubClassCards;
|
||||
}
|
||||
}
|
||||
return UnusableReason.Unknown;
|
||||
}
|
||||
if (IsContainsNonPossessionCard)
|
||||
{
|
||||
return UnusableReason.NonPossessionCard;
|
||||
}
|
||||
return UnusableReason.None;
|
||||
}
|
||||
|
||||
public static bool ContainsNonPossessionCard(IEnumerable<int> cardIdList, IFormatBehavior formatBehavior)
|
||||
{
|
||||
return cardIdList.Distinct().Any((int id) => cardIdList.Count((int i) => i == id) > formatBehavior.GetPossessionCardNum(id, isIncludingSpotCard: true));
|
||||
}
|
||||
|
||||
public bool IsUsable(out UnusableReason reason, bool canUseNonPossessionCard = false)
|
||||
{
|
||||
reason = GetUnusableReason();
|
||||
if (canUseNonPossessionCard && reason == UnusableReason.NonPossessionCard)
|
||||
{
|
||||
reason = UnusableReason.None;
|
||||
}
|
||||
return reason == UnusableReason.None;
|
||||
}
|
||||
|
||||
public bool IsUsable(bool canUseNonPossessionCard = false)
|
||||
{
|
||||
UnusableReason reason;
|
||||
return IsUsable(out reason, canUseNonPossessionCard);
|
||||
}
|
||||
|
||||
public bool IsDisplayable()
|
||||
{
|
||||
if (!IsUsable())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Dictionary<int, int> cardNumDict = GetCardNumDict();
|
||||
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
|
||||
foreach (KeyValuePair<int, int> item in cardNumDict)
|
||||
{
|
||||
int possessionCardNum = dataMgr.GetPossessionCardNum(item.Key, isIncludingSpotCard: true);
|
||||
if (possessionCardNum == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (item.Value > possessionCardNum)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool HasResurgentCard()
|
||||
{
|
||||
foreach (int cardId in _cardIdList)
|
||||
{
|
||||
if (CardMaster.GetInstance(FormatBehaviorManager.GetDefaultBehaviour(Format).CardMasterId).GetCardParameterFromId(cardId).IsResurgentCard)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public int GetDeckClassID()
|
||||
{
|
||||
return _deckClassId;
|
||||
}
|
||||
|
||||
public int GetDeckSubClassID()
|
||||
{
|
||||
return _deckSubClassId;
|
||||
}
|
||||
|
||||
public long GetDeckSleeveID()
|
||||
{
|
||||
return DataMgr.GetAbleSleeveId(_sleeveId);
|
||||
}
|
||||
|
||||
public List<int> GetCardIdList()
|
||||
{
|
||||
return _cardIdList;
|
||||
}
|
||||
|
||||
public void ExtractMainClassAndNeutralCards()
|
||||
{
|
||||
CardMaster instance = CardMaster.GetInstance(FormatBehaviorManager.GetDefaultBehaviour(Format).CardMasterId);
|
||||
CardBasePrm.ClanType deckClassId = (CardBasePrm.ClanType)_deckClassId;
|
||||
List<int> list = new List<int>();
|
||||
foreach (int cardId in _cardIdList)
|
||||
{
|
||||
CardBasePrm.ClanType clan = instance.GetCardParameterFromId(cardId).Clan;
|
||||
if (clan == deckClassId || clan == CardBasePrm.ClanType.ALL)
|
||||
{
|
||||
list.Add(cardId);
|
||||
}
|
||||
}
|
||||
_cardIdList = list;
|
||||
}
|
||||
|
||||
public Dictionary<int, int> GetCardNumDict()
|
||||
{
|
||||
Dictionary<int, int> dictionary = new Dictionary<int, int>();
|
||||
if (IsNoCard())
|
||||
{
|
||||
return dictionary;
|
||||
}
|
||||
for (int i = 0; i < _cardIdList.Count; i++)
|
||||
{
|
||||
int key = _cardIdList[i];
|
||||
if (dictionary.ContainsKey(key))
|
||||
{
|
||||
dictionary[key]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
dictionary.Add(key, 1);
|
||||
}
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
public bool IsNoCard()
|
||||
{
|
||||
return _cardIdList == null;
|
||||
}
|
||||
|
||||
public bool IsDefaultDeck()
|
||||
{
|
||||
return IsDeckAttributeMatch(DeckAttributeType.DefaultDeck);
|
||||
}
|
||||
|
||||
public bool IsDeckAttributeMatch(DeckAttributeType deckAttributeType)
|
||||
{
|
||||
return deckAttributeType == DeckAttributeType;
|
||||
}
|
||||
|
||||
public int GetRawSkinId()
|
||||
{
|
||||
return _skinId;
|
||||
}
|
||||
|
||||
public int GetSkinId(bool isDefaultSkin = false)
|
||||
{
|
||||
if (isDefaultSkin)
|
||||
{
|
||||
return GameMgr.GetIns().GetDataMgr().GetCharaPrmByClassId(GetDeckClassID(), isCurrentChara: false)
|
||||
.skin_id;
|
||||
}
|
||||
if (_skinId == 0)
|
||||
{
|
||||
return GameMgr.GetIns().GetDataMgr().GetCharaPrmByClassId(GetDeckClassID())
|
||||
.skin_id;
|
||||
}
|
||||
return _skinId;
|
||||
}
|
||||
|
||||
private int GetJsonInt(JsonData deckData, string key, int defaultValue)
|
||||
{
|
||||
if (deckData.Keys.Contains(key))
|
||||
{
|
||||
return deckData[key].ToInt();
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
private string GetJsonString(JsonData deckData, string key, string defaultValue)
|
||||
{
|
||||
if (deckData.Keys.Contains(key))
|
||||
{
|
||||
return deckData[key].ToString();
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
private bool GetJsonBool(JsonData deckData, string key, bool defaultValue)
|
||||
{
|
||||
if (deckData.Keys.Contains(key))
|
||||
{
|
||||
return deckData[key].ToBoolean();
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public void Initialize(JsonData deckData)
|
||||
{
|
||||
SetDeckID(GetJsonInt(deckData, "deck_no", 0));
|
||||
if (deckData.Keys.Contains("format"))
|
||||
{
|
||||
Format = Data.ParseApiFormat(deckData["format"].ToInt());
|
||||
}
|
||||
SetDeckName(deckData["deck_name"].ToString());
|
||||
SetDeckIsComplete(GetJsonBool(deckData, "is_complete_deck", defaultValue: true));
|
||||
IsContainsNonPossessionCard = GetJsonBool(deckData, "is_include_un_possession_card", defaultValue: false);
|
||||
SetDeckClassID(deckData["class_id"].ToInt());
|
||||
if (FormatBehaviorManager.GetDefaultBehaviour(Format).UseSubClass)
|
||||
{
|
||||
int valueOrDefault = deckData.GetValueOrDefault("sub_class_id", 10);
|
||||
_deckSubClassId = ((valueOrDefault == 0) ? 10 : valueOrDefault);
|
||||
}
|
||||
if (deckData.TryGetValue("sleeve_id", out var value))
|
||||
{
|
||||
SetDeckSleeveID(value.ToLong());
|
||||
}
|
||||
else
|
||||
{
|
||||
_sleeveId = 3000011L;
|
||||
}
|
||||
if (deckData.Keys.Contains("leader_skin_id"))
|
||||
{
|
||||
SetSkinId(deckData["leader_skin_id"].ToInt());
|
||||
}
|
||||
if (deckData.Keys.Contains("restricted_card_exists"))
|
||||
{
|
||||
IsFormatRestrictError = deckData["restricted_card_exists"].ToBoolean();
|
||||
}
|
||||
if (deckData.Keys.Contains("current_format"))
|
||||
{
|
||||
DeckCopyFormat = Data.ParseApiFormat(deckData["current_format"].ToInt());
|
||||
}
|
||||
else
|
||||
{
|
||||
DeckCopyFormat = Format;
|
||||
}
|
||||
if (deckData.Keys.Contains("is_recommend"))
|
||||
{
|
||||
IsRecommend = deckData["is_recommend"].ToInt() == 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsRecommend = false;
|
||||
}
|
||||
if (deckData.TryGetValue("create_deck_time", out var value2) && value2 != null)
|
||||
{
|
||||
CreatedTime = DateTime.Parse($"{value2}");
|
||||
}
|
||||
ParseCardIdList(deckData);
|
||||
MyRotationId = deckData.GetValueOrDefault("rotation_id", null);
|
||||
RotationId = MyRotationId;
|
||||
if (Data.MyRotationAllInfo.Get(MyRotationId) == null)
|
||||
{
|
||||
MyRotationId = null;
|
||||
}
|
||||
IsSkinRandom = deckData.GetValueOrDefault("is_random_leader_skin", 0) == 1;
|
||||
SelectRandomSkinIdList = new List<int>();
|
||||
if (deckData.Keys.Contains("leader_skin_id_list"))
|
||||
{
|
||||
JsonData jsonData = deckData["leader_skin_id_list"];
|
||||
for (int i = 0; i < jsonData.Count; i++)
|
||||
{
|
||||
SelectRandomSkinIdList.Add(jsonData[i].ToInt());
|
||||
}
|
||||
SelectRandomSkinIdList.Sort();
|
||||
}
|
||||
MaintenanceCardCheack();
|
||||
}
|
||||
|
||||
public void ParseCardIdList(JsonData deckData)
|
||||
{
|
||||
JsonData jsonData = deckData["card_id_array"];
|
||||
List<int> cardIdList = null;
|
||||
int count = jsonData.Count;
|
||||
if (count > 0)
|
||||
{
|
||||
cardIdList = new List<int>();
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
cardIdList.Add(jsonData[i].ToInt());
|
||||
}
|
||||
cardIdList = UIManager.GetInstance().getUIBase_CardManager().SortIDList(cardIdList, FormatBehaviorManager.GetDefaultBehaviour(Format).CardMasterId);
|
||||
}
|
||||
SetCardIdList(cardIdList);
|
||||
}
|
||||
|
||||
public void MaintenanceCardCheack()
|
||||
{
|
||||
IsMaintenanceDeck = false;
|
||||
if (_cardIdList != null)
|
||||
{
|
||||
IsMaintenanceDeck = _cardIdList.Any((int c) => GameMgr.GetIns().GetDataMgr().IsMaintenanceCard(c));
|
||||
}
|
||||
}
|
||||
|
||||
public string GetMyRotationClassName()
|
||||
{
|
||||
MyRotationInfo info = Data.MyRotationAllInfo.Get(MyRotationId);
|
||||
return CreateMyRotationClassName(_deckClassId, info);
|
||||
}
|
||||
|
||||
public static string GetClassName(int classType, string rotationId)
|
||||
{
|
||||
MyRotationInfo myRotationInfo = Data.MyRotationAllInfo.Get(rotationId);
|
||||
if (myRotationInfo != null)
|
||||
{
|
||||
return CreateMyRotationClassName(classType, myRotationInfo);
|
||||
}
|
||||
return GameMgr.GetIns().GetDataMgr().GetClanNameByKey(classType);
|
||||
}
|
||||
|
||||
public static string CreateMyRotationClassName(int classType, MyRotationInfo info)
|
||||
{
|
||||
return Data.SystemText.Get("MyRotation_ID_02", GameMgr.GetIns().GetDataMgr().GetClanNameByKey(classType), info.LastPackText);
|
||||
}
|
||||
|
||||
public bool IsVisibleRandomIcon()
|
||||
{
|
||||
if (IsReplaceDeckSkin)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (IsSkinRandom)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (GameMgr.GetIns().GetDataMgr().GetClassPrm(GetDeckClassID())
|
||||
.IsRandomLeaderSkin)
|
||||
{
|
||||
return _skinId == 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public MyRotationInfo GetMyRotationInfoFromCardList()
|
||||
{
|
||||
int num = int.MinValue;
|
||||
MyRotationInfo result = null;
|
||||
CardMaster instance = CardMaster.GetInstance(FormatBehaviorManager.GetDefaultBehaviour(Format.MyRotation).CardMasterId);
|
||||
foreach (int cardId in GetCardIdList())
|
||||
{
|
||||
CardParameter cardParameterFromId = instance.GetCardParameterFromId(cardId);
|
||||
MyRotationInfo myRotationInfoFromPack = GetMyRotationInfoFromPack(cardParameterFromId.CardSetId);
|
||||
if (myRotationInfoFromPack != null && int.Parse(myRotationInfoFromPack.Id) >= num)
|
||||
{
|
||||
result = myRotationInfoFromPack;
|
||||
num = int.Parse(myRotationInfoFromPack.Id);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public MyRotationInfo GetMyRotationInfoFromPack(string packId)
|
||||
{
|
||||
int num = int.MinValue;
|
||||
MyRotationInfo myRotationInfo = null;
|
||||
foreach (MyRotationInfo myRotationInfo2 in Data.MyRotationAllInfo.MyRotationInfoList)
|
||||
{
|
||||
if (!(packId != myRotationInfo2.LastPackId) && int.Parse(myRotationInfo2.Id) >= num)
|
||||
{
|
||||
num = int.Parse(myRotationInfo2.Id);
|
||||
myRotationInfo = myRotationInfo2;
|
||||
}
|
||||
}
|
||||
if (myRotationInfo == null)
|
||||
{
|
||||
if (GetDeckClassID() != 8)
|
||||
{
|
||||
return Data.MyRotationAllInfo.FirstPackInfo;
|
||||
}
|
||||
return Data.MyRotationAllInfo.FirstPackInfoNemesis;
|
||||
}
|
||||
return myRotationInfo;
|
||||
}
|
||||
}
|
||||
105
SVSim.BattleEngine/Engine/DetailMgr.cs
Normal file
105
SVSim.BattleEngine/Engine/DetailMgr.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class DetailMgr
|
||||
{
|
||||
public GameObject DetailNormal;
|
||||
|
||||
public LODGroup DetailNormalLodGroup;
|
||||
|
||||
public MeshRenderer DetailNormalBaseMesh;
|
||||
|
||||
public UILabel DetailNormalCostLabel;
|
||||
|
||||
public UILabel DetailNormalAtkLabel;
|
||||
|
||||
public UILabel DetailNormalLifeLabel;
|
||||
|
||||
public UILabel DetailNormalNameLabel;
|
||||
|
||||
public GameObject DetailSkill;
|
||||
|
||||
public MeshRenderer DetailSkillBaseMesh;
|
||||
|
||||
public LODGroup DetailSkillLodGroup;
|
||||
|
||||
public UILabel DetailSkillCostLabel;
|
||||
|
||||
public UILabel DetailSkillNameLabel;
|
||||
|
||||
public GameObject DetailField;
|
||||
|
||||
public MeshRenderer DetailFieldBaseMesh;
|
||||
|
||||
public LODGroup DetailFieldLodGroup;
|
||||
|
||||
public UILabel DetailFieldCostLabel;
|
||||
|
||||
public UILabel DetailFieldNameLabel;
|
||||
|
||||
public GameObject DetailPanel;
|
||||
|
||||
public IDetailPanelControl DetailPanelControl;
|
||||
|
||||
public GameObject SubDetailPanel;
|
||||
|
||||
public DetailPanelControl SubDetailPanelControl;
|
||||
|
||||
public DetailMgr()
|
||||
{
|
||||
DetailNormal = null;
|
||||
DetailNormalLodGroup = null;
|
||||
DetailNormalBaseMesh = null;
|
||||
DetailNormalCostLabel = null;
|
||||
DetailNormalAtkLabel = null;
|
||||
DetailNormalLifeLabel = null;
|
||||
DetailNormalNameLabel = null;
|
||||
DetailSkill = null;
|
||||
DetailSkillBaseMesh = null;
|
||||
DetailSkillLodGroup = null;
|
||||
DetailSkillCostLabel = null;
|
||||
DetailSkillNameLabel = null;
|
||||
DetailField = null;
|
||||
DetailFieldBaseMesh = null;
|
||||
DetailFieldLodGroup = null;
|
||||
DetailFieldCostLabel = null;
|
||||
DetailFieldNameLabel = null;
|
||||
DetailPanel = null;
|
||||
DetailPanelControl = null;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DetailPanel = null;
|
||||
DetailPanelControl = null;
|
||||
}
|
||||
|
||||
public static Camera GetCamera()
|
||||
{
|
||||
return UIManager.GetInstance().UIRootLoadingCamera;
|
||||
}
|
||||
|
||||
public void HideDetailPanel(BattleCardBase card)
|
||||
{
|
||||
if (card.IsSpell)
|
||||
{
|
||||
DetailSkill.SetActive(value: false);
|
||||
}
|
||||
else if (card.IsField)
|
||||
{
|
||||
DetailField.SetActive(value: false);
|
||||
}
|
||||
else
|
||||
{
|
||||
DetailNormal.SetActive(value: false);
|
||||
}
|
||||
DetailPanelControl.Hide();
|
||||
DetailPanelControl.SetScreenPosition(right: false);
|
||||
card = null;
|
||||
}
|
||||
|
||||
public void HideSubDetailPanel(BattleCardBase card)
|
||||
{
|
||||
SubDetailPanelControl.Hide();
|
||||
SubDetailPanelControl.SetScreenPosition(right: false);
|
||||
}
|
||||
}
|
||||
2261
SVSim.BattleEngine/Engine/DetailPanelControl.cs
Normal file
2261
SVSim.BattleEngine/Engine/DetailPanelControl.cs
Normal file
File diff suppressed because it is too large
Load Diff
1689
SVSim.BattleEngine/Engine/DialogBase.cs
Normal file
1689
SVSim.BattleEngine/Engine/DialogBase.cs
Normal file
File diff suppressed because it is too large
Load Diff
48
SVSim.BattleEngine/Engine/DisconnectToDispChecker.cs
Normal file
48
SVSim.BattleEngine/Engine/DisconnectToDispChecker.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using Cute;
|
||||
|
||||
public class DisconnectToDispChecker : NetworkBattleIntervalCheckerBase
|
||||
{
|
||||
private const float DISP_DISCONNECT_INTERVAL = 16f;
|
||||
|
||||
public bool isDisp;
|
||||
|
||||
public event Action OnDisp;
|
||||
|
||||
public event Action OnErase;
|
||||
|
||||
public void EraseDisp()
|
||||
{
|
||||
if (isDisp)
|
||||
{
|
||||
this.OnErase.Call();
|
||||
isDisp = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void IntervalCheck()
|
||||
{
|
||||
base.IntervalCheck();
|
||||
if ((float)NetworkUtility.GetTimeSpanSecond(base.startTick) >= 16f)
|
||||
{
|
||||
DisconnectDisp();
|
||||
}
|
||||
}
|
||||
|
||||
private void DisconnectDisp()
|
||||
{
|
||||
this.OnDisp.Call();
|
||||
isDisp = true;
|
||||
StopChecker();
|
||||
}
|
||||
|
||||
public void DebugDisconnectDisp(int cardId)
|
||||
{
|
||||
}
|
||||
|
||||
public override void FinishChecker()
|
||||
{
|
||||
base.FinishChecker();
|
||||
EraseDisp();
|
||||
}
|
||||
}
|
||||
114
SVSim.BattleEngine/Engine/DisconnectToLoseChecker.cs
Normal file
114
SVSim.BattleEngine/Engine/DisconnectToLoseChecker.cs
Normal file
@@ -0,0 +1,114 @@
|
||||
using System;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
|
||||
public class DisconnectToLoseChecker : NetworkBattleIntervalCheckerBase
|
||||
{
|
||||
private const float DISCONNECT_LOSE_INTERVAL = 125f;
|
||||
|
||||
private const float DISCONNECT_CHECK_INTERVAL = 65f;
|
||||
|
||||
private const float DISCONNECT_INTERVAL = 10f;
|
||||
|
||||
private const float SOCKET_REPLACE_INTERVAL = 50f;
|
||||
|
||||
private bool _isAlreadyTriedSocketReplace;
|
||||
|
||||
private bool _isSocketOpenDisconnectLog;
|
||||
|
||||
public event Action OnDisconnectLose;
|
||||
|
||||
public event Action OnBeforeDisconnectLose;
|
||||
|
||||
public event Action OnDisconnectCheck;
|
||||
|
||||
public bool IsDisconnect()
|
||||
{
|
||||
if (!base.isStop && ((float)GetDisconnectTime() >= 10f || Application.internetReachability == NetworkReachability.NotReachable))
|
||||
{
|
||||
LocalLog.SetDisconnectLog("IsDisconnect time" + GetDisconnectTime() + "internetReachability" + Application.internetReachability);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool IsSelfDisconnectLose()
|
||||
{
|
||||
if (IsSelfDisConnectOnTimeout() || ToolboxGame.RealTimeNetworkAgent.IsReceiveSelfDisconnect)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool IsSelfDisConnectOnTimeout()
|
||||
{
|
||||
if ((float)GetDisconnectTime() >= 125f)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool IsSelfDisconnectLoseCheck()
|
||||
{
|
||||
if ((float)GetDisconnectTime() >= 65f)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void StopChecker()
|
||||
{
|
||||
base.StopChecker();
|
||||
}
|
||||
|
||||
public override void StartChecker(string log = "")
|
||||
{
|
||||
if (!IsSelfDisconnectLose())
|
||||
{
|
||||
if (IsSelfDisconnectLoseCheck())
|
||||
{
|
||||
this.OnDisconnectCheck.Call();
|
||||
}
|
||||
base.StartChecker();
|
||||
}
|
||||
if (_isAlreadyTriedSocketReplace)
|
||||
{
|
||||
if (this.OnBeforeDisconnectLose != null)
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("SocketReplace Success");
|
||||
}
|
||||
_isAlreadyTriedSocketReplace = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void IntervalCheck()
|
||||
{
|
||||
base.IntervalCheck();
|
||||
if (!_isAlreadyTriedSocketReplace && (float)GetDisconnectTime() >= 50f)
|
||||
{
|
||||
if (!_isSocketOpenDisconnectLog && ToolboxGame.RealTimeNetworkAgent != null && ToolboxGame.RealTimeNetworkAgent.IsOpen())
|
||||
{
|
||||
_isSocketOpenDisconnectLog = true;
|
||||
}
|
||||
_isAlreadyTriedSocketReplace = true;
|
||||
if (this.OnBeforeDisconnectLose != null)
|
||||
{
|
||||
this.OnBeforeDisconnectLose.Call();
|
||||
}
|
||||
}
|
||||
if (IsSelfDisconnectLose())
|
||||
{
|
||||
this.OnDisconnectLose.Call();
|
||||
StopChecker();
|
||||
}
|
||||
}
|
||||
|
||||
public int GetDisconnectTime()
|
||||
{
|
||||
return NetworkUtility.GetTimeSpanSecond(base.startTick);
|
||||
}
|
||||
}
|
||||
34
SVSim.BattleEngine/Engine/EffectBattle.cs
Normal file
34
SVSim.BattleEngine/Engine/EffectBattle.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using CriWare;
|
||||
using UnityEngine;
|
||||
|
||||
public class EffectBattle : EffectIdx
|
||||
{
|
||||
[HideInInspector]
|
||||
public EffectMgr.MoveType moveType;
|
||||
|
||||
[HideInInspector]
|
||||
public CriAtomSource ECriAtomSource;
|
||||
|
||||
private Vector3 FromPos;
|
||||
|
||||
public Animation AnimationObj;
|
||||
|
||||
[HideInInspector]
|
||||
public EffectMgr.EngineType engineType { get; set; }
|
||||
|
||||
[Obsolete]
|
||||
public void PlaySummon(BattleCardBase card, Vector3 p0)
|
||||
{
|
||||
FromPos = p0;
|
||||
base.gameObject.transform.position = FromPos;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (engineType == EffectMgr.EngineType.SOLID && AnimationObj == null)
|
||||
{
|
||||
AnimationObj = base.transform.GetComponentInChildren<Animation>();
|
||||
}
|
||||
}
|
||||
}
|
||||
5
SVSim.BattleEngine/Engine/EffectIdx.cs
Normal file
5
SVSim.BattleEngine/Engine/EffectIdx.cs
Normal file
@@ -0,0 +1,5 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class EffectIdx : MonoBehaviour
|
||||
{
|
||||
}
|
||||
688
SVSim.BattleEngine/Engine/EventDelegate.cs
Normal file
688
SVSim.BattleEngine/Engine/EventDelegate.cs
Normal file
@@ -0,0 +1,688 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
|
||||
[Serializable]
|
||||
public class EventDelegate
|
||||
{
|
||||
[Serializable]
|
||||
public class Parameter
|
||||
{
|
||||
public UnityEngine.Object obj;
|
||||
|
||||
public string field;
|
||||
|
||||
[NonSerialized]
|
||||
private object mValue;
|
||||
|
||||
[NonSerialized]
|
||||
public Type expectedType = typeof(void);
|
||||
|
||||
[NonSerialized]
|
||||
public bool cached;
|
||||
|
||||
[NonSerialized]
|
||||
public PropertyInfo propInfo;
|
||||
|
||||
[NonSerialized]
|
||||
public FieldInfo fieldInfo;
|
||||
|
||||
public object value
|
||||
{
|
||||
get
|
||||
{
|
||||
if (mValue != null)
|
||||
{
|
||||
return mValue;
|
||||
}
|
||||
if (!cached)
|
||||
{
|
||||
cached = true;
|
||||
fieldInfo = null;
|
||||
propInfo = null;
|
||||
if (obj != null && !string.IsNullOrEmpty(field))
|
||||
{
|
||||
Type type = obj.GetType();
|
||||
propInfo = type.GetProperty(field);
|
||||
if (propInfo == null)
|
||||
{
|
||||
fieldInfo = type.GetField(field);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (propInfo != null)
|
||||
{
|
||||
return propInfo.GetValue(obj, null);
|
||||
}
|
||||
if (fieldInfo != null)
|
||||
{
|
||||
return fieldInfo.GetValue(obj);
|
||||
}
|
||||
if (obj != null)
|
||||
{
|
||||
return obj;
|
||||
}
|
||||
if (expectedType != null && expectedType.IsValueType)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return Convert.ChangeType(null, expectedType);
|
||||
}
|
||||
set
|
||||
{
|
||||
mValue = value;
|
||||
}
|
||||
}
|
||||
|
||||
public Type type
|
||||
{
|
||||
get
|
||||
{
|
||||
if (mValue != null)
|
||||
{
|
||||
return mValue.GetType();
|
||||
}
|
||||
if (obj == null)
|
||||
{
|
||||
return typeof(void);
|
||||
}
|
||||
return obj.GetType();
|
||||
}
|
||||
}
|
||||
|
||||
public Parameter()
|
||||
{
|
||||
}
|
||||
|
||||
public Parameter(UnityEngine.Object obj, string field)
|
||||
{
|
||||
this.obj = obj;
|
||||
this.field = field;
|
||||
}
|
||||
|
||||
public Parameter(object val)
|
||||
{
|
||||
mValue = val;
|
||||
}
|
||||
}
|
||||
|
||||
public delegate void Callback();
|
||||
|
||||
[SerializeField]
|
||||
private MonoBehaviour mTarget;
|
||||
|
||||
[SerializeField]
|
||||
private string mMethodName;
|
||||
|
||||
[SerializeField]
|
||||
private Parameter[] mParameters;
|
||||
|
||||
public bool oneShot;
|
||||
|
||||
[NonSerialized]
|
||||
private Callback mCachedCallback;
|
||||
|
||||
[NonSerialized]
|
||||
private bool mRawDelegate;
|
||||
|
||||
[NonSerialized]
|
||||
private bool mCached;
|
||||
|
||||
[NonSerialized]
|
||||
private MethodInfo mMethod;
|
||||
|
||||
[NonSerialized]
|
||||
private ParameterInfo[] mParameterInfos;
|
||||
|
||||
[NonSerialized]
|
||||
private object[] mArgs;
|
||||
|
||||
private static int s_Hash = "EventDelegate".GetHashCode();
|
||||
|
||||
public MonoBehaviour target
|
||||
{
|
||||
get
|
||||
{
|
||||
return mTarget;
|
||||
}
|
||||
set
|
||||
{
|
||||
mTarget = value;
|
||||
mCachedCallback = null;
|
||||
mRawDelegate = false;
|
||||
mCached = false;
|
||||
mMethod = null;
|
||||
mParameterInfos = null;
|
||||
mParameters = null;
|
||||
}
|
||||
}
|
||||
|
||||
public string methodName
|
||||
{
|
||||
get
|
||||
{
|
||||
return mMethodName;
|
||||
}
|
||||
set
|
||||
{
|
||||
mMethodName = value;
|
||||
mCachedCallback = null;
|
||||
mRawDelegate = false;
|
||||
mCached = false;
|
||||
mMethod = null;
|
||||
mParameterInfos = null;
|
||||
mParameters = null;
|
||||
}
|
||||
}
|
||||
|
||||
public Parameter[] parameters
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!mCached)
|
||||
{
|
||||
Cache();
|
||||
}
|
||||
return mParameters;
|
||||
}
|
||||
}
|
||||
|
||||
public bool isValid
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!mCached)
|
||||
{
|
||||
Cache();
|
||||
}
|
||||
if (!mRawDelegate || mCachedCallback == null)
|
||||
{
|
||||
if (mTarget != null)
|
||||
{
|
||||
return !string.IsNullOrEmpty(mMethodName);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public bool isEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!mCached)
|
||||
{
|
||||
Cache();
|
||||
}
|
||||
if (mRawDelegate && mCachedCallback != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (mTarget == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
MonoBehaviour monoBehaviour = mTarget;
|
||||
if (!(monoBehaviour == null))
|
||||
{
|
||||
return monoBehaviour.enabled;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public EventDelegate()
|
||||
{
|
||||
}
|
||||
|
||||
public EventDelegate(Callback call)
|
||||
{
|
||||
Set(call);
|
||||
}
|
||||
|
||||
public EventDelegate(MonoBehaviour target, string methodName)
|
||||
{
|
||||
Set(target, methodName);
|
||||
}
|
||||
|
||||
private static string GetMethodName(Callback callback)
|
||||
{
|
||||
return callback.Method.Name;
|
||||
}
|
||||
|
||||
private static bool IsValid(Callback callback)
|
||||
{
|
||||
if (callback != null)
|
||||
{
|
||||
return callback.Method != null;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return !isValid;
|
||||
}
|
||||
if (obj is Callback)
|
||||
{
|
||||
Callback callback = obj as Callback;
|
||||
if (callback.Equals(mCachedCallback))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
MonoBehaviour monoBehaviour = callback.Target as MonoBehaviour;
|
||||
if (mTarget == monoBehaviour)
|
||||
{
|
||||
return string.Equals(mMethodName, GetMethodName(callback));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (obj is EventDelegate)
|
||||
{
|
||||
EventDelegate eventDelegate = obj as EventDelegate;
|
||||
if (mTarget == eventDelegate.mTarget)
|
||||
{
|
||||
return string.Equals(mMethodName, eventDelegate.mMethodName);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return s_Hash;
|
||||
}
|
||||
|
||||
private void Set(Callback call)
|
||||
{
|
||||
Clear();
|
||||
if (call != null && IsValid(call))
|
||||
{
|
||||
mTarget = call.Target as MonoBehaviour;
|
||||
if (mTarget == null)
|
||||
{
|
||||
mRawDelegate = true;
|
||||
mCachedCallback = call;
|
||||
mMethodName = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
mMethodName = GetMethodName(call);
|
||||
mRawDelegate = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Set(MonoBehaviour target, string methodName)
|
||||
{
|
||||
Clear();
|
||||
mTarget = target;
|
||||
mMethodName = methodName;
|
||||
}
|
||||
|
||||
private void Cache()
|
||||
{
|
||||
mCached = true;
|
||||
if (mRawDelegate || (mCachedCallback != null && !(mCachedCallback.Target as MonoBehaviour != mTarget) && !(GetMethodName(mCachedCallback) != mMethodName)) || !(mTarget != null) || string.IsNullOrEmpty(mMethodName))
|
||||
{
|
||||
return;
|
||||
}
|
||||
Type type = mTarget.GetType();
|
||||
mMethod = null;
|
||||
while (type != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
mMethod = type.GetMethod(mMethodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
|
||||
if (mMethod != null)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
type = type.BaseType;
|
||||
}
|
||||
if (mMethod == null)
|
||||
{
|
||||
Debug.LogError("Could not find method '" + mMethodName + "' on " + mTarget.GetType(), mTarget);
|
||||
return;
|
||||
}
|
||||
if (mMethod.ReturnType != typeof(void))
|
||||
{
|
||||
Debug.LogError(mTarget.GetType()?.ToString() + "." + mMethodName + " must have a 'void' return type.", mTarget);
|
||||
return;
|
||||
}
|
||||
mParameterInfos = mMethod.GetParameters();
|
||||
if (mParameterInfos.Length == 0)
|
||||
{
|
||||
mCachedCallback = (Callback)Delegate.CreateDelegate(typeof(Callback), mTarget, mMethodName);
|
||||
mArgs = null;
|
||||
mParameters = null;
|
||||
return;
|
||||
}
|
||||
mCachedCallback = null;
|
||||
if (mParameters == null || mParameters.Length != mParameterInfos.Length)
|
||||
{
|
||||
mParameters = new Parameter[mParameterInfos.Length];
|
||||
int i = 0;
|
||||
for (int num = mParameters.Length; i < num; i++)
|
||||
{
|
||||
mParameters[i] = new Parameter();
|
||||
}
|
||||
}
|
||||
int j = 0;
|
||||
for (int num2 = mParameters.Length; j < num2; j++)
|
||||
{
|
||||
mParameters[j].expectedType = mParameterInfos[j].ParameterType;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Execute()
|
||||
{
|
||||
if (!mCached)
|
||||
{
|
||||
Cache();
|
||||
}
|
||||
if (mCachedCallback != null)
|
||||
{
|
||||
mCachedCallback();
|
||||
return true;
|
||||
}
|
||||
if (mMethod != null)
|
||||
{
|
||||
if (mParameters == null || mParameters.Length == 0)
|
||||
{
|
||||
mMethod.Invoke(mTarget, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mArgs == null || mArgs.Length != mParameters.Length)
|
||||
{
|
||||
mArgs = new object[mParameters.Length];
|
||||
}
|
||||
int i = 0;
|
||||
for (int num = mParameters.Length; i < num; i++)
|
||||
{
|
||||
mArgs[i] = mParameters[i].value;
|
||||
}
|
||||
try
|
||||
{
|
||||
mMethod.Invoke(mTarget, mArgs);
|
||||
}
|
||||
catch (ArgumentException ex)
|
||||
{
|
||||
string text = "Error calling ";
|
||||
text = ((!(mTarget == null)) ? (text + mTarget.GetType()?.ToString() + "." + mMethod.Name) : (text + mMethod.Name));
|
||||
text = text + ": " + ex.Message;
|
||||
text += "\n Expected: ";
|
||||
if (mParameterInfos.Length == 0)
|
||||
{
|
||||
text += "no arguments";
|
||||
}
|
||||
else
|
||||
{
|
||||
text += mParameterInfos[0];
|
||||
for (int j = 1; j < mParameterInfos.Length; j++)
|
||||
{
|
||||
text = text + ", " + mParameterInfos[j].ParameterType;
|
||||
}
|
||||
}
|
||||
text += "\n Received: ";
|
||||
if (mParameters.Length == 0)
|
||||
{
|
||||
text += "no arguments";
|
||||
}
|
||||
else
|
||||
{
|
||||
text += mParameters[0].type;
|
||||
for (int k = 1; k < mParameters.Length; k++)
|
||||
{
|
||||
text = text + ", " + mParameters[k].type;
|
||||
}
|
||||
}
|
||||
text += "\n";
|
||||
Debug.LogError(text);
|
||||
}
|
||||
int l = 0;
|
||||
for (int num2 = mArgs.Length; l < num2; l++)
|
||||
{
|
||||
if (mParameterInfos[l].IsIn || mParameterInfos[l].IsOut)
|
||||
{
|
||||
mParameters[l].value = mArgs[l];
|
||||
}
|
||||
mArgs[l] = null;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
mTarget = null;
|
||||
mMethodName = null;
|
||||
mRawDelegate = false;
|
||||
mCachedCallback = null;
|
||||
mParameters = null;
|
||||
mCached = false;
|
||||
mMethod = null;
|
||||
mParameterInfos = null;
|
||||
mArgs = null;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
if (mTarget != null)
|
||||
{
|
||||
string text = mTarget.GetType().ToString();
|
||||
int num = text.LastIndexOf('.');
|
||||
if (num > 0)
|
||||
{
|
||||
text = text.Substring(num + 1);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(methodName))
|
||||
{
|
||||
return text + "/" + methodName;
|
||||
}
|
||||
return text + "/[delegate]";
|
||||
}
|
||||
if (!mRawDelegate)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return "[delegate]";
|
||||
}
|
||||
|
||||
public static void Execute(List<EventDelegate> list)
|
||||
{
|
||||
if (list == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
int num = 0;
|
||||
while (num < list.Count)
|
||||
{
|
||||
EventDelegate eventDelegate = list[num];
|
||||
if (eventDelegate != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
eventDelegate.Execute();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (ex.InnerException != null)
|
||||
{
|
||||
Debug.LogError(ex.InnerException.Message);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError(ex.Message);
|
||||
}
|
||||
}
|
||||
if (num >= list.Count)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (list[num] != eventDelegate)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (eventDelegate.oneShot)
|
||||
{
|
||||
list.RemoveAt(num);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
num++;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsValid(List<EventDelegate> list)
|
||||
{
|
||||
if (list != null)
|
||||
{
|
||||
int i = 0;
|
||||
for (int count = list.Count; i < count; i++)
|
||||
{
|
||||
EventDelegate eventDelegate = list[i];
|
||||
if (eventDelegate != null && eventDelegate.isValid)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static EventDelegate Set(List<EventDelegate> list, Callback callback)
|
||||
{
|
||||
if (list != null)
|
||||
{
|
||||
EventDelegate eventDelegate = new EventDelegate(callback);
|
||||
list.Clear();
|
||||
list.Add(eventDelegate);
|
||||
return eventDelegate;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void Set(List<EventDelegate> list, EventDelegate del)
|
||||
{
|
||||
if (list != null)
|
||||
{
|
||||
list.Clear();
|
||||
list.Add(del);
|
||||
}
|
||||
}
|
||||
|
||||
public static EventDelegate Add(List<EventDelegate> list, Callback callback)
|
||||
{
|
||||
return Add(list, callback, oneShot: false);
|
||||
}
|
||||
|
||||
public static EventDelegate Add(List<EventDelegate> list, Callback callback, bool oneShot)
|
||||
{
|
||||
if (list != null)
|
||||
{
|
||||
int i = 0;
|
||||
for (int count = list.Count; i < count; i++)
|
||||
{
|
||||
EventDelegate eventDelegate = list[i];
|
||||
if (eventDelegate != null && eventDelegate.Equals(callback))
|
||||
{
|
||||
return eventDelegate;
|
||||
}
|
||||
}
|
||||
EventDelegate eventDelegate2 = new EventDelegate(callback);
|
||||
eventDelegate2.oneShot = oneShot;
|
||||
list.Add(eventDelegate2);
|
||||
return eventDelegate2;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void Add(List<EventDelegate> list, EventDelegate ev)
|
||||
{
|
||||
Add(list, ev, ev.oneShot);
|
||||
}
|
||||
|
||||
public static void Add(List<EventDelegate> list, EventDelegate ev, bool oneShot)
|
||||
{
|
||||
if (ev.mRawDelegate || ev.target == null || string.IsNullOrEmpty(ev.methodName))
|
||||
{
|
||||
Add(list, ev.mCachedCallback, oneShot);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (list == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
int i = 0;
|
||||
for (int count = list.Count; i < count; i++)
|
||||
{
|
||||
EventDelegate eventDelegate = list[i];
|
||||
if (eventDelegate != null && eventDelegate.Equals(ev))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
EventDelegate eventDelegate2 = new EventDelegate(ev.target, ev.methodName);
|
||||
eventDelegate2.oneShot = oneShot;
|
||||
if (ev.mParameters != null && ev.mParameters.Length != 0)
|
||||
{
|
||||
eventDelegate2.mParameters = new Parameter[ev.mParameters.Length];
|
||||
for (int j = 0; j < ev.mParameters.Length; j++)
|
||||
{
|
||||
eventDelegate2.mParameters[j] = ev.mParameters[j];
|
||||
}
|
||||
}
|
||||
list.Add(eventDelegate2);
|
||||
}
|
||||
}
|
||||
|
||||
public static bool Remove(List<EventDelegate> list, Callback callback)
|
||||
{
|
||||
if (list != null)
|
||||
{
|
||||
int i = 0;
|
||||
for (int count = list.Count; i < count; i++)
|
||||
{
|
||||
EventDelegate eventDelegate = list[i];
|
||||
if (eventDelegate != null && eventDelegate.Equals(callback))
|
||||
{
|
||||
list.RemoveAt(i);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool Remove(List<EventDelegate> list, EventDelegate ev)
|
||||
{
|
||||
if (list != null)
|
||||
{
|
||||
int i = 0;
|
||||
for (int count = list.Count; i < count; i++)
|
||||
{
|
||||
EventDelegate eventDelegate = list[i];
|
||||
if (eventDelegate != null && eventDelegate.Equals(ev))
|
||||
{
|
||||
list.RemoveAt(i);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
182
SVSim.BattleEngine/Engine/ExecutionInfoCreatorBase.cs
Normal file
182
SVSim.BattleEngine/Engine/ExecutionInfoCreatorBase.cs
Normal file
@@ -0,0 +1,182 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Wizard;
|
||||
using Wizard.Battle;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class ExecutionInfoCreatorBase
|
||||
{
|
||||
protected SkillBase _skill;
|
||||
|
||||
public ExecutionInfoCreatorBase(SkillBase skill)
|
||||
{
|
||||
_skill = skill;
|
||||
}
|
||||
|
||||
public virtual bool IsSkipTargetAiSelect()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual bool CheckCondition(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, bool isPrePlay, bool isSkipTargetAiSelect = false)
|
||||
{
|
||||
return _skill.ConditionFilterCollection.Filtering(playerInfoPair, _skill.SkillPrm.ownerCard, option, _skill.OptionValue, isPrePlay, _skill, isSkipTargetAiSelect);
|
||||
}
|
||||
|
||||
public virtual bool CheckScanCondition(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, bool isPrePlay)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool VisualCheckCondition(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, bool isPrePlay)
|
||||
{
|
||||
return _skill.ConditionFilterCollection.Filtering(playerInfoPair, _skill.SkillPrm.ownerCard, option, _skill.OptionValue, isPrePlay, _skill);
|
||||
}
|
||||
|
||||
public virtual IEnumerable<BattleCardBase> CalcApplyTargets(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, ref int targetCount, bool isCheckInHand = false)
|
||||
{
|
||||
if (_skill.ApplySelectFilter is SkillRandomSelectFilter skillRandomSelectFilter)
|
||||
{
|
||||
targetCount = skillRandomSelectFilter.CalcCount(_skill.OptionValue);
|
||||
}
|
||||
if (option.SelectedCards.Count < 0 || !option.SelectedCards.Any((SkillConditionCheckerOption.SkillAndSelectTarget s) => s.SelectSkill == _skill && s.SelectCard != null))
|
||||
{
|
||||
IEnumerable<BattleCardBase> selectableCards = _skill.GetSelectableCards(playerInfoPair, option);
|
||||
return _skill.ApplySelectFilter.Filtering(selectableCards, _skill.OptionValue, option);
|
||||
}
|
||||
return IfNeededSelectCardCheck(playerInfoPair, option);
|
||||
}
|
||||
|
||||
protected List<BattleCardBase> IfNeededSelectCardCheck(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option)
|
||||
{
|
||||
List<IReadOnlyBattleCardInfo> target = _skill.FilteringByTargetFilter(playerInfoPair, option).ToList();
|
||||
List<BattleCardBase> list = new List<BattleCardBase>();
|
||||
int i;
|
||||
for (i = 0; i < target.Count; i++)
|
||||
{
|
||||
if (option.SelectedCards.Count > 0 && option.SelectedCards.Any((SkillConditionCheckerOption.SkillAndSelectTarget s) => s.SelectSkill == _skill && s.SelectCard == target[i]))
|
||||
{
|
||||
list.Add((BattleCardBase)target[i]);
|
||||
}
|
||||
}
|
||||
if (option.SelectedCards.Count == 0)
|
||||
{
|
||||
return new List<BattleCardBase>();
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public virtual VfxWith<List<BattleCardBase>, Dictionary<int, BattleCardBase>> FixedSkillApplyTarget(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, ref int targetCount)
|
||||
{
|
||||
IEnumerable<BattleCardBase> source = CalcApplyTargets(playerInfoPair, option, ref targetCount);
|
||||
VfxWith<List<BattleCardBase>, Dictionary<int, BattleCardBase>> vfxWith = NotIndependentCardFiltering(source.ToList());
|
||||
return new VfxWith<List<BattleCardBase>, Dictionary<int, BattleCardBase>>(vfxWith.Vfx, SkillAllowTargetFiltering(vfxWith.Value_1), vfxWith.Value_2);
|
||||
}
|
||||
|
||||
public virtual List<BattleCardBase> GetSelectableCards(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, bool isSkipForceSelect = false, List<BattleCardBase> selectedCards = null)
|
||||
{
|
||||
if (_skill.IsWhenPlaySkill && ((_skill.SkillPrm.ownerCard.IsUnit && _skill.SkillPrm.selfBattlePlayer.Class.SkillApplyInformation.IsCantActivateFanfareUnit) || (_skill.SkillPrm.ownerCard.IsField && _skill.SkillPrm.selfBattlePlayer.Class.SkillApplyInformation.IsCantActivateFanfareField)))
|
||||
{
|
||||
return new List<BattleCardBase>();
|
||||
}
|
||||
if (_skill.IsChoiceType)
|
||||
{
|
||||
IEnumerable<int> enumerable = SkillOptionValue.ParseOptionTokenID(_skill.OptionValue.GetOption(SkillFilterCreator.ContentKeyword.card_id, "_OPT_NULL_"));
|
||||
List<BattleCardBase> list = new List<BattleCardBase>();
|
||||
int num = (_skill.SkillPrm.ownerCard.BaseParameter.IsFoil ? 1 : 0);
|
||||
{
|
||||
foreach (int item2 in enumerable)
|
||||
{
|
||||
BattleCardBase item = _skill.SkillPrm.selfBattlePlayer.CreateVirtualCard(item2 + num, item2 + num);
|
||||
list.Add(item);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
List<IReadOnlyBattleCardInfo> list2 = _skill.ApplyFilterCollection.Filtering(playerInfoPair, option, _skill.OptionValue);
|
||||
if (selectedCards != null && selectedCards.Count > 0)
|
||||
{
|
||||
list2 = list2.Where((IReadOnlyBattleCardInfo c) => !selectedCards.Contains(c)).ToList();
|
||||
}
|
||||
List<IReadOnlyBattleCardInfo> list3 = _skill.FilteringSneakTarget(list2).ToList();
|
||||
if (!isSkipForceSelect)
|
||||
{
|
||||
list3 = _skill.FilteringForceSelectTargets(list3).ToList();
|
||||
}
|
||||
return list3.Cast<BattleCardBase>().ToList();
|
||||
}
|
||||
|
||||
protected virtual VfxWith<List<BattleCardBase>, Dictionary<int, BattleCardBase>> NotIndependentCardFiltering(List<BattleCardBase> cards)
|
||||
{
|
||||
bool num = _skill is Skill_powerup || _skill is Skill_power_down || _skill is Skill_damage || _skill is Skill_summon_card || _skill is Skill_summon_token || _skill is Skill_token_draw || _skill is Skill_update_deck || _skill is Skill_invoke_skill;
|
||||
bool flag = _skill.IsAllResidentTiming && cards.Count == 1 && cards.Contains(_skill.SkillPrm.ownerCard);
|
||||
if (num || flag)
|
||||
{
|
||||
return new VfxWith<List<BattleCardBase>, Dictionary<int, BattleCardBase>>(NullVfx.GetInstance(), cards, new Dictionary<int, BattleCardBase>());
|
||||
}
|
||||
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
|
||||
List<BattleCardBase> list = new List<BattleCardBase>();
|
||||
Dictionary<int, BattleCardBase> dictionary = new Dictionary<int, BattleCardBase>();
|
||||
for (int i = 0; i < cards.Count; i++)
|
||||
{
|
||||
if (cards[i].SkillApplyInformation.IsIndependent)
|
||||
{
|
||||
if (!(_skill is Skill_select) && !(_skill is Skill_copy_skill))
|
||||
{
|
||||
dictionary.Add(i, cards[i]);
|
||||
sequentialVfxPlayer.Register(new OneShotHeavenlyAegisPlayVfx(cards[i].BattleCardView));
|
||||
}
|
||||
else
|
||||
{
|
||||
dictionary.Add(i, cards[i]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
list.Add(cards[i]);
|
||||
}
|
||||
}
|
||||
return new VfxWith<List<BattleCardBase>, Dictionary<int, BattleCardBase>>(sequentialVfxPlayer, list, dictionary);
|
||||
}
|
||||
|
||||
protected virtual List<BattleCardBase> SkillAllowTargetFiltering(List<BattleCardBase> cards)
|
||||
{
|
||||
List<BattleCardBase> list = new List<BattleCardBase>();
|
||||
if (!_skill.IsAllowDestroyTarget)
|
||||
{
|
||||
for (int i = 0; i < cards.Count; i++)
|
||||
{
|
||||
if (!cards[i].IsDead)
|
||||
{
|
||||
list.Add(cards[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
list = cards;
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
protected bool IsSkipTargetSkill(SkillBase skill)
|
||||
{
|
||||
if (skill.SkillPrm.ownerCard.IsPlayer)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!(skill is Skill_powerup) && !(skill is Skill_cost_change))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!skill.IsUserSelectType)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!(skill.ApplyingTargetFilter is SkillTargetHandFilter) && !(skill.ApplyingTargetFilter is SkillTargetHandOtherSelfFilter) && !skill.ApplyAndFilter.Any((ApplySkillTargetFilterCollection f) => f.TargetFilter is SkillTargetHandFilter || f.TargetFilter is SkillTargetHandOtherSelfFilter))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
1201
SVSim.BattleEngine/Engine/FilterController.cs
Normal file
1201
SVSim.BattleEngine/Engine/FilterController.cs
Normal file
File diff suppressed because it is too large
Load Diff
65
SVSim.BattleEngine/Engine/FinishTaskBase.cs
Normal file
65
SVSim.BattleEngine/Engine/FinishTaskBase.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
using LitJson;
|
||||
using Wizard;
|
||||
using Wizard.Battle.Recovery;
|
||||
|
||||
public class FinishTaskBase : BaseTask
|
||||
{
|
||||
protected int classId;
|
||||
|
||||
protected const string data_str = "data";
|
||||
|
||||
public bool IsResponseDataExist(JsonData response)
|
||||
{
|
||||
JsonData jsonData = response["data"];
|
||||
if (jsonData == null || jsonData.Count == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public BattleFinishParam SettingFinishBattleParameter(int class_id, int total_turn, int evolve_count, int enemy_evolve_count, int battle_result, int is_retire)
|
||||
{
|
||||
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
|
||||
BattleManagerBase ins = BattleManagerBase.GetIns();
|
||||
classId = class_id;
|
||||
BattleFinishParam battleFinishParam = CreateBattleFinishParam(class_id, total_turn, evolve_count, enemy_evolve_count, battle_result, is_retire);
|
||||
PlayerPrefsWrapper.SetValue(PlayerPrefsWrapper.SELF_DISCONNECT_OPEN_STATUS_TO_REPLACE_LOG, 0f);
|
||||
if (battle_result == 0 && dataMgr.RecoveryData == null && RecoveryRecordManagerBase.IsExistsAINetworkRecoveryFile())
|
||||
{
|
||||
dataMgr.SetRecoveryData(RecoveryOperationInfo.ReadRecoveryFile(OperationRecorderBase.RecordDirectoryPath + "recovery_ai_network.json"));
|
||||
}
|
||||
JsonData recoveryData = dataMgr.RecoveryData;
|
||||
if (recoveryData != null)
|
||||
{
|
||||
battleFinishParam.recovery_data = recoveryData.ToJson();
|
||||
}
|
||||
BattlePlayerPair battlePlayerPair = ins.GetBattlePlayerPair(isPlayer: true);
|
||||
BattleCardBase selfClass = ins.GetBattlePlayer(isPlayer: true).Class;
|
||||
battleFinishParam.mission = dataMgr.MissionNecessaryInformation.GetMissionNecessaryInfo(battlePlayerPair, selfClass);
|
||||
base.Params = battleFinishParam;
|
||||
return battleFinishParam;
|
||||
}
|
||||
|
||||
protected virtual BattleFinishParam CreateBattleFinishParam(int class_id, int total_turn, int evolve_count, int enemy_evolve_count, int battle_result, int is_retire)
|
||||
{
|
||||
return new BattleFinishParam
|
||||
{
|
||||
class_id = class_id,
|
||||
total_turn = total_turn,
|
||||
evolve_count = evolve_count,
|
||||
enemy_evolve_count = enemy_evolve_count,
|
||||
battle_result = battle_result,
|
||||
is_retire = is_retire
|
||||
};
|
||||
}
|
||||
|
||||
protected bool IsEffectiveErrorCode(int code)
|
||||
{
|
||||
if (resultCode != 1 && resultCode != 3502)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
148
SVSim.BattleEngine/Engine/FlexibleGrid.cs
Normal file
148
SVSim.BattleEngine/Engine/FlexibleGrid.cs
Normal file
@@ -0,0 +1,148 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using UnityEngine;
|
||||
|
||||
public class FlexibleGrid : MonoBehaviour
|
||||
{
|
||||
public enum Order
|
||||
{
|
||||
Horizontal,
|
||||
Vertical
|
||||
}
|
||||
|
||||
public enum PivotOption
|
||||
{
|
||||
NONE,
|
||||
CENTER
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Vector2 _limitSize;
|
||||
|
||||
[SerializeField]
|
||||
private Vector2 _padding;
|
||||
|
||||
[SerializeField]
|
||||
private bool _hideInactive = true;
|
||||
|
||||
[SerializeField]
|
||||
private Order _order;
|
||||
|
||||
[SerializeField]
|
||||
private bool _reversel;
|
||||
|
||||
[SerializeField]
|
||||
private PivotOption _horizonPivotOption;
|
||||
|
||||
private bool _repositionCalled;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (!_repositionCalled)
|
||||
{
|
||||
Reposition();
|
||||
}
|
||||
}
|
||||
|
||||
[Conditional("ENABLE_FLEXIBLE_GRID_LOG")]
|
||||
private static void DebugLog(string log)
|
||||
{
|
||||
UnityEngine.Debug.Log(log);
|
||||
}
|
||||
|
||||
[ContextMenu("Execute")]
|
||||
public void Reposition()
|
||||
{
|
||||
_repositionCalled = true;
|
||||
List<Transform> childList = GetChildList();
|
||||
if (childList.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
float num = 0f;
|
||||
float num2 = 0f;
|
||||
float num3 = 0f;
|
||||
int i = 0;
|
||||
for (int count = childList.Count; i < count; i++)
|
||||
{
|
||||
Transform transform = childList[i];
|
||||
Bounds bounds = NGUIMath.CalculateRelativeWidgetBounds(transform, !_hideInactive);
|
||||
Vector3 localScale = transform.localScale;
|
||||
bounds.min = Vector3.Scale(bounds.min, localScale);
|
||||
bounds.max = Vector3.Scale(bounds.max, localScale);
|
||||
if (bounds.min == bounds.max)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (_order == Order.Horizontal)
|
||||
{
|
||||
int num4 = ((!_reversel) ? 1 : (-1));
|
||||
num = Math.Max(num, bounds.size.y);
|
||||
if (num2 + bounds.size.x > _limitSize.x)
|
||||
{
|
||||
num2 = 0f;
|
||||
num3 -= num + _padding.y;
|
||||
num = 0f;
|
||||
}
|
||||
Vector3 localPosition = transform.localPosition;
|
||||
if (_horizonPivotOption == PivotOption.CENTER)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
localPosition.x = num2;
|
||||
}
|
||||
else
|
||||
{
|
||||
float num5 = (float)num4 * bounds.size.x * 0.5f;
|
||||
localPosition.x = num2 + num5;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
localPosition.x = num2 + (float)num4 * (bounds.extents.x - bounds.center.x);
|
||||
}
|
||||
localPosition.y = num3;
|
||||
transform.localPosition = localPosition;
|
||||
num2 = ((_horizonPivotOption != PivotOption.CENTER) ? (num2 + (float)num4 * (bounds.size.x + _padding.x)) : ((i != 0) ? (num2 + (float)num4 * (_padding.x + bounds.size.x)) : (num2 + (float)num4 * (_padding.x + bounds.size.x * 0.5f))));
|
||||
}
|
||||
else
|
||||
{
|
||||
num = Math.Max(num, bounds.size.x);
|
||||
if (num3 + bounds.size.y > _limitSize.y)
|
||||
{
|
||||
num3 = 0f;
|
||||
num2 += num + _padding.x;
|
||||
num = 0f;
|
||||
}
|
||||
Vector3 localPosition2 = transform.localPosition;
|
||||
localPosition2.x = num2;
|
||||
localPosition2.y = num3 - bounds.extents.y - bounds.center.y;
|
||||
transform.localPosition = localPosition2;
|
||||
num3 -= bounds.size.y + _padding.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<Transform> GetChildList()
|
||||
{
|
||||
Transform transform = base.transform;
|
||||
List<Transform> list = new List<Transform>();
|
||||
for (int i = 0; i < transform.childCount; i++)
|
||||
{
|
||||
Transform child = transform.GetChild(i);
|
||||
if (!_hideInactive || ((bool)child && NGUITools.GetActive(child.gameObject)))
|
||||
{
|
||||
list.Add(child);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public IEnumerator RepositionNextFrame()
|
||||
{
|
||||
yield return null;
|
||||
Reposition();
|
||||
}
|
||||
}
|
||||
17
SVSim.BattleEngine/Engine/FusionIngredientInfo.cs
Normal file
17
SVSim.BattleEngine/Engine/FusionIngredientInfo.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
public class FusionIngredientInfo
|
||||
{
|
||||
public readonly int FusionTurn;
|
||||
|
||||
public readonly BattleCardBase Card;
|
||||
|
||||
public FusionIngredientInfo(int turn, BattleCardBase card)
|
||||
{
|
||||
FusionTurn = turn;
|
||||
Card = card;
|
||||
}
|
||||
|
||||
public FusionIngredientInfo Clone()
|
||||
{
|
||||
return new FusionIngredientInfo(FusionTurn, Card);
|
||||
}
|
||||
}
|
||||
1509
SVSim.BattleEngine/Engine/GachaUI.cs
Normal file
1509
SVSim.BattleEngine/Engine/GachaUI.cs
Normal file
File diff suppressed because it is too large
Load Diff
797
SVSim.BattleEngine/Engine/Global.cs
Normal file
797
SVSim.BattleEngine/Engine/Global.cs
Normal file
@@ -0,0 +1,797 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text.RegularExpressions;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
|
||||
public static class Global
|
||||
{
|
||||
public enum CHAR_TYPE
|
||||
{
|
||||
PLAYER,
|
||||
ENEMY,
|
||||
NONE,
|
||||
MAX
|
||||
}
|
||||
|
||||
public enum CardRarity
|
||||
{
|
||||
MIN = 1,
|
||||
BRONZE = 1,
|
||||
SILVER = 2,
|
||||
GOLD = 3,
|
||||
LEGEND = 4,
|
||||
MAX = 5
|
||||
}
|
||||
|
||||
public enum LANG_TYPE
|
||||
{
|
||||
Jpn,
|
||||
Eng,
|
||||
Kor,
|
||||
Chs,
|
||||
Cht,
|
||||
Fre,
|
||||
Ita,
|
||||
Ger,
|
||||
Spa,
|
||||
Max
|
||||
}
|
||||
|
||||
public struct LanguageProps
|
||||
{
|
||||
public string LangType;
|
||||
|
||||
public string Name;
|
||||
|
||||
public string Font;
|
||||
|
||||
public string DisplayName;
|
||||
|
||||
public LanguageProps(string langType, string name, string font, string display)
|
||||
{
|
||||
LangType = langType;
|
||||
Name = name;
|
||||
Font = font;
|
||||
DisplayName = display;
|
||||
}
|
||||
}
|
||||
|
||||
public const int NONE = -1;
|
||||
|
||||
public const string NONE_TEXT = "NONE";
|
||||
|
||||
public const int GOBLIN_CARD_ID = 100011010;
|
||||
|
||||
public const int FIGHTER_CARD_ID = 100011020;
|
||||
|
||||
public const int EVOLVE_TO_OTHER_CARD_INITIAL_ID = 910;
|
||||
|
||||
public const int CHOICE_BRAVE_CARD_INITIAL_ID = 930;
|
||||
|
||||
public const int RITE_OF_THE_IGNORANT_ID = 900344060;
|
||||
|
||||
public const int GHIOS_SPARKLING_PRISM_ID = 120341020;
|
||||
|
||||
public const int ARAMIS_ID = 900241110;
|
||||
|
||||
public const int WIELDER_OF_THE_COSMOS_ID = 123841020;
|
||||
|
||||
public const int SLAUGHTERING_SAMURAI_ID = 130241030;
|
||||
|
||||
public const int GOBLIN_MAGE_ID = 125021010;
|
||||
|
||||
public const int ARCHANGEL_OF_EVOCATION_ID = 117031020;
|
||||
|
||||
public const int PEERLESS_WARRIOR_ID = 129241020;
|
||||
|
||||
public const int ELEANOR_TECHNIQUE_ID = 930344070;
|
||||
|
||||
public const int VAIDI_SECRET_ART_ID = 930444050;
|
||||
|
||||
public const int BRIARMAIDEN_ID = 132141010;
|
||||
|
||||
public const int THUNDER_GOD_OF_THE_TEMPEST_ID = 123031020;
|
||||
|
||||
public const int REAPER_CARD_IDX = -99;
|
||||
|
||||
public const long ONE_SECOND = 10000000L;
|
||||
|
||||
public const float BASE_SCREEN_WIDTH_SIZE = 1280f;
|
||||
|
||||
public const float BASE_SCREEN_HEIGHT_SIZE = 640f;
|
||||
|
||||
public const int STANDARD_DECK_CARD_NUM_MAX = 40;
|
||||
|
||||
public const int TWO_PICK_DECK_MAX_NUM = 30;
|
||||
|
||||
public const int WIND_FALL_DECK_MAX_NUM = 35;
|
||||
|
||||
public const int STANDARD_DECK_SAVABLE_CARD_NUM_MAX = 50;
|
||||
|
||||
public const int SAME_KIND_NUM_MAX_BASE = 3;
|
||||
|
||||
public const int CARD_RARITY_MIN = 1;
|
||||
|
||||
public const int CARD_RARITY_BRONZE = 1;
|
||||
|
||||
public const int CARD_RARITY_SILVER = 2;
|
||||
|
||||
public const int CARD_RARITY_GOLD = 3;
|
||||
|
||||
public const int CARD_RARITY_LEGEND = 4;
|
||||
|
||||
public const int CARD_RARITY_MAX = 5;
|
||||
|
||||
public const int DAMAGE_EFFECT_MAX_NUM = 12;
|
||||
|
||||
public const float MULLIGAN_TIME_LIMIT = 60f;
|
||||
|
||||
public const float TURN_TIME_LIMIT = 90f;
|
||||
|
||||
public const float TURN_TIME_EXTEND_ONPLAY = 3f;
|
||||
|
||||
public const float TURN_TIME_EXTEND_MAX = 15f;
|
||||
|
||||
public const float DRAG_DISTANCE = 40f;
|
||||
|
||||
public static Color CARD_SELECT_COLOR;
|
||||
|
||||
public static Color CARD_PASSIVE_COLOR;
|
||||
|
||||
public static Color CARD_DEFAULT_COLOR;
|
||||
|
||||
public static Color CARD_INACTIVE_COLOR;
|
||||
|
||||
public static Color CARD_BLESS_EFFECT_COLOR;
|
||||
|
||||
public static Color CARD_POWERDOWN_EFFECT_COLOR;
|
||||
|
||||
public static Color CARD_LABEL_FRAME_TEXT_COLOR;
|
||||
|
||||
public static Color CARD_LABEL_FRAME_TEXT_RED_COLOR;
|
||||
|
||||
public static Color CARD_LABEL_FRAME_COST_COLOR;
|
||||
|
||||
public static Color CARD_HBP_LABEL_COST_COLOR;
|
||||
|
||||
public static Color CARD_LABEL_FRAME_ATTACK_COLOR;
|
||||
|
||||
public static Color CARD_LABEL_FRAME_HEALTH_COLOR;
|
||||
|
||||
public static Color CARD_LABEL_FRAME_LESS_THAN_MAX_COLOR;
|
||||
|
||||
public static Color CARD_LABEL_FRAME_LESS_THAN_BASE_COLOR;
|
||||
|
||||
public static readonly Color FRAME_COLOR_CAN_ACT;
|
||||
|
||||
public static readonly Color FRAME_COLOR_CAN_ACT_RESTRICTED;
|
||||
|
||||
public static readonly Color FRAME_COLOR_SKILL_YELLOW;
|
||||
|
||||
public static readonly Color FRAME_COLOR_SKILL_PURPLE;
|
||||
|
||||
public static readonly Color FRAME_COLOR_SKILL_LIGHT_BLUE;
|
||||
|
||||
public static readonly Color FRAME_COLOR_SELECTABLE;
|
||||
|
||||
public static readonly Color FRAME_COLOR_FUSION_METAMORPHOSE;
|
||||
|
||||
public static readonly Color PROTECTION_COLOR_DAMAGE_CUT;
|
||||
|
||||
public static readonly Color PROTECTION_COLOR_INDESTRUCTIBLE;
|
||||
|
||||
public static readonly Color PROTECTION_COLOR_MULTI_INVALID;
|
||||
|
||||
public static readonly Color PROTECTION_COLOR_DAMAGE_REFLECTION;
|
||||
|
||||
public static readonly Color EVOLVE_TRAIL_COLOR_NORMAL;
|
||||
|
||||
public static readonly Color EVOLVE_TRAIL_COLOR_SKILL;
|
||||
|
||||
public static readonly Color32 EFFECT_COLOR_ELF;
|
||||
|
||||
public static readonly Color32 EFFECT_COLOR_ROYAL;
|
||||
|
||||
public static readonly Color32 EFFECT_COLOR_WITCH_1;
|
||||
|
||||
public static readonly Color32 EFFECT_COLOR_WITCH_2;
|
||||
|
||||
public static readonly Color32 EFFECT_COLOR_DRAGON;
|
||||
|
||||
public static readonly Color32 EFFECT_COLOR_NECROMANCER;
|
||||
|
||||
public static readonly Color32 EFFECT_COLOR_VANPIRE;
|
||||
|
||||
public static readonly Color32 EFFECT_COLOR_BISHOP;
|
||||
|
||||
public static readonly Color32 EFFECT_COLOR_NEMESIS;
|
||||
|
||||
public static readonly Rect CARD_2D_UV_RECT;
|
||||
|
||||
public static readonly Vector3 CARD_BASE_POS;
|
||||
|
||||
public static readonly Vector3 CARD_BASE_ROT;
|
||||
|
||||
public static readonly Vector3 CARD_BASE_SCALE;
|
||||
|
||||
public static readonly Vector3 CARD_BASE_STAY_SCALE;
|
||||
|
||||
public static readonly Vector3 CARD_BASE_SELECT_SCALE;
|
||||
|
||||
public static readonly Vector3 CARD_LIST_SCALE;
|
||||
|
||||
public static readonly Vector3 CARD_BATTLE_SCALE;
|
||||
|
||||
public static readonly Vector3 CARD_BATTLE_ROTATION;
|
||||
|
||||
public static readonly Vector3 CLASS_BATTLE_SCALE;
|
||||
|
||||
public static readonly Vector3 CLASS_BATTLE_POSITION_PLAYER;
|
||||
|
||||
public static readonly Vector3 CLASS_BATTLE_POSITION_ENEMY;
|
||||
|
||||
public const int BATTLE_LAYER = 10;
|
||||
|
||||
public const int SUB_PARTICLES_LAYER = 12;
|
||||
|
||||
public const int HIGH_RANK_EVOLVE_LAYER = 13;
|
||||
|
||||
public const int BATTLE_UNDER_LAYER = 15;
|
||||
|
||||
public const int FRONT_UI_LAYER = 24;
|
||||
|
||||
public const int SYSTEM_UI_LAYER = 22;
|
||||
|
||||
public const int CUT_IN_LAYER = 31;
|
||||
|
||||
public const int EMPTY_DECK_ID = -1;
|
||||
|
||||
public static readonly Vector3 EP_PANEL_POSITION_PLAYER;
|
||||
|
||||
public static readonly Vector3 PLAYER_CHOICE_BRAVE_BUTTON_POSITION;
|
||||
|
||||
public static readonly Vector3 ENEMY_CHOICE_BRAVE_BUTTON_POSITION;
|
||||
|
||||
public static readonly Vector3 PLAYER_CHOICE_BRAVE_BUTTON_POSITION_ZOOM;
|
||||
|
||||
public const int DEFAULT_EMBLEM_ID = 100000000;
|
||||
|
||||
public const int DEFAULT_DEGREE_ID = 300003;
|
||||
|
||||
public static Vector2 WEBVIEW_NORMAL_SIZE;
|
||||
|
||||
public static Vector3 POSITION_COST_ICON;
|
||||
|
||||
public static Vector3 POSITION_ATK_ICON;
|
||||
|
||||
public static Vector3 POSITION_LIFE_ICON;
|
||||
|
||||
public static Vector3 POSITION_NAME_TEXT;
|
||||
|
||||
public static Vector3 POSITION_SKILL_TEXT;
|
||||
|
||||
public static Vector3 SCALE_CARD_ICON;
|
||||
|
||||
public static Vector3 SCALE_NAME_TEXT;
|
||||
|
||||
public static Vector3 SCALE_SKILL_TEXT;
|
||||
|
||||
public static bool IS_LOAD_ALLDONE;
|
||||
|
||||
public static int NormalFieldOfView;
|
||||
|
||||
public static int WideFieldOfView;
|
||||
|
||||
public const float WideFieldOfViewAspectRatioThreshold = 1.5f;
|
||||
|
||||
public const float ASPECT_RATIO_OVER_16_9 = 1.8f;
|
||||
|
||||
public const string BASE_GAME_FONT_NAME = "A-OTF-KaiminTuStd-Bold";
|
||||
|
||||
public const string BASE_BITMAP_FONT_NAME = "FOT-TsukuAOldMinPr6-E";
|
||||
|
||||
public static string GAME_FONT_NAME;
|
||||
|
||||
public static string[] fontFileNames;
|
||||
|
||||
public static List<int> PreLoadSkinId;
|
||||
|
||||
public static List<int> SeSysSummonLandingDuplicateCheckId;
|
||||
|
||||
public const int ROTATION_SEASON_CHANGE_ERROR_FOR_BUY = 110;
|
||||
|
||||
public const int ROTATION_SEASON_CHANGE_ERROR = 109;
|
||||
|
||||
private const int CHINESE_TAIWAN_ID = 1028;
|
||||
|
||||
private const int CHINESE_HONGKONG_ID = 3076;
|
||||
|
||||
private const int CHINESE_MAKAO_ID = 5124;
|
||||
|
||||
private const int CHINESE_SINGAPORE_ID = 4100;
|
||||
|
||||
private const int CHINESE_CHINA_ID = 2052;
|
||||
|
||||
public const int LANG_MAX = 9;
|
||||
|
||||
public static string jpn_font;
|
||||
|
||||
public const string CHS_FONT = "DFGBWB7-900";
|
||||
|
||||
public static LanguageProps[] LanguagePropList;
|
||||
|
||||
public static UnityEngine.Font GAME_FONT;
|
||||
|
||||
public const string CLONE_SUFFIX = "(Clone)";
|
||||
|
||||
private const string BBCodePattern = "(\\[[a-z0-9\\/\\-]*\\])";
|
||||
|
||||
public const string BBCodePatternName = "(\\[[a-z0-9\\/\\-]*(rub\\<[^\\>]*\\>)*\\])";
|
||||
|
||||
private static Vector2 CARD_NAME_POS_SHORT;
|
||||
|
||||
private static Vector2 CARD_NAME_POS_NORMAL;
|
||||
|
||||
private static Vector3 CARD_NAME_POSTION_ADD;
|
||||
|
||||
private static Vector2 CARD_NAME_POS_SHORT_2D;
|
||||
|
||||
private static Vector2 CARD_NAME_POS_NORMAL_2D;
|
||||
|
||||
private static float CARD_NAME_Z_ALPHABET_LANGUAGE;
|
||||
|
||||
private static int CARD_NAME_SIZE_ALPHABET_LANGUAGE;
|
||||
|
||||
public const int CARD_NAME_LIMIT_LENGTH_ENG = 11;
|
||||
|
||||
public const int CARD_NAME_LIMIT_LENGTH_JPN = 5;
|
||||
|
||||
private const char ZERO_WIDTH_MARKER = '\u200b';
|
||||
|
||||
private static readonly LANG_TYPE[] WordBreakLanguages;
|
||||
|
||||
private static readonly LANG_TYPE[] AlphabetLanguages;
|
||||
|
||||
private static readonly string[] WordBreakLanguageNames;
|
||||
|
||||
private static readonly string[] AlphabetLanguageNames;
|
||||
|
||||
public static bool IsSnCollabSkin(int skinId)
|
||||
{
|
||||
if (4300 <= skinId)
|
||||
{
|
||||
return skinId <= 4399;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern int GetUserDefaultLangID();
|
||||
|
||||
static Global()
|
||||
{
|
||||
CARD_SELECT_COLOR = Color.cyan;
|
||||
CARD_PASSIVE_COLOR = Color.red;
|
||||
CARD_DEFAULT_COLOR = Color.white;
|
||||
CARD_INACTIVE_COLOR = new Color(0.2f, 0.2f, 0.2f);
|
||||
CARD_BLESS_EFFECT_COLOR = new Color(0.7f, 1f, 0f, 1f);
|
||||
CARD_POWERDOWN_EFFECT_COLOR = new Color(1f, 0.8f, 0.4f);
|
||||
CARD_LABEL_FRAME_TEXT_COLOR = new Color(1f, 0.992f, 0.922f);
|
||||
CARD_LABEL_FRAME_TEXT_RED_COLOR = new Color(1f, 0.7f, 0.7f);
|
||||
CARD_LABEL_FRAME_COST_COLOR = new Color(0f, 0.2f, 0f);
|
||||
CARD_HBP_LABEL_COST_COLOR = new Color(0.27f, 0.207f, 0.176f, 1f);
|
||||
CARD_LABEL_FRAME_ATTACK_COLOR = new Color(0.2f, 0.2f, 0.4f);
|
||||
CARD_LABEL_FRAME_HEALTH_COLOR = new Color(0.4f, 0.2f, 0.2f);
|
||||
CARD_LABEL_FRAME_LESS_THAN_MAX_COLOR = new Color(0.9f, 0.75f, 0.7f);
|
||||
CARD_LABEL_FRAME_LESS_THAN_BASE_COLOR = new Color(32f / 51f, 26f / 51f, 14f / 51f);
|
||||
FRAME_COLOR_CAN_ACT = new Color(0f, 1f, 32f / 51f);
|
||||
FRAME_COLOR_CAN_ACT_RESTRICTED = new Color(1f, 1f, 0f);
|
||||
FRAME_COLOR_SKILL_YELLOW = new Color(64f / 85f, 1f, 0f);
|
||||
FRAME_COLOR_SKILL_PURPLE = new Color(0.5019608f, 0.4392157f, 1f);
|
||||
FRAME_COLOR_SKILL_LIGHT_BLUE = new Color(0f, 0.7921569f, 1f, 1f);
|
||||
FRAME_COLOR_SELECTABLE = new Color(1f, 32f / 51f, 0f);
|
||||
FRAME_COLOR_FUSION_METAMORPHOSE = new Color(64f / 85f, 1f, 0f);
|
||||
PROTECTION_COLOR_DAMAGE_CUT = new Color(0f, 0.2509804f, 1f);
|
||||
PROTECTION_COLOR_INDESTRUCTIBLE = new Color(1f, 0.5019608f, 0f);
|
||||
PROTECTION_COLOR_MULTI_INVALID = new Color(0f, 1f, 0.6901961f);
|
||||
PROTECTION_COLOR_DAMAGE_REFLECTION = new Color(1f, 0.1254902f, 0.1254902f);
|
||||
EVOLVE_TRAIL_COLOR_NORMAL = new Color(1f, 0.8f, 0.2f, 1f);
|
||||
EVOLVE_TRAIL_COLOR_SKILL = new Color(0f, 0.2f, 0.4f, 1f);
|
||||
EFFECT_COLOR_ELF = new Color32(64, byte.MaxValue, 128, byte.MaxValue);
|
||||
EFFECT_COLOR_ROYAL = new Color32(byte.MaxValue, 224, 64, byte.MaxValue);
|
||||
EFFECT_COLOR_WITCH_1 = new Color32(224, 64, byte.MaxValue, byte.MaxValue);
|
||||
EFFECT_COLOR_WITCH_2 = new Color32(67, 82, 155, byte.MaxValue);
|
||||
EFFECT_COLOR_DRAGON = new Color32(byte.MaxValue, 128, 32, byte.MaxValue);
|
||||
EFFECT_COLOR_NECROMANCER = new Color32(128, 64, byte.MaxValue, byte.MaxValue);
|
||||
EFFECT_COLOR_VANPIRE = new Color32(byte.MaxValue, 64, 64, byte.MaxValue);
|
||||
EFFECT_COLOR_BISHOP = new Color32(byte.MaxValue, 240, 160, byte.MaxValue);
|
||||
EFFECT_COLOR_NEMESIS = new Color32(64, 128, byte.MaxValue, byte.MaxValue);
|
||||
CARD_2D_UV_RECT = new Rect(0f, 0f, 1f, 1.1f);
|
||||
CARD_BASE_POS = new Vector3(0f, 0f, 0f);
|
||||
CARD_BASE_ROT = new Vector3(0f, -180f, 0f);
|
||||
CARD_BASE_SCALE = new Vector3(1f, 1f, 1f);
|
||||
CARD_BASE_STAY_SCALE = new Vector3(18f, 18f, 18f);
|
||||
CARD_BASE_SELECT_SCALE = new Vector3(2.42f, 1f, 3.2f);
|
||||
CARD_LIST_SCALE = new Vector3(170f, 226f, 1f);
|
||||
CARD_BATTLE_SCALE = Vector3.one;
|
||||
CARD_BATTLE_ROTATION = new Vector3(-10f, 0f, 0f);
|
||||
CLASS_BATTLE_SCALE = Vector3.one;
|
||||
CLASS_BATTLE_POSITION_PLAYER = new Vector3(0f, 0f, 0f);
|
||||
CLASS_BATTLE_POSITION_ENEMY = new Vector3(0f, 0f, 0f);
|
||||
EP_PANEL_POSITION_PLAYER = new Vector3(-229f, -11.29f, 0f);
|
||||
PLAYER_CHOICE_BRAVE_BUTTON_POSITION = new Vector3(-440f, 200f, 15f);
|
||||
ENEMY_CHOICE_BRAVE_BUTTON_POSITION = new Vector3(390f, -126f, 10f);
|
||||
PLAYER_CHOICE_BRAVE_BUTTON_POSITION_ZOOM = new Vector3(PLAYER_CHOICE_BRAVE_BUTTON_POSITION.x, PLAYER_CHOICE_BRAVE_BUTTON_POSITION.y + 25f, PLAYER_CHOICE_BRAVE_BUTTON_POSITION.z);
|
||||
WEBVIEW_NORMAL_SIZE = new Vector2(1100f, 440f);
|
||||
POSITION_COST_ICON = new Vector3(-1.68f, 2.1f, -0.2f);
|
||||
POSITION_ATK_ICON = new Vector3(-1.6f, -2.2f, -0.2f);
|
||||
POSITION_LIFE_ICON = new Vector3(1.6f, -2.2f, -0.2f);
|
||||
POSITION_NAME_TEXT = new Vector3(0f, 2f, -0.2f);
|
||||
POSITION_SKILL_TEXT = new Vector3(0f, -28f, -0.03f);
|
||||
SCALE_CARD_ICON = new Vector3(0.4f, 0.4f, 1f);
|
||||
SCALE_NAME_TEXT = new Vector3(0.0024f, 0.0024f, 1f);
|
||||
SCALE_SKILL_TEXT = new Vector3(1.25f, 1.25f, 0f);
|
||||
IS_LOAD_ALLDONE = false;
|
||||
NormalFieldOfView = 60;
|
||||
WideFieldOfView = 70;
|
||||
GAME_FONT_NAME = "A-OTF-KaiminTuStd-Bold";
|
||||
fontFileNames = new string[5] { "A-OTF-KaiminTuStd-Bold.otf", "TT0818M.TTF", "2002L.otf", "DFPT_W7_0.ttf", "DFGBWB7-900.ttf" };
|
||||
PreLoadSkinId = new List<int> { 3918, 3904 };
|
||||
SeSysSummonLandingDuplicateCheckId = new List<int> { 116024010, 130324010, 130514010 };
|
||||
jpn_font = "A-OTF-KaiminTuStd-Bold";
|
||||
LanguagePropList = new LanguageProps[8]
|
||||
{
|
||||
new LanguageProps(LANG_TYPE.Eng.ToString(), "English", "TT0818M", "English"),
|
||||
new LanguageProps(LANG_TYPE.Kor.ToString(), "Korean", "2002L", "한국어"),
|
||||
new LanguageProps(LANG_TYPE.Cht.ToString(), "ChineseTraditional", "DFPT_W7_0", "繁體中文"),
|
||||
new LanguageProps(LANG_TYPE.Fre.ToString(), "French", "TT0818M", "Français"),
|
||||
new LanguageProps(LANG_TYPE.Ita.ToString(), "Italian", "TT0818M", "Italiano"),
|
||||
new LanguageProps(LANG_TYPE.Ger.ToString(), "German", "TT0818M", "Deutsch"),
|
||||
new LanguageProps(LANG_TYPE.Spa.ToString(), "Spanish", "TT0818M", "Español"),
|
||||
new LanguageProps(LANG_TYPE.Chs.ToString(), "ChineseSimplified", "DFGBWB7-900", "简体中文")
|
||||
};
|
||||
GAME_FONT = null;
|
||||
CARD_NAME_POS_SHORT = new Vector2(0f, 0f);
|
||||
CARD_NAME_POS_NORMAL = new Vector2(75f, 0f);
|
||||
CARD_NAME_POSTION_ADD = new Vector3(0f, 10f, 0f);
|
||||
CARD_NAME_POS_SHORT_2D = new Vector2(0f, 109f);
|
||||
CARD_NAME_POS_NORMAL_2D = new Vector2(10f, 109f);
|
||||
CARD_NAME_Z_ALPHABET_LANGUAGE = -0.1f;
|
||||
CARD_NAME_SIZE_ALPHABET_LANGUAGE = 32;
|
||||
WordBreakLanguages = new LANG_TYPE[6]
|
||||
{
|
||||
LANG_TYPE.Eng,
|
||||
LANG_TYPE.Fre,
|
||||
LANG_TYPE.Ita,
|
||||
LANG_TYPE.Ger,
|
||||
LANG_TYPE.Spa,
|
||||
LANG_TYPE.Kor
|
||||
};
|
||||
AlphabetLanguages = new LANG_TYPE[5]
|
||||
{
|
||||
LANG_TYPE.Eng,
|
||||
LANG_TYPE.Fre,
|
||||
LANG_TYPE.Ita,
|
||||
LANG_TYPE.Ger,
|
||||
LANG_TYPE.Spa
|
||||
};
|
||||
WordBreakLanguageNames = null;
|
||||
AlphabetLanguageNames = null;
|
||||
WordBreakLanguageNames = new string[WordBreakLanguages.Length];
|
||||
for (int i = 0; i < WordBreakLanguageNames.Length; i++)
|
||||
{
|
||||
WordBreakLanguageNames[i] = WordBreakLanguages[i].ToString();
|
||||
}
|
||||
AlphabetLanguageNames = new string[AlphabetLanguages.Length];
|
||||
for (int j = 0; j < AlphabetLanguageNames.Length; j++)
|
||||
{
|
||||
AlphabetLanguageNames[j] = AlphabetLanguages[j].ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetConvertWrapText(UILabel label, string orgText)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (label.bitmapFont == null && label.trueTypeFont != GAME_FONT)
|
||||
{
|
||||
label.trueTypeFont = GAME_FONT;
|
||||
}
|
||||
SystemText systemText = Data.SystemText;
|
||||
string text = systemText.Get("System_LineHeadWrap", enableDebugReturn: false);
|
||||
string text2 = systemText.Get("System_LineEndWrap", enableDebugReturn: false);
|
||||
label.text = orgText;
|
||||
string text3 = orgText;
|
||||
if (!string.IsNullOrEmpty(text3))
|
||||
{
|
||||
text3 = text3.Replace("\n", "\n\u200b");
|
||||
}
|
||||
string final = "";
|
||||
if (!label.Wrap(text3, out final))
|
||||
{
|
||||
final = label.text;
|
||||
}
|
||||
if (final.Equals(text3))
|
||||
{
|
||||
return final;
|
||||
}
|
||||
if (text == string.Empty && text2 == string.Empty)
|
||||
{
|
||||
return final;
|
||||
}
|
||||
string text4 = Regex.Escape(text);
|
||||
string text5 = Regex.Escape(text2);
|
||||
string pattern = "[" + text5 + "]+(\\[[a-z0-9\\/\\-]*\\])*$";
|
||||
string pattern2 = "^(\\[[a-z0-9\\/\\-]*\\])*[" + text4 + "]";
|
||||
string pattern3 = "[" + text5 + "]*.[" + text4 + "]*(\\[[a-z0-9\\/\\-]*\\])*$";
|
||||
List<string> list = new List<string>(final.Split('\n'));
|
||||
string text6 = string.Empty;
|
||||
for (int i = 0; i < list.Count && i <= final.Length; i++)
|
||||
{
|
||||
string text7 = list[i];
|
||||
string text8 = ((i + 1 < list.Count) ? list[i + 1] : string.Empty);
|
||||
Match match = Regex.Match(text7, pattern);
|
||||
if (match.Success && match.ToString() != text7)
|
||||
{
|
||||
string value = text7.Substring(match.Index, match.Length);
|
||||
if (text8 == string.Empty)
|
||||
{
|
||||
list.Add(text8 = "");
|
||||
}
|
||||
text8 = text8.Insert(0, value);
|
||||
text7 = text7.Substring(0, match.Index);
|
||||
}
|
||||
if (text6 != string.Empty)
|
||||
{
|
||||
if (Regex.Match(text7, pattern2).Success)
|
||||
{
|
||||
Match match2 = Regex.Match(text6, pattern3);
|
||||
if (match2.Success && match2.Index > 0)
|
||||
{
|
||||
text7 = text7.Insert(0, text6.Substring(match2.Index, match2.Length));
|
||||
text6 = text6.Substring(0, match2.Index);
|
||||
}
|
||||
}
|
||||
if (text7.Length > 1)
|
||||
{
|
||||
string text9 = text7.Replace('\u200b', '\n');
|
||||
if (!label.Wrap(text9, out var final2))
|
||||
{
|
||||
final2 = text9;
|
||||
}
|
||||
if (final2.Contains('\n'))
|
||||
{
|
||||
int num = final2.LastIndexOf('\n');
|
||||
if (num > 0)
|
||||
{
|
||||
if (text8 == string.Empty)
|
||||
{
|
||||
list.Add(text8 = "");
|
||||
}
|
||||
text8 = text8.Insert(0, final2.Substring(num + 1));
|
||||
text7 = final2.Substring(0, num);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (text6 != string.Empty)
|
||||
{
|
||||
list[i - 1] = text6;
|
||||
}
|
||||
if (text8 != string.Empty)
|
||||
{
|
||||
list[i + 1] = text8;
|
||||
}
|
||||
text6 = (list[i] = text7);
|
||||
}
|
||||
string text11 = "";
|
||||
int count = list.Count;
|
||||
for (int j = 0; j < count; j++)
|
||||
{
|
||||
text11 += list[j];
|
||||
if (j < count - 1)
|
||||
{
|
||||
text11 += "\n";
|
||||
}
|
||||
}
|
||||
return text11;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
label.text = orgText;
|
||||
throw new Exception(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static int GetTextLineCount(string text)
|
||||
{
|
||||
int num = 1;
|
||||
for (int i = 0; i < text.Length; i++)
|
||||
{
|
||||
if (text[i] == '\n')
|
||||
{
|
||||
num++;
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
public static string ConvertToWithoutBBCode(string text)
|
||||
{
|
||||
return Regex.Replace(text, "(\\[[a-z0-9\\/\\-]*(rub\\<[^\\>]*\\>)*\\])", "");
|
||||
}
|
||||
|
||||
public static void SetRepositionNameLabel(UILabel label, string orgText, bool is2D)
|
||||
{
|
||||
if (IsAlphabetLanguage())
|
||||
{
|
||||
if (orgText.Length <= 11)
|
||||
{
|
||||
label.transform.localPosition = (is2D ? CARD_NAME_POS_SHORT_2D : CARD_NAME_POS_SHORT);
|
||||
}
|
||||
else
|
||||
{
|
||||
label.transform.localPosition = (is2D ? CARD_NAME_POS_NORMAL_2D : CARD_NAME_POS_NORMAL);
|
||||
}
|
||||
}
|
||||
else if (ConvertToWithoutBBCode(orgText).Length <= 5)
|
||||
{
|
||||
label.transform.localPosition = (is2D ? CARD_NAME_POS_SHORT_2D : CARD_NAME_POS_SHORT);
|
||||
}
|
||||
else
|
||||
{
|
||||
label.transform.localPosition = (is2D ? CARD_NAME_POS_NORMAL_2D : CARD_NAME_POS_NORMAL);
|
||||
}
|
||||
if (!is2D && IsAlphabetLanguage())
|
||||
{
|
||||
Vector3 localPosition = label.transform.parent.localPosition;
|
||||
float num = CARD_NAME_Z_ALPHABET_LANGUAGE;
|
||||
if (label.transform.parent.localPosition.z > 0f)
|
||||
{
|
||||
num *= -1f;
|
||||
}
|
||||
localPosition.z = num;
|
||||
label.transform.localPosition += CARD_NAME_POSTION_ADD;
|
||||
label.transform.parent.localPosition = localPosition;
|
||||
label.fontSize = CARD_NAME_SIZE_ALPHABET_LANGUAGE;
|
||||
}
|
||||
}
|
||||
|
||||
public static List<string> GetParentList(Transform t, bool isOwnContains)
|
||||
{
|
||||
List<string> list = new List<string>();
|
||||
if (isOwnContains)
|
||||
{
|
||||
list.Add(t.name);
|
||||
}
|
||||
Transform transform = null;
|
||||
Transform transform2 = t;
|
||||
while ((transform = transform2.parent) != null)
|
||||
{
|
||||
list.Insert(0, transform.name);
|
||||
transform2 = transform;
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public static string GetParentListToString(Transform t, bool isOwnContains)
|
||||
{
|
||||
List<string> parentList = GetParentList(t, isOwnContains);
|
||||
string text = string.Empty;
|
||||
for (int i = 0; i < parentList.Count; i++)
|
||||
{
|
||||
if (i != 0)
|
||||
{
|
||||
text += ":";
|
||||
}
|
||||
text += parentList[i];
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
public static bool IsAlphabetLanguage()
|
||||
{
|
||||
string textLanguage = CustomPreference.GetTextLanguage();
|
||||
return AlphabetLanguageNames.Contains(textLanguage);
|
||||
}
|
||||
|
||||
public static bool IsWordBreakLanguage()
|
||||
{
|
||||
string textLanguage = CustomPreference.GetTextLanguage();
|
||||
return WordBreakLanguageNames.Contains(textLanguage);
|
||||
}
|
||||
|
||||
public static LANG_TYPE CastToLangType(string type)
|
||||
{
|
||||
foreach (LANG_TYPE item in Enum.GetValues(typeof(LANG_TYPE)).Cast<LANG_TYPE>())
|
||||
{
|
||||
if (type == item.ToString())
|
||||
{
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return LANG_TYPE.Max;
|
||||
}
|
||||
|
||||
public static bool IsSupportedLanguageType(string langType)
|
||||
{
|
||||
for (int i = 0; i < LanguagePropList.Count(); i++)
|
||||
{
|
||||
if (LanguagePropList[i].LangType == langType)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool IsSupportedSystemLanguage(string sysLang)
|
||||
{
|
||||
for (int i = 0; i < LanguagePropList.Count(); i++)
|
||||
{
|
||||
if (LanguagePropList[i].Name == sysLang)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static string GetDisplayLanguage(string type)
|
||||
{
|
||||
for (int i = 0; i < LanguagePropList.Count(); i++)
|
||||
{
|
||||
if (LanguagePropList[i].LangType == type)
|
||||
{
|
||||
return LanguagePropList[i].DisplayName;
|
||||
}
|
||||
}
|
||||
return LanguagePropList[0].DisplayName;
|
||||
}
|
||||
|
||||
public static string GetLanguageType(string sysLang)
|
||||
{
|
||||
for (int i = 0; i < LanguagePropList.Count(); i++)
|
||||
{
|
||||
if (LanguagePropList[i].Name == sysLang)
|
||||
{
|
||||
return LanguagePropList[i].LangType;
|
||||
}
|
||||
}
|
||||
return LanguagePropList[0].LangType;
|
||||
}
|
||||
|
||||
public static string GetFontLangType(string type)
|
||||
{
|
||||
for (int i = 0; i < LanguagePropList.Count(); i++)
|
||||
{
|
||||
if (LanguagePropList[i].LangType == type)
|
||||
{
|
||||
return LanguagePropList[i].Font;
|
||||
}
|
||||
}
|
||||
return LanguagePropList[0].Font;
|
||||
}
|
||||
|
||||
public static string GetSystemLanguage()
|
||||
{
|
||||
if (Application.systemLanguage == SystemLanguage.Chinese)
|
||||
{
|
||||
switch (GetUserDefaultLangID())
|
||||
{
|
||||
case 2052:
|
||||
case 4100:
|
||||
return SystemLanguage.ChineseSimplified.ToString();
|
||||
case 1028:
|
||||
case 3076:
|
||||
case 5124:
|
||||
return SystemLanguage.ChineseTraditional.ToString();
|
||||
}
|
||||
}
|
||||
return Application.systemLanguage.ToString();
|
||||
}
|
||||
}
|
||||
12
SVSim.BattleEngine/Engine/GuardInfo.cs
Normal file
12
SVSim.BattleEngine/Engine/GuardInfo.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
public class GuardInfo
|
||||
{
|
||||
public BattleCardBase OwnerCard { get; private set; }
|
||||
|
||||
public string DuplicateBanSkillNum { get; private set; }
|
||||
|
||||
public GuardInfo(BattleCardBase card, string _duplicateBanSkillNum)
|
||||
{
|
||||
OwnerCard = card;
|
||||
DuplicateBanSkillNum = _duplicateBanSkillNum;
|
||||
}
|
||||
}
|
||||
139
SVSim.BattleEngine/Engine/HandControl.cs
Normal file
139
SVSim.BattleEngine/Engine/HandControl.cs
Normal file
@@ -0,0 +1,139 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.View;
|
||||
|
||||
public abstract class HandControl
|
||||
{
|
||||
public enum ArrangeType
|
||||
{
|
||||
Fan,
|
||||
Flat
|
||||
}
|
||||
|
||||
public enum HandState
|
||||
{
|
||||
Unfocus,
|
||||
Focus
|
||||
}
|
||||
|
||||
public enum HandVisible
|
||||
{
|
||||
Invisible,
|
||||
Visible
|
||||
}
|
||||
|
||||
protected readonly GameObject _gameObject;
|
||||
|
||||
protected HandState _handState;
|
||||
|
||||
protected HandVisible _handVisible;
|
||||
|
||||
protected Vector3[] _cardPos;
|
||||
|
||||
protected Vector3[] _cardRot;
|
||||
|
||||
protected Vector3[] _cardScale;
|
||||
|
||||
protected readonly BattleCamera _battleCamera;
|
||||
|
||||
private HandTRSCalculatorBase _TRSCalculator;
|
||||
|
||||
public Transform Transform { get; private set; }
|
||||
|
||||
public bool IsHandStateLocked { get; private set; }
|
||||
|
||||
public abstract Vector3 BaseHandPos { get; }
|
||||
|
||||
public HandControl(GameObject gameObject, BattleCamera battleCamera)
|
||||
{
|
||||
_gameObject = gameObject;
|
||||
Transform = _gameObject.transform;
|
||||
Transform.localPosition = BaseHandPos;
|
||||
_handState = HandState.Unfocus;
|
||||
_handVisible = HandVisible.Invisible;
|
||||
_battleCamera = battleCamera;
|
||||
_cardPos = new Vector3[9];
|
||||
_cardRot = new Vector3[9];
|
||||
_cardScale = new Vector3[9];
|
||||
_TRSCalculator = CreateHandCardTRSCalculator(PlayerPrefsWrapper.GetBool(PlayerPrefsWrapper.FIXEDUSE_COST_INFO) ? ArrangeType.Flat : ArrangeType.Fan);
|
||||
}
|
||||
|
||||
public void AttachCardView(IBattleCardView cardView)
|
||||
{
|
||||
if (!(cardView is NullBattleCardView))
|
||||
{
|
||||
cardView.Transform.parent = Transform;
|
||||
cardView.GameObject.SetActive(value: false);
|
||||
cardView.GameObject.SetActive(value: true);
|
||||
}
|
||||
}
|
||||
|
||||
protected void RecalculateTRS(int cardNum)
|
||||
{
|
||||
for (int i = 0; i < cardNum; i++)
|
||||
{
|
||||
_TRSCalculator.CalcTRS(_handState, cardNum, i, ref _cardPos[i], ref _cardRot[i], ref _cardScale[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeArrangeType(ArrangeType type, float time, List<IBattleCardView> battleCardViewList)
|
||||
{
|
||||
_TRSCalculator = CreateHandCardTRSCalculator(type);
|
||||
RearrangeHand(time, battleCardViewList);
|
||||
}
|
||||
|
||||
protected abstract HandTRSCalculatorBase CreateHandCardTRSCalculator(ArrangeType type);
|
||||
|
||||
public abstract void RearrangeHand(float time, List<IBattleCardView> battleCardViewList, bool isNewReplayMoveTurn = false);
|
||||
|
||||
public abstract void HideHand(float time, List<IBattleCardView> battleCardViewList);
|
||||
|
||||
public void LockHandControlState()
|
||||
{
|
||||
IsHandStateLocked = true;
|
||||
}
|
||||
|
||||
public void SetHandState(HandState state)
|
||||
{
|
||||
if (!IsHandStateLocked)
|
||||
{
|
||||
_handState = state;
|
||||
}
|
||||
}
|
||||
|
||||
public HandState GetHandState()
|
||||
{
|
||||
return _handState;
|
||||
}
|
||||
|
||||
public bool IsHandStateFocus()
|
||||
{
|
||||
return _handState == HandState.Focus;
|
||||
}
|
||||
|
||||
public HandVisible GetHandVisible()
|
||||
{
|
||||
return _handVisible;
|
||||
}
|
||||
|
||||
public bool IsVisibleHand()
|
||||
{
|
||||
return _handVisible == HandVisible.Visible;
|
||||
}
|
||||
|
||||
public Vector3 GetHandCardPos(int idx)
|
||||
{
|
||||
return _cardPos[idx];
|
||||
}
|
||||
|
||||
public Vector3 GetHandCardRot(int idx)
|
||||
{
|
||||
return _cardRot[idx];
|
||||
}
|
||||
|
||||
public void SetHandPosition()
|
||||
{
|
||||
Transform.localPosition = BaseHandPos;
|
||||
}
|
||||
}
|
||||
22
SVSim.BattleEngine/Engine/HandTRSCalculatorBase.cs
Normal file
22
SVSim.BattleEngine/Engine/HandTRSCalculatorBase.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using UnityEngine;
|
||||
|
||||
public abstract class HandTRSCalculatorBase
|
||||
{
|
||||
protected const float HAND_ALL_WIDTH = 700f;
|
||||
|
||||
protected const float CARD_WIDTH = 200f;
|
||||
|
||||
protected readonly Vector3 _handPos = Vector3.zero;
|
||||
|
||||
public HandTRSCalculatorBase(Vector3 handPos)
|
||||
{
|
||||
_handPos = handPos;
|
||||
}
|
||||
|
||||
public abstract void CalcTRS(HandControl.HandState state, int handMax, int handIndex, ref Vector3 retPos, ref Vector3 retRot, ref Vector3 retScale);
|
||||
|
||||
protected float CalHandAllWidth(int handMax)
|
||||
{
|
||||
return Mathf.Min(200f * (float)(handMax - 1), 700f);
|
||||
}
|
||||
}
|
||||
16
SVSim.BattleEngine/Engine/HeaderData.cs
Normal file
16
SVSim.BattleEngine/Engine/HeaderData.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
public class HeaderData
|
||||
{
|
||||
public int result_code;
|
||||
|
||||
public int resource_version;
|
||||
|
||||
public string parameter_version;
|
||||
|
||||
public int servertime;
|
||||
|
||||
public string udid;
|
||||
|
||||
public int viewer_id;
|
||||
|
||||
public string result_message;
|
||||
}
|
||||
23
SVSim.BattleEngine/Engine/HealCardParameterModifier.cs
Normal file
23
SVSim.BattleEngine/Engine/HealCardParameterModifier.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
public class HealCardParameterModifier : TurnAndIntValue, ICardLifeModifier
|
||||
{
|
||||
public int Heal => base.Value;
|
||||
|
||||
public bool IsClearBeforeModifier => false;
|
||||
|
||||
public bool IsChangeMaxLife => false;
|
||||
|
||||
public HealCardParameterModifier(int heal, int turn, bool isSelfTurn)
|
||||
: base(heal, turn, isSelfTurn)
|
||||
{
|
||||
}
|
||||
|
||||
public int CalcLife(int baseLife)
|
||||
{
|
||||
return baseLife + Heal;
|
||||
}
|
||||
|
||||
public int CalcMaxLife(int baseMaxLife)
|
||||
{
|
||||
return baseMaxLife;
|
||||
}
|
||||
}
|
||||
8
SVSim.BattleEngine/Engine/HealModifier.cs
Normal file
8
SVSim.BattleEngine/Engine/HealModifier.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
public abstract class HealModifier
|
||||
{
|
||||
protected BattleCardBase _owner;
|
||||
|
||||
public int OrderCount { get; protected set; }
|
||||
|
||||
public abstract int Calc(int healAmount, BattleCardBase healOwner, BattleCardBase target);
|
||||
}
|
||||
161
SVSim.BattleEngine/Engine/IBattlePlayerReadOnlyInfo.cs
Normal file
161
SVSim.BattleEngine/Engine/IBattlePlayerReadOnlyInfo.cs
Normal file
@@ -0,0 +1,161 @@
|
||||
using System.Collections.Generic;
|
||||
using Wizard.Battle;
|
||||
|
||||
public interface IBattlePlayerReadOnlyInfo
|
||||
{
|
||||
bool IsPlayer { get; }
|
||||
|
||||
bool IsSelfTurn { get; }
|
||||
|
||||
int Turn { get; }
|
||||
|
||||
bool IsGameFirst { get; }
|
||||
|
||||
int PpTotal { get; }
|
||||
|
||||
int Pp { get; }
|
||||
|
||||
int EpTotal { get; }
|
||||
|
||||
int CurrentEpCount { get; }
|
||||
|
||||
int Bp { get; }
|
||||
|
||||
int EvolveWaitTurnCount { get; }
|
||||
|
||||
int GameUsedEpCount { get; }
|
||||
|
||||
int TurnUsedEpCount { get; }
|
||||
|
||||
bool IsShortageDeckLose { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoDeckCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoBattleStartDeckCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoHandCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoClassAndInPlayCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoCemeterys { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoBanishCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoFusionIngredientList { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoTurnFusionCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoNecromanceZoneCards { get; }
|
||||
|
||||
IEnumerable<IEnumerable<IReadOnlyBattleCardInfo>> SkillInfoLastTargets { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoDiscards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoDiscardedCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoFusionIngredientAndDiscardedCards { get; }
|
||||
|
||||
IEnumerable<BattlePlayerBase.TurnAndCard> SkillInfoReturnedCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoHealingCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoSkillSummonedCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoEvolvedCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoDestroyedWhenDestroyCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoTurnPlayCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoTurnDrawCards { get; }
|
||||
|
||||
IEnumerable<BattlePlayerBase.CardAndId> SkillInfoTurnDrawTokenCardsWithId { get; }
|
||||
|
||||
IEnumerable<BattlePlayerBase.TurnAndCard> SkillInfoGameSummonCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGamePlayCards { get; }
|
||||
|
||||
IEnumerable<BattlePlayerBase.TurnAndCard> SkillInfoGameTurnPlayCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGameCrystallizedPlayCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGameSkillActivated { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoInplayMetamorphosedCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGameBurialRiteCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoTurnBurialRiteCards { get; }
|
||||
|
||||
IEnumerable<BattlePlayerBase.TurnAndCard> SkillInfoGameReanimatedCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGameDrawCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGameDrawTokenCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGameAddUpdateDeckCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGameLeftCards { get; }
|
||||
|
||||
IEnumerable<BattlePlayerBase.TurnAndCard> SkillInfoGameTurnLeftCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGameSuperSkyboundArtCards { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoGameQuickAttackCards { get; }
|
||||
|
||||
List<TurnAndIntValue> TurnPlayCardCountInfo { get; }
|
||||
|
||||
List<TurnAndIntValue> TurnFusionCountInfo { get; }
|
||||
|
||||
int TurnNecromanceCount { get; }
|
||||
|
||||
int GameNecromanceCount { get; }
|
||||
|
||||
int GameUsedPpCount { get; }
|
||||
|
||||
int RallyCount { get; }
|
||||
|
||||
int DeckBanishCount { get; }
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> SkillInfoInPlayCards { get; }
|
||||
|
||||
IReadOnlyBattleCardInfo SkillInfoClass { get; }
|
||||
|
||||
List<TurnAndIntValue> TurnStartLifeList { get; }
|
||||
|
||||
int GameResonanceStartCount { get; }
|
||||
|
||||
int TurnResonanceStartCount { get; }
|
||||
|
||||
int GameUsedWhiteRitualCount { get; }
|
||||
|
||||
int LastInplayWhiteRitualStack { get; }
|
||||
|
||||
List<TurnAndIntValue> GameSkillReturnCardCountList { get; }
|
||||
|
||||
List<TurnAndIntValue> GameSkillDiscardCountList { get; }
|
||||
|
||||
List<TurnAndIntValue> GameSkillBuffCountList { get; }
|
||||
|
||||
List<TurnAndIntValue> GameSkillMetamorphoseCountList { get; }
|
||||
|
||||
int GetCurrentTurnEvolveCount();
|
||||
|
||||
int GetSpecificTurnEvolveCount(TurnPlayerInfo turnPlayerInfo);
|
||||
|
||||
IEnumerable<IReadOnlyBattleCardInfo> GetSpecificTurnDestroyCards(TurnPlayerInfo turnPlayerInfo);
|
||||
|
||||
int GetSpecificTurnWhenHealingCount(TurnPlayerInfo turnPlayerInfo, bool isTextKeyword);
|
||||
|
||||
int GetSpecificTurnSkillReturnCardCount(TurnPlayerInfo turnPlayerInfo);
|
||||
|
||||
int GetSpecificTurnSkillDiscardCount(TurnPlayerInfo turnPlayerInfo);
|
||||
|
||||
int GetSpecificTurnEnhanceCardCount(TurnPlayerInfo turnPlayerInfo);
|
||||
|
||||
int GetAttachTurnBySkillId(string id);
|
||||
|
||||
int GetCurrentTurnPlayCount();
|
||||
|
||||
int GetSpecificTurnPlayCount(TurnPlayerInfo turnPlayerInfo);
|
||||
}
|
||||
8
SVSim.BattleEngine/Engine/IBattlePlayerSkill.cs
Normal file
8
SVSim.BattleEngine/Engine/IBattlePlayerSkill.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public interface IBattlePlayerSkill
|
||||
{
|
||||
VfxBase StartBattleHandCard(BattleCardBase card);
|
||||
|
||||
VfxBase StopBattleHandCard(BattleCardBase card);
|
||||
}
|
||||
15
SVSim.BattleEngine/Engine/IBattlePlayerVfxCreator.cs
Normal file
15
SVSim.BattleEngine/Engine/IBattlePlayerVfxCreator.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public interface IBattlePlayerVfxCreator
|
||||
{
|
||||
VfxBase CreateUsePp(int pp, int maxPp, Vector3 labelPosition, bool newReplayMoveTurn);
|
||||
|
||||
VfxBase CreateUseBp(int bp, int deltaBp, Func<Vector3> getPosition, bool isVariableCost, bool isSelf);
|
||||
|
||||
VfxBase CreateUpdateEp(int evolCount, int evolveWaitTurnCount);
|
||||
|
||||
VfxBase CreateCardDraw(IEnumerable<BattleCardBase> cards, bool isOpenDrawSkill = false);
|
||||
}
|
||||
31
SVSim.BattleEngine/Engine/IBattleResultReporter.cs
Normal file
31
SVSim.BattleEngine/Engine/IBattleResultReporter.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System.Collections.Generic;
|
||||
using LitJson;
|
||||
using Wizard;
|
||||
using Wizard.Lottery;
|
||||
|
||||
public interface IBattleResultReporter
|
||||
{
|
||||
bool IsEnd { get; }
|
||||
|
||||
List<UserAchievement> UserAchievement { get; }
|
||||
|
||||
List<UserMission> UserMission { get; }
|
||||
|
||||
List<ReceivedReward> MissionRewards { get; }
|
||||
|
||||
List<ReceivedReward> VictoryRewards { get; }
|
||||
|
||||
int ClassExp { get; }
|
||||
|
||||
bool IsDataExist { get; }
|
||||
|
||||
LotteryApplyData LotteryData { get; }
|
||||
|
||||
MyPageHomeDialogData HomeDialogData { get; }
|
||||
|
||||
void Report(bool isWin);
|
||||
|
||||
void Destroy();
|
||||
|
||||
JsonData GetFinishResponseData();
|
||||
}
|
||||
8
SVSim.BattleEngine/Engine/ICardChantCountModifier.cs
Normal file
8
SVSim.BattleEngine/Engine/ICardChantCountModifier.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
public interface ICardChantCountModifier
|
||||
{
|
||||
bool IsClearBeforeModifier { get; }
|
||||
|
||||
int CalcChantCount(int baseCost);
|
||||
|
||||
ICardChantCountModifier Clone();
|
||||
}
|
||||
12
SVSim.BattleEngine/Engine/ICardCostModifier.cs
Normal file
12
SVSim.BattleEngine/Engine/ICardCostModifier.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
public interface ICardCostModifier
|
||||
{
|
||||
int Cost { get; }
|
||||
|
||||
bool IsClearBeforeModifier { get; }
|
||||
|
||||
bool IsResidentModifier { get; }
|
||||
|
||||
int CalcCost(int baseCost);
|
||||
|
||||
ICardCostModifier Clone();
|
||||
}
|
||||
6
SVSim.BattleEngine/Engine/ICardEpModifier.cs
Normal file
6
SVSim.BattleEngine/Engine/ICardEpModifier.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
public interface ICardEpModifier
|
||||
{
|
||||
bool IsClearBeforeModifier { get; }
|
||||
|
||||
int CalcEp(int baseEp);
|
||||
}
|
||||
10
SVSim.BattleEngine/Engine/ICardLifeModifier.cs
Normal file
10
SVSim.BattleEngine/Engine/ICardLifeModifier.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
public interface ICardLifeModifier
|
||||
{
|
||||
bool IsChangeMaxLife { get; }
|
||||
|
||||
bool IsClearBeforeModifier { get; }
|
||||
|
||||
int CalcLife(int baseLife);
|
||||
|
||||
int CalcMaxLife(int baseMaxLife);
|
||||
}
|
||||
6
SVSim.BattleEngine/Engine/ICardOffenseModifier.cs
Normal file
6
SVSim.BattleEngine/Engine/ICardOffenseModifier.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
public interface ICardOffenseModifier
|
||||
{
|
||||
bool IsClearBeforeModifier { get; }
|
||||
|
||||
int CalcOffense(int offense);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
public interface ICardSkyboundArtCountModifier
|
||||
{
|
||||
bool IsClearBeforeModifier { get; }
|
||||
|
||||
int CalcSkyboundArtCount(int count);
|
||||
|
||||
ICardSkyboundArtCountModifier Clone();
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
public interface ICardSuperSkyboundArtCountModifier
|
||||
{
|
||||
bool IsClearBeforeModifier { get; }
|
||||
|
||||
int CalcSuperSkyboundArtCount(int count);
|
||||
|
||||
ICardSuperSkyboundArtCountModifier Clone();
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
public interface ICardUnionBurstCountModifier
|
||||
{
|
||||
bool IsClearBeforeModifier { get; }
|
||||
|
||||
int CalcUnionBurstCount(int count);
|
||||
|
||||
ICardUnionBurstCountModifier Clone();
|
||||
}
|
||||
58
SVSim.BattleEngine/Engine/IDetailPanelControl.cs
Normal file
58
SVSim.BattleEngine/Engine/IDetailPanelControl.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Wizard.Battle.UI;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public interface IDetailPanelControl
|
||||
{
|
||||
bool IsShow { get; }
|
||||
|
||||
BattleCardBase _card { get; }
|
||||
|
||||
bool forceEvolutionConfirm { get; set; }
|
||||
|
||||
UIButton EvolveButton { get; }
|
||||
|
||||
GameObject EvoTargetPanelColliderGameObject { get; }
|
||||
|
||||
DetailPanelControl.ShowRequest CurrentShowRequest { get; }
|
||||
|
||||
EvolutionConfirmation _evolutionConfirmation { get; }
|
||||
|
||||
event Action OnHideOneTime;
|
||||
|
||||
void UpdateCardDescriptionOnEvent();
|
||||
|
||||
void UpdateCardDescriptionOnEvolutionEvent();
|
||||
|
||||
void Show(BattleManagerBase battleMgrBase, OperateMgr operateMgr, BattleCardBase card, DetailPanelControl.ShowRequest showRequest);
|
||||
|
||||
void ShowList(BattleManagerBase battleMgrBase, OperateMgr operateMgr, List<BattleCardBase> cards, DetailPanelControl.ShowRequest showRequest, BuffInfo buff, BattleLogItem.CardTextureOption textureOption = BattleLogItem.CardTextureOption.Null, string divergenceId = "", int logTextureId = 0);
|
||||
|
||||
void Hide();
|
||||
|
||||
void SetSize(float percent);
|
||||
|
||||
void UpdateBuffInfo(BattleCardBase targetCard, List<BattlePlayerBase.MyRotationBonusCondition> otationBonusList);
|
||||
|
||||
void UpdateLogItemBuffInfo(BattleCardBase targetCard);
|
||||
|
||||
void SetScreenPosition(bool right);
|
||||
|
||||
VfxBase ShowEvolutionButton(BattleCardBase card);
|
||||
|
||||
void CreateNextPanel();
|
||||
|
||||
void SetKeyBtnActive(List<bool> hasKeyword);
|
||||
|
||||
void ShowKeySubPanel(int page);
|
||||
|
||||
void HideKeySubPanel();
|
||||
|
||||
bool IsDisplayedRight();
|
||||
|
||||
List<BuffInfo> GetDistinctBuffList(List<BuffInfo> buffInfoList);
|
||||
|
||||
List<NetworkBattleReceiver.ReplayBuffInfoLabel> GetBuffDetailLabel(BattleCardBase targetCard);
|
||||
}
|
||||
8
SVSim.BattleEngine/Engine/INextSceneSelector.cs
Normal file
8
SVSim.BattleEngine/Engine/INextSceneSelector.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using UnityEngine;
|
||||
|
||||
public interface INextSceneSelector
|
||||
{
|
||||
void Setup(bool isWin, GameObject gameObject);
|
||||
|
||||
void Show();
|
||||
}
|
||||
3
SVSim.BattleEngine/Engine/IPpModifier.cs
Normal file
3
SVSim.BattleEngine/Engine/IPpModifier.cs
Normal file
@@ -0,0 +1,3 @@
|
||||
public interface IPpModifier
|
||||
{
|
||||
}
|
||||
6
SVSim.BattleEngine/Engine/IResultAnimationHandler.cs
Normal file
6
SVSim.BattleEngine/Engine/IResultAnimationHandler.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
public interface IResultAnimationHandler
|
||||
{
|
||||
ResultAnimationAgent m_resultAnimationAgent { get; }
|
||||
|
||||
void Destroy();
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user