protected override void ParseData(SqliteDataReader reader) { if (reader == null || !reader.HasRows) { return; } while (reader.Read()) { DBSpecialMonItem ad = new DBSpecialMonItem(); ad.Id = DBTextResource.ParseUI(GetReaderString(reader, "id")); ad.DungeonId = DBTextResource.ParseUI(GetReaderString(reader, "dungeon")); ad.ActorId = DBTextResource.ParseUI(GetReaderString(reader, "actor")); ad.SpecialType = GetReaderString(reader, "type"); string pos = GetReaderString(reader, "pos"); pos = pos.Replace(" ", ""); pos = pos.Substring(1, pos.Length - 2); string[] _tmp_split = pos.Split(','); if (_tmp_split.Length >= 2) { ad.Tag = _tmp_split[0]; ad.TagGroup = _tmp_split[1]; } ad.SysId = DBTextResource.ParseUI(GetReaderString(reader, "sys_id")); m_AllData.Add(ad.Id, ad); if (m_DungeonData.ContainsKey(ad.DungeonId) == false) { m_DungeonData.Add(ad.DungeonId, new List <DBSpecialMonItem>()); } m_DungeonData[ad.DungeonId].Add(ad); } }
/// <summary> /// 通过id来获取特殊怪物的信息 /// </summary> /// <param name="id"></param> /// <returns></returns> public DBSpecialMonItem GetData(uint id) { DBSpecialMonItem ad = null; m_AllData.TryGetValue(id, out ad); return(ad); }
public DBSpecialMonItem GetNearestSpecialMonItem(uint dungeon_id, string special_type, float range) { List <DBSpecialMonItem> ad = null; m_DungeonData.TryGetValue(dungeon_id, out ad); DBSpecialMonItem nearestMonItem = null; if (ad != null) { Actor localPlayer = Game.Instance.GetLocalPlayer(); float sqrRange = range * range; if (localPlayer != null) { Vector3 localPlayerPos = localPlayer.Trans.position; float minDistance = float.MaxValue; foreach (DBSpecialMonItem item in ad) { if (item != null && item.SpecialType == special_type) { Vector3 pos = xc.Dungeon.LevelObjectHelper.GetTagPosition(item.TagGroup); float distance = (localPlayerPos - pos).sqrMagnitude; if (distance < sqrRange && distance < minDistance) { minDistance = distance; nearestMonItem = item; } } } } } return(nearestMonItem); }
public uint GetSpecialMonLevel(uint id) { DBSpecialMonItem data = GetData(id); if (data != null) { return(ActorHelper.GetActorLevel(data.ActorId)); } return(0); }