예제 #1
0
        /// <summary>
        /// 删除物品。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnItemDel(MsgData data)
        {
            MsgData_sItemDel info = data as MsgData_sItemDel;
            BagInfo          bag  = GetBagInfo(info.Bag);

            if (bag != null)
            {
                ItemInfo iteminfo = bag.GetItemInfo(info.Pos);
                if (mCacheAddUID == iteminfo.UID)
                {
                    //抵消前一个Add
                    mCacheAddUID = 0;
                }
                else
                {
                    mItems.Remove(iteminfo.UID);
                }
                bag.DeleteItem(info.Pos);
                TriggerEventItemDel(1, info.Bag, info.Pos, iteminfo.UID);
            }
            else
            {
                LogMgr.ErrorLog("未知背包编号 id:{0}", info.Bag);
            }
        }
예제 #2
0
        private void OnPlayerExp(GameEvent ge, EventParameter parameter)
        {
            int  preLv  = parameter.intParameter;
            long preExp = parameter.longParameter;
            int  curLv  = PlayerData.Instance.BaseAttr.Level;
            long curExp = PlayerData.Instance.BaseAttr.Exp;

            long expGain = curExp - preExp;

            for (int i = preLv; i < curLv; i++)
            {
                LuaTable lvCfg = ConfigManager.Instance.Actor.GetLevelUpConfig(i);
                if (lvCfg == null)
                {
                    LogMgr.ErrorLog("invalid level ,no config found ,level = {0}", i);
                    continue;
                }
                expGain += lvCfg.Get <int>("exp");
            }

            if (expGain > 0)
            {
                mProcessText.Enqueue(string.Format("经验 +{0}", NumberConvert(expGain)));
            }
        }
예제 #3
0
        /// <summary>
        /// 初始化背包信息。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnBagInfo(MsgData data)
        {
            MsgData_sQueryItemResult info = data as MsgData_sQueryItemResult;
            BagInfo bag = GetBagInfo(info.Bag);

            if (bag != null)
            {
                //从mItems删除原来背包的东西
                foreach (var kvp in bag.ItemInfos)
                {
                    mItems.Remove(kvp.Value.UID);
                }
                bag.Init(info);
                //重新添加
                foreach (var kvp in bag.ItemInfos)
                {
                    mItems.Add(kvp.Value.UID, kvp.Value);
                }
                TriggerEventBagInfo(bag.BagType);
            }
            else
            {
                LogMgr.ErrorLog("未知背包编号 id:{0}", info.Bag);
            }
        }
예제 #4
0
        /// <summary>
        /// 更新物品。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnItemUpdate(MsgData data)
        {
            MsgData_sItemUpdate info = data as MsgData_sItemUpdate;
            BagInfo             bag  = GetBagInfo(info.Bag);

            if (bag != null)
            {
                ItemInfo iteminfo = bag.GetItemInfo(info.Pos);
                if (iteminfo == null)
                {
                    return;
                }
                bool newuid = iteminfo.UID != info.UID;
                if (newuid)
                {
                    mItems.Remove(iteminfo.UID);
                }
                bag.UpdateItem(info);
                if (newuid)
                {
                    mItems.Add(info.UID, bag.GetItemInfo(info.Pos));
                }
                TriggerEventItemUpdate(info.Bag, info.Pos);

                if (info.Bag == BagType.ITEM_BAG_TYPE_EQUIP)
                {
                    ShowEquipChange(info.ID);
                }
            }
            else
            {
                LogMgr.ErrorLog("未知背包编号 id:{0}", info.Bag);
            }
        }
