public void Handle(ICollidable enemy, ICollidable pipe, CollisionDirection.DirectionTag direction) { if (typeof(IEnemy).IsInstanceOfType(enemy) && typeof(IPipe).IsInstanceOfType(pipe)) { this.enemy = (Enemy)enemy; this.pipe = (AbstractPipe)pipe; switch (direction) { case CollisionDirection.DirectionTag.Top: this.enemy.Physics.yPosition = this.pipe.GetTopSide() - enemy.GetHeight(); this.enemy.Ground(); break; case CollisionDirection.DirectionTag.Bottom: break; case CollisionDirection.DirectionTag.Left: this.enemy.Physics.xPosition = this.pipe.GetLeftSide() - enemy.GetWidth(); this.enemy.ChangeDirection(); break; case CollisionDirection.DirectionTag.Right: this.enemy.Physics.xPosition = this.pipe.GetRightSide() + 1; this.enemy.ChangeDirection(); break; default: Console.WriteLine(Config.GetCollisionResolutionException() + GetType().ToString()); break; } } }
public void Handle(ICollidable object1, ICollidable object2, CollisionDirection.DirectionTag direction) { if (typeof(Fireball).IsInstanceOfType(object1) && typeof(AbstractPipe).IsInstanceOfType(object2)) { fireball = (Fireball)object1; pipe = (AbstractPipe)object2; fireball.Explode(); GameManager.Instance.Remove(fireball); } }
public void Handle(ICollidable player, ICollidable pipe, CollisionDirection.DirectionTag direction) { if (typeof(IMario).IsInstanceOfType(player) && typeof(AbstractPipe).IsInstanceOfType(pipe)) { this.player = (IMario)player; this.pipe = (AbstractPipe)pipe; switch (direction) { case CollisionDirection.DirectionTag.Top: this.player.SetYPosition(this.pipe.GetTopSide() - player.GetHeight()); if (typeof(TeleportationPipe).IsInstanceOfType(pipe) && this.player.IsCrouching()) { ((TeleportationPipe)pipe).Teleport(); } else { this.player.Ground(); } break; case CollisionDirection.DirectionTag.Bottom: this.player.SetYPosition(this.pipe.GetBottomSide() + 1); break; case CollisionDirection.DirectionTag.Left: this.player.SetXPosition(this.pipe.GetLeftSide() - player.GetWidth()); if (typeof(LeftFacingPipe).IsInstanceOfType(this.pipe) && this.player.IsCrouching()) { //IsCrouching need to be changed to IsMovingRight ((LeftFacingPipe)pipe).Teleport(); } break; case CollisionDirection.DirectionTag.Right: this.player.SetXPosition(this.pipe.GetRightSide() + 1); break; default: Console.WriteLine(Config.GetCollisionResolutionException() + GetType().ToString()); break; } } }
public void Handle(ICollidable player, ICollidable pipe, CollisionDirection.DirectionTag direction) { if (typeof(IMario).IsInstanceOfType(player) && typeof(AbstractPipe).IsInstanceOfType(pipe)) { this.player = (IMario)player; this.pipe = (AbstractPipe)pipe; switch (direction) { case CollisionDirection.DirectionTag.Top: this.player.SetYPosition(this.pipe.GetTopSide() - player.GetHeight()); if (typeof(TeleportationPipe).IsInstanceOfType(pipe) && this.player.IsCrouching()) { ((TeleportationPipe)pipe).Teleport(); } else { this.player.Ground(); } break; case CollisionDirection.DirectionTag.Bottom: this.player.SetYPosition(this.pipe.GetBottomSide() + 1); break; case CollisionDirection.DirectionTag.Left: this.player.SetXPosition(this.pipe.GetLeftSide() - player.GetWidth()); break; case CollisionDirection.DirectionTag.Right: this.player.SetXPosition(this.pipe.GetRightSide() + 1); break; default: Console.WriteLine("Unexpected Direction Received in Collision.PlayerPipeCollisionResolution"); break; } } }
protected override async Task PushToPipeAsync(CancellationToken cancellationToken, TConsumerValue entity, PipelineMetadata pipelineMetadata, AbstractPipe <TConsumerValue> pipe) { await pipe.Head.PushAsync(cancellationToken, entity, pipelineMetadata).ConfigureAwait(false); await _stats.Metric().PipelineLatency(pipelineMetadata).ConfigureAwait(false); }