using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Driver;
using NetCore.Protocol.MemoryPack;
namespace NetServer.MongoDB.DBData;
public class PlayerData
{
    [BsonId] public ObjectId id { get; set; }
    public long playerId { get; set; }
    public string account { get; set; }
    public string password { get; set; }
    public string token { get; set; }
    public string ip { get; set; }
    public string device { get; set; }
    /// 
    /// 玩家等级
    /// 
    public int playerLevel { get; set; }
    /// 
    /// 关卡进度
    /// 
    public int levelBattleId { get; set; }
    public List PlayerHero { get; set; }
    public List PlayerItemDatas { get; set; }
    public List PlayerEquipDatas { get; set; }
    [BsonIgnore] public UpdateDefinition Update;
    public UpdateDefinition CapyUpdate()
    {
        lock (Update)
        {
            UpdateDefinition updateValue = Update;
            Update = null;
            return updateValue;
        }
    }
    public void AddUpdateDefinition(UpdateDefinition updateDefinition)
    {
        if (Update != null)
        {
            Builders.Update.Combine(Update, updateDefinition);
        }
        else
        {
            Update = updateDefinition;
        }
    }
    public HeroData PlayerHeroToHeroData(PlayerHero playerHero)
    {
        HeroData heroData = new HeroData();
        heroData.heroId = playerHero.heroId;
        heroData.heroLevel = playerHero.heroLevel;
        heroData.heroExp = playerHero.heroExp;
        heroData.heroStar = playerHero.heroStar;
        heroData.equipID = playerHero.equipID;
        return heroData;
    }
}