예제 #5
0
        /// <summary>
        /// 加载animation资源
        /// </summary>
        /// <param name="prefabPath"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        public AnimationEventFromScript Load(string prefabPath, ProcessWhenAnimationFinished handler)
        {
            //设置名称
            // name = prefabPath;
            //设置回调
            finishedHandler = handler;

            Object orgObj = CoreEntry.gResLoader.Load(prefabPath);

            if (orgObj != null)
            {
                gameObj         = GameObject.Instantiate(orgObj) as GameObject;
                eventFromScript = gameObj.AddComponent <AnimationEventFromScript>();
                finishedEvent   = eventFromScript.AddAnimationFinishedEvent <ImbededAnimationFinishedProcessor>("ProcessWhenAnimationFinished");

                ImbededAnimationFinishedProcessor tmp = eventFromScript.GetComponent <ImbededAnimationFinishedProcessor>();
                if (tmp != null)
                {
                    tmp.RefObj = this;
                }


                orgObj = null;
                //Resources.UnloadUnusedAssets();
            }
            else
            {
                LogMgr.ErrorLog("ImbededAnimation: Can not find animation prefab: {0}.", prefabPath);
            }
            return(eventFromScript);
        }
예제 #6
0
        /// <summary>
        /// 添加物品。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnItemAdd(MsgData data)
        {
            MsgData_sItemAdd info = data as MsgData_sItemAdd;

            BagInfo bag = GetBagInfo(info.Bag);

            if (bag != null)
            {
                bag.AddItem(info);
                if (mItems.ContainsKey(info.UID))
                {
                    //额外多Add了一次,下次Del时抵消
                    mCacheAddUID = info.UID;
                    mItems.Remove(mCacheAddUID);
                }
                mItems.Add(info.UID, bag.GetItemInfo(info.Pos));
                TriggerEventItemAdd(info.Bag, info.Pos);

                if (info.Bag == BagType.ITEM_BAG_TYPE_EQUIP)
                {
                    ShowEquipChange(info.ID);
                }
            }
            else
            {
                LogMgr.ErrorLog("未知背包编号 id:{0}", info.Bag);
            }
        }
예제 #7
0
 /// <summary>
 /// 设置货币。
 /// </summary>
 /// <param name="type">货币类型。</param>
 /// <param name="num">货币数量。</param>
 public void SetCurrency(int type, long num)
 {
     if (type < 0 || type >= mCurrency.Length)
     {
         LogMgr.ErrorLog("Unkown currency type {0}", type);
         return;
     }
     mCurrency[type] = num;
 }
예제 #8
0
 /// <summary>
 /// 获取玩家货币。
 /// </summary>
 /// <param name="type">货币类型。</param>
 /// <returns>货币数量。</returns>
 public long GetCurrency(int type)
 {
     if (type < 0 || type >= mCurrency.Length)
     {
         LogMgr.ErrorLog("Unkown currency type {0}", type);
         return(0);
     }
     return(mCurrency[type]);
 }
예제 #9
0
        /// <summary>
        /// 添加物品。
        /// </summary>
        /// <param name="item">物品信息。</param>
        public void AddItem(ItemInfo item)
        {
            ItemInfo info = GetItemInfo(item.Pos);

            if (info != null)
            {
                LogMgr.ErrorLog("物品添加失败,该格子已有物品 bag:{0} pos:{1}", info.Bag, info.Pos);
                return;
            }

            //加入物品
            mItemInfos.Add(item.Pos, item);
        }
예제 #10
0
        /// <summary>
        /// 添加物品。
        /// </summary>
        /// <param name="result">服务器下发信息。</param>
        public void AddItem(MsgData_sItemAdd result)
        {
            ItemInfo info = GetItemInfo(result.Pos);

            if (info != null)
            {
                LogMgr.ErrorLog("物品添加失败,该格子已有物品 bag:{0} pos:{1}", info.Bag, info.Pos);
                return;
            }

            //加入物品
            info = ItemInfo.GetItemInfoClass(result.Bag);
            mItemInfos.Add(result.Pos, info);
            info.Init(result);
        }
예제 #11
0
        /// <summary>
        /// 技能添加。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnSkillAdd(MsgData data)
        {
            MsgData_sSkillAdd info = data as MsgData_sSkillAdd;
            int id  = info.ID;
            int gid = ConfigManager.Instance.Skill.GetSkillGroup(id);

            if (!mSkills.ContainsKey(gid))
            {
                mSkills.Add(gid, id);
            }
            else
            {
                LogMgr.ErrorLog("技能组重复 id:{0} gid:{1}", id, gid);
            }
            TriggerEventSkillAdd(id);
        }
