コード例 #1
0
ファイル: DBBulletTrace.cs プロジェクト: wuhuolong/MaxBooks
    protected override void ParseData(SqliteDataReader reader)
    {
        if (reader == null || !reader.HasRows)
        {
            return;
        }

        BulletInfo kInfo;

        while (reader.Read())
        {
            kInfo            = new BulletInfo();
            kInfo.ID         = DBTextResource.ParseUI(GetReaderString(reader, "type_idx"));
            kInfo.BulletType = (BulletTypes)DBTextResource.ParseUI_s(GetReaderString(reader, "bullet_type"), 0);
            kInfo.FlySpeed   = (float)DBTextResource.ParseI(GetReaderString(reader, "speed")) * 0.01f;
            kInfo.FlyMaxTime = (float)DBTextResource.ParseI(GetReaderString(reader, "max_time")) * 0.001f;
            kInfo.OffsetX    = DBTextResource.ParseI(GetReaderString(reader, "offset_x")) * 0.01f;
            kInfo.OffsetY    = DBTextResource.ParseI(GetReaderString(reader, "offset_y")) * 0.01f;

            string effect_file = GetReaderString(reader, "effect_file");
            if (!string.IsNullOrEmpty(effect_file))
            {
                kInfo.AttackEffect = effect_file + ".prefab";
            }
            string sound_file = GetReaderString(reader, "sound_file").Trim();
            if (!string.IsNullOrEmpty(sound_file))
            {
                kInfo.AttackSound = sound_file + ".mp3";
            }

            /*string under_attack_effect = GetReaderString(reader,"under_attack_effect");
             * if (under_attack_effect != string.Empty)
             *  under_attack_effect = under_attack_effect + ".prefab";
             * string under_attack_sound = GetReaderString(reader,"under_attack_sound");
             * if (under_attack_sound != string.Empty)
             *  under_attack_sound = string.Format("{{0}.mp3", under_attack_sound);
             *
             * if (!string.IsNullOrEmpty(under_attack_effect) || !string.IsNullOrEmpty(under_attack_sound))
             * {
             *  kInfo.BeattackEffectData = new AnimationEffect.ResInitData();
             *  kInfo.BeattackEffectData.Prefab = under_attack_effect;
             *  kInfo.BeattackEffectData.Audio = under_attack_sound;
             *  kInfo.BeattackEffectData.EndTime = (float)DBTextResource.ParseF_s(GetReaderString(reader,"under_attack_lifetime"), 0) * 0.001f;
             *  kInfo.BeattackEffectData.InWorld = true;
             * }*/

            mBulletInfos.Add(kInfo.ID, kInfo);
        }
    }
コード例 #2
0
    protected override void ParseData(SqliteDataReader reader)
    {
        if (reader == null || !reader.HasRows)
        {
            return;
        }

        DamageEffectInfo effectInfo;

        while (reader.Read())
        {
            effectInfo                = new DamageEffectInfo();
            effectInfo.ID             = DBTextResource.ParseUI(GetReaderString(reader, "type_idx"));
            effectInfo.Target         = (EffectTarget)DBTextResource.ParseUI(GetReaderString(reader, "target"));
            effectInfo.IsCombineValue = DBTextResource.ParseUI_s(GetReaderString(reader, "combine_value"), 0) == 1;

            mDamageEffectInfos.Add(effectInfo.ID, effectInfo);
        }
    }
