CTT/Server/Model/Game/Entity/Bag/StarSoulBag.cs

98 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using Cal;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Bson.Serialization.Options;
namespace ET
{
public enum StarSoulItemSortType: byte
{
/// <summary>
/// 优先品质
/// </summary>
QualityFirst,
/// <summary>
/// 优先套装
/// </summary>
TypeFirst,
/// <summary>
/// 优先等级
/// </summary>
LevelFirst,
}
public class StarSoulItem
{
public long Id;
/// <summary>
/// 套装Id
/// </summary>
public int typeId;
public byte level;
public int exp;
/// <summary>
/// 装备栏
/// </summary>
public EquipType posType;
public Quality quality;
public bool isUsed;
public bool isLocked;
// [BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
public int mainId;
public int[] viceIds = new int[4];
[BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
public float[] viceAdd = new float[4];
public byte addViceCount;
public override string ToString()
{
return $"id={this.Id} type={this.typeId} {this.posType} {this.quality} level={this.level} isUsed={this.isUsed} islocked={this.isLocked}";
}
}
public class StarSoulSuit
{
[System.Flags]
public enum StarSoulSuitType:byte
{
None,
Suit4=1,
/// <summary>
/// 不要使用,不存在这种情况
/// </summary>
Suit8=1<<1,
Suit4And8 = Suit4|Suit8,
}
public int Id;
public StarSoulSuitType type;
}
[BsonIgnoreExtraElements]
public class StarSoulBag: Entity,ICombatBounds
{
public const ushort MaxCount = 1000;
public int ItemCount;
[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
public SortedDictionary<long, StarSoulItem> itemDic = new SortedDictionary<long, StarSoulItem>();
public long lastSortTime;
public const int sortTimeIntervel = 120 * 1000;
public List<StarSoulSuit> Suits = new List<StarSoulSuit>();
/// <summary>
/// 星魂数量,用于计算套装
/// </summary>
[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
public Dictionary<int, int> typeStarSoulCount = new Dictionary<int, int>();
[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
public Dictionary<byte, long> usedStarSoulDic = new Dictionary<byte, long>();
[BsonIgnore]
public Func<AttributeType, float> getAttributeFunc { get; set; }
}
}