Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ DrawNPCHousesInWorld()

void Terraria.Main.DrawNPCHousesInWorld ( )
inlineprotected

Definition at line 37458 of file Main.cs.

37459 {
37462 for (int i = 0; i < 200; i++)
37463 {
37464 if (npc[i].active && npc[i].townNPC && !npc[i].homeless && npc[i].homeTileX > 0 && npc[i].homeTileY > 0 && npc[i].type != 37)
37465 {
37467 }
37468 }
37470 for (int j = 0; j < _npcsWithBannersToDraw.Count; j++)
37471 {
37472 int num = _npcsWithBannersToDraw[j];
37473 NPC nPC = npc[num];
37474 if (!nPC.active || !nPC.townNPC || nPC.homeless || nPC.homeTileX <= 0 || nPC.homeTileY <= 0 || nPC.type == 37)
37475 {
37476 continue;
37477 }
37478 int num2 = 0;
37479 int housingCategory = nPC.housingCategory;
37480 int homeTileX = nPC.homeTileX;
37481 int num3 = nPC.homeTileY - 1;
37482 WorldGen.TownManager.AddOccupantsToList(homeTileX, num3 + 1, _occupantsListToDrawNPCHouses);
37484 {
37485 num2 = 1;
37486 }
37487 int num4 = 0;
37488 for (int num5 = _npcsWithBannersToDraw.Count - 1; num5 > j; num5--)
37489 {
37491 if (npc[num6].homeTileX == homeTileX && npc[num6].homeTileY == num3 + 1)
37492 {
37493 num4++;
37494 }
37495 }
37496 int num7 = num4 * 26;
37497 if (tile[homeTileX, num3] == null)
37498 {
37499 continue;
37500 }
37501 bool flag = false;
37502 while (!tile[homeTileX, num3].active() || !tileSolid[tile[homeTileX, num3].type])
37503 {
37504 num3--;
37505 if (num3 < 10)
37506 {
37507 break;
37508 }
37509 if (tile[homeTileX, num3] == null)
37510 {
37511 flag = true;
37512 break;
37513 }
37514 }
37515 if (flag)
37516 {
37517 continue;
37518 }
37519 int num8 = 8;
37520 int num9 = 18;
37521 if (tile[homeTileX, num3].type == 19)
37522 {
37523 num9 -= 8;
37524 }
37525 num3++;
37526 int num10 = 0;
37527 float num11 = num3 * 16;
37528 num11 += (float)num7;
37529 SpriteEffects effects = SpriteEffects.None;
37532 if (num2 > 0)
37533 {
37534 value2.X += value2.Width * num2;
37535 }
37536 if (housingCategory > 0)
37537 {
37538 value2.Y += value2.Height * housingCategory;
37539 }
37540 if (player[myPlayer].gravDir == -1f)
37541 {
37542 num11 -= screenPosition.Y;
37543 num11 = screenPosition.Y + (float)screenHeight - num11;
37544 num11 -= (float)value2.Height;
37545 effects = SpriteEffects.FlipVertically;
37546 num10 = 4;
37547 }
37548 spriteBatch.Draw(value, new Vector2(homeTileX * 16 - (int)screenPosition.X + num8, num11 - (float)(int)screenPosition.Y + (float)num9 + (float)num10), value2, Lighting.GetColor(homeTileX, num3), 0f, new Vector2(value2.Width / 2, value2.Height / 2), 1f, effects, 0f);
37550 float scale = 1f;
37551 float num12 = 0f;
37552 num12 = ((TextureAssets.NpcHead[headIndexSafe].Width() <= TextureAssets.NpcHead[headIndexSafe].Height()) ? ((float)TextureAssets.NpcHead[headIndexSafe].Height()) : ((float)TextureAssets.NpcHead[headIndexSafe].Width()));
37553 if (num12 > 24f)
37554 {
37555 scale = 24f / num12;
37556 }
37557 spriteBatch.Draw(TextureAssets.NpcHead[headIndexSafe].Value, new Vector2(homeTileX * 16 - (int)screenPosition.X + num8, num11 - (float)(int)screenPosition.Y + (float)num9 + 2f), new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.NpcHead[headIndexSafe].Width(), TextureAssets.NpcHead[headIndexSafe].Height()), Lighting.GetColor(homeTileX, num3), 0f, new Vector2(TextureAssets.NpcHead[headIndexSafe].Width() / 2, TextureAssets.NpcHead[headIndexSafe].Height() / 2), scale, effects, 0f);
37558 homeTileX = homeTileX * 16 - (int)screenPosition.X + num8 - value2.Width / 2;
37559 num3 = (int)num11 - (int)screenPosition.Y + 4;
37560 int num13 = -8;
37562 {
37563 string nPCHouseBannerText = Lang.GetNPCHouseBannerText(nPC, num2);
37566 {
37567 mouseRightRelease = false;
37568 WorldGen.kickOut(num);
37570 }
37571 }
37572 }
37573 }
static void PlaySound(int type, Vector2 position, int style=1)
static Asset< Texture2D >[] NpcHead
static Asset< Texture2D > HouseBanner
static SpriteBatch spriteBatch
Definition Main.cs:974
static int myPlayer
Definition Main.cs:1801
static bool mouseRight
Definition Main.cs:616
int NPCBannerSorter(int npcIndex1, int npcIndex2)
Definition Main.cs:37453
static int screenHeight
Definition Main.cs:1721
static Vector2 screenPosition
Definition Main.cs:1715
static bool[] tileSolid
Definition Main.cs:1471
static Tile[,] tile
Definition Main.cs:1675
List< int > _occupantsListToDrawNPCHouses
Definition Main.cs:2427
static bool mouseRightRelease
Definition Main.cs:1757
List< int > _npcsWithBannersToDraw
Definition Main.cs:2429
static NPC[] npc
Definition Main.cs:1685
static int mouseY
Definition Main.cs:606
static Player[] player
Definition Main.cs:1803
void MouseText(string cursorText, int rare=0, byte diff=0, int hackedMouseX=-1, int hackedMouseY=-1, int hackedScreenWidth=-1, int hackedScreenHeight=-1, int pushWidthX=0)
Definition Main.cs:18729
static int mouseX
Definition Main.cs:604

