Esempio n. 1
0
 public void Add(PhysicalObject2D child)
 {
     if (child != null && _children != null && !_children.Contains(child))
     {
         _children.Add(child);
         child.LayerDepth = 0.3f;
     }
 }
Esempio n. 2
0
        public override bool CanCollideWith(PhysicalObject2D sprite)
        {
            if (sprite.GetType() == typeof(DeadlyPlatform))
                return false;
            if (sprite.GetType() == typeof(Character))
                return false;
            if (sprite.GetType() == typeof(Particle))
                return false;

            return base.CanCollideWith(sprite);
        }
Esempio n. 3
0
        public bool IsPointingAt(PhysicalObject2D target, Screen screen)
        {
            //TODO fix

            VectorRectangle bounds = target.Bounds;

            return (
                bounds.Left < Position.X
                && bounds.Right > Position.X
                && bounds.Top < Position.Y
                && bounds.Bottom > Position.Y
                );
        }
Esempio n. 4
0
 public ParticleFountain(IParent parent, PhysicalObject2D stuckTo, float angle, float radius, float spawnDelay, float lifeTime, float particleLifeTime, Color color)
     : base(parent)
 {
     Vector2 randomPosition = Vector2.Zero;
     this._stuckTo = stuckTo;
     this._particleLifeTime = particleLifeTime;
     this._lifeTime = lifeTime;
     this._angle = angle;
     this._spawnDelay = spawnDelay;
     this._spawnTimer = 0f;
     this._radius = radius;
     this._color = color;
 }
Esempio n. 5
0
        public override void OnDecollision(PhysicalObject2D secondSprite)
        {
            base.OnDecollision(secondSprite);

            if (secondSprite is Character) {
                Character c = (Character)secondSprite;

                if (c.Head.Velocity.Y < -5 && CanCollideWith(secondSprite)) {
                    c.Velocity *= Bouncyness;
                    new ParticleFountain(Parent, c.Body, NumberFactory.HalfPi, 10f, new Vector2(c.Width / 2, c.Height), 5, 500, 300, c.Color);
                    //Collidable = false;
                }
            }
        }