コード例 #3
0
ファイル: DecorateHelper.cs プロジェクト: wuhuolong/MaxBooks
        /// <summary>
        /// 饰品当前激活套装的属性
        /// </summary>
        /// <returns></returns>
        public static List <List <uint> > GetDecorateSuitAttrList()
        {
            var ret = new List <List <uint> >();

            if (LuaScriptMgr.Instance != null)
            {
                object[]      param       = { };
                System.Type[] return_type = { typeof(List <string>) };
                object[]      objs        = LuaScriptMgr.Instance.CallLuaFunction_return(LuaScriptMgr.Instance.Lua.Global, "DecorateWearManager_GetAttrList", param, return_type);
                if (objs != null && objs.Length > 0)
                {
                    if (objs[0] != null)
                    {
                        List <string> attrList = (List <string>)objs[0];

                        foreach (var strAttr in attrList)
                        {
                            string[] arrSplite = strAttr.Split('_');
                            if (arrSplite.Length >= 2)
                            {
                                uint attrId = DBTextResource.ParseUI(arrSplite[0]);
                                uint value  = DBTextResource.ParseUI(arrSplite[1]);
                                if (attrId > 0 && value > 0)
                                {
                                    var data = new List <uint>();
                                    data.Add(attrId);
                                    data.Add(value);

                                    ret.Add(data);
                                }
                            }
                        }
                    }
                }
            }

            return(ret);
        }
コード例 #4
0
        /// <summary>
        ///  获取法宝装备强化属性
        /// </summary>
        public static ActorAttribute GetStrengthAttr(uint strengthLv, GoodsMagicEquip equip)
        {
            ActorAttribute ret = new ActorAttribute();

            uint lv = strengthLv;

            if (lv > equip.MaxStrengthLv)
            {
                lv = equip.MaxStrengthLv;
            }

            string        key = string.Format("{0}_{1}", (uint)equip.PosId, lv);
            List <string> rec = DBManager.Instance.QuerySqliteField <string>(GlobalConfig.DBFile, "data_magic_goods_str", "csv_id", key, "str_attrs");

            if (rec.Count == 0)
            {
                return(ret);
            }

            string raw = rec[0];

            raw = raw.Replace(" ", "");
            var matchs = Regex.Matches(raw, @"\{(\d+),(\d+)\}");

            foreach (Match _match in matchs)
            {
                if (_match.Success)
                {
                    uint attrId    = (DBTextResource.ParseUI(_match.Groups[1].Value));
                    uint attrValue = DBTextResource.ParseUI(_match.Groups[2].Value);
                    ret.Add(attrId, attrValue);
                }
            }

            return(ret);
        }
