Exemplo n.º 1
0
 private void RoomCleared()
 {
     if (!string.IsNullOrEmpty(this.overrideDeathAnim) && base.aiAnimator)
     {
         bool flag = false;
         for (int i = 0; i < base.aiAnimator.OtherAnimations.Count; i++)
         {
             if (base.aiAnimator.OtherAnimations[i].name == "death")
             {
                 base.aiAnimator.OtherAnimations[i].anim.Type   = DirectionalAnimation.DirectionType.Single;
                 base.aiAnimator.OtherAnimations[i].anim.Prefix = this.overrideDeathAnim;
                 flag = true;
             }
         }
         if (!flag)
         {
             AIAnimator.NamedDirectionalAnimation namedDirectionalAnimation = new AIAnimator.NamedDirectionalAnimation();
             namedDirectionalAnimation.name         = "death";
             namedDirectionalAnimation.anim         = new DirectionalAnimation();
             namedDirectionalAnimation.anim.Type    = DirectionalAnimation.DirectionType.Single;
             namedDirectionalAnimation.anim.Prefix  = this.overrideDeathAnim;
             namedDirectionalAnimation.anim.Flipped = new DirectionalAnimation.FlipType[1];
             base.aiAnimator.OtherAnimations.Add(namedDirectionalAnimation);
         }
     }
     if (this.preventExplodeOnDeath)
     {
         ExplodeOnDeath component = base.GetComponent <ExplodeOnDeath>();
         if (component)
         {
             component.enabled = false;
         }
     }
     AkSoundEngine.PostEvent(soundToUse, gameObject);
     SpawnManager.SpawnVFX(gameObject, base.specRigidbody.UnitCenter, Quaternion.Euler(0, 0, 0));
     base.healthHaver.PreventAllDamage = false;
     base.aiActor.EraseFromExistence(true);
 }
Exemplo n.º 2
0
        public static void AdvAddAnimation(this AIAnimator targetAnimator, string animationName, DirectionalAnimation.DirectionType directionality, CompanionBuilder.AnimationType AnimationType, List <DirectionalAnimationData> AnimData)
        {
            List <string> subAnimNames = new List <string>();

            foreach (DirectionalAnimationData data in AnimData)
            {
                subAnimNames.Add(data.subAnimationName);

                tk2dSpriteCollectionData tk2dSpriteCollectionData = targetAnimator.GetComponent <tk2dSpriteCollectionData>();
                if (!tk2dSpriteCollectionData)
                {
                    tk2dSpriteCollectionData = SpriteBuilder.ConstructCollection(targetAnimator.gameObject, targetAnimator.name + "_collection");
                }

                string[]   resourceNames = ResourceExtractor.GetResourceNames();
                List <int> list          = new List <int>();
                for (int i = 0; i < resourceNames.Length; i++)
                {
                    if (resourceNames[i].StartsWith(data.pathDirectory.Replace('/', '.'), StringComparison.OrdinalIgnoreCase))
                    {
                        // ETGModConsole.Log($"Resource Found: {resourceNames[i]}.");
                        list.Add(SpriteBuilder.AddSpriteToCollection(resourceNames[i], tk2dSpriteCollectionData));
                    }
                }
                //ETGModConsole.Log($"Adding animation {data.subAnimationName} with list length {list.Count}.");

                tk2dSpriteAnimationClip tk2dSpriteAnimationClip = SpriteBuilder.AddAnimation(targetAnimator.spriteAnimator, tk2dSpriteCollectionData, list, data.subAnimationName, data.wrapMode);
                tk2dSpriteAnimationClip.fps = (float)data.fps;
            }

            if (AnimationType != CompanionBuilder.AnimationType.Other)
            {
                DirectionalAnimation newDirectionalAnimation = new DirectionalAnimation
                {
                    Type      = directionality,
                    Flipped   = new DirectionalAnimation.FlipType[subAnimNames.Count],
                    AnimNames = subAnimNames.ToArray(),
                    Prefix    = string.Empty,
                };

                switch (AnimationType)
                {
                case CompanionBuilder.AnimationType.Idle:
                    targetAnimator.IdleAnimation = newDirectionalAnimation;
                    break;

                case CompanionBuilder.AnimationType.Move:
                    targetAnimator.MoveAnimation = newDirectionalAnimation;
                    break;

                case CompanionBuilder.AnimationType.Hit:
                    targetAnimator.HitAnimation = newDirectionalAnimation;
                    break;

                case CompanionBuilder.AnimationType.Talk:
                    targetAnimator.TalkAnimation = newDirectionalAnimation;
                    break;

                case CompanionBuilder.AnimationType.Flight:
                    targetAnimator.FlightAnimation = newDirectionalAnimation;
                    break;

                case CompanionBuilder.AnimationType.Fidget:
                    if (targetAnimator.IdleFidgetAnimations == null)
                    {
                        targetAnimator.IdleFidgetAnimations = new List <DirectionalAnimation>();
                    }
                    targetAnimator.IdleFidgetAnimations.Add(newDirectionalAnimation);
                    break;
                }
            }
            else
            {
                AIAnimator.NamedDirectionalAnimation newOtheranim = new AIAnimator.NamedDirectionalAnimation
                {
                    name = animationName,
                    anim = new DirectionalAnimation
                    {
                        Prefix    = animationName,
                        Type      = directionality,
                        Flipped   = new DirectionalAnimation.FlipType[subAnimNames.Count],
                        AnimNames = subAnimNames.ToArray(),
                    }
                };

                if (targetAnimator.OtherAnimations == null)
                {
                    targetAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation>();
                }
                targetAnimator.OtherAnimations.Add(newOtheranim);
            }
        }
