/// <summary> /// 给当前英雄添加新的物品配置 /// </summary> public void AddHeroGoodsDisposition() { cmd_war_equipscheme newScheme = new cmd_war_equipscheme(); //向上申请新配置 if (EquipSchemeDataManager.Instance.addEquipScheme(CurrentSelectHero, ref newScheme)) { UGD_GoodsDispositionItem item = new UGD_GoodsDispositionItem(); item.From(newScheme, true); GoodsDispositionList.Add(item); CurrentGoodsDispositionID = newScheme.bySchemeID; } else { //USpeedUI.TooltipAndDialog.UIDialogData data = new USpeedUI.TooltipAndDialog.UIDialogData( // title: ULocalizationService.Instance.Get("UIView", "GoodsDispositionView", "TitleAsk"), // message: ULocalizationService.Instance.Get("UIView", "GoodsDispositionView", "DispositionFilled"), // buttons: new UIWidgets.DialogActions() { // {ULocalizationService.Instance.Get("UIView", "Common", "ConfirmBtn"), null},} // ); //UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_COMMON_DIALOG, data); UGD_DispositionFilledMsgData msgData = new UGD_DispositionFilledMsgData(); msgData.HeroID = CurrentSelectHero; msgData.onConfirmCallback = AddHeroGoodsDisposition; UISystem.Instance.SendTargetWndMessage(WndID.WND_ID_GOODSDISPOSITION, WndMsgID.WND_MSG_GOODSDISPOSITION_OPEN_DISPOSITIONFILLED, msgData); } }
/// <summary> /// 获取大神推荐装(主城调用) /// </summary> /// <param name="nHeroID"></param> /// <returns></returns> public List <cmd_war_equipscheme> getGodRecommandEquipList(int nHeroID) { List <SSchemeGodRecommdEquip> list = GameMobaSchemesManager.Instance.getGodRecommdEquipList(nHeroID); if (list == null) { return(null); } List <cmd_war_equipscheme> resultList = new List <cmd_war_equipscheme>(); byte bySchemeID = (byte)EWEquipSchemeType.EWEST_Max; foreach (var item in list) { cmd_war_equipscheme scheme = new cmd_war_equipscheme(); scheme.nHeroID = nHeroID; scheme.bySchemeID = bySchemeID; scheme.szAuthorName = item.AuthorName; scheme.szSchemeName = item.SchemeName; scheme.szTitle = item.Title; scheme.nEquipIDList = item.nEquipList; resultList.Add(scheme); bySchemeID++; } return(resultList); }
/// <summary> /// 添加装备方案 /// </summary> /// <param name="nHeroID"></param> /// <param name="scheme"></param> /// <returns>是否本地添加成功</returns> public bool addEquipScheme(int nHeroID, ref cmd_war_equipscheme scheme) { // 先本地添加,同时会向服务器发送请求 if (!addNewEquipScheme(nHeroID, ref scheme)) { UIUtil.ShowSystemMessage(EMChatTipID.CHAT_TIP_CUSTOMER_TIP, "装备方案已经满了"); return(false); } return(true); }
// 增加装备方案 private void sendAddEquipScheme(int nHeroID, cmd_war_equipscheme scheme) { cmd_war_add_equipscheme cmd; cmd.nHeroID = nHeroID; cmd.szAuthorName = scheme.szAuthorName; cmd.szSchemeName = scheme.szSchemeName; cmd.szTitle = scheme.szTitle; cmd.nEquipIDList = scheme.nEquipIDList; EntityEventHelper.Instance.SendCommand(EntityFactory.getMainPlayer().ID, EntityLogicDef.ENTITY_CMD_WAR_ADD_EQUIPSCHEME, ref cmd); }
/// <summary> /// 分享装备方案到聊听框输入框 /// </summary> /// <param name="scheme"></param> public void shareEquipScheme(int nHeroID, cmd_war_equipscheme scheme) { string equipStr = ""; string[] strArray = new string[scheme.nEquipIDList.Length]; for (int i = 0; i < scheme.nEquipIDList.Length; ++i) { strArray[i] = scheme.nEquipIDList[i].ToString(); } equipStr = String.Join(",", strArray); ChatSubItemText_EquipScheme.ShareToInputField(nHeroID, scheme.szAuthorName, scheme.szSchemeName, scheme.szTitle, equipStr); }
/// <summary> /// 保存装备方案 /// </summary> /// <param name="nHeroID"></param> /// <param name="scheme"></param> public void saveEquipScheme(int nHeroID, cmd_war_equipscheme scheme) { //if (scheme.bySchemeID == (byte)EWEquipSchemeType.EWEST_None) //addEquipScheme(nHeroID, out scheme); //else //{ //_addEquipScheme(nHeroID, scheme); //sendModifyEquipScheme(nHeroID, scheme); //} sendModifyEquipScheme(nHeroID, scheme); }
/// <summary> /// 获取英雄的自定义装备方案(主城中调用) /// </summary> /// <param name="nHeroID"></param> /// <param name="schemeList"></param> /// <returns>是否获取成功,未成功显示层则可以用一个Loading界面来等待一下</returns> public bool getDiyEquipSchemeList(int nHeroID, out List <cmd_war_equipscheme> schemeList) { Dictionary <byte, cmd_war_equipscheme> tmpSchemeList; schemeList = new List <cmd_war_equipscheme>(); if (!m_EquipSchemeList.TryGetValue(nHeroID, out tmpSchemeList)) { // 是否已经发送请求了 if (!isReqHeroEquipScheme(nHeroID)) { // 本地没有数据则向服务器请求 sendReadEquipScheme(nHeroID); // 正在向服务器请求该英雄数据 m_ReqHeroEquipScheme[nHeroID] = true; } return(false); } // 一个装备都没有,添加一个 if (tmpSchemeList.Count == 0) { cmd_war_equipscheme newScheme = new cmd_war_equipscheme(); newScheme.nHeroID = nHeroID; newScheme.nEquipIDList = new int[UDefines.nEquipSchemeMaxEquipNum]; newScheme.szAuthorName = ""; newScheme.szSchemeName = DefaultEquipSchemeName; if (!addNewEquipScheme(nHeroID, ref newScheme)) { Debug.LogError("Add new equip scheme failed."); return(false); } tmpSchemeList = m_EquipSchemeList[nHeroID]; } foreach (var item in tmpSchemeList) { if (isDiyEquipShceme(item.Value.bySchemeID)) { schemeList.Add(item.Value); } } return(true); }
public bool AddHeroGoodsDispositionFromShare(int _nHeroID, cmd_war_equipscheme _nNewScheme) { if (EquipSchemeDataManager.Instance.addEquipScheme(_nHeroID, ref _nNewScheme)) { if (_nHeroID == CurrentSelectHero) { UGD_GoodsDispositionItem item = new UGD_GoodsDispositionItem(); item.From(_nNewScheme, true); GoodsDispositionList.Add(item); } return(true); } else { return(false); } }
/// <summary> /// 获取某个英雄的某个装备方案 /// </summary> /// <param name="nHeroID"></param> /// <param name="bySchemeID"></param> /// <param name="scheme"></param> /// <returns></returns> public bool getEquipScheme(int nHeroID, byte bySchemeID, out cmd_war_equipscheme scheme) { Dictionary <byte, cmd_war_equipscheme> schemeList; scheme = new cmd_war_equipscheme(); if (!m_EquipSchemeList.TryGetValue(nHeroID, out schemeList)) { return(false); } if (!schemeList.TryGetValue(bySchemeID, out scheme)) { return(false); } return(true); }
// 添加一个新的方案 private bool addNewEquipScheme(int nHeroID, ref cmd_war_equipscheme newScheme) { EWEquipSchemeType type = getFreeSchemeID(nHeroID); if (type == EWEquipSchemeType.EWEST_None) { return(false); } // 当前英雄一个装备方案都没有,则增加个默认的 newScheme.bySchemeID = (byte)type; // 添加到本地缓存 _addEquipScheme(nHeroID, newScheme); // 添加到服务器数据库 sendAddEquipScheme(nHeroID, newScheme); return(true); }
/// <summary> /// 拷贝操作只用于当前英雄的当前物品配置 /// </summary> /// <param name="_nHeroID"></param> /// <param name="_remainingHeroID"></param> /// <returns></returns> public bool AddHeroGoodsDispositionFromCopy(int _nHeroID, Action _fillConfirmCallback) { //当前英雄配置设为目标英雄的 cmd_war_equipscheme HeroScheme = CurrentGoodsDisposition.To(); HeroScheme.nHeroID = _nHeroID; if (AddHeroGoodsDispositionFromShare(_nHeroID, HeroScheme)) { return(true); } else { UGD_DispositionFilledMsgData msgData = new UGD_DispositionFilledMsgData(); msgData.HeroID = _nHeroID; msgData.onConfirmCallback = _fillConfirmCallback; UISystem.Instance.SendTargetWndMessage(WndID.WND_ID_GOODSDISPOSITION, WndMsgID.WND_MSG_GOODSDISPOSITION_OPEN_DISPOSITIONFILLED, msgData); return(false); } }
// 添加装备方案 private bool _addEquipScheme(int nHeroID, cmd_war_equipscheme scheme) { Dictionary <byte, cmd_war_equipscheme> schemeList; if (!m_EquipSchemeList.TryGetValue(nHeroID, out schemeList)) { schemeList = new Dictionary <byte, cmd_war_equipscheme>(); m_EquipSchemeList.Add(nHeroID, schemeList); } if (!schemeList.ContainsKey(scheme.bySchemeID)) { schemeList.Add(scheme.bySchemeID, scheme); } else { schemeList[scheme.bySchemeID] = scheme; } return(true); }
/// <summary> /// 每次切换英雄时,获取当前英雄的所有物品配置列表 /// </summary> protected void SetHeroGoodsDispositionList() { if (CurrentSelectHero <= 0) { return; } List <cmd_war_equipscheme> schemeList; if (!EquipSchemeDataManager.Instance.getDiyEquipSchemeList(CurrentSelectHero, out schemeList)) { return; } GoodsDispositionList.Clear(); int defaultDispositionID = 0; { for (int i = 0; i < schemeList.Count; ++i) { cmd_war_equipscheme scheme = schemeList[i]; UGD_GoodsDispositionItem item = new UGD_GoodsDispositionItem(); item.From(scheme); if (i == 0) { defaultDispositionID = item.DispositionID; item.IsCurrent = true; } GoodsDispositionList.Add(item); } } CurrentGoodsDispositionID = defaultDispositionID; TimerManager.KillTimer(this, (int)ETimerHandlerID.GoodsDispositionList); //UISystem.Instance.SendTargetWndMessage(WndID.WND_ID_GOODSDISPOSITION, WndMsgID.WND_MSG_GOODSDISPOSITION_SET_HEROGOODSDISPOSITIONLIST, null); }
// 接收装备方案列表 public void recvEquipSchemeList(IntPtr ptrParam, int nParamLen) { IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nParamLen); cmd_war_equipscheme_list cmd = helper.get <cmd_war_equipscheme_list>(); int nHeroID = cmd.nHeroID; int nSchemeCount = cmd.nSchemeCount; // 已经获得该英雄的装备方案 m_ReqHeroEquipScheme[nHeroID] = false; if (!m_EquipSchemeList.ContainsKey(nHeroID)) { m_EquipSchemeList.Add(nHeroID, new Dictionary <byte, cmd_war_equipscheme>(0, null)); } for (int i = 0; i < nSchemeCount; ++i) { cmd_war_equipscheme scheme = helper.get <cmd_war_equipscheme>(); _addEquipScheme(nHeroID, scheme); } }
// 保存装备方案 private void _saveEquipScheme(int nHeroID, cmd_war_equipscheme scheme) { }