コード例 #5
0
        /// <summary>
        /// 设置怪物挂架的tips
        /// </summary>
        /// <param name="info"></param>
        public void SetMonsterTipsInfo(MiniMapPointInfo info)
        {
            mCurrentMonsterInfo = info;
            string key = string.Format("{0}_{1}", info.Tag, m_CurSceneId);

            // F副本.xlsx -- 刷怪点信息
            var data_actor_tag = DBManager.Instance.QuerySqliteRow <string>(GlobalConfig.DBFile, "data_actor_tag", "csv_id", key);


            //服务端不建议改表格式
            //List<Dictionary<string, string>> data_actor_tag = null;
            //string key = string.Empty;
            //SDKConfig sdk_config = SDKHelper.GetSDKConfig();
            //if (sdk_config != null && SDKHelper.IsCopyBag() && AuditManager.Instance.Open)
            //{
            //    key = string.Format("{0}_{1}{2}", info.Tag, m_CurSceneId, sdk_config.SDKNamePrefix);
            //    data_actor_tag = DBManager.Instance.QuerySqliteRow<string>(GlobalConfig.DBFile, "data_actor_tag", "csv_id", key);
            //}

            ////当对应的马甲包没配置对应的数据时,就直接用正式数据
            //if (data_actor_tag == null || data_actor_tag.Count == 0)
            //{
            //    key = string.Format("{0}_{1}", info.Tag, m_CurSceneId);// 唯一id由{tag_id}_{map_id}组成
            //    data_actor_tag = DBManager.Instance.QuerySqliteRow<string>(GlobalConfig.DBFile, "data_actor_tag", "csv_id", key);
            //}



            string titlestr   = string.Empty;
            string contentstr = string.Empty;

            if (info.PointType != MiniMapPointType.Boss) // 普通怪物
            {
                if (data_actor_tag.Count > 0)
                {
                    var  table = data_actor_tag[0];
                    uint level = DBTextResource.ParseUI(table["min_level"]);

                    string levelDesc = string.Empty;
                    uint   peakLevel = 0;
                    bool   isPeak    = TransferHelper.IsPeak(level, out peakLevel);
                    if (isPeak)
                    {
                        var fmt = DBConstText.GetText("UI_PLAYER_PEAK_LEVEL_FORMAT"); // 巅峰{0}级
                        levelDesc = string.Format(fmt, peakLevel);
                    }
                    else
                    {
                        var fmt = DBConstText.GetText("UI_PLAYER_LEVEL_FORMAT"); // {0}级
                        levelDesc = string.Format(fmt, peakLevel);
                    }

                    uint   def  = DBTextResource.ParseUI(table["min_def"]);
                    string _def = string.Empty;
                    if (LocalPlayerManager.Instance.Level < level)
                    {
                        levelDesc = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_108"), GameConst.COLOR_DARK_RED, levelDesc);
                    }
                    else
                    {
                        levelDesc = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_108"), GameConst.COLOR_DARK_GREEN, levelDesc);
                    }

                    var Def = LocalPlayerManager.Instance.LocalActorAttribute.Attribute[GameConst.AR_DEF].Value;
                    if (Def < def)
                    {
                        _def = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_109"), GameConst.COLOR_DARK_RED, def);
                    }
                    else
                    {
                        _def = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_109"), GameConst.COLOR_DARK_GREEN, def);
                    }

                    titlestr = levelDesc + _def;

                    StringBuilder award_desc = new StringBuilder(150);
                    award_desc.AppendFormat(xc.TextHelper.GetTranslateText(table["tips1_format"]), table["tips1"]);
                    award_desc.Append('\n');
                    award_desc.AppendFormat(xc.TextHelper.GetTranslateText(table["tips2_format"]), table["tips2"]);
                    award_desc.Append('\n');
                    award_desc.AppendFormat(xc.TextHelper.GetTranslateText(table["tips3_format"]), table["tips3"]);

                    contentstr = award_desc.ToString();
                }
                else
                {
                    titlestr   = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_110"));
                    contentstr = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_111"));;
                }
            }
            else
            {
                if (GlobalConst.IsBanshuVersion)
                {
                    titlestr = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_112"), GameConst.COLOR_DARK_RED, info.BlackName, info.Level);
                }
                else
                {
                    titlestr = string.Format("{0}{1} Lv{2}</color>", GameConst.COLOR_DARK_RED, info.BlackName, info.Level);
                }

                uint actorId = (uint)info.ActorId;

                bool isSouthLandBoss   = ActorHelper.IsSouthLandBoss(actorId);   // 南天圣地boss
                bool isElementAreaBoss = ActorHelper.IsElementAreaBoss(actorId); // 元素禁地boss
                if (isSouthLandBoss || isElementAreaBoss)
                {
                    // 浊气值
                    uint evilValue = 0;

                    if (isSouthLandBoss)
                    {
                        var evilItem = DBManager.Instance.GetDB <DBEvilValue>().GetData(actorId);
                        if (null != evilItem)
                        {
                            evilValue = evilItem.Value;
                        }
                    }
                    else
                    {
                        var evilItem = DBManager.Instance.GetDB <DBElementAreaEvilValue>().GetData(actorId);
                        if (null != evilItem)
                        {
                            evilValue = evilItem.Value;
                        }
                    }

                    string strEvilValue = DBConstText.GetText("SOUTH_LAND_EVIL_VALUE"); // 浊气值:
                    titlestr = string.Format("{0}\n{1}{2}{3}</color>", titlestr, strEvilValue, GameConst.COLOR_DARK_YELLOW, evilValue);
                }

                if (data_actor_tag.Count > 0)
                {
                    var           table      = data_actor_tag[0];
                    StringBuilder award_desc = new StringBuilder(150);
                    award_desc.AppendFormat(xc.TextHelper.GetTranslateText(table["tips1_format"]), table["tips1"]);
                    award_desc.Append('\n');
                    award_desc.AppendFormat(xc.TextHelper.GetTranslateText(table["tips2_format"]), table["tips2"]);
                    award_desc.Append('\n');
                    award_desc.AppendFormat(xc.TextHelper.GetTranslateText(table["tips3_format"]), table["tips3"]);

                    contentstr = award_desc.ToString();
                }
            }

            Text title   = UIHelper.FindChild(m_MonsterInfo, "TitleText").GetComponent <Text>();
            Text content = UIHelper.FindChild(m_MonsterInfo, "Content").GetComponent <Text>();

            title.text   = titlestr;
            content.text = contentstr;
            GameObject monster_point;

            if (mMonsterListPointObjs.TryGetValue(mCurrentMonsterInfo.Id, out monster_point))
            {
                m_MonsterInfo.transform.localPosition = GetTipsPos(monster_point);
                float y = mMapScroll.viewport.rect.height / 2 - monster_point.transform.localPosition.y;
                float x = mMapScroll.viewport.rect.width / 2 - monster_point.transform.localPosition.x;
                mMiniMapRawImage.rectTransform.anchoredPosition = new Vector2(x, y);
            }
        }
