private void PlayerRenderHook(On.Celeste.Player.orig_Render orig, Player self) { if (Settings.SelectedSkinMod != SkinModHelperConfig.DEFAULT_SKIN) { int dashCount = self.Dashes; string colorGradePath = skinConfigs[Settings.SelectedSkinMod].GetUniquePath() + "dash"; while (dashCount > 2 && !GFX.ColorGrades.Has(colorGradePath + dashCount)) { dashCount--; } if (GFX.ColorGrades.Has(colorGradePath + dashCount)) { Effect fxColorGrading = GFX.FxColorGrading; fxColorGrading.CurrentTechnique = fxColorGrading.Techniques["ColorGradeSingle"]; Engine.Graphics.GraphicsDevice.Textures[1] = GFX.ColorGrades[colorGradePath + dashCount].Texture.Texture_Safe; Draw.SpriteBatch.End(); Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, fxColorGrading, (self.Scene as Level).GameplayRenderer.Camera.Matrix); orig(self); Draw.SpriteBatch.End(); Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix); return; } } orig(self); }
public static void RenderPlayer(On.Celeste.Player.orig_Render orig, Player self) { Vector2 renderPos = self.Sprite.RenderPosition; if (Settings.SkateboardEnabled) { self.Sprite.RenderPosition += SkateboardPlayerOffset; } if (Settings.DuckToDabEnabled && self.Ducking) { self.Sprite.RenderPosition += DabPlayerOffset; } orig(self); if (Settings.SkateboardEnabled) { Skateboard.Draw( renderPos.Floor() + new Vector2(self.Facing == Facings.Left ? 9 : -8, -4), Vector2.Zero, Color.White, new Vector2(self.Facing == Facings.Left ? -1 : 1, 1) ); } if (Settings.SkateboardEnabled) { self.Sprite.RenderPosition -= SkateboardPlayerOffset; } if (Settings.DuckToDabEnabled && self.Ducking) { self.Sprite.RenderPosition -= DabPlayerOffset; } }
private static void PlayerOnRender(On.Celeste.Player.orig_Render orig, Player self) { orig(self); foreach (Follower follower in self.Leader.Followers) { Sprite sprite = follower.Entity.Get <Sprite>(); if (sprite == null) { continue; } EntityID id = default; switch (follower.Entity) { case Strawberry berry: id = berry.ID; break; case Key key: id = key.ID; break; } if (id.Equals(default(EntityID))) { continue; } if (!Settings.TranslucentEnabled || !Settings.Enabled) { if (HasChangedFollowEntities.Contains(id)) { HasChangedFollowEntities.Remove(id); sprite.Color = Color.White; } continue; } float distance = Vector2.Distance(follower.Entity.Position, self.Position) - Settings.TransparentRadius; if (distance < 0) { distance = 0; } Color originalColor = sprite.Color; float alpha = distance / Settings.TranslucentRadius; float approachAlpha = Calc.Approach(originalColor.A, 255 * alpha, 10f); sprite.Color = Color.White * (approachAlpha / 255f); HasChangedFollowEntities.Add(id); } }
private static void Player_OnRender(On.Celeste.Player.orig_Render orig, Player self) { // Entity is not tracked during code hotswaps, prevents crashes WaterDrowningController controller = self.Scene.Tracker.IsEntityTracked <WaterDrowningController>() ? self.Scene.Tracker.GetEntity <WaterDrowningController>() : null; if (controller != null && controller.WaterDuration > 0) { float stamina = self.Stamina; self.Stamina = controller.WaterDuration + 2 > controller.WaterDrownDuration ? 0 : Player.ClimbMaxStamina; orig(self); self.Stamina = stamina; } else { orig(self); } }
//void ParticleSystem_Emit_ParticleType_Vector2_Float(On.Monocle.ParticleSystem.orig_Emit_ParticleType_Vector2_float orig, ParticleSystem self, ParticleType type, Vector2 position, float direction) //{ // if (Settings.Enabled) // { // Player.P_DashA.Color = Calc.HexToColor(Settings.Dash0Color); // Player.P_DashB.Color = Calc.HexToColor(Settings.Dash1Color); // } // else // { // Player.P_DashA.Color = Calc.HexToColor("44B7FF"); // Player.P_DashB.Color = Calc.HexToColor("AC3232"); // } // orig(self, type, position, direction); //} private void Player_Added(On.Celeste.Player.orig_Render orig, Player self) { //Logger.Log("A", self.GetType().ToString()); //PlayerSpriteMode mode = self.Sprite.Mode; //self.Remove(self.Sprite); //if (Settings.Badeline) //{ // self.Sprite = new PlayerSprite(PlayerSpriteMode.Badeline); //} //else //{ // self.Sprite = new PlayerSprite(mode); //} //self.Remove(self.Hair); //self.Sprite.HairCount = getHairCount(self); //self.Add(self.Hair = new PlayerHair(self.Sprite)); //self.Add(self.Sprite); orig(self); }
private static void Player_Render(On.Celeste.Player.orig_Render orig, Player self) { Level level = self.Scene as Level; float playerRotation = wallPlayerRotations.GetOrDefault(self, new ValueHolder <float>(0f)).value; Vector2 renderOffset = wallPlayerRenderOffset.GetOrDefault(self, new ValueHolder <Vector2>(new Vector2(0f, 0f))).value; if (level != null && playerRotation != 0f) { Camera camera = level.Camera; float originalAngle = camera.Angle; Vector2 originalCameraPosition = camera.Position; Vector2 originalCameraOrigin = camera.Origin; Vector2 originalPlayerPosition = self.Sprite.Position; Vector2 originalPlayerHairPosition = self.Hair.Sprite.Position; GameplayRenderer.End(); camera.Angle = playerRotation; camera.Origin = self.Position + renderOffset - camera.Position; camera.Position += camera.Origin; self.Sprite.Position += renderOffset; self.Hair.MoveHairBy(renderOffset); GameplayRenderer.Begin(); orig(self); GameplayRenderer.End(); camera.Angle = originalAngle; camera.Origin = originalCameraOrigin; camera.Position = originalCameraPosition; self.Sprite.Position = originalPlayerPosition; self.Hair.MoveHairBy(-renderOffset); GameplayRenderer.Begin(); } else { orig(self); } }
private static void onPlayerRender(On.Celeste.Player.orig_Render orig, Player self) { // we are going to apply a color grade to Maddy to indicate dash count. string id; if (self.Dashes == 0) { id = ZeroDashColorGrade; } else if (self.Dashes == 1) { id = OneDashColorGrade; } else { id = TwoDashColorGrade; } if (id == null) { // no replacement to do, original sprites are the right color. orig(self); return; } // initialize color grade... Effect fxColorGrading = GFX.FxColorGrading; fxColorGrading.CurrentTechnique = fxColorGrading.Techniques["ColorGradeSingle"]; Engine.Graphics.GraphicsDevice.Textures[1] = GFX.ColorGrades[id].Texture.Texture_Safe; Draw.SpriteBatch.End(); Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, fxColorGrading, (self.Scene as Level).GameplayRenderer.Camera.Matrix); // render Maddy... orig(self); // ... and reset rendering to stop using the color grade. Draw.SpriteBatch.End(); Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix); }
public static void Render(On.Celeste.Player.orig_Render orig_Render, Player self) { // Console.WriteLine("PlayerRender"); orig_Render(self); }