Esempio n. 6
0
        public void DoConventionalCollisionCheck(PhysicalObject2D firstSprite, List<PhysicalObject2D> allSprites)
        {
            foreach (PhysicalObject2D secondSprite in allSprites)
            {
                if (secondSprite != firstSprite)
                {
                    VectorRectangle firstBounds = firstSprite.Bounds;
                    VectorRectangle secondBounds = secondSprite.Bounds;

                    if (firstBounds.Intersects(secondBounds))
                    {
                        if (!firstSprite.CollidesWith(secondSprite))
                        {
                            VectorRectangle overlap = VectorRectangle.CalculateIntersect(firstBounds, secondBounds);

                            Collision collision1 = new Collision(firstSprite, secondSprite, overlap);
                            firstSprite.OnCollision(collision1);

                            Collision collision2 = new Collision(secondSprite, firstSprite, overlap);
                            secondSprite.OnCollision(collision2);
                        }
                    }
                    else
                    {
                        Collision oldCollision = firstSprite.GetCollisionWith(secondSprite);
                        if (oldCollision != null)
                        {
                            VectorRectangle first = oldCollision.FirstObject.Bounds, second = oldCollision.SecondObject.Bounds;

                            if (
                                (first.Bottom + 1 < second.Top)
                                || (first.Top > second.Bottom + 1)
                                || (first.Left > second.Right + 1)
                                || (first.Right + 1 < second.Left)
                                // TODO not +1 when two sides are free
                                )
                            {
                                firstSprite.OnDecollision(secondSprite);
                                secondSprite.OnDecollision(firstSprite);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 7
0
        public ParticleFountain(IParent parent, PhysicalObject2D stuckTo, float angle, float radius, Vector2 offset, float spawnDelay, float lifeTime, float particleLifeTime, Color color, float layerDepth = 0.5f)
            : base(parent)
        {
            Vector2 randomPosition = Vector2.Zero;
            this._stuckTo = stuckTo;
            this._particleLifeTime = particleLifeTime;
            this._lifeTime = lifeTime;
            this._angle = angle;
            this._spawnDelay = spawnDelay;
            this._spawnTimer = 0f;
            this._radius = radius;
            Color = color;
            this._offset = offset;
            this._layerDepth = layerDepth;

            this._hasLifetime = _lifeTime != -1;

            Children.Add(new Sprite(null, "blood"));
        }
Esempio n. 8
0
        public TextBalloon(
            IParent parent,
            PhysicalObject2D talkingObject,
            Vector2 offset, int fontSize, 
            FunctionCall whenDone = null, 
            bool repeatAction = false
        )
            : base(parent)
        {
            TalkingObject = talkingObject;

            Offset = offset;
            _currentRow = 0;
            _started = false;
            _visible = false;

            _charTimer = 0;
            _currentChar = 0;
            _currentRow = 0;
            _fontSize = fontSize;
            WhenDone = whenDone;
            this.RepeatAction = repeatAction;
        }
Esempio n. 9
0
        public override bool CanCollideWith(PhysicalObject2D sprite)
        {
            if (sprite is MovingPlatform) return false;

            if (base.CanCollideWith(sprite))
            {
                if (sprite is IColored)
                {
                    return _colorBehaviour.CanCollideWith((IColored)sprite);
                }
                else
                {
                    return true;
                }
            }

            return false;
        }
Esempio n. 10
0
        public void OnMouseUp()
        {
            // TODO check menus first
            //Console.WriteLine("Damn, click");

            if (_draggingSelectedObject) {
                _draggingSelectedObject = false;
                return;
            }

            _selectedObject = null;

            foreach (PhysicalObject2D obj in CurrentLevel.Children) {
                if (Crosshair.IsPointingAt(obj, Screen)) {
                    _selectedObject = obj;
                    break;
                }
            }
        }
Esempio n. 11
0
 public void Add(PhysicalObject2D child)
 {
     if (!Children.Contains(child))
         Children.Add(child);
 }
Esempio n. 12
0
        public void Add(PhysicalObject2D child, Vector2 position)
        {
            WeldBehaviour weldBehaviour = new WeldBehaviour();
            weldBehaviour.WeldOrigin = position;
            weldBehaviour.AnchorObject = this;

            child.MovableBehaviour = weldBehaviour;

            child.Parent = this;

            AddWeld(weldBehaviour);
        }
Esempio n. 13
0
 public MovableBehaviour(PhysicalObject2D parent = null)
 {
     Parent = parent;
 }
Esempio n. 14
0
 public void Remove(PhysicalObject2D child)
 {
     _objectsToBeRemoved.Add(child);
 }
Esempio n. 15
0
        public void Draw(
            Texture2D texture,
            PhysicalObject2D obj,
            Vector2 scale = default(Vector2)
            )
        {
            if (scale == default(Vector2))
                scale = new Vector2(1);

            Draw(
                texture: texture,
                position: obj.Position,
                objectScale: scale,
                rotationAngle: obj.RotationAngle,
                rotationOrigin: obj.RotationOrigin,
                effects: obj.SpriteEffect,
                layerDepth: obj.LayerDepth
                );
        }
Esempio n. 16
0
 public void Add(PhysicalObject2D child)
 {
 }
Esempio n. 17
0
        public void OnKeyPress(PhysicalObject2D player)
        {
            Rectangle tmpRect = TalkingObject.Bounds.ToRectangle();
            tmpRect.Location -= new Point(20, 20);
            tmpRect.Size += new Point(40, 40);

            if (player != null && tmpRect.Intersects(player.Bounds.ToRectangle())) {
                if (!_started) {
                    Start();
                } else {
                    NextRow();
                }
            }
        }
Esempio n. 18
0
        public void OnDelete()
        {
            if (_selectedObject == null) return;
            if (_copyObject == _selectedObject)
                _copyObject = null;

            if (_selectedObject is Teleporter) {
                ((Teleporter)_selectedObject).LinkedTeleporter.Destroy();
            }

            foreach (PhysicalObject2D p in CurrentLevel.Children) {
                if (p is TextBalloon) {
                    if (((TextBalloon)p).TalkingObject == _selectedObject) {
                        p.Destroy();
                        break;
                    }
                }
            }

            _selectedObject.Destroy();
            _selectedObject = null;
            _draggingSelectedObject = false;
        }
Esempio n. 19
0
 public void SelectObjectForCopy()
 {
     if (_selectedObject != null)
         _copyObject = _selectedObject;
 }
Esempio n. 20
0
 public override bool CanCollideWith(PhysicalObject2D sprite)
 {
     if (sprite is Platform) return false;
     return base.CanCollideWith(sprite);
 }
Esempio n. 21
0
 public void Remove(PhysicalObject2D child)
 {
     _children.Remove(child);
 }
Esempio n. 22
0
 public void OnMovableBehaviourChange(PhysicalObject2D physicalObject2D)
 {
 }
Esempio n. 23
0
        public void Add(PhysicalObject2D child)
        {
            if (!Children.Contains(child))
            {
                Children.Add(child);

                if (child is PlayerCheckpoint)
                {
                    PlayerCheckpoint checkpoint = (PlayerCheckpoint)child;
                    Checkpoints.Add(checkpoint);

                    if (FirstCheckpoint == null)
                        FirstCheckpoint = checkpoint;
                }
            }
        }
Esempio n. 24
0
 public void Remove(PhysicalObject2D child)
 {
 }
Esempio n. 25
0
        public void Remove(PhysicalObject2D child)
        {
            Children.Remove(child);

            if (child is PlayerCheckpoint)
            {
                PlayerCheckpoint checkpoint = (PlayerCheckpoint)child;
                Checkpoints.Remove(checkpoint);
                if (FirstCheckpoint == checkpoint)
                {
                    if (Checkpoints.Count > 0)
                        FirstCheckpoint = Checkpoints.First();
                    else
                        FirstCheckpoint = null;
                }
            }
        }
Esempio n. 26
0
 public override bool CollidesWith(PhysicalObject2D secondSprite)
 {
     return base.CollidesWith(secondSprite);
 }
Esempio n. 27
0
 public override void OnDecollision(PhysicalObject2D secondSprite)
 {
     base.OnDecollision(secondSprite);
     if (CollisionObject != null) {
         if (!CollisionObject.Bounds.Intersects(Bounds)) {
             Active = true;
             CollisionObject = null;
         }
     }
 }
Esempio n. 28
0
 public override Collision GetCollisionWith(PhysicalObject2D secondSprite)
 {
     return base.GetCollisionWith(secondSprite);
 }
Esempio n. 29
0
 public void InitializeObject(PhysicalObject2D newObject)
 {
     newObject.Initialize();
     newObject.SetCenterPosition(Crosshair.Position);
     _selectedObject = newObject;
 }