コード例 #6
0
ファイル: DBSkillEffect.cs プロジェクト: wuhuolong/MaxBooks
    public SkillEffectInfo GetSkillEffectInfo(uint id)
    {
        SkillEffectInfo info;

        if (mSkillEffectMap.TryGetValue(id, out info))
        {
            return(info);
        }

        string query_str    = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", mTableName, "id", id.ToString());
        var    table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query_str);

        if (table_reader == null)
        {
            mSkillEffectMap[id] = null;
            return(null);
        }

        if (!table_reader.HasRows)
        {
            mSkillEffectMap[id] = null;
            table_reader.Close();
            table_reader.Dispose();
            return(null);
        }

        if (!table_reader.Read())
        {
            mSkillEffectMap[id] = null;
            table_reader.Close();
            table_reader.Dispose();
            return(null);
        }

        info      = new SkillEffectInfo();
        info.id   = DBTextResource.ParseUI(GetReaderString(table_reader, "id"));
        info.type = GetReaderString(table_reader, "type");
        info.attr = GetReaderString(table_reader, "attr");
        float.TryParse(GetReaderString(table_reader, "p1"), out info.p1);
        string p2_str    = GetReaderString(table_reader, "p2");
        float  p         = 0;
        bool   can_parse = float.TryParse(p2_str, out p);

        if (can_parse == false)
        {
            //尝试用潜力格式读取
            List <uint> p2_array = DBTextResource.ParseArrayUint(p2_str, ",");
            if (p2_array != null && p2_array.Count >= 2)
            {
                info.p2_potentialParam = new SkillEffectInfo.SkillEffectInfoPotentialParam();
                info.p2_potentialParam.trigram_rune_id = p2_array[0];
                info.p2_potentialParam.value           = p2_array[1];
            }
        }
        else
        {
            info.p2 = p;
        }

        mSkillEffectMap[info.id] = info;

        table_reader.Close();
        table_reader.Dispose();

        return(info);
    }
