public static void DrawFront(SpriteBatch spriteBatch) { foreach (var slot in highlightedSubInventorySlots) { int slotIndex = Array.IndexOf(slot.ParentInventory.slots, slot.Slot); if (slotIndex > 0 && slotIndex < slot.ParentInventory.slots.Length) { slot.ParentInventory.DrawSubInventory(spriteBatch, slotIndex); } } if (draggingItem != null) { if (draggingSlot == null || (!draggingSlot.MouseOn())) { Sprite sprite = draggingItem.Prefab.InventoryIcon ?? draggingItem.Sprite; int iconSize = (int)(64 * GUI.Scale); float scale = Math.Min(Math.Min(iconSize / sprite.size.X, iconSize / sprite.size.Y), 1.5f); Vector2 itemPos = PlayerInput.MousePosition; sprite.Draw(spriteBatch, itemPos + Vector2.One * 2, Color.Black, scale: scale); sprite.Draw(spriteBatch, itemPos, sprite == draggingItem.Sprite ? draggingItem.GetSpriteColor() : draggingItem.GetInventoryIconColor(), scale: scale); } } if (selectedSlot != null) { Item item = selectedSlot.ParentInventory.Items[selectedSlot.SlotIndex]; if (item != null) { string toolTip = ""; if (GameMain.DebugDraw) { toolTip = item.ToString(); } else { string description = item.Description; if (item.Prefab.Identifier == "idcard") { string[] readTags = item.Tags.Split(','); string idName = null; string idJob = null; foreach (string tag in readTags) { string[] s = tag.Split(':'); if (s[0] == "name") { idName = s[1]; } if (s[0] == "job") { idJob = s[1]; } } if (idName != null) { if (idJob == null) { description = TextManager.Get("IDCardName").Replace("[name]", idName); } else { description = TextManager.Get("IDCardNameJob").Replace("[name]", idName).Replace("[job]", idJob); } if (!string.IsNullOrEmpty(item.Description)) { description = description + " " + item.Description; } } } toolTip = string.IsNullOrEmpty(description) ? item.Name : item.Name + '\n' + description; } Rectangle slotRect = selectedSlot.Slot.Rect; slotRect.Location += selectedSlot.Slot.DrawOffset.ToPoint(); DrawToolTip(spriteBatch, toolTip, slotRect); } } }
public static void DrawFront(SpriteBatch spriteBatch) { foreach (var slot in highlightedSubInventorySlots) { int slotIndex = Array.IndexOf(slot.ParentInventory.slots, slot.Slot); if (slotIndex > -1 && slotIndex < slot.ParentInventory.slots.Length) { slot.ParentInventory.DrawSubInventory(spriteBatch, slotIndex); } } if (draggingItem != null) { if (draggingSlot == null || (!draggingSlot.MouseOn())) { Sprite sprite = draggingItem.Prefab.InventoryIcon ?? draggingItem.Sprite; int iconSize = (int)(64 * GUI.Scale); float scale = Math.Min(Math.Min(iconSize / sprite.size.X, iconSize / sprite.size.Y), 1.5f); Vector2 itemPos = PlayerInput.MousePosition; if (GUI.MouseOn == null && selectedSlot == null) { var shadowSprite = GUI.Style.GetComponentStyle("OuterGlow").Sprites[GUIComponent.ComponentState.None][0]; string toolTip = Character.Controlled.FocusedItem != null? TextManager.Get("PutItemIn").Replace("[itemname]", Character.Controlled.FocusedItem.Name) : TextManager.Get("DropItem"); int textWidth = (int)Math.Max(GUI.Font.MeasureString(draggingItem.Name).X, GUI.SmallFont.MeasureString(toolTip).X); int textSpacing = (int)(15 * GUI.Scale); Point shadowBorders = (new Point(40, 10)).Multiply(GUI.Scale); shadowSprite.Draw(spriteBatch, new Rectangle(itemPos.ToPoint() - new Point(iconSize / 2) - shadowBorders, new Point(iconSize + textWidth + textSpacing, iconSize) + shadowBorders.Multiply(2)), Color.Black * 0.8f); GUI.DrawString(spriteBatch, new Vector2(itemPos.X + iconSize / 2 + textSpacing, itemPos.Y - iconSize / 2), draggingItem.Name, Color.White); GUI.DrawString(spriteBatch, new Vector2(itemPos.X + iconSize / 2 + textSpacing, itemPos.Y), toolTip, color: Character.Controlled.FocusedItem == null ? Color.Red : Color.LightGreen, font: GUI.SmallFont); } sprite.Draw(spriteBatch, itemPos + Vector2.One * 2, Color.Black, scale: scale); sprite.Draw(spriteBatch, itemPos, sprite == draggingItem.Sprite ? draggingItem.GetSpriteColor() : draggingItem.GetInventoryIconColor(), scale: scale); } } if (selectedSlot != null) { Item item = selectedSlot.ParentInventory.Items[selectedSlot.SlotIndex]; if (item != null) { string toolTip = ""; if (GameMain.DebugDraw) { toolTip = item.ToString(); } else { string description = item.Description; if (item.Prefab.Identifier == "idcard") { string[] readTags = item.Tags.Split(','); string idName = null; string idJob = null; foreach (string tag in readTags) { string[] s = tag.Split(':'); if (s[0] == "name") { idName = s[1]; } if (s[0] == "job") { idJob = s[1]; } } if (idName != null) { if (idJob == null) { description = TextManager.Get("IDCardName").Replace("[name]", idName); } else { description = TextManager.Get("IDCardNameJob").Replace("[name]", idName).Replace("[job]", idJob); } if (!string.IsNullOrEmpty(item.Description)) { description = description + " " + item.Description; } } } toolTip = string.IsNullOrEmpty(description) ? item.Name : item.Name + '\n' + description; } Rectangle slotRect = selectedSlot.Slot.Rect; slotRect.Location += selectedSlot.Slot.DrawOffset.ToPoint(); DrawToolTip(spriteBatch, toolTip, slotRect); } } }