References Terraria.Main._npcsWithBannersToDraw, Terraria.Main._occupantsListToDrawNPCHouses, System.Collections.Generic.List< T >.Add(), System.Collections.Generic.List< T >.Clear(), System.Collections.Generic.List< T >.Contains(), System.Collections.Generic.List< T >.Count, Terraria.Lighting.GetColor(), Terraria.GameContent.TownNPCProfiles.GetHeadIndexSafe(), Terraria.Lang.GetNPCHouseBannerText(), Terraria.GameContent.TextureAssets.HouseBanner, System.Text.RegularExpressions.i, Terraria.WorldGen.kickOut(), Terraria.Main.mouseRight, Terraria.Main.mouseRightRelease, Terraria.Main.MouseText(), Terraria.Main.mouseX, Terraria.Main.mouseY, Terraria.Main.myPlayer, Terraria.Main.npc, Terraria.Main.NPCBannerSorter(), Terraria.GameContent.TextureAssets.NpcHead, Terraria.Main.player, Terraria.Audio.SoundEngine.PlaySound(), Terraria.Main.screenHeight, Terraria.Main.screenPosition, System.Collections.Generic.List< T >.Sort(), Terraria.Main.spriteBatch, Terraria.Main.tile, Terraria.Main.tileSolid, Terraria.WorldGen.TownManager, System.type, System.value, and Microsoft.Xna.Framework.Graphics.Vector2.

Referenced by Terraria.Main.DrawInterface_7_TownNPCHouseBanners().