コード例 #7
0
ファイル: DBBuffSev.cs プロジェクト: wuhuolong/MaxBooks
    public DBBuffInfo GetBuffInfo(uint uiID)
    {
        DBBuffInfo info = null;

        if (mBuffInfos.TryGetValue(uiID, out info))
        {
            return(info);
        }

        string query_str = string.Format("SELECT * FROM {0} WHERE {1}=\"{2}\"", mTableName, "id", uiID);
        var    reader    = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query_str);

        if (reader == null)
        {
            mBuffInfos[uiID] = null;
            return(null);
        }

        if (!reader.HasRows || !reader.Read())
        {
            mBuffInfos[uiID] = null;
            reader.Close();
            reader.Dispose();
            return(null);
        }

        var buff_info = new Buff.BuffInfo();

        buff_info.buff_id     = DBTextResource.ParseUI(GetReaderString(reader, "id"));
        buff_info.is_show_tip = DBTextResource.ParseUI(GetReaderString(reader, "is_show_tip")) == 1;
        buff_info.max_add_num = DBTextResource.ParseUS(GetReaderString(reader, "max_layer"));
        buff_info.add_eff     = DBTextResource.ParseArrayUint(GetReaderString(reader, "add_eff"), ",");
        buff_info.delay_time  = DBTextResource.ParseUI_s(GetReaderString(reader, "delay_time"), 0) * 0.001f;
        buff_info.shape_shift = DBTextResource.ParseUI_s(GetReaderString(reader, "transform"), 0);
        buff_info.shift_state = DBTextResource.ParseBT_s(GetReaderString(reader, "shift_state"), 0);
        buff_info.life_time   = 3.0f;//buff的时间由服务端发送下来

        buff_info.name           = GetReaderString(reader, "name");
        buff_info.icon           = GetReaderString(reader, "icon");
        buff_info.effect_file    = GetReaderString(reader, "effect_file");
        buff_info.priority       = DBTextResource.ParseUS_s(GetReaderString(reader, "priority"), 0);
        buff_info.force_show     = DBTextResource.ParseUS_s(GetReaderString(reader, "force_show"), 0) == 1;
        buff_info.other_hide     = DBTextResource.ParseUS_s(GetReaderString(reader, "other_hide"), 0) == 1;
        buff_info.bind_pos       = (BindPos)DBTextResource.ParseUI(GetReaderString(reader, "bind_pos"));
        buff_info.follow_target  = DBTextResource.ParseUI_s(GetReaderString(reader, "follow_target"), 1) == 1;
        buff_info.scale          = DBTextResource.ParseF_s(GetReaderString(reader, "scale"), 1.0f);
        buff_info.auto_scale     = DBTextResource.ParseUS_s(GetReaderString(reader, "auto_scale"), 0) == 1;
        buff_info.des            = GetReaderString(reader, "des");
        buff_info.hide_countDown = DBTextResource.ParseUS_s(GetReaderString(reader, "hide_countDown"), 0) == 1;
        var max_count = GetReaderString(reader, "max_count");

        if (string.IsNullOrEmpty(max_count))
        {
            buff_info.max_count = 5;
        }
        else
        {
            buff_info.max_count = DBTextResource.ParseI_s(max_count, 5);
        }
        string           status      = GetReaderString(reader, "status");// buff的特殊状态
        BattleStatusType status_type = Buff.GetBattleState(status);

        if (status_type != BattleStatusType.BATTLE_STATUS_TYPE_INVALID)
        {
            buff_info.battle_effect_type = status_type;
            Bind(buff_info, BuffEffect.BattleStateChangeBegin, BuffEffect.BattleStateChangeEnd, null);
        }

        if (buff_info.shape_shift != 0)
        {
            Bind(buff_info, BuffEffect.ShapeShiftBegin, BuffEffect.ShapeShiftEnd, null);
        }

        // 设置周期更新时间
        buff_info.period_time = Mathf.Infinity;

        buff_info.buff_flags |= (ushort)Buff.BuffFlags.AF_RECOVERY_AFTER_DIE;

        mBuffInfos.Add(buff_info.buff_id, buff_info);

        reader.Close();
        reader.Dispose();

        return(buff_info);
    }
