/// <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); } }
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))); } }
/// <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); } }
/// <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); } }
/// <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); }
/// <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); } }
/// <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; }
/// <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]); }
/// <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); }
/// <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); }
/// <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); }
/// <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; // } }
/// <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); }
/// <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); }
/// <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(); }
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; } }
/// <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); }
/// <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); }