示例#1
0
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            await base.OnActivatedAsync(details);

            base.upgrades = (byte)details.Params[0];

            strength        = 1;
            collisionFlags &= ~CollisionFlags.ApplyGravitation;
            collisionFlags |= CollisionFlags.SkipPerPixelCollisions;

            await RequestMetadataAsync("Weapon/Pepper");

            AnimState state = AnimState.Idle;

            if ((upgrades & 0x1) != 0)
            {
                timeLeft = MathF.Rnd.NextFloat(32, 40);
                state   |= (AnimState)1;

                LightEmitter light = AddComponent <LightEmitter>();
                light.Intensity  = 1f;
                light.Brightness = 1f;
                light.RadiusNear = 4f;
                light.RadiusFar  = 16f;
            }
            else
            {
                timeLeft = MathF.Rnd.NextFloat(26, 36);
            }

            SetAnimation(state);
            PlaySound("Fire");

            renderer.Active = false;
        }
示例#2
0
文件: AmmoRF.cs 项目: iidioter/jazz2
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            await base.OnActivatedAsync(details);

            base.upgrades = (byte)details.Params[0];

            strength        = 2;
            CollisionFlags &= ~CollisionFlags.ApplyGravitation;

            await RequestMetadataAsync("Weapon/RF");

            AnimState state = AnimState.Idle;

            if ((upgrades & 0x1) != 0)
            {
                timeLeft = 35;
                state   |= (AnimState)1;
            }
            else
            {
                timeLeft = 30;
            }

            SetAnimation(state);
            PlaySound("Fire", 0.4f);

            renderer.Active = false;

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = 0.8f;
            light.Brightness = 0.8f;
            light.RadiusNear = 3f;
            light.RadiusFar  = 12f;
        }
示例#3
0
        public override void OnAttach(ActorInstantiationDetails details)
        {
            base.OnAttach(details);

            ushort intensity   = details.Params[0];
            ushort brightness  = details.Params[1];
            ushort radiusNear1 = details.Params[2];
            ushort radiusNear2 = details.Params[3];
            ushort radiusFar   = details.Params[4];
            ushort speed       = details.Params[5];
            ushort sync        = details.Params[6];

            collisionFlags = CollisionFlags.None;

            this.radiusNear1 = radiusNear1;
            this.radiusNear2 = radiusNear2;
            this.radiusFar   = radiusFar;
            this.speed       = 0.6f * speed;

            phase = (BaseCycleFrames - ((float)(Time.GameTimer.TotalMilliseconds % BaseCycleFrames) + sync * 175)) % BaseCycleFrames;

            light            = AddComponent <LightEmitter>();
            light.Intensity  = (intensity / 255f);
            light.Brightness = (brightness / 255f);
        }
示例#4
0
            public override void OnAttach(ActorInstantiationDetails details)
            {
                base.OnAttach(details);

                IsFacingLeft = (details.Params[0] != 0);

                collisionFlags &= ~CollisionFlags.ApplyGravitation;

                RequestMetadata("Weapon/Toaster");
                SetAnimation("Fire");

                const float baseSpeed = 1.2f;

                if (IsFacingLeft)
                {
                    speedX = -1f * (baseSpeed + MathF.Rnd.NextFloat(0f, 0.2f));
                }
                else
                {
                    speedX = +1f * (baseSpeed + MathF.Rnd.NextFloat(0f, 0.2f));
                }
                speedY += MathF.Rnd.NextFloat(-0.5f, 0.5f);

                timeLeft = 60;

                LightEmitter light = AddComponent <LightEmitter>();

                light.Intensity  = 0.85f;
                light.Brightness = 0.4f;
                light.RadiusNear = 0f;
                light.RadiusFar  = 30f;
            }