Exemplo n.º 3
0
        // Token: 0x0600023B RID: 571 RVA: 0x00015AB8 File Offset: 0x00013CB8
        //public override DebrisObject Drop(PlayerController player)
        //{
        //	player.OnAllyFlipCompleted = (Action<FlippableCover>)Delegate.Remove(player.OnAllyFlipCompleted, new Action<FlippableCover>(this.HandleFlip));
        //	player.OnNewFloorLoaded = (Action<PlayerController>)Delegate.Remove(player.OnNewFloorLoaded, new Action<PlayerController>(this.HandleNewFloor));
        ///	this.DestroyCompanions();
        //	return base.Drop(player);
        //}

        // Token: 0x0600023C RID: 572 RVA: 0x00015B1C File Offset: 0x00013D1C
        public static void BuildPrefab()
        {
            bool flag  = AbilityRebel.AllyPrefab != null || CompanionBuilder.companionDictionary.ContainsKey(AbilityRebel.guid);
            bool flag2 = flag;
            bool flag3 = !flag2;

            if (flag3)
            {
                AbilityRebel.AllyPrefab = CompanionBuilder.BuildPrefab("Ally Boi", AbilityRebel.guid, AbilityRebel.spritePaths[0], new IntVector2(3, 2), new IntVector2(8, 9));
                AbilityRebel.AllyBehavior allyBehavior = AbilityRebel.AllyPrefab.AddComponent <AbilityRebel.AllyBehavior>();
                allyBehavior.aiAnimator.facingType            = AIAnimator.FacingType.Movement;
                allyBehavior.aiAnimator.faceSouthWhenStopped  = false;
                allyBehavior.aiAnimator.faceTargetWhenStopped = true;

                AIAnimator aiAnimator = allyBehavior.aiAnimator;
                //AIBulletBank aiBulletBlank = aiBulletBlank.
                //allyBehavior.aiShooter.equippedGunId = 79;

                aiAnimator.MoveAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.Single,
                    Prefix    = "run",
                    AnimNames = new string[1],
                    Flipped   = new DirectionalAnimation.FlipType[1]
                };
                aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation>
                {
                    new AIAnimator.NamedDirectionalAnimation
                    {
                        name = "die",
                        anim = new DirectionalAnimation
                        {
                            Type      = DirectionalAnimation.DirectionType.Single,
                            Prefix    = "die",
                            AnimNames = new string[1],
                            Flipped   = new DirectionalAnimation.FlipType[1]
                        }
                    }
                };
                aiAnimator.IdleAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                    AnimNames = new string[]
                    {
                        "idle_right",
                        "idle_left"
                    },
                    Flipped = new DirectionalAnimation.FlipType[2]
                };

                aiAnimator.IdleAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.Single,
                    Prefix    = "idle_right",
                    AnimNames = new string[1],
                    Flipped   = new DirectionalAnimation.FlipType[1]
                };

                DirectionalAnimation anim = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.Single,
                    Prefix    = "attack",
                    AnimNames = new string[1],
                    Flipped   = new DirectionalAnimation.FlipType[1]
                };
                aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation>
                {
                    new AIAnimator.NamedDirectionalAnimation
                    {
                        name = "attack",
                        anim = anim
                    }
                };
                AIAnimator.NamedDirectionalAnimation namedDirectionalAnimation = new AIAnimator.NamedDirectionalAnimation();
                namedDirectionalAnimation.name = "spawn";
                namedDirectionalAnimation.anim = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.Single,
                    Prefix    = "spawn",
                    AnimNames = new string[]
                    {
                        "spawn"
                    },
                    Flipped = new DirectionalAnimation.FlipType[1]
                };
                bool flag4 = AbilityRebel.AllyBoiCollection == null;
                bool flag5 = flag4;
                if (flag5)
                {
                    AbilityRebel.AllyBoiCollection = SpriteBuilder.ConstructCollection(AbilityRebel.AllyPrefab, "Ally_Boi_Collection");
                    UnityEngine.Object.DontDestroyOnLoad(AbilityRebel.AllyBoiCollection);
                    for (int i = 0; i < AbilityRebel.spritePaths.Length; i++)
                    {
                        SpriteBuilder.AddSpriteToCollection(AbilityRebel.spritePaths[i], AbilityRebel.AllyBoiCollection);
                    }
                    SpriteBuilder.AddAnimation(allyBehavior.spriteAnimator, AbilityRebel.AllyBoiCollection, new List <int>
                    {
                        43
                    }, "attack", tk2dSpriteAnimationClip.WrapMode.Once).fps = 20f;
                    SpriteBuilder.AddAnimation(allyBehavior.spriteAnimator, AbilityRebel.AllyBoiCollection, new List <int>
                    {
                        37,
                        38,
                        39,
                        40,
                        41,
                        42
                    }, "idle_left", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 12f;

                    SpriteBuilder.AddAnimation(allyBehavior.spriteAnimator, AbilityRebel.AllyBoiCollection, new List <int>
                    {
                        37,
                        38,
                        39,
                        40,
                        41,
                        42
                    }, "idle_right", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 12f;

                    SpriteBuilder.AddAnimation(allyBehavior.spriteAnimator, AbilityRebel.AllyBoiCollection, new List <int>
                    {
                        31,
                        32,
                        33,
                        34,
                        35,
                        36
                    }, "run", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 12f;

                    SpriteBuilder.AddAnimation(allyBehavior.spriteAnimator, AbilityRebel.AllyBoiCollection, new List <int>
                    {
                        31,
                        32,
                        33,
                        34,
                        35,
                        36
                    }, "run_right", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 12f;

                    SpriteBuilder.AddAnimation(allyBehavior.spriteAnimator, AbilityRebel.AllyBoiCollection, new List <int>
                    {
                        25,
                        26,
                        27,
                        28,
                        29,
                        30
                    }, "die", tk2dSpriteAnimationClip.WrapMode.Once).fps = 12f;
                    SpriteBuilder.AddAnimation(allyBehavior.spriteAnimator, AbilityRebel.AllyBoiCollection, new List <int>
                    {
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                        15,
                        16,
                        17,
                        18,
                        19,
                        20,
                        21,
                        22,
                        23,
                        24
                    }, "spawn", tk2dSpriteAnimationClip.WrapMode.Once).fps = 24f;
                }
                allyBehavior.aiActor.MovementSpeed    = 10f;
                allyBehavior.aiActor.HasShadow        = false;
                allyBehavior.aiActor.CanTargetPlayers = false;
                BehaviorSpeculator behaviorSpeculator = allyBehavior.behaviorSpeculator;
                behaviorSpeculator.AttackBehaviors.Add(new AbilityRebel.AllyAttackBehavior());
                behaviorSpeculator.MovementBehaviors.Add(new AbilityRebel.ApproachEnemiesBehavior());
                behaviorSpeculator.MovementBehaviors.Add(new CompanionFollowPlayerBehavior
                {
                    IdleAnimations = new string[]
                    {
                        "idle"
                    }
                });
                UnityEngine.Object.DontDestroyOnLoad(AbilityRebel.AllyPrefab);
                FakePrefab.MarkAsFakePrefab(AbilityRebel.AllyPrefab);
                AbilityRebel.AllyPrefab.SetActive(false);
                allyBehavior.CanInterceptBullets = true;
                allyBehavior.aiActor.healthHaver.PreventAllDamage = false;
                allyBehavior.aiActor.CollisionDamage = 0f;
                allyBehavior.aiActor.specRigidbody.CollideWithOthers  = true;
                allyBehavior.aiActor.specRigidbody.CollideWithTileMap = false;
                allyBehavior.aiActor.healthHaver.ForceSetCurrentHealth(12f);
                allyBehavior.aiActor.healthHaver.SetHealthMaximum(12f, null, false);
                allyBehavior.aiActor.specRigidbody.PixelColliders.Clear();
                allyBehavior.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.PlayerHitBox,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 16,
                    ManualHeight           = 24,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0
                });;

                /*
                 * allyBehavior.aiAnimator.specRigidbody.PixelColliders.Add(new PixelCollider
                 * {
                 *      ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                 *      CollisionLayer = CollisionLayer.PlayerHitBox,
                 *      IsTrigger = false,
                 *      BagleUseFirstFrameOnly = false,
                 *      SpecifyBagelFrame = string.Empty,
                 *      BagelColliderNumber = 0,
                 *      ManualOffsetX = 0,
                 *      ManualOffsetY = 0,
                 *      ManualWidth = 1,
                 *      ManualHeight = 1,
                 *      ManualDiameter = 0,
                 *      ManualLeftX = 0,
                 *      ManualLeftY = 0,
                 *      ManualRightX = 0,
                 *      ManualRightY = 0
                 * });*/
            }
        }