private void PutBallInCup(Projectile proj, BallCollisionEvent collision) { if (proj.owner == Main.myPlayer && Main.LocalGolfState.ShouldScoreHole) { Point tileCoordinates = (collision.ImpactPoint - collision.Normal * 0.5f).ToTileCoordinates(); int owner = proj.owner; int numberOfHits = (int)proj.ai[1]; int type = proj.type; if (numberOfHits > 1) { Main.LocalGolfState.SetScoreTime(); } Main.LocalGolfState.RecordBallInfo(proj); Main.LocalGolfState.LandBall(proj); int golfBallScore = Main.LocalGolfState.GetGolfBallScore(proj); if (numberOfHits > 0) { Main.player[owner].AccumulateGolfingScore(golfBallScore); } GolfHelper.ContactListener.PutBallInCup_Actual(tileCoordinates, owner, numberOfHits, type); Main.LocalGolfState.ResetScoreTime(); if (Main.netMode == 1) { NetMessage.SendData(128, -1, -1, (NetworkText)null, owner, (float)numberOfHits, (float)type, 0.0f, tileCoordinates.X, tileCoordinates.Y, 0); } } proj.Kill(); }
private void PutBallInCup(Projectile proj, BallCollisionEvent collision) { if (proj.owner == Main.myPlayer && Main.LocalGolfState.ShouldScoreHole) { Point hitLocation = (collision.ImpactPoint - collision.Normal * 0.5f).ToTileCoordinates(); int owner = proj.owner; int num = (int)proj.ai[1]; int type = proj.type; if (num > 1) { Main.LocalGolfState.SetScoreTime(); } Main.LocalGolfState.RecordBallInfo(proj); Main.LocalGolfState.LandBall(proj); int golfBallScore = Main.LocalGolfState.GetGolfBallScore(proj); if (num > 0) { Main.player[owner].AccumulateGolfingScore(golfBallScore); } PutBallInCup_TextAndEffects(hitLocation, owner, num, type); Main.LocalGolfState.ResetScoreTime(); Wiring.HitSwitch(hitLocation.X, hitLocation.Y); NetMessage.SendData(59, -1, -1, null, hitLocation.X, hitLocation.Y); if (Main.netMode == 1) { NetMessage.SendData(128, -1, -1, null, owner, num, type, 0f, hitLocation.X, hitLocation.Y); } } proj.Kill(); }
public void OnCollision( PhysicsProperties properties, ref Vector2 position, ref Vector2 velocity, ref BallCollisionEvent collision) { TileMaterial byTileId = TileMaterials.GetByTileId(collision.Tile.type); Vector2 vector2_1 = velocity * byTileId.GolfPhysics.SideImpactDampening; Vector2 vector2_2 = collision.Normal * Vector2.Dot(velocity, collision.Normal) * (byTileId.GolfPhysics.DirectImpactDampening - byTileId.GolfPhysics.SideImpactDampening); velocity = vector2_1 + vector2_2; Projectile entity = collision.Entity as Projectile; switch (collision.Tile.type) { case 421: case 422: float num1 = 2.5f * collision.TimeScale; Vector2 vector2_3 = new Vector2(-collision.Normal.Y, collision.Normal.X); if (collision.Tile.type == (ushort)422) { vector2_3 = -vector2_3; } float num2 = Vector2.Dot(velocity, vector2_3); if ((double)num2 < (double)num1) { velocity += vector2_3 * MathHelper.Clamp(num1 - num2, 0.0f, num1 * 0.5f); break; } break; case 476: float num3 = velocity.Length() / collision.TimeScale; if ((double)collision.Normal.Y <= -0.00999999977648258 && (double)num3 <= 100.0) { velocity *= 0.0f; if (entity != null && entity.active) { this.PutBallInCup(entity, collision); break; } break; } break; } if (entity == null || (double)velocity.Y >= -0.300000011920929 || ((double)velocity.Y <= -2.0 || (double)velocity.Length() <= 1.0)) { return; } Dust dust = Dust.NewDustPerfect(collision.Entity.Center, 31, new Vector2?(collision.Normal), (int)sbyte.MaxValue, new Color(), 1f); dust.scale = 0.7f; dust.fadeIn = 1f; dust.velocity = dust.velocity * 0.5f + Main.rand.NextVector2CircularEdge(0.5f, 0.4f); }
public void OnCollision(PhysicsProperties properties, Vector2 position, Vector2 velocity, BallCollisionEvent collision) { TileMaterial byTileId = TileMaterials.GetByTileId(collision.Tile.type); Vector2 value = velocity * byTileId.GolfPhysics.SideImpactDampening; Vector2 value2 = collision.Normal * Vector2.Dot(velocity, collision.Normal) * (byTileId.GolfPhysics.DirectImpactDampening - byTileId.GolfPhysics.SideImpactDampening); velocity = value + value2; Projectile projectile = collision.Entity as Projectile; switch (collision.Tile.type) { case 421: case 422: { float num2 = 2.5f * collision.TimeScale; Vector2 vector = new Vector2(0f - collision.Normal.Y, collision.Normal.X); if (collision.Tile.type == 422) { vector = -vector; } float num3 = Vector2.Dot(velocity, vector); if (num3 < num2) { velocity += vector * MathHelper.Clamp(num2 - num3, 0f, num2 * 0.5f); } break; } case 476: { float num = velocity.Length() / collision.TimeScale; if (!(collision.Normal.Y > -0.01f) && !(num > 100f)) { velocity *= 0f; if (projectile != null && projectile.active) { PutBallInCup(projectile, collision); } } break; } } if (projectile != null && velocity.Y < -0.3f && velocity.Y > -2f && velocity.Length() > 1f) { Dust dust = Dust.NewDustPerfect(collision.Entity.Center, 31, collision.Normal, 127); dust.scale = 0.7f; dust.fadeIn = 1f; dust.velocity = dust.velocity * 0.5f + Main.rand.NextVector2CircularEdge(0.5f, 0.4f); } }
void Raise(BallCollisionEvent anEvent, Vector3 point) { if (anEvent != null) { anEvent(point); } }