// сам носимый баллон:

        // внедряем в FX-объект баллона контроллер подмены анимации
        // вытаскиваем индекс из носителя и применяем подмену символа анимации
        // запоминаем ссылку на новый FX-объект
        private static void ApplySymbolOverrideBalloonFX(BalloonFX.Instance smi, KBatchedAnimController kbac)
        {
            kbac.usingNewSymbolOverrideSystem = true;
            var symbolOverrideController = SymbolOverrideControllerUtil.AddToPrefab(kbac.gameObject);
            var receiver = smi.master.GetComponent <VaricolouredBalloonsHelper>();

            if (receiver != null)
            {
                receiver.fx = smi;
                VaricolouredBalloonsHelper.ApplySymbolOverrideByIdx(symbolOverrideController, receiver.ReceiverBalloonSymbolIdx);
            }
        }
Exemple #2
0
 private static void Postfix(BalloonArtistChore.States __instance)
 {
     __instance.balloonStand.Enter((BalloonArtistChore.StatesInstance smi) => smi.GetComponent <VaricolouredBalloonsHelper>()?.RandomizeArtistBalloonSymbolIdx());
     __instance.balloonStand.idle.Enter((BalloonArtistChore.StatesInstance smi) =>
     {
         VaricolouredBalloonsHelper artist = smi.GetComponent <VaricolouredBalloonsHelper>();
         if (artist != null)
         {
             artist.ApplySymbolOverrideByIdx(artist.ArtistBalloonSymbolIdx);
         }
     });
 }
Exemple #3
0
 private static void EquippableBalloonConfig_OnUnequipBalloon_Prefix(Equippable eq, ref BalloonFX.Instance ___fx)
 {
     if (VaricolouredBalloonsOptions.Instance.DestroyFXAfterEffectExpired)
     {
         VaricolouredBalloonsHelper carrier = (eq?.assignee?.GetSoleOwner()?.GetComponent <MinionAssignablesProxy>().target as KMonoBehaviour)?.GetComponent <VaricolouredBalloonsHelper>();
         if (carrier?.fx != null)
         {
             carrier.fx.StopSM("Unequipped");
             carrier.fx = null;
         }
     }
     ___fx = null;
 }
Exemple #4
0
        // перехватываем "задание 'получить баллон' начато"
        // вытаскиваем индекс из артиста, запихиваем его в получателя, и применяем подмену символа анимации
        // уничтожаем предыдущий FX-объект баллона если он есть
        private static void OnBeginGetBalloonChore(BalloonStandConfig balloonStandConfig, Chore chore)
        {
            GetBalloonWorkable balloonWorkable = chore.target?.GetComponent <GetBalloonWorkable>();

            if (balloonWorkable != null)
            {
                uint idx = BALLOONARTIST.Get(balloonWorkable)?.GetComponent <VaricolouredBalloonsHelper>()?.ArtistBalloonSymbolIdx ?? 0;
                VaricolouredBalloonsHelper receiver = chore.driver?.GetComponent <VaricolouredBalloonsHelper>();
                if (receiver != null)
                {
                    receiver.ReceiverBalloonSymbolIdx = idx;
                    receiver.ApplySymbolOverrideByIdx(idx);
                    if (receiver.fx != null)
                    {
                        receiver.fx.StopSM("Unequipped");
                        receiver.fx = null;
                    }
                }
            }
        }
 private static void BeforeDbInit()
 {
     Utils.InitLocalization(typeof(STRINGS));
     VaricolouredBalloonsHelper.InitializeAnims();
 }
Exemple #6
0
 private static void InitAnims()
 {
     VaricolouredBalloonsHelper.InitializeAnims();
 }