using SoulHarvest.Items;
using SoulHarvest.UI;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System;
using Terraria;
using Terraria.Audio;
using Terraria.GameContent;
using Terraria.GameContent.ObjectInteractions;
using Terraria.ID;
using Terraria.ModLoader;
using Terraria.ObjectData;
namespace SoulHarvest.Tiles;
public class DeathAltarTile : ModTile
{
public override void SetStaticDefaults()
{
Main.tileFrameImportant[Type] = true;
Main.tileNoAttach[Type] = true;
Main.tileLighted[Type] = true;
TileID.Sets.InteractibleByNPCs[Type] = true;
TileObjectData.newTile.CopyFrom(TileObjectData.Style3x4);
TileObjectData.newTile.LavaDeath = false;
TileObjectData.newTile.DrawYOffset = 2;
TileObjectData.addTile(Type);
DustType = DustID.Obsidian;
RegisterItemDrop(ModContent.ItemType<DeathAltarItem>());
AddMapEntry(new Color(92, 45, 125), Mod.GetLocalization("Tiles.DeathAltarTile.MapEntry"));
}
public override bool HasSmartInteract(int i, int j, SmartInteractScanSettings settings)
{
return true;
}
public override bool RightClick(int i, int j)
{
if (Main.netMode != NetmodeID.Server)
{
SoundEngine.PlaySound(SoundID.MenuOpen);
ModContent.GetInstance<DeathAltarUISystem>().Show(i, j);
}
return true;
}
public override void MouseOver(int i, int j)
{
Player player = Main.LocalPlayer;
player.noThrow = 2;
player.cursorItemIconEnabled = true;
player.cursorItemIconID = ModContent.ItemType<DeathAltarItem>();
}
public override void ModifyLight(int i, int j, ref float r, ref float g, ref float b)
{
Tile tile = Framing.GetTileSafely(i, j);
if (tile.TileFrameX == 18 && tile.TileFrameY == 18)
{
float pulse = 0.1f + (float)Math.Sin(Main.GlobalTimeWrappedHourly * 3f) * 0.025f;
r = 0.28f + pulse * 1.6f;
g = 0.03f + pulse * 0.24f;
b = 0.04f + pulse * 0.35f;
}
}
public override bool PreDraw(int i, int j, SpriteBatch spriteBatch)
{
Tile tile = Framing.GetTileSafely(i, j);
if (tile.TileFrameX != 0 || tile.TileFrameY != 0)
return false;
Texture2D texture = TextureAssets.Tile[Type].Value;
Vector2 offScreen = Main.drawToScreen ? Vector2.Zero : new Vector2(Main.offScreenRange);
Vector2 drawPosition = new Vector2(i * 16f + 24f, j * 16f + 34f) - Main.screenPosition + offScreen;
Vector2 origin = texture.Size() / 2f;
float scale = 70f / texture.Height;
float pulse = 1f + (float)Math.Sin(Main.GlobalTimeWrappedHourly * 3f) * 0.025f;
Color lightColor = Color.Lerp(Lighting.GetColor(i + 1, j + 2), Color.White, 0.4f);
Color glowColor = new Color(255, 28, 42, 0) * 0.24f;
for (int direction = 0; direction < 4; direction++)
{
Vector2 offset = (MathHelper.PiOver2 * direction).ToRotationVector2() * (2f + pulse);
spriteBatch.Draw(texture, drawPosition + offset, null, glowColor, 0f, origin, scale * pulse, SpriteEffects.None, 0f);
}
spriteBatch.Draw(texture, drawPosition, null, lightColor, 0f, origin, scale, SpriteEffects.None, 0f);
return false;
}
}
using SoulHarvest.Items;
using SoulHarvest.UI;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System;
using Terraria;
using Terraria.Audio;
using Terraria.GameContent;
using Terraria.GameContent.ObjectInteractions;
using Terraria.ID;
using Terraria.ModLoader;
using Terraria.ObjectData;
namespace SoulHarvest.Tiles;
public class DeathAltarTile : ModTile
{
public override void SetStaticDefaults()
{
Main.tileFrameImportant[Type] = true;
Main.tileNoAttach[Type] = true;
Main.tileLighted[Type] = true;
TileID.Sets.InteractibleByNPCs[Type] = true;
TileObjectData.newTile.CopyFrom(TileObjectData.Style3x4);
TileObjectData.newTile.LavaDeath = false;
TileObjectData.newTile.DrawYOffset = 2;
TileObjectData.addTile(Type);
DustType = DustID.Obsidian;
RegisterItemDrop(ModContent.ItemType<DeathAltarItem>());
AddMapEntry(new Color(92, 45, 125), Mod.GetLocalization("Tiles.DeathAltarTile.MapEntry"));
}
public override bool HasSmartInteract(int i, int j, SmartInteractScanSettings settings)
{
return true;
}
public override bool RightClick(int i, int j)
{
if (Main.netMode != NetmodeID.Server)
{
SoundEngine.PlaySound(SoundID.MenuOpen);
ModContent.GetInstance<DeathAltarUISystem>().Show(i, j);
}
return true;
}
public override void MouseOver(int i, int j)
{
Player player = Main.LocalPlayer;
player.noThrow = 2;
player.cursorItemIconEnabled = true;
player.cursorItemIconID = ModContent.ItemType<DeathAltarItem>();
}
public override void ModifyLight(int i, int j, ref float r, ref float g, ref float b)
{
Tile tile = Framing.GetTileSafely(i, j);
if (tile.TileFrameX == 18 && tile.TileFrameY == 18)
{
float pulse = 0.1f + (float)Math.Sin(Main.GlobalTimeWrappedHourly * 3f) * 0.025f;
r = 0.28f + pulse * 1.6f;
g = 0.03f + pulse * 0.24f;
b = 0.04f + pulse * 0.35f;
}
}
public override bool PreDraw(int i, int j, SpriteBatch spriteBatch)
{
Tile tile = Framing.GetTileSafely(i, j);
if (tile.TileFrameX != 0 || tile.TileFrameY != 0)
return false;
Texture2D texture = TextureAssets.Tile[Type].Value;
Vector2 offScreen = Main.drawToScreen ? Vector2.Zero : new Vector2(Main.offScreenRange);
Vector2 drawPosition = new Vector2(i * 16f + 24f, j * 16f + 34f) - Main.screenPosition + offScreen;
Vector2 origin = texture.Size() / 2f;
float scale = 70f / texture.Height;
float pulse = 1f + (float)Math.Sin(Main.GlobalTimeWrappedHourly * 3f) * 0.025f;
Color lightColor = Color.Lerp(Lighting.GetColor(i + 1, j + 2), Color.White, 0.4f);
Color glowColor = new Color(255, 28, 42, 0) * 0.24f;
for (int direction = 0; direction < 4; direction++)
{
Vector2 offset = (MathHelper.PiOver2 * direction).ToRotationVector2() * (2f + pulse);
spriteBatch.Draw(texture, drawPosition + offset, null, glowColor, 0f, origin, scale * pulse, SpriteEffects.None, 0f);
}
spriteBatch.Draw(texture, drawPosition, null, lightColor, 0f, origin, scale, SpriteEffects.None, 0f);
return false;
}
}