Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        public uint GetSpecialMonLevel(uint id)
        {
            DBSpecialMonItem data = GetData(id);

            if (data != null)
            {
                return(ActorHelper.GetActorLevel(data.ActorId));
            }

            return(0);
        }