コード例 #8
0
ファイル: SDKControler.cs プロジェクト: wuhuolong/MaxBooks
    private void OnCSLoginFinished(string url, string error, string reply, System.Object userData)
    {
        //GameDebug.LogError("OnCSLoginFinished url: " + url);
        if (String.IsNullOrEmpty(error) == false)
        {
            GameDebug.LogError("OnCSLoginFinished error: " + error);
            if (String.IsNullOrEmpty(error))
            {
                error = xc.TextHelper.SDKLogingFail + "(" + error + ")";
            }
            endLogin((int)SDK_STATU_CODE.LOGIN_FAIL, error);
            return;
        }
        GameDebug.Log("CS Login succeed, msg = " + reply);
        Hashtable hashtable = MiniJSON.JsonDecode(reply) as Hashtable;

        if (hashtable != null)
        {
            int       errorCode = 0;
            Hashtable retArgs   = hashtable["args"] as Hashtable;
            if (hashtable["result"] != null)
            {
                errorCode = DBTextResource.ParseI(hashtable["result"].ToString());
            }
            if (errorCode != 1)
            {
                string msg = "CS login error";
                if (retArgs["error_msg"] != null)
                {
                    msg = retArgs["error_msg"] as string;
                }
                endLogin((int)SDK_STATU_CODE.LOGIN_FAIL, msg);
                return;
            }
            string passport = "";
            if (retArgs["passport"] != null)
            {
                passport = "" + DBTextResource.ParseI(retArgs["passport"].ToString());//(hashtable["passport"] as int) + "";
                //数据发送给 talking data
                //DBOSManager.getOSBridge().onTDLogin(passport);
            }
            string providerPassport = "";
            if (retArgs["provider_passport"] != null)
            {
                providerPassport = retArgs["provider_passport"] as string;
            }
            string ticket = "";
            if (retArgs["ticket"] != null)
            {
                ticket = retArgs["ticket"] as string;
            }
            string errorMsg = "";
            if (retArgs["error_msg"] != null)
            {
                errorMsg = retArgs["error_msg"] as string;
            }


            GlobalConfig globalConfig = GlobalConfig.GetInstance();

            if (retArgs["status"] != null)  // 是否需要输入激活码
            {
                globalConfig.LoginInfo.Status = retArgs["status"].ToString();
            }
            if (retArgs["roll_server"] != null)  // 滚服次数
            {
                globalConfig.LoginInfo.RollServer = DBTextResource.ParseUI(retArgs["roll_server"].ToString());
            }
            if (errorCode == 1 && passport != null && ticket != null)
            {
                GameDebug.Log("Get status success, sdkname:" + globalConfig.SDKName + ", passport:" + passport + ", ticket:" + ticket + ", errorMsg:" + errorMsg
                              + ", errorCode:" + errorCode);

                globalConfig.LoginInfo.AccName          = passport;
                globalConfig.LoginInfo.ProviderPassport = providerPassport;
                globalConfig.LoginInfo.Ticket           = ticket;
                //添加初始化话绑定手机逻辑

                int bindMobileState  = -1;
                int bindMobileSwitch = 0;
                if (retArgs["bindMobileSwitch"] != null)
                {
                    bindMobileSwitch = DBTextResource.ParseI(retArgs["bindMobileSwitch"].ToString());
                    if (bindMobileSwitch == 1)
                    {
                        bindMobileState = 0;
                        int isBindMobile = 0;
                        if (retArgs["isBindMobile"] != null)
                        {
                            isBindMobile = DBTextResource.ParseI(retArgs["isBindMobile"].ToString());
                            if (isBindMobile == 1)
                            {
                                bindMobileState = 1;
                            }
                        }
                    }
                }

                GlobalConfig.Instance.BindMobileState = bindMobileState;
                OnSDKLoginSucceed(passport, ticket);

                // 首次登录_37wan渠道
                var first37WanUjoy = PlayerPrefs.GetInt(BuriedPointConst.first37WanUjoy, 0);
                if (first37WanUjoy == 0)
                {
                    PlayerPrefs.SetInt(BuriedPointConst.first37WanUjoy, 1);
                    PlayerPrefs.Save();
                    BuriedPointHelper.ReportEsaAppsflyerEvnet("custom_loss", "finishlogin_new_37wan_ujoy_firsttime", 1);
                }
            }
            else
            {
                endLogin((int)SDK_STATU_CODE.LOGIN_FAIL, errorMsg);
            }
        }
        else
        {
            endLogin((int)SDK_STATU_CODE.LOGIN_FAIL, reply);
        }
    }
