public override void Draw(Batch Batch, Vector2 Position, Color Color, float Opacity, float Angle, Origin Origin, float Scale, SpriteEffects Effect = SpriteEffects.None, float Layer = 0) { /*Batch.Draw(Textures.Get("Players.1-" + Mod.Weapons[Weapon].Texture), Position, null, (Color.Black * (Opacity * .65f)), Angle, new Origin(Mod.Weapons[Weapon].Player.X, Mod.Weapons[Weapon].Player.Y), * Scale, SpriteEffects.None, .425002f);*/ if (!Dead) { if (Vector2.Distance(InterpolatedPosition, Position) <= 50) { Vector2 ShadowPosition = Globe.Move(InterpolatedPosition, Globe.Angle(new Vector2((Map.Width / 2f), (Map.Height / 2f)), InterpolatedPosition), (4 + (Vector2.Distance(new Vector2((Map.Width / 2f), (Map.Height / 2f)), InterpolatedPosition) / 250))); Batch.Draw(Textures.Get("Players.1-" + Mod.Weapons[Weapon].Texture), ShadowPosition, null, (Color.Black * (Opacity * .35f)), InterpolatedAngle, new Origin(Mod.Weapons[Weapon].Player.X, Mod.Weapons[Weapon].Player.Y), Scale, SpriteEffects.None, .425001f); Batch.Draw(Textures.Get("Players.1-" + Mod.Weapons[Weapon].Texture), InterpolatedPosition, null, (Color * Opacity), InterpolatedAngle, new Origin(Mod.Weapons[Weapon].Player.X, Mod.Weapons[Weapon].Player.Y), Scale, SpriteEffects.None, .425f); } else { Vector2 ShadowPosition = Globe.Move(Position, Globe.Angle(new Vector2((Map.Width / 2f), (Map.Height / 2f)), Position), (4 + (Vector2.Distance(new Vector2((Map.Width / 2f), (Map.Height / 2f)), Position) / 250))); Batch.Draw(Textures.Get("Players.1-" + Mod.Weapons[Weapon].Texture), ShadowPosition, null, (Color.Black * (Opacity * .35f)), Angle, new Origin(Mod.Weapons[Weapon].Player.X, Mod.Weapons[Weapon].Player.Y), Scale, SpriteEffects.None, .425001f); Batch.Draw(Textures.Get("Players.1-" + Mod.Weapons[Weapon].Texture), Position, null, (Color.Black * (Opacity * .65f)), Angle, new Origin(Mod.Weapons[Weapon].Player.X, Mod.Weapons[Weapon].Player.Y), Scale, SpriteEffects.None, .425001f); } } //Mask.Draw(Color.White, 1); }
public override void Update(GameTime Time) { if ((Animation == null) || Animation.Finished) { ; } if (FireRate > 0) { FireRate -= Time.ElapsedGameTime.TotalSeconds; } if (this == Self) { if (Globe.Active && !Dead) { var OldPosition = Position; var Run = (Keyboard.Holding(Keyboard.Keys.LeftShift) || Keyboard.Holding(Keyboard.Keys.RightShift)); if (Keyboard.Holding(Keyboard.Keys.W)) { if (Keyboard.Holding(Keyboard.Keys.A)) { Move(new Vector2(-(float)(Speed.X * Time.ElapsedGameTime.TotalSeconds), -(float)(Speed.Y * Time.ElapsedGameTime.TotalSeconds))); } else if (Keyboard.Holding(Keyboard.Keys.D)) { Move(new Vector2((float)(Speed.X * Time.ElapsedGameTime.TotalSeconds), -(float)(Speed.Y * Time.ElapsedGameTime.TotalSeconds))); } else { Move(new Vector2(0, -(float)(Speed.Y * Time.ElapsedGameTime.TotalSeconds))); } } else if (Keyboard.Holding(Keyboard.Keys.S)) { if (Keyboard.Holding(Keyboard.Keys.A)) { Move(new Vector2(-(float)(Speed.X * Time.ElapsedGameTime.TotalSeconds), (float)(Speed.Y * Time.ElapsedGameTime.TotalSeconds))); } else if (Keyboard.Holding(Keyboard.Keys.D)) { Move(new Vector2((float)(Speed.X * Time.ElapsedGameTime.TotalSeconds), (float)(Speed.Y * Time.ElapsedGameTime.TotalSeconds))); } else { Move(new Vector2(0, (float)(Speed.Y * Time.ElapsedGameTime.TotalSeconds))); } } else if (Keyboard.Holding(Keyboard.Keys.A)) { Move(new Vector2(-(float)(Speed.X * Time.ElapsedGameTime.TotalSeconds), 0)); } else if (Keyboard.Holding(Keyboard.Keys.D)) { Move(new Vector2((float)(Speed.X * Time.ElapsedGameTime.TotalSeconds), 0)); } if (OldPosition != Position) { } Angle = Globe.Lerp(Angle, Globe.Angle(Position, Mouse.CameraPosition), .1f); Camera.Position = Globe.Move(Position, Globe.Angle(Position, Mouse.CameraPosition), (Vector2.Distance(Position, Mouse.CameraPosition) / 4)); //Camera.Angle = Angle; if (Mouse.Pressed(Mouse.Buttons.Left) && (FireRate <= 0)) { Fire(Position, Angle); } } if (RespawnTimer > 0) { RespawnTimer -= Time.ElapsedGameTime.TotalSeconds; } else if (Dead) { if ((GameType == GameTypes.Deathmatch) || (GameType == GameTypes.TeamDeathmatch)) { Point Spawn = Map.GetSpawn(Team); Respawn(new Vector2(((Spawn.X * Tile.Width) + (Tile.Width / 2f)), ((Spawn.Y * Tile.Height) + (Tile.Height / 2f)))); } } if ((Health <= 0) && !Dead) { Die(); } if (Timers.Tick("Positions") && (MultiPlayer.Type("Game") == MultiPlayer.Types.Client)) { MultiPlayer.Send("Game", MultiPlayer.Construct("Game", Game.Packets.Position, Position, Angle), NetDeliveryMethod.UnreliableSequenced, 1); } } Globe.Move(ref InterpolatedPosition, Position, (Vector2.Distance(InterpolatedPosition, Position) / 6)); InterpolatedAngle = Globe.Lerp(InterpolatedAngle, Angle, .125f); base.Update(Time); }