コード例 #1
0
ファイル: SpaceShip.cs プロジェクト: Derkien/Asteroids
        protected override void OnAfterCollideRegistered(IColliding obj)
        {
            string CollisionResult = "";

            if (obj is EnergyPack)
            {
                Health         += obj.GetPower();
                CollisionResult = $"HP restored: {obj.GetPower()}";
            }
            else
            {
                Health         -= obj.GetPower();
                CollisionResult = $"Damage taken: {obj.GetPower()}";
            }

            if (Health <= 0)
            {
                DestroySpaceObject();
            }

            Logger.LogInformation(
                "After collision registered. " +
                $"Object1: {this.GetType()}.{this.GetHashCode()}, " +
                $"{CollisionResult}, " +
                $"Object1 Health: {Health}"
                );

            CollisionsList.Clear();
        }
コード例 #2
0
        public bool IsCollidedWithObject(IColliding obj)
        {
            if (!IsObjectTypeValidForCollision(obj) || Destroyed || CollisionsList.Contains(obj))
            {
                return(false);
            }

            return(BodyShape.IntersectsWith(obj.BodyShape));
        }
コード例 #3
0
        protected override void OnAfterCollideRegistered(IColliding obj)
        {
            Logger.LogInformation(
                "After collision registered. " +
                $"Object1: {this.GetType()}.{this.GetHashCode()}, " +
                $"HP restored: {this.GetPower()}"
                );

            DestroySpaceObject();
        }
コード例 #4
0
ファイル: Asteroid.cs プロジェクト: Derkien/Asteroids
        protected override void OnAfterCollideRegistered(IColliding obj)
        {
            Health -= obj.GetPower();

            Logger.LogInformation(
                "After collision registered. " +
                $"Object1: {this.GetType()}.{this.GetHashCode()}, " +
                $"Damage taken: {obj.GetPower()}, " +
                $"Object1 Health: {Health}"
                );

            if (Health <= 0)
            {
                DestroySpaceObject();
            }
        }
コード例 #5
0
        public void OnCollideWithObject(IColliding obj)
        {
            if (!IsCollidedWithObject(obj))
            {
                return;
            }

            if (!CollisionsList.Contains(obj))
            {
                CollisionsList.Add(obj);
            }

            obj.OnCollideWithObject(this);

            Logger.LogInformation(
                "Collision of objects registered. " +
                $"Object1: {this.GetType()}.{this.GetHashCode()}, " +
                $"Object2: {obj.GetType()}.{obj.GetHashCode()}"
                );

            OnAfterCollideRegistered(obj);
        }
コード例 #6
0
 public override bool IsObjectTypeValidForCollision(IColliding obj)
 {
     return(obj is SpaceShip);
 }
コード例 #7
0
ファイル: Bullet.cs プロジェクト: Derkien/Asteroids
 public override bool IsObjectTypeValidForCollision(IColliding obj)
 {
     return(obj is Asteroid);
 }
コード例 #8
0
ファイル: SpaceShip.cs プロジェクト: Derkien/Asteroids
 public override bool IsObjectTypeValidForCollision(IColliding obj)
 {
     return((obj is Asteroid) || (obj is EnergyPack));
 }
コード例 #9
0
 protected override void OnAfterCollideRegistered(IColliding obj)
 {
     return;
 }
コード例 #10
0
 public override bool IsObjectTypeValidForCollision(IColliding obj)
 {
     return(false);
 }
コード例 #11
0
 protected abstract void OnAfterCollideRegistered(IColliding obj);
コード例 #12
0
 public abstract bool IsObjectTypeValidForCollision(IColliding obj);