Esempio n. 1
0
        // Token: 0x060000C1 RID: 193 RVA: 0x000089D8 File Offset: 0x00006BD8
        public static tk2dSpriteAnimationClip BuildAnimation(AIAnimator aiAnimator, string name, string spriteDirectory, int fps)
        {
            tk2dSpriteCollectionData tk2dSpriteCollectionData = aiAnimator.GetComponent <tk2dSpriteCollectionData>();
            bool flag = !tk2dSpriteCollectionData;

            if (flag)
            {
                tk2dSpriteCollectionData = SpriteBuilder.ConstructCollection(aiAnimator.gameObject, aiAnimator.name + "_collection");
            }
            string[]   resourceNames = ResourceExtractor.GetResourceNames();
            List <int> list          = new List <int>();

            for (int i = 0; i < resourceNames.Length; i++)
            {
                bool flag2 = resourceNames[i].StartsWith(spriteDirectory.Replace('/', '.'), StringComparison.OrdinalIgnoreCase);
                if (flag2)
                {
                    list.Add(SpriteBuilder.AddSpriteToCollection(resourceNames[i], tk2dSpriteCollectionData));
                }
            }
            tk2dSpriteAnimationClip tk2dSpriteAnimationClip = SpriteBuilder.AddAnimation(aiAnimator.spriteAnimator, tk2dSpriteCollectionData, list, name, tk2dSpriteAnimationClip.WrapMode.Loop);

            tk2dSpriteAnimationClip.fps = (float)fps;
            return(tk2dSpriteAnimationClip);
        }
Esempio n. 2
0
        public static tk2dSpriteAnimationClip BuildAnimation(AIAnimator aiAnimator, string name, string spriteDirectory, int fps, tk2dSpriteAnimationClip.WrapMode wrapMode = tk2dSpriteAnimationClip.WrapMode.Loop)
        {
            tk2dSpriteCollectionData collection = aiAnimator.GetComponent <tk2dSpriteCollectionData>();

            if (!collection)
            {
                collection = SpriteBuilder.ConstructCollection(aiAnimator.gameObject, $"{aiAnimator.name}_collection");
            }

            string[]   resources = ResourceExtractor.GetResourceNames();
            List <int> indices   = new List <int>();

            for (int i = 0; i < resources.Length; i++)
            {
                if (resources[i].StartsWith(spriteDirectory.Replace('/', '.'), StringComparison.OrdinalIgnoreCase))
                {
                    indices.Add(SpriteBuilder.AddSpriteToCollection(resources[i], collection));
                }
            }
            tk2dSpriteAnimationClip clip = SpriteBuilder.AddAnimation(aiAnimator.spriteAnimator, collection, indices, name, tk2dSpriteAnimationClip.WrapMode.Loop);

            clip.fps      = fps;
            clip.wrapMode = wrapMode;
            return(clip);
        }