コード例 #9
0
ファイル: DBBattleFx.cs プロジェクト: wuhuolong/MaxBooks
    public BattleFxInfo GetBattleFxInfo(uint uiKey)
    {
        BattleFxInfo info;

        if (mBattleFxInfos.TryGetValue(uiKey, out info))
        {
            return(info);
        }

        string query_str = string.Format("SELECT * FROM {0} WHERE {1}=\"{2}\"", mTableName, "id", uiKey);
        var    reader    = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query_str);

        if (reader == null)
        {
            mBattleFxInfos[uiKey] = null;
            return(null);
        }

        if (!reader.HasRows || !reader.Read())
        {
            mBattleFxInfos[uiKey] = null;
            reader.Close();
            reader.Dispose();
            return(null);
        }

        info = new BattleFxInfo();

        uint id = DBTextResource.ParseUI(GetReaderString(reader, "id"));

        info.HitDelayTime = DBTextResource.ParseUS(GetReaderString(reader, "hit_time")) * GlobalConst.MilliToSecond;
        info.IsFlying     = DBTextResource.ParseUS(GetReaderString(reader, "is_flying")) == 1;
        info.FlyingAngle  = DBTextResource.ParseF(GetReaderString(reader, "flying_angle"));
        info.FlyingXSpeed = DBTextResource.ParseF(GetReaderString(reader, "flying_xspeed"));
        info.FlyingXFric  = DBTextResource.ParseF(GetReaderString(reader, "flying_xfric"));

        string under_attack_effect = GetReaderString(reader, "under_attack_effect");
        string under_attack_sound  = GetReaderString(reader, "under_attack_sound");

        if (under_attack_sound != string.Empty)
        {
            under_attack_sound = string.Format("{{0}.mp3", under_attack_sound);
        }

        if (!string.IsNullOrEmpty(under_attack_effect) || !string.IsNullOrEmpty(under_attack_sound))
        {
            info.BeattackEffectData              = new AnimationEffect.ResInitData();
            info.BeattackEffectData.BindNode     = GetReaderString(reader, "bind_node"); //"Bip001Pelvis";
            info.BeattackEffectData.Effect       = under_attack_effect;
            info.BeattackEffectData.Audio        = under_attack_sound;
            info.BeattackEffectData.EndTime      = (float)DBTextResource.ParseF_s(GetReaderString(reader, "under_attack_effect_lifetime"), 0) * 0.001f;
            info.BeattackEffectData.FollowTarget = DBTextResource.ParseUS_s(GetReaderString(reader, "follow_target"), 1) == 1;
            info.BeattackEffectData.AutoScale    = DBTextResource.ParseUS_s(GetReaderString(reader, "auto_scale"), 0) == 1;
        }

        mBattleFxInfos.Add(id, info);

        reader.Close();
        reader.Dispose();

        return(info);
    }
