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); } }
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)); } }