示例#5
0
文件: Devan.cs 项目: razluta/jazz2
            public override void OnAttach(ActorInstantiationDetails details)
            {
                base.OnAttach(details);

                IsFacingLeft = (details.Params[0] != 0);

                collisionFlags &= ~CollisionFlags.ApplyGravitation;

                canBeFrozen = false;
                health      = int.MaxValue;

                speedX = (IsFacingLeft ? -5f : 5f);
                speedY = 5f;

                RequestMetadata("Boss/Devan");
                SetAnimation((AnimState)675);

                OnUpdateHitbox();

                LightEmitter light = AddComponent <LightEmitter>();

                light.Intensity  = 0.85f;
                light.Brightness = 0.4f;
                light.RadiusNear = 0f;
                light.RadiusFar  = 30f;
            }
示例#6
0
            protected override async Task OnActivatedAsync(ActorActivationDetails details)
            {
                IsFacingLeft = (details.Params[0] != 0);

                base.canBeFrozen     = false;
                base.isInvulnerable  = true;
                base.CollisionFlags &= ~CollisionFlags.ApplyGravitation;

                await RequestMetadataAsync("Weapon/Toaster");

                SetAnimation("Fire");

                const float baseSpeed = 1.2f;

                if (IsFacingLeft)
                {
                    speedX = -1f * (baseSpeed + MathF.Rnd.NextFloat(0f, 0.2f));
                }
                else
                {
                    speedX = +1f * (baseSpeed + MathF.Rnd.NextFloat(0f, 0.2f));
                }
                speedY += MathF.Rnd.NextFloat(-0.5f, 0.5f);

                timeLeft = 60;

                LightEmitter light = AddComponent <LightEmitter>();

                light.Intensity  = 0.85f;
                light.Brightness = 0.4f;
                light.RadiusNear = 0f;
                light.RadiusFar  = 30f;
            }
示例#7
0
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            await base.OnActivatedAsync(details);

            base.upgrades = (byte)details.Params[0];

            CollisionFlags = (CollisionFlags & ~CollisionFlags.ApplyGravitation) | CollisionFlags.SkipPerPixelCollisions;

            await RequestMetadataAsync("Weapon/Blaster");

            AnimState state = AnimState.Idle;

            if ((upgrades & 0x1) != 0)
            {
                timeLeft = 28;
                state   |= (AnimState)1;
                strength = 2;
            }
            else
            {
                timeLeft = 25;
                strength = 1;
            }

            SetAnimation(state);

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = 0.8f;
            light.Brightness = 0.6f;
            light.RadiusNear = 5f;
            light.RadiusFar  = 20f;
        }
示例#8
0
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            await base.OnActivatedAsync(details);

            base.upgrades = (byte)details.Params[0];

            strength        = 4;
            CollisionFlags &= ~(CollisionFlags.ApplyGravitation | CollisionFlags.CollideWithTileset);
            CollisionFlags |= CollisionFlags.SkipPerPixelCollisions;

            await RequestMetadataAsync("Weapon/Electro");

            ColorRgba color1, color2;

            if ((upgrades & 0x1) != 0)
            {
                timeLeft = 55;
                color1   = new ColorRgba(160, 245, 255, 140);
                color2   = new ColorRgba(20, 170, 255, 140);
            }
            else
            {
                timeLeft = 55;
                color1   = new ColorRgba(255, 235, 20, 140);
                color2   = new ColorRgba(255, 120, 10, 140);
            }

            SetAnimation(AnimState.Idle);
            PlaySound("Fire");

            // Turn off default renderer
            renderer.Active = false;

            // Create materials for particles
            material1 = new Material(ContentResolver.Current.RequestShader("BasicNormal"));
            material1.SetTexture("mainTex", Texture.White);
            material1.SetTexture("normalTex", ContentResolver.Current.DefaultNormalMap);
            material1.SetValue("normalMultiplier", Vector2.One);
            material1.MainColor = color1;

            material2 = new Material(ContentResolver.Current.RequestShader("BasicNormal"));
            material2.SetTexture("mainTex", Texture.White);
            material2.SetTexture("normalTex", ContentResolver.Current.DefaultNormalMap);
            material2.SetValue("normalMultiplier", Vector2.One);
            material2.MainColor = color2;

            light            = AddComponent <LightEmitter>();
            light.Intensity  = 0.4f;
            light.Brightness = 0.2f;
            light.RadiusNear = 0f;
            light.RadiusFar  = 12f;
        }
示例#9
0
        public override void OnAttach(ActorInstantiationDetails details)
        {
            base.OnAttach(details);

            //strength = 2;
            collisionFlags &= ~CollisionFlags.ApplyGravitation;

            RequestMetadata("Weapon/Seeker");

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = 0.8f;
            light.RadiusNear = 3f;
            light.RadiusFar  = 8f;
        }
示例#10
0
        public override void OnAttach(ActorInstantiationDetails details)
        {
            base.OnAttach(details);

            health          = int.MaxValue;
            collisionFlags &= ~CollisionFlags.ApplyGravitation;

            RequestMetadata("Weapon/Thunderbolt");

            light            = AddComponent <LightEmitter>();
            light.Intensity  = 0.4f;
            light.Brightness = 0.7f;
            light.RadiusNear = 0f;
            light.RadiusFar  = 120f;
        }
示例#11
0
        public override void OnAttach(ActorInstantiationDetails details)
        {
            base.OnAttach(details);

            strength = 1;

            RequestMetadata("Weapon/Bouncer");

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = 0.8f;
            light.Brightness = 0.2f;
            light.RadiusNear = 0f;
            light.RadiusFar  = 12f;
        }
示例#12
0
        public override void OnAttach(ActorInstantiationDetails details)
        {
            base.OnAttach(details);

            collisionFlags &= ~CollisionFlags.ApplyGravitation;

            RequestMetadata("Weapon/Blaster");

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = 0.8f;
            light.Brightness = 0.6f;
            light.RadiusNear = 5f;
            light.RadiusFar  = 20f;
        }
示例#13
0
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            ushort intensity  = details.Params[0];
            ushort brightness = details.Params[1];
            ushort radiusNear = details.Params[2];
            ushort radiusFar  = details.Params[3];

            CollisionFlags = CollisionFlags.ForceDisableCollisions;

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = (intensity / 255f);
            light.Brightness = (brightness / 255f);
            light.RadiusNear = radiusNear;
            light.RadiusFar  = radiusFar;
        }
示例#14
0
        public override void OnAttach(ActorInstantiationDetails details)
        {
            base.OnAttach(details);

            strength        = 4;
            collisionFlags &= ~(CollisionFlags.ApplyGravitation | CollisionFlags.CollideWithTileset);
            collisionFlags |= CollisionFlags.SkipPerPixelCollisions;

            RequestMetadata("Weapon/Electro");

            light            = AddComponent <LightEmitter>();
            light.Intensity  = 0.4f;
            light.Brightness = 0.2f;
            light.RadiusNear = 0f;
            light.RadiusFar  = 12f;
        }
示例#15
0
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            await base.OnActivatedAsync(details);

            base.upgrades = (byte)details.Params[0];

            health          = int.MaxValue;
            collisionFlags &= ~CollisionFlags.ApplyGravitation;

            await RequestMetadataAsync("Weapon/Thunderbolt");

            light            = AddComponent <LightEmitter>();
            light.Intensity  = 0.4f;
            light.Brightness = 0.7f;
            light.RadiusNear = 0f;
            light.RadiusFar  = 120f;
        }
示例#16
0
        public override void OnAttach(ActorInstantiationDetails details)
        {
            base.OnAttach(details);

            ushort intensity  = details.Params[0];
            ushort brightness = details.Params[1];
            ushort radiusNear = details.Params[2];
            ushort radiusFar  = details.Params[3];

            collisionFlags = CollisionFlags.None;

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = (intensity / 255f);
            light.Brightness = (brightness / 255f);
            light.RadiusNear = radiusNear;
            light.RadiusFar  = radiusFar;
        }
示例#17
0
        public IlluminateLightPart(float size)
        {
            float intensity = MathF.Rnd.NextFloat(0.22f, 0.42f);

            distance = MathF.Rnd.NextFloat(6f, 46f) * size;
            phase    = MathF.Rnd.NextFloat(MathF.TwoPi);
            speed    = MathF.Rnd.NextFloat(-0.18f, -0.06f);

            AddComponent <Transform>();
            AddComponent(new LocalController(this));

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = intensity * 0.7f;
            light.Brightness = intensity;
            light.RadiusFar  = intensity * 60f * size;
            light.Type       = LightType.Solid;
        }
示例#18
0
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            health = int.MaxValue;

            // ToDo: Load metadata
            await RequestMetadataAsync("Weapon/Blaster");

            SetAnimation(AnimState.Fall);

            collisionFlags = CollisionFlags.CollideWithOtherActors;

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = 0.8f;
            light.Brightness = 0.6f;
            light.RadiusNear = 5f;
            light.RadiusFar  = 20f;
        }
示例#19
0
        public void OnFire(Player owner, Vector3 speed, float angle, bool isFacingLeft, byte upgrades)
        {
            base.owner        = owner;
            base.IsFacingLeft = isFacingLeft;
            base.upgrades     = upgrades;

            float angleRel = angle * (isFacingLeft ? -1 : 1);

            float baseSpeed = ((upgrades & 0x1) != 0 ? MathF.Rnd.NextFloat(5f, 7.2f) : MathF.Rnd.NextFloat(3f, 7f));

            if (isFacingLeft)
            {
                speedX = MathF.Min(0, speed.X) - MathF.Cos(angleRel) * baseSpeed;
            }
            else
            {
                speedX = MathF.Max(0, speed.X) + MathF.Cos(angleRel) * baseSpeed;
            }
            speedY  = MathF.Sin(angleRel) * baseSpeed;
            speedY += MathF.Abs(speed.Y) * speedY;

            AnimState state = AnimState.Idle;

            if ((upgrades & 0x1) != 0)
            {
                timeLeft = MathF.Rnd.NextFloat(32, 40);
                state   |= (AnimState)1;

                LightEmitter light = AddComponent <LightEmitter>();
                light.Intensity  = 1f;
                light.Brightness = 1f;
                light.RadiusNear = 4f;
                light.RadiusFar  = 16f;
            }
            else
            {
                timeLeft = MathF.Rnd.NextFloat(26, 36);
            }

            Transform.Angle = angle;

            SetAnimation(state);
            PlaySound("Fire");
        }
示例#20
0
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            ushort intensity  = details.Params[0];
            ushort brightness = details.Params[1];

            this.radiusNear1 = details.Params[2];
            this.radiusNear2 = details.Params[3];
            this.radiusFar   = details.Params[4];
            this.speed       = details.Params[5] * 0.6f;
            ushort sync = details.Params[6];

            collisionFlags = CollisionFlags.ForceDisableCollisions;

            phase = (BaseCycleFrames - ((float)(Time.GameTimer.TotalMilliseconds % BaseCycleFrames) + sync * 175)) % BaseCycleFrames;

            light            = AddComponent <LightEmitter>();
            light.Intensity  = (intensity / 255f);
            light.Brightness = (brightness / 255f);
        }
示例#21
0
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            ushort theme = details.Params[0];

            CollisionFlags = CollisionFlags.CollideWithOtherActors;

            await RequestMetadataAsync("Object/PinballBumper");

            switch (theme)
            {
            case 0: SetAnimation((AnimState)0x000); break;

            case 1: SetAnimation((AnimState)0x001); break;
            }

            light            = AddComponent <LightEmitter>();
            light.RadiusNear = 24f;
            light.RadiusFar  = 60f;
        }
示例#22
0
    public void LightUpdate(bool reset = true)
    {
        List <LightEmitter> emitters = new List <LightEmitter>();

        foreach (Transform tile in tiles)
        {
            LightingController lightcontroller = tile.GetComponent <LightingController>();
            if (reset)
            {
                lightcontroller.ResetLight();
            }
            if (lightcontroller.lightemitlevel != 0)
            {
                LightEmitter emitter = new LightEmitter();
                emitter.intensity = lightcontroller.lightemitlevel;
                emitter.x         = tile.GetComponent <BlockController>().x;
                emitter.y         = tile.GetComponent <BlockController>().y;
                emitters.Add(emitter);
            }
        }
        for (int x = 0; x < xLength; x++)         // For every x co-ord
        {
            for (int y = yLength - 1; y > 0; y--) // Iterate from top to bottom
            {
                if (map[x, y] != 0)               // When you find a non-air block
                {
                    if (y < map.GetLength(1))
                    {
                        tiles[x, y + 1].GetComponent <LightingController>().PropagateLight(20, 0); // Light the air block above it
                    }
                    if (!tilelist.transparentIDs.Contains(map[x, y]))                              // If not a transparent block
                    {
                        y = 0;                                                                     // End the loop
                    }
                }
            }
        }
        foreach (LightEmitter emitter in emitters)
        {
            tiles[emitter.x, emitter.y].GetComponent <LightingController>().PropagateLight(emitter.intensity, 0);
        }
    }
示例#23
0
文件: Bolly.cs 项目: ozgun-kara/jazz2
            protected override async Task OnActivatedAsync(ActorActivationDetails details)
            {
                base.canBeFrozen        = false;
                base.canCollideWithAmmo = false;
                base.isInvulnerable     = true;
                base.collisionFlags     = CollisionFlags.CollideWithTileset | CollisionFlags.CollideWithOtherActors | CollisionFlags.SkipPerPixelCollisions;

                health = int.MaxValue;

                await RequestMetadataAsync("Boss/Bolly");

                SetAnimation((AnimState)5);

                LightEmitter light = AddComponent <LightEmitter>();

                light.Intensity  = 0.8f;
                light.Brightness = 0.8f;
                light.RadiusNear = 3f;
                light.RadiusFar  = 12f;
            }
示例#24
0
文件: Robot.cs 项目: iidioter/jazz2
            protected override async Task OnActivatedAsync(ActorActivationDetails details)
            {
                IsFacingLeft = (details.Params[0] != 0);

                canBeFrozen = false;
                health      = int.MaxValue;

                speedX = (IsFacingLeft ? -8f : 8f);

                await RequestMetadataAsync("Boss/Robot");

                SetAnimation((AnimState)1073741827);

                LightEmitter light = AddComponent <LightEmitter>();

                light.Intensity  = 0.1f;
                light.Brightness = 0.8f;
                light.RadiusNear = 0f;
                light.RadiusFar  = 22f;
            }
示例#25
0
文件: Witch.cs 项目: razluta/jazz2
            public override void OnAttach(ActorInstantiationDetails details)
            {
                base.OnAttach(details);

                canHurtPlayer  = false;
                canBeFrozen    = false;
                collisionFlags = CollisionFlags.CollideWithOtherActors | CollisionFlags.SkipPerPixelCollisions;

                health = int.MaxValue;

                RequestMetadata("Enemy/Witch");

                SetAnimation((AnimState)1073741828);

                LightEmitter light = AddComponent <LightEmitter>();

                light.Intensity  = 0.85f;
                light.RadiusNear = 0f;
                light.RadiusFar  = 18f;
            }
示例#26
0
            protected override async Task OnActivatedAsync(ActorActivationDetails details)
            {
                base.canBeFrozen        = false;
                base.canCollideWithAmmo = false;
                base.canHurtPlayer      = false;
                base.isInvulnerable     = true;
                base.collisionFlags     = CollisionFlags.CollideWithOtherActors | CollisionFlags.SkipPerPixelCollisions;

                health = int.MaxValue;

                await RequestMetadataAsync("Enemy/Witch");

                SetAnimation((AnimState)1073741828);

                LightEmitter light = AddComponent <LightEmitter>();

                light.Intensity  = 0.85f;
                light.RadiusNear = 0f;
                light.RadiusFar  = 18f;
            }
示例#27
0
        public override void OnAttach(ActorInstantiationDetails details)
        {
            base.OnAttach(details);

            ushort theme = details.Params[0];

            collisionFlags = CollisionFlags.CollideWithOtherActors;

            RequestMetadata("Object/PinballBumper");

            switch (theme)
            {
            case 0: SetAnimation((AnimState)0x000); break;

            case 1: SetAnimation((AnimState)0x001); break;
            }

            light            = AddComponent <LightEmitter>();
            light.RadiusNear = 24f;
            light.RadiusFar  = 60f;
        }
示例#28
0
文件: Bilsy.cs 项目: ozgun-kara/jazz2
            protected override async Task OnActivatedAsync(ActorActivationDetails details)
            {
                ushort theme        = details.Params[0];
                bool   isFacingLeft = (details.Params[1] != 0);

                base.canBeFrozen    = false;
                base.isInvulnerable = true;
                base.collisionFlags = CollisionFlags.CollideWithOtherActors;

                health = int.MaxValue;

                speedX = (isFacingLeft ? -4f : 4f);
                speedY = 2f;

                switch (theme)
                {
                case 0:
                default:
                    await RequestMetadataAsync("Boss/Bilsy");

                    break;

                case 1:     // Xmas
                    await RequestMetadataAsync("Boss/BilsyXmas");

                    break;
                }

                SetAnimation((AnimState)1073741828);

                LightEmitter light = AddComponent <LightEmitter>();

                light.Intensity  = 0.85f;
                light.Brightness = 0.4f;
                light.RadiusNear = 0f;
                light.RadiusFar  = 30f;

                PlaySound("FireStart");
            }
示例#29
0
文件: Bilsy.cs 项目: razluta/jazz2
            public override void OnAttach(ActorInstantiationDetails details)
            {
                base.OnAttach(details);

                ushort theme        = details.Params[0];
                bool   isFacingLeft = (details.Params[1] != 0);

                canBeFrozen    = false;
                collisionFlags = CollisionFlags.CollideWithOtherActors;

                health = int.MaxValue;

                speedX = (isFacingLeft ? -4f : 4f);
                speedY = 2f;

                switch (theme)
                {
                case 0:
                default:
                    RequestMetadata("Boss/Bilsy");
                    break;

                case 1:     // Xmas
                    RequestMetadata("Boss/BilsyXmas");
                    break;
                }

                SetAnimation((AnimState)1073741828);

                LightEmitter light = AddComponent <LightEmitter>();

                light.Intensity  = 0.85f;
                light.Brightness = 0.4f;
                light.RadiusNear = 0f;
                light.RadiusFar  = 30f;

                PlaySound("FireStart");
            }
示例#30
0
        protected override async Task OnActivatedAsync(ActorActivationDetails details)
        {
            await base.OnActivatedAsync(details);

            base.upgrades = (byte)details.Params[0];

            //strength = 2;
            CollisionFlags &= ~CollisionFlags.ApplyGravitation;

            await RequestMetadataAsync("Weapon/Seeker");

            AnimState state = AnimState.Idle;

            if ((upgrades & 0x1) != 0)
            {
                timeLeft             = 188;
                defaultRecomputeTime = 6f;
                strength             = 3;
                state |= (AnimState)1;
            }
            else
            {
                timeLeft             = 144;
                defaultRecomputeTime = 10f;
                strength             = 2;
            }

            SetAnimation(state);
            PlaySound(Transform.Pos, "Fire");

            renderer.Active = false;

            LightEmitter light = AddComponent <LightEmitter>();

            light.Intensity  = 0.8f;
            light.RadiusNear = 3f;
            light.RadiusFar  = 8f;
        }