public static void RenderPlayerSprite(On.Celeste.PlayerSprite.orig_Render orig, PlayerSprite self) { Player player = self.Entity as Player; if (player == null || self.Mode == PlayerSpriteMode.Badeline) { orig(self); return; } if (Settings.DuckToDabEnabled && player.Ducking) { Dab.Draw( self.RenderPosition.Floor() + new Vector2(player.Facing == Facings.Left ? 6 : -6, -7), Vector2.Zero, Color.White, self.Scale ); return; } orig(self); }
public void RenderPlayerSprite(On.Celeste.PlayerSprite.orig_Render orig, PlayerSprite self) { Player player = self.Entity as Player; if (player == null || self.Mode == PlayerSpriteMode.Badeline || Character == null || player.StateMachine.State == 9 || player.StateMachine.State == 5) { // state 9 is dreamdashing, state 5 is red bubble orig(self); return; } if (Settings.Mode == MadikaModuleChar.Invisible) { return; } AirDuck |= (player.Ducking && !player.OnSafeGround); AirDuck &= (!player.OnSafeGround && Input.MoveY == 1); bool ducking = player.Ducking || AirDuck; Color playerColor = player.Stamina < 20 && spriteflashing ? Color.Red : Color.White; //int widthFix = (Character.Sprite.Width / 2 + 2) * (player.Facing == Facings.Left ? 1 : -1); int dashes = player.Dashes; if (Character.HasWalkStillTextures) { Character.Sprite = GFX.Game[Character.SpriteName + "_" + (player.Speed.X == 0 ? "walk" : "still")]; } if (Character.HasDashTextures) { Character.Sprite = GFX.Game[Character.SpriteName + "_" + dashes]; } Vector2 renderPosition = new Vector2(self.RenderPosition.X, self.RenderPosition.Y).Floor(); renderPosition.X += (1f - self.Scale.X) * (Character.Sprite.Width / 2); renderPosition.Y += (1f - self.Scale.Y) * (Character.Sprite.Height / 2); renderPosition.X -= Character.Sprite.Width / 4 + (player.Facing == Facings.Left ? 0 : Character.Sprite.Width / 2); if (Character.Sprite == GFX.Game["characters/player/o"]) { renderPosition.Y += (float)Math.Cos(timePassed * 1.5); } if (player.Speed.X != 0 && player.OnSafeGround) { MTexture Body = new MTexture(Character.Sprite, new Rectangle(0, 0, Character.Sprite.Width, Character.Sprite.Height - Character.FootHeight)); Body.Draw( renderPosition + new Vector2(0, -Character.Sprite.Height), Vector2.Zero, playerColor, self.Scale ); if (player.Facing == Facings.Left) { Character.LeftFoot.Draw( renderPosition + new Vector2((OffsetFeet ? 0 : 1), -Character.FootHeight), Vector2.Zero, playerColor, self.Scale ); Character.RightFoot.Draw( renderPosition + new Vector2((OffsetFeet ? 1 : 0) - Character.RightFootX, -Character.FootHeight), Vector2.Zero, playerColor, self.Scale ); } else { Character.LeftFoot.Draw( renderPosition + new Vector2(-(OffsetFeet ? 1 : 0), -Character.FootHeight), Vector2.Zero, playerColor, self.Scale ); Character.RightFoot.Draw( renderPosition + new Vector2(-(OffsetFeet ? 0 : 1) + Character.RightFootX, -Character.FootHeight), Vector2.Zero, playerColor, self.Scale ); } } else { Character.Sprite.Draw( renderPosition + new Vector2(0, -Character.Sprite.Height * (ducking ? 0.4f : 1f)), Vector2.Zero, playerColor, new Vector2(self.Scale.X, ducking ? 0.3f : self.Scale.Y) ); } }