Esempio n. 3
0
        public static void BuildPrefab()
        {
            if (blobPrefab != null || CompanionBuilder.companionDictionary.ContainsKey(guid))
            {
                ETGModConsole.Log("Tried to make the same Blob prefab twice!");
                return;
            }

            blobPrefab = CompanionBuilder.BuildPrefab("Baby Good Blob", guid, spritePaths[0], new IntVector2(1, 0), new IntVector2(9, 9));
            var blob = blobPrefab.AddComponent <RandomGoopTrailBehaviour>();

            var aiAnimator = blobPrefab.GetComponent <AIAnimator>();

            aiAnimator.MoveAnimation = new DirectionalAnimation()
            {
                AnimNames = new string[] { "idle" }, Type = DirectionalAnimation.DirectionType.None
            };
            aiAnimator.IdleAnimation = aiAnimator.MoveAnimation;

            if (blobCollection == null)
            {
                blobCollection = SpriteBuilder.ConstructCollection(blobPrefab, "Baby_Good_Blob_Collection");
                GameObject.DontDestroyOnLoad(blobCollection);
                for (int i = 0; i < spritePaths.Length; i++)
                {
                    SpriteBuilder.AddSpriteToCollection(spritePaths[i], blobCollection);
                }
                SpriteBuilder.AddAnimation(blob.spriteAnimator, blobCollection, new List <int>()
                {
                    0, 1, 2, 3, 4, 5
                }, "idle", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 5;
            }

            var bs = blobPrefab.GetComponent <BehaviorSpeculator>();

            bs.MovementBehaviors.Add(new CompanionFollowPlayerBehavior()
            {
                IdleAnimations = new string[] { "idle" }
            });
            bs.MovementBehaviors.Add(new SeekTargetBehavior()
            {
                LineOfSight = false, StopWhenInRange = true, CustomRange = 1f
            });

            blob.aiActor.MovementSpeed = 7;

            GameObject.DontDestroyOnLoad(blobPrefab);
            FakePrefab.MarkAsFakePrefab(blobPrefab);
            blobPrefab.SetActive(false);
        }
Esempio n. 4
0
        public static void BuildPrefab()
        {
            bool flag  = prefab != null || EnemyBuilder.Dictionary.ContainsKey(guid);
            bool flag2 = flag;

            if (!flag2)
            {
                prefab = EnemyBuilder.BuildPrefab("Bullet Dog", guid, spritePaths[0], new IntVector2(0, 0), new IntVector2(8, 9), false);
                var companion = prefab.AddComponent <EnemyBehavior>();
                companion.aiActor.knockbackDoer.weight         = 20;
                companion.aiActor.MovementSpeed                = 10f;
                companion.aiActor.healthHaver.PreventAllDamage = false;
                companion.aiActor.CollisionDamage              = 1f;
                companion.aiActor.HasShadow                        = false;
                companion.aiActor.IgnoreForRoomClear               = false;
                companion.aiActor.aiAnimator.HitReactChance        = 0f;
                companion.aiActor.specRigidbody.CollideWithOthers  = true;
                companion.aiActor.specRigidbody.CollideWithTileMap = true;
                companion.aiActor.PreventFallingInPitsEver         = false;
                companion.aiActor.healthHaver.ForceSetCurrentHealth(6f);
                companion.aiActor.CollisionKnockbackStrength = 5f;
                companion.aiActor.CanTargetPlayers           = true;
                companion.aiActor.healthHaver.SetHealthMaximum(6f, null, false);
                companion.aiActor.specRigidbody.PixelColliders.Clear();
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyCollider,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 16,
                    ManualHeight           = 16,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0
                });
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyHitBox,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 16,
                    ManualHeight           = 16,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0,
                });
                companion.aiActor.PreventBlackPhantom = false;
                AIAnimator aiAnimator = companion.aiAnimator;
                aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation>
                {
                    new AIAnimator.NamedDirectionalAnimation
                    {
                        name = "die",
                        anim = new DirectionalAnimation
                        {
                            Type      = DirectionalAnimation.DirectionType.Single,
                            Flipped   = new DirectionalAnimation.FlipType[1],
                            AnimNames = new string[]
                            {
                                "die",
                            }
                        }
                    }
                };
                aiAnimator.IdleAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                    Flipped   = new DirectionalAnimation.FlipType[2],
                    AnimNames = new string[]
                    {
                        "idle_right",
                        "idle_left"
                    }
                };
                aiAnimator.MoveAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.EightWayOrdinal,
                    Flipped   = new DirectionalAnimation.FlipType[8],
                    AnimNames = new string[]
                    {
                        "run_north",
                        "run_north_east",
                        "run_east",
                        "run_south_east",
                        "run_south",
                        "run_south_west",
                        "run_west",
                        "run_north_west"
                    }
                };
                bool flag3 = BulletDogCollection == null;
                if (flag3)
                {
                    BulletDogCollection = SpriteBuilder.ConstructCollection(prefab, "Bullet_Dog_Collection");
                    UnityEngine.Object.DontDestroyOnLoad(BulletDogCollection);
                    for (int i = 0; i < spritePaths.Length; i++)
                    {
                        SpriteBuilder.AddSpriteToCollection(spritePaths[i], BulletDogCollection);
                    }
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        0,
                        1,
                        2,
                        3,
                        4,
                    }, "idle_left", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 8f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        5,
                        6,
                        7,
                        8,
                        9,
                    }, "idle_right", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 8f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        10,
                        11,
                        12,
                        13,
                        14,
                    }, "run_south_west", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        15,
                        16,
                        17,
                        18,
                        19
                    }, "run_south_east", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        20,
                        21,
                        22,
                        23,
                        24,
                        25,
                    }, "run_north", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        26,
                        27,
                        28,
                        29,
                        30,
                        31,
                    }, "run_north_west", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        32,
                        33,
                        34,
                        35,
                        36,
                        37
                    }, "run_north_east", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        38,
                        39,
                        40,
                        41,
                        42,
                        43
                    }, "run_west", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        44,
                        45,
                        46,
                        47,
                        48
                    }, "run_east", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        49,
                        50,
                        51,
                        52,
                        53
                    }, "run_south", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int>
                    {
                        54,
                        55,
                        56,
                        57,
                        58,
                        59
                    }, "die", tk2dSpriteAnimationClip.WrapMode.Once).fps = 8f;
                }
                var bs = prefab.GetComponent <BehaviorSpeculator>();
                BehaviorSpeculator behaviorSpeculator = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").behaviorSpeculator;

                bs.OverrideBehaviors = behaviorSpeculator.OverrideBehaviors;
                bs.OtherBehaviors    = behaviorSpeculator.OtherBehaviors;
                bs.TargetBehaviors   = new List <TargetBehaviorBase>
                {
                    new TargetPlayerBehavior
                    {
                        Radius              = 35f,
                        LineOfSight         = true,
                        ObjectPermanence    = true,
                        SearchInterval      = 0.25f,
                        PauseOnTargetSwitch = false,
                        PauseTime           = 0.25f
                    }
                };
                bs.MovementBehaviors = new List <MovementBehaviorBase>
                {
                    new SeekTargetBehavior
                    {
                        StopWhenInRange     = false,
                        CustomRange         = 12f,
                        LineOfSight         = false,
                        ReturnToSpawn       = false,
                        SpawnTetherDistance = 0f,
                        PathInterval        = 0.5f,
                        SpecifyRange        = false,
                        MinActiveRange      = 0f,
                        MaxActiveRange      = 0f
                    }
                };
                bs.InstantFirstTick                = behaviorSpeculator.InstantFirstTick;
                bs.TickInterval                    = behaviorSpeculator.TickInterval;
                bs.PostAwakenDelay                 = behaviorSpeculator.PostAwakenDelay;
                bs.RemoveDelayOnReinforce          = behaviorSpeculator.RemoveDelayOnReinforce;
                bs.OverrideStartingFacingDirection = behaviorSpeculator.OverrideStartingFacingDirection;
                bs.StartingFacingDirection         = behaviorSpeculator.StartingFacingDirection;
                bs.SkipTimingDifferentiator        = behaviorSpeculator.SkipTimingDifferentiator;
                Game.Enemies.Add("cel:bullet_dog", companion.aiActor);
            }
        }