コード例 #10
0
ファイル: MiniMapHelp.cs プロジェクト: wuhuolong/MaxBooks
    /// <summary>
    /// 获取指定副本中标记的普通刷怪点和特殊怪物点
    /// </summary>
    /// <returns></returns>
    public static List <MiniMapPointInfo> GetInstanceAllNormalMonster(uint instance_id)
    {
        List <MiniMapPointInfo> map_point_infos = new List <MiniMapPointInfo>();
        var nep_data = xc.Dungeon.LevelManager.Instance.LoadLevelFileTemporary(SceneHelp.GetFirstStageId(instance_id));

        if (nep_data == null)
        {
            GameDebug.LogError("get nep_data failed,instance id: " + instance_id);
            return(map_point_infos);
        }

        Dictionary <int, Neptune.BaseGenericNode> all_node_data = nep_data.GetData <Neptune.Tag>().Data;  // 获取关卡中所有标记为Tag的物体数据
        var special_monster_info = DBManager.Instance.GetDB <DBSpecialMon>().GetDungeonData(instance_id); // 获取当前副本中特殊怪物的数据(世界boss,盗宝怪)

        foreach (var item in all_node_data)
        {
            Neptune.Tag tag = item.Value as Neptune.Tag;
            if (tag == null || tag.Type == null)
            {
                continue;
            }

            if (tag.Type.CompareTo("map_mon_pos") == 0)// Tag 为怪物标识点
            {
                MiniMapPointInfo info = new MiniMapPointInfo();
                info.Id       = tag.Id;
                info.Tag      = tag.Id;
                info.Position = tag.Position;
                info.MapId    = instance_id;
                string key            = string.Format("{0}_{1}", tag.Id, instance_id);// 唯一id由{tag_id}_{map_id}组成
                var    data_actor_tag = DBManager.Instance.QuerySqliteRow <string>(GlobalConfig.DBFile, "data_actor_tag", "csv_id", key);


                //服务端不建议改表格式
                //List<Dictionary<string, string>> data_actor_tag = null;
                //string key = string.Empty;
                //SDKConfig sdk_config = SDKHelper.GetSDKConfig();
                //if (sdk_config != null && SDKHelper.IsCopyBag() && AuditManager.Instance.Open)
                //{
                //    key = string.Format("{0}_{1}{2}", tag.Id, instance_id, sdk_config.SDKNamePrefix);
                //    data_actor_tag = DBManager.Instance.QuerySqliteRow<string>(GlobalConfig.DBFile, "data_actor_tag", "csv_id", key);
                //}


                ////当对应的马甲包没配置对应的数据时,就直接用正式数据
                //if (data_actor_tag == null || data_actor_tag.Count == 0)
                //{
                //    key = string.Format("{0}_{1}", tag.Id, instance_id);// 唯一id由{tag_id}_{map_id}组成
                //    data_actor_tag = DBManager.Instance.QuerySqliteRow<string>(GlobalConfig.DBFile, "data_actor_tag", "csv_id", key);
                //}



                if (data_actor_tag.Count > 0)
                {
                    var table = data_actor_tag[0];
                    info.ActorId      = DBTextResource.ParseUI(table["actor_id"]);
                    info.ListNeedShow = DBTextResource.ParseUI(table["need_show"]) == 1 ? true : false;

                    if (ActorHelper.IsEliteMonster(info.ActorId))// 判断怪物是否是精英怪
                    {
                        info.PointType = MiniMapPointType.EliteMonster;
                    }
                    else
                    {
                        info.PointType = MiniMapPointType.Monster;
                    }

                    info.Name      = ActorHelper.GetColorNameDiff(info.ActorId, 0);
                    info.BlackName = ActorHelper.GetColorNameDiff(info.ActorId, 1);
                    info.Level     = ActorHelper.GetActorLevel(info.ActorId);
                    map_point_infos.Add(info);
                }
            }
            else if (tag.Type.CompareTo("boss_pos") == 0 && special_monster_info != null)
            {
                //boss读表
                string tagGroup = "boss_pos_" + tag.Id;
                DBSpecialMon.DBSpecialMonItem boss = special_monster_info.Find(delegate(DBSpecialMon.DBSpecialMonItem specialMon)
                {
                    return(specialMon.TagGroup.CompareTo(tagGroup) == 0);
                });

                if (boss != null)
                {
                    MiniMapPointInfo info = new MiniMapPointInfo();
                    info.Id        = (int)boss.Id;
                    info.Tag       = tag.Id;
                    info.Position  = tag.Position;
                    info.MapId     = instance_id;
                    info.ActorId   = boss.ActorId;
                    info.Name      = ActorHelper.GetColorNameDiff(info.ActorId, 0);
                    info.BlackName = ActorHelper.GetColorNameDiff(info.ActorId, 1);
                    info.Level     = ActorHelper.GetActorLevel(info.ActorId);
                    info.PointType = MiniMapPointType.Boss;

                    map_point_infos.Add(info);
                }
            }
        }
        return(map_point_infos);
    }