예제 #12
0
        /// <summary>
        /// 显示模型。
        /// </summary>
        /// <param name="skin">坐骑编号。</param>
        public void ShowModel(int skin)
        {
            Animation mAnimator = null;

            if (mCurID == skin)
            {
                mAnimator = mRide.GetComponent <Animation>();
                if (null != mAnimator)
                {
                    //mAnimator.Play(mIdleActionName);
                    bFinishReturn = true;
                }
                return;
            }

            string     path   = ConfigManager.Instance.Ride.GetRideSkin(skin, true);
            GameObject prefab = (GameObject)CoreEntry.gResLoader.Load(path, typeof(GameObject));

            if (prefab == null)
            {
                LogMgr.ErrorLog("加载坐骑失败 skin:{0} path:{1}", skin, path);
                return;
            }

            mCurID = skin;
            if (mRide != null)
            {
                Destroy(mRide);
            }
            mRide = Instantiate(prefab) as GameObject;
            mRide.transform.SetParent(ModelParent);
            mRide.transform.localPosition = Vector3.zero;
            mRide.transform.localScale    = Vector3.one;
            mRide.transform.forward       = ModelParent.forward;
            mAnimator = mRide.GetComponent <Animation>();
            SetCfgPosition();
            //  if (null != mAnimator)
            //   {
            //      Debug.LogError("ID不相同");
            //      mAnimator.Play(mEnterActionName);
            //       bFinishReturn = true;
            //   }
        }
예제 #13
0
        /// <summary>
        /// 技能学习。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnSkillLearn(MsgData data)
        {
            MsgData_sSkillLearnResult info = data as MsgData_sSkillLearnResult;

            if (info.Result == 0)
            {
                int id  = info.ID;
                int gid = ConfigManager.Instance.Skill.GetSkillGroup(id);
                if (!mSkills.ContainsKey(gid))
                {
                    mSkills.Add(gid, id);
                }
                else
                {
                    LogMgr.ErrorLog("技能组重复 id:{0} gid:{1}", id, gid);
                }
            }
            TriggerEventSkillLean(info.Result, info.ID);
        }
예제 #14
0
        /// <summary>
        /// 获取衣服模型。
        /// </summary>
        /// <param name="fashion">时装。</param>
        /// <param name="equip">装备。</param>
        /// <param name="job">职业。</param>
        /// <returns>按优先级获取的模型ID。</returns>
        public static int GetClothesModelID(int fashion, int equip, int job, int equipStarMin)
        {
            //衣服显示优先级 时装>装备>模型默认
            if (fashion != 0)
            {
                return(ConfigManager.Instance.BagItem.GetFashionModelID(fashion, job, equipStarMin));
            }

            //读取装备衣服,没有则读取角色默认衣服
            int dress = equip;

            if (dress == 0)
            {
                LuaTable cfg = ConfigManager.Instance.Actor.GetPlayerInfoConfig(job);
                if (cfg != null)
                {
                    dress = cfg.Get <int>("dress");
                }
            }
            if (dress == 0)
            {
                LogMgr.ErrorLog("角色职业默认衣服配置错误,衣服编号为0");
                return(0);
            }

            LuaTable equipCfg = ConfigManager.Instance.BagItem.GetEquipConfig(dress);

            if (null == equipCfg)
            {
                LogMgr.ErrorLog("没有找到编号为{0}的衣服", dress);
                return(0);
            }

            int modelid = EquipDataMgr.Instance.GetEquipStarModelID(job, equipStarMin);

            if (modelid == 0)
            {
                modelid = equipCfg.Get <int>(string.Format("vmesh{0}", job));
            }

            return(modelid);
        }
예제 #15
0
        /// <summary>
        /// 技能列表刷新。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnSkillList(MsgData data)
        {
            MsgData_sSkillListResult info = data as MsgData_sSkillListResult;

            mSkills.Clear();
            for (int i = 0; i < info.Skills.Count; ++i)
            {
                int id  = info.Skills[i].ID;
                int gid = ConfigManager.Instance.Skill.GetSkillGroup(id);
                if (!mSkills.ContainsKey(gid))
                {
                    mSkills.Add(gid, id);
                }
                else
                {
                    LogMgr.ErrorLog("技能组重复 id:{0} gid:{1}", id, gid);
                }
            }
            TriggerEventSkillInfo();
        }
예제 #16
0
        public static void Log(string logString, string stackTrace, LogType type)
        {
            if (!m_isDebug)
            {
                return;
            }
            switch (type)
            {
            case LogType.Log:
                LogMgr.DebugLog(logString);
                break;

            case LogType.Warning:
                LogMgr.WarningLog(logString);
                break;

            case LogType.Error:
                LogMgr.ErrorLog(logString);
                break;
            }
        }
예제 #17
0
        /// <summary>
        /// 技能升级。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnSkillLevelUp(MsgData data)
        {
            MsgData_sSkillLevelUp info = data as MsgData_sSkillLevelUp;

            if (info.Result == 0)
            {
                int oldid  = info.OldID;
                int oldgid = ConfigManager.Instance.Skill.GetSkillGroup(oldid);
                int newid  = info.NewID;
                int newgid = ConfigManager.Instance.Skill.GetSkillGroup(newid);
                mSkills.Remove(oldgid);
                if (!mSkills.ContainsKey(newgid))
                {
                    mSkills.Add(newgid, newid);
                }
                else
                {
                    LogMgr.ErrorLog("技能组重复 id:{0} gid:{1}", newid, newgid);
                }
            }

            TriggerEventSkillLevelUp(info.Result, info.OldID, info.NewID);
        }
예제 #18
0
        /// <summary>
        /// 获取武器模型。
        /// </summary>
        /// <param name="fashion">时装。</param>
        /// <param name="sb">神兵。</param>
        /// <param name="equip">武器。</param>
        /// <param name="job">职业。</param>
        /// <returns>按优先级获取的模型ID。</returns>
        public static int GetWeaponModelID(int fashion, int magicweapon, int equip, int job)
        {
            //武器显示优先级 时装>神兵>装备>模型默认
            if (fashion != 0)
            {
                return(ConfigManager.Instance.BagItem.GetFashionModelID(fashion, job, 0));
            }

            //神兵外观读取
            if (magicweapon != 0)
            {
                int configId = job * 100 + magicweapon;
                int mid      = ShenBingMgr.Instance.GetShenBingModelId(configId);
                if (mid > 0)
                {
                    return(mid);
                }
                else
                {
                    LogMgr.DebugLog("模型配置表有误,找不到神兵模型id " + configId);
                }
            }

            //读取装备武器,没有则读取角色默认武器
            int weapon = equip;

            if (weapon == 0)
            {
                LuaTable cfg = ConfigManager.Instance.Actor.GetPlayerInfoConfig(job);
                if (cfg != null)
                {
                    weapon = cfg.Get <int>("arm");
                }
            }
            if (weapon == 0)
            {
                LogMgr.ErrorLog("角色职业默认武器配置错误,武器编号为0");
                return(0);
            }

            LuaTable equipCfg = ConfigManager.Instance.BagItem.GetItemConfig(weapon);

            if (null == equipCfg)
            {
                LogMgr.ErrorLog("没有找到编号为{0}的武器", weapon);
                return(0);
            }

            int modelid = 0;

            switch (job)
            {
            case 1:
                modelid = equipCfg.Get <int>("vmesh1");
                break;

            case 2:
                modelid = equipCfg.Get <int>("vmesh2");
                break;

            case 3:
                modelid = equipCfg.Get <int>("vmesh3");
                break;

            case 4:
                modelid = equipCfg.Get <int>("vmesh4");
                break;

            default:
                break;
            }

            return(modelid);
        }