using System.Collections.Generic; using System.Text.Json.Serialization; /// <summary> /// 房间预设数据 /// </summary> public class RoomPreinstallInfo { /// <summary> /// 预设名称 /// </summary> [JsonInclude] public string Name; /// <summary> /// 预设权重 /// </summary> [JsonInclude] public int Weight; /// <summary> /// 预设备注 /// </summary> [JsonInclude] public string Remark; /// <summary> /// 是否自动填充数据 /// </summary> [JsonInclude] public bool AutoFill; /// <summary> /// 波数数据 /// </summary> [JsonInclude] public List<List<MarkInfo>> WaveList; /// <summary> /// 初始化波数据 /// </summary> public void InitWaveList() { WaveList = new List<List<MarkInfo>> { new List<MarkInfo>() }; } /// <summary> /// 初始化特殊标记 /// </summary> public void InitSpecialMark(DungeonRoomType roomType) { var type = GetRoomSpecialMark(roomType); if (type != SpecialMarkType.Normal) { var preloading = WaveList[0]; var markInfo = new MarkInfo(); markInfo.Position = new SerializeVector2(); markInfo.Size = new SerializeVector2(); markInfo.SpecialMarkType = type; markInfo.MarkList = new List<MarkInfoItem>(); preloading.Add(markInfo); } } /// <summary> /// 检查是否创建了特殊标记, 如果没有, 则会自动创建并返回false /// </summary> public bool CheckSpecialMark(DungeonRoomType roomType) { var type = GetRoomSpecialMark(roomType); if (type == SpecialMarkType.Normal) { return true; } if (WaveList.Count> 0) { var markInfos = WaveList[0]; foreach (var markInfo in markInfos) { if (markInfo.SpecialMarkType == type) { return true; } } } InitSpecialMark(roomType); return false; } /// <summary> /// 获取指定类型房间中应该存在的特殊标记数据类型 /// </summary> public SpecialMarkType GetRoomSpecialMark(DungeonRoomType roomType) { if (roomType == DungeonRoomType.Inlet) //初始房间 { return SpecialMarkType.BirthPoint; } else if (roomType == DungeonRoomType.Outlet) //结束房间 { return SpecialMarkType.OutPoint; } else if (roomType == DungeonRoomType.Shop) //商店房间 { return SpecialMarkType.ShopBoss; } else if (roomType == DungeonRoomType.Reward) //奖励房间 { return SpecialMarkType.Treasure; } return SpecialMarkType.Normal; } }