コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
ファイル: LiquidMod.cs プロジェクト: PenguinOwl/liquidmod
        //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);
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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);
        }
コード例 #8
0
ファイル: CCCCCC.cs プロジェクト: leo60228/CCCCCC
 public static void Render(On.Celeste.Player.orig_Render orig_Render, Player self)
 {
     // Console.WriteLine("PlayerRender");
     orig_Render(self);
 }