Advertisement
SuperMeatBoy

Untitled

Aug 7th, 2023
670
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.95 KB | None | 0 0
  1. public void ConvertInto(GameEntity gameEntity,
  2.                             string cardname,
  3.                             bool createEphemeral = false, //ephemeral(temporary) не являются частью HeroGrid или DataPool
  4.                                                         //в прототипе у них слегка отличается цвет, так что игрок понимает, что они
  5.                                                         //здесь "временно", то есть не часть колоды игрока.  
  6.                             bool replaceInDeck = false, //данная трансформация изменяет runState (меняет нод и на уровне, и в heroGrid)
  7.                             bool forceReveal = false,  //после трансформации ревилит нод
  8.                             bool dontRefresh = false) //после трансформации нод остаётся высушенным
  9.     {
  10.         if (gameEntity.hasUIView) { //special ui only conversion
  11.             ConvertIntoUI(gameEntity, cardname);
  12.             return;
  13.         }
  14.         var convertInto = _contexts.refs.viewManager.value.GetCardAssetByID(cardname);
  15.         CleanupCard(gameEntity);
  16.         var convertedCard = gameEntity;
  17.         var pos = gameEntity.position.value;
  18.         if (replaceInDeck) {
  19.             if (convertedCard.hasUILinkedEntity) {
  20.                 var uiLink = _contexts.game.GetEntityWithLookupIndex(convertedCard.uILinkedEntity.lookupIndex);
  21.                
  22.                 uiLink?.ReplaceCard(convertInto.Create());
  23.                 uiLink?.ReplaceAspects(convertInto.GetAspectsList());
  24.                 uiLink?.ReplaceEffects(convertInto.GetEffectsMap());
  25.                 if (uiLink != null) {
  26.                     uiLink.isDamaged = false;
  27.                 }
  28.             }
  29.             else {
  30.                 new AddNodeToBenchEffect() {cardname = convertInto.name}.Process(gameEntity);
  31.             }
  32.         }
  33.         if (gameEntity.card.obj.suit.Equals(_effProc.heroSuit) && !gameEntity.isEphemeral && !replaceInDeck) { //why !replaceInDeck???
  34.             Debug.Log($"replacing hero card {gameEntity.card.obj}");
  35.             SendToSafeHaven(gameEntity);
  36.             convertedCard = CreateCard(convertInto.name);
  37.             convertedCard.ReplacePosition(pos);
  38.             convertedCard.isInstantMove = true;
  39.         }
  40.         else {
  41.             convertedCard.ReplaceCard(convertInto.Create());
  42.             convertedCard.ReplaceAspects(convertInto.GetAspectsList());
  43.             convertedCard.ReplaceEffects(convertInto.GetEffectsMap());
  44.         }
  45.         convertedCard.isEphemeral = createEphemeral;
  46.         convertedCard.isDamaged = false;
  47.         if (!dontRefresh) {
  48.             convertedCard.isExhausted = false;
  49.         }
  50.         InitializeCard(convertedCard);
  51.         if (forceReveal) {  //isRevealed is a bugfix for something
  52.             convertedCard.isRevealed = false;
  53.             RevealNode(convertedCard);
  54.         }
  55.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement