Пример #1
0
        public Trail(Vector from, Vector to, double speed, Color color1, Color color2)
        {
            var trailVector = (to - from).Normalized() * TRAIL_SIZE;

            color1.A = 0;
            var brush = new LinearGradientBrush(color1, color2, from.ToPoint(), to.ToPoint());

            brush.MappingMode = BrushMappingMode.Absolute;

            var line = new Line();

            line.Stroke             = brush;
            line.StrokeThickness    = 2;
            line.StrokeStartLineCap = PenLineCap.Round;
            line.StrokeEndLineCap   = PenLineCap.Round;

            line.X1 = from.X;
            line.Y1 = from.Y;
            line.X2 = from.X;
            line.Y2 = from.Y;

            position = Lerp.Speed(from, to, speed, p =>
            {
                line.X2 = p.X;
                line.Y2 = p.Y;
                Moving?.Invoke(p);
            });

            var brushPosition = Lerp.Speed(from, to + trailVector, speed, p =>
            {
                brush.StartPoint = (p - trailVector).ToPoint();
                brush.EndPoint   = p;
            });

            position.Completed += () =>
            {
                // Destination reached
                Completed?.Invoke();
            };

            brushPosition.Completed += () =>
            {
                // Trail faded completely
                Faded?.Invoke();
                this.Destroy();
            };

            Add(position);
            Add(brushPosition);
            Add(line);
        }
Пример #2
0
        public void Fade()
        {
            BeginAnimation(OpacityProperty, null);
            FadeStarted?.Invoke(this, EventArgs.Empty);
            var anim = new DoubleAnimation(0, new Duration(TimeSpan.FromSeconds(0.2)))
            {
                FillBehavior = FillBehavior.Stop
            };

            anim.Completed += (sender, args) =>
            {
                Opacity = 0;
                Faded?.Invoke(this, args);
            };
            BeginAnimation(OpacityProperty, anim);
        }
Пример #3
0
        public override void Initialize()
        {
            base.Initialize();

            var song = PlayerModel.Random.Next(3);

            switch (song)
            {
            case 0:
                SoundManager.PlayMusic(Malaguena);
                break;

            case 1:
                SoundManager.PlayMusic(Combat1);
                break;

            case 2:
                SoundManager.PlayMusic(Combat2);
                break;
            }

            Player.Initialize();

            if (_fadedPrefab == null)
            {
                _fadedPrefab = Resources.Load <Faded>("Faded");
            }

            if (PlayerModel.DialogCount > 2)
            {
                for (int i = 0; i < PlayerModel.DialogCount; i++)
                {
                    var faded = Instantiate(_fadedPrefab);
                    faded.transform.parent   = transform;
                    faded.transform.position = new Vector3(PlayerModel.Random.Next(12, 20), 0);
                    faded.AttitudeType       = Enemy.Attitude.Wander;

                    Enemies.Add(faded);
                }
            }

            foreach (var enemy in Enemies)
            {
                enemy.Initialize();
                Physics2D.IgnoreCollision(enemy.GetComponent <BoxCollider2D>(), Player.GetComponent <BoxCollider2D>());

                enemy.SetTargets(Enemies, Camels, Player);

                foreach (var otherEnemy in Enemies)
                {
                    Physics2D.IgnoreCollision(otherEnemy.GetComponent <BoxCollider2D>(), enemy.GetComponent <BoxCollider2D>());
                }
            }

            foreach (var camel in Camels)
            {
                camel.Initialize();
                Physics2D.IgnoreCollision(camel.GetComponent <BoxCollider2D>(), Player.GetComponent <BoxCollider2D>());

                foreach (var enemy in Enemies)
                {
                    Physics2D.IgnoreCollision(camel.GetComponent <BoxCollider2D>(), enemy.GetComponent <BoxCollider2D>());
                }
            }

            if (_heartPrefab == null)
            {
                _heartPrefab = Resources.Load <Pickup>("HeartPickup");
            }
            if (_gemPrefab == null)
            {
                _gemPrefab = Resources.Load <Pickup>("Pickup Variant Gem");
            }
        }