public static void Draw() { if (!ManagingGuardianHouses) { return; } try { string MouseText = ""; float Scale = 0.85f; float SlotSpace = (56 * Scale); int MaxRowItems = (int)((Main.screenWidth - 64) / SlotSpace); Vector2 RowPosition = new Vector2(0, Main.screenHeight - SlotSpace - 8); bool MouseOverHouseIcon = false; List <TerraGuardian[]> GuardianRows = new List <TerraGuardian[]>(); { List <TerraGuardian> Guardians = new List <TerraGuardian>(); int Counter = 0; foreach (TerraGuardian tg in WorldMod.GuardianTownNPC) { if (tg.FriendshipLevel >= tg.Base.MoveInLevel || tg.IsPlayerBuddy(Main.LocalPlayer) || tg.IsStarter) { Guardians.Add(tg); } Counter++; if (Counter >= MaxRowItems) { GuardianRows.Add(Guardians.ToArray()); Guardians.Clear(); } } GuardianRows.Add(Guardians.ToArray()); Guardians.Clear(); } for (int r = 0; r < GuardianRows.Count; r++) { RowPosition.X = Main.screenWidth * 0.5f - GuardianRows[r].Length * SlotSpace * 0.5f; for (int n = 0; n < GuardianRows[r].Length; n++) { Main.spriteBatch.Draw(Main.inventoryBack6Texture, RowPosition, null, Main.inventoryBack, 0f, Vector2.Zero, Scale, SpriteEffects.None, 0f); GuardianRows[r][n].DrawHead(RowPosition + new Vector2(28, 28) * Scale); if (Main.mouseX >= RowPosition.X && Main.mouseX < RowPosition.X + SlotSpace && Main.mouseY >= RowPosition.Y && Main.mouseY < RowPosition.Y + SlotSpace) { MainPlayer.mouseInterface = true; MouseOverHouseIcon = true; if (Main.mouseLeft && Main.mouseLeftRelease) { IsPickingAGuardianHouse = true; PickedGuardianToGiveHousing = GuardianRows[r][n].WhoAmID; Main.PlaySound(12, -1, -1, 1, 1f, 0f); } } RowPosition.X += SlotSpace; } RowPosition.Y -= SlotSpace; } if (IsPickingAGuardianHouse) { MainPlayer.mouseInterface = true; if (!MainMod.ActiveGuardians.ContainsKey(PickedGuardianToGiveHousing)) { IsPickingAGuardianHouse = false; } else { DrawBanner(MainMod.ActiveGuardians[PickedGuardianToGiveHousing], new Vector2(Main.mouseX + 16, Main.mouseY + 16), Color.White); if (!MouseOverHouseIcon && Main.mouseLeft && Main.mouseLeftRelease) { int TileX = (int)(Main.mouseX + Main.screenPosition.X) / 16, TileY = (int)(Main.mouseY + Main.screenPosition.Y) / 16; if (WorldMod.MoveGuardianToHouse(MainMod.ActiveGuardians[PickedGuardianToGiveHousing], TileX, TileY)) { Main.NewText(MainMod.ActiveGuardians[PickedGuardianToGiveHousing].Name + " will move to this room.", Color.Yellow); IsPickingAGuardianHouse = false; Main.PlaySound(12, -1, -1, 1, 1f, 0f); } } if (Main.mouseRight && Main.mouseRightRelease) { IsPickingAGuardianHouse = false; } } } if (MouseText != "") { Utils.DrawBorderString(Main.spriteBatch, MouseText, new Vector2(Main.mouseX, Main.mouseY + 16), Color.White, 1f, 0.5f); } } catch { } }