Files
Radicade/Server/Rooms/RoomJoinGift.cs
T
2026-10-16 23:33:13 -07:00

60 lines
2.2 KiB
C#

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using RadicadeServer.RecNet.Enums.Players.Avatar;
using RadicadeServer.RecNet.Enums.Store;
using RadicadeServer.Radicade.Gifts.Enums;
namespace RadicadeServer.RecNet.Rooms
{
/// <summary>
/// One box a room hands a player when they join it. A room used to be able to describe
/// exactly one box in its own Rooms row; a row here is one more box, and the panel shows
/// them as a list. A room with no rows here still has its one box - see
/// <see cref="Utils.RoomJoinGiftUtils"/> - so a room configured before this table existed
/// keeps handing out what it always did.
/// </summary>
public class RoomJoinGift
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long RoomJoinGiftId { get; set; }
public long RoomId { get; set; }
/// <summary>Where the box sits in the room's list. Boxes are delivered in this order.</summary>
public int SortOrder { get; set; }
/// <summary>
/// Bumped whenever this box changes. The version is part of the box's gift drop id and
/// of a once-per-player claim, so a changed box is handed out again rather than being
/// suppressed by the claim a player already made on the old one.
/// </summary>
public int Version { get; set; } = 1;
public bool Enabled { get; set; } = true;
public bool OncePerPlayer { get; set; } = true;
public string Title { get; set; } = "Room Visit Gift";
public string Message { get; set; } = "Thanks for visiting!";
public string AvatarItem { get; set; } = "";
public AvatarItemType AvatarItemType { get; set; } = AvatarItemType.Outfit;
public string EquipmentItem { get; set; } = "";
public string EquipmentModificationGuid { get; set; } = "";
public string ConsumableItem { get; set; } = "";
public CurrencyType CurrencyType { get; set; } = CurrencyType.RecCenterTokens;
public int CurrencyAmount { get; set; } = 0;
public int Xp { get; set; } = 0;
public GiftContext Context { get; set; } = GiftContext.Game_Drop;
public Rarity Rarity { get; set; } = Rarity.Common;
/// <summary>The account the box is from, or zero for no sender.</summary>
public long FromPlayerId { get; set; } = 0;
}
}