private void PostDrawPlayer(On.Terraria.Main.orig_DrawPlayer orig, Main self, Player drawPlayer, Vector2 Position, float rotation, Vector2 rotationOrigin, float shadow) //TODO: Generalize this for later use, and possibly optimize it also
        {
            orig(self, drawPlayer, Position, rotation, rotationOrigin, shadow);
            if (Main.gameMenu)
            {
                return;
            }

            for (int i = (int)Main.screenPosition.X / 16; i < (int)Main.screenPosition.X / 16 + Main.screenWidth / 16; i++)
            {
                for (int j = (int)Main.screenPosition.Y / 16; j < (int)Main.screenPosition.Y / 16 + Main.screenWidth / 16; j++)
                {
                    if (i > 0 && j > 0 && i < Main.maxTilesX && j < Main.maxTilesY && Main.tile[i, j] != null && Main.tile[i, j].type == TileType <GrassOvergrow>())
                    {
                        GrassOvergrow.CustomDraw(i, j, Main.spriteBatch);
                    }
                }
            }

            //Temple shroud, TODO: move this somewhere more sane later. Im crunched for time rn.
            if (Helper.OnScreen(BiomeHandler.GlassTempleZone) && (!StarlightWorld.HasFlag(WorldFlags.DesertOpen) || !drawPlayer.GetModPlayer <BiomeHandler>().ZoneGlassTemple))
            {
                //Main.spriteBatch.Draw(GetTexture("StarlightRiver/Assets/TempleBlock"), (BiomeHandler.GlassTempleZone.TopLeft() + new Vector2(1, 8)) * 16 - Main.screenPosition, Color.Black);
            }
        }
        private static void Main_DrawPlayer(On.Terraria.Main.orig_DrawPlayer orig, Main self, Player drawPlayer, Vector2 Position, float rotation, Vector2 rotationOrigin, float shadow)
        {
            ArmorPlatingPlayer modPlayer = drawPlayer.GetModPlayer <ArmorPlatingPlayer>();

            orig(self, drawPlayer, Position, rotation, rotationOrigin, shadow);

            if (modPlayer.Shield)
            {
                DrawPlayerTarget(modPlayer.flickerTime, modPlayer.shieldTimer, drawPlayer);
            }
        }
示例#3
0
        private void PostDrawPlayer(On.Terraria.Main.orig_DrawPlayer orig, Main self, Player drawPlayer, Vector2 Position, float rotation, Vector2 rotationOrigin, float shadow) //TODO: Generalize this for later use, and possibly optimize it also
        {
            if (!Main.gameMenu && shadow == 0)
            {
                drawPlayer.GetModPlayer <StarlightPlayer>().PreDraw(drawPlayer, Main.spriteBatch);
            }

            orig(self, drawPlayer, Position, rotation, rotationOrigin, shadow);

            if (!Main.gameMenu && shadow == 0)
            {
                drawPlayer.GetModPlayer <StarlightPlayer>().PostDraw(drawPlayer, Main.spriteBatch);
            }
        }
        private void PostDrawPlayer(On.Terraria.Main.orig_DrawPlayer orig, Main self, Player drawPlayer, Vector2 Position, float rotation, Vector2 rotationOrigin, float shadow) //TODO: Generalize this for later use, and possibly optimize it also
        {
            orig(self, drawPlayer, Position, rotation, rotationOrigin, shadow);
            if (Main.gameMenu)
            {
                return;
            }

            for (int i = (int)Main.screenPosition.X / 16; i < (int)Main.screenPosition.X / 16 + Main.screenWidth / 16; i++)
            {
                for (int j = (int)Main.screenPosition.Y / 16; j < (int)Main.screenPosition.Y / 16 + Main.screenWidth / 16; j++)
                {
                    if (i > 0 && j > 0 && i < Main.maxTilesX && j < Main.maxTilesY && Main.tile[i, j] != null && Main.tile[i, j].type == TileType <GrassOvergrow>())
                    {
                        GrassOvergrow.CustomDraw(i, j, Main.spriteBatch);
                    }
                }
            }
        }
        private void DrawChargeBar(On.Terraria.Main.orig_DrawPlayer orig, Main self, Player drawPlayer, Vector2 Position, float rotation, Vector2 rotationOrigin, float shadow)
        {
            orig(self, drawPlayer, Position, rotation, rotationOrigin, shadow);



            if (drawPlayer != null && !drawPlayer.HeldItem.IsAir && drawPlayer.HeldItem.type == ItemType <TwistSword>() && PlayerTarget.canUseTarget)
            {
                int       charge  = (drawPlayer.HeldItem.modItem as TwistSword).charge;
                var       tex     = GetTexture(AssetDirectory.GUI + "SmallBar1");
                var       tex2    = GetTexture(AssetDirectory.GUI + "SmallBar0");
                Point     pos     = (drawPlayer.Center + new Vector2(-tex.Width / 2, -40) + Vector2.UnitY * drawPlayer.gfxOffY - Main.screenPosition).ToPoint();
                Rectangle target  = new Rectangle(pos.X, pos.Y, (int)(charge / 600f * tex.Width), tex.Height);
                Rectangle source  = new Rectangle(0, 0, (int)(charge / 600f * tex.Width), tex.Height);
                Rectangle target2 = new Rectangle(pos.X, pos.Y + 2, tex2.Width, tex2.Height);
                Vector3   color   = Vector3.Lerp(Color.Red.ToVector3(), Color.Aqua.ToVector3(), charge / 800f);

                Main.spriteBatch.Draw(tex2, target2, new Color(40, 40, 40));
                Main.spriteBatch.Draw(tex, target, source, new Color(color.X, color.Y, color.Z));
            }
        }