private uint GetLatestOpenLevel(uint playerLevel) { ResSymbolPos resSymbolPos = null; for (int i = 0; i < this.GridBuyInfo.Length; i++) { ResSymbolPos symbolPos = CSymbolInfo.GetSymbolPos(i); if ((uint)symbolPos.wOpenLevel > playerLevel && this.GridBuyInfo[i].bBuyFlag == 0) { if (resSymbolPos == null) { resSymbolPos = symbolPos; } if (symbolPos.wOpenLevel < resSymbolPos.wOpenLevel) { resSymbolPos = symbolPos; } } } if (resSymbolPos == null) { return(playerLevel + 1u); } return((uint)resSymbolPos.wOpenLevel); }
public bool GetWearPos(CSymbolItem item, int page, out int pos, out enFindSymbolWearPosCode findCode) { pos = 0; findCode = -1; if (item == null || (int)item.m_SymbolData.wLevel > this.m_pageMaxLvlLimit) { findCode = 3; return(false); } ulong[] array = this.m_symbolPageArr[page]; CRoleInfo masterRoleInfo = Singleton <CRoleInfoManager> .GetInstance().GetMasterRoleInfo(); int num = array.Length; bool flag = true; for (int i = 0; i < num; i++) { ResSymbolPos symbolPos = CSymbolInfo.GetSymbolPos(i); if (((ulong)symbolPos.dwSymbolColor & (ulong)(1L << (int)(item.m_SymbolData.bColor & 31))) != 0uL) { flag = (flag && array[i] != 0uL); } if (array[i] == 0uL && (masterRoleInfo.PvpLevel >= (uint)symbolPos.wOpenLevel || this.GridBuyInfo[i].bBuyFlag == 1) && ((ulong)symbolPos.dwSymbolColor & (ulong)(1L << (int)(item.m_SymbolData.bColor & 31))) != 0uL) { pos = i; findCode = 0; return(true); } } findCode = ((!flag) ? 2 : 1); return(false); }
public enSymbolWearState GetSymbolPosWearState(int page, int pos, out int param) { param = 0; if (page < 0 || page >= this.m_pageCount || pos < 0 || pos >= 30) { return(enSymbolWearState.OtherState); } ulong[] array = this.m_symbolPageArr[page]; if (array[pos] > 0uL) { return(enSymbolWearState.WearSuccess); } CRoleInfo masterRoleInfo = Singleton <CRoleInfoManager> .GetInstance().GetMasterRoleInfo(); uint pvpLevel = masterRoleInfo.PvpLevel; uint latestOpenLevel = this.GetLatestOpenLevel(pvpLevel); ResSymbolPos symbolPos = CSymbolInfo.GetSymbolPos(pos); DebugHelper.Assert(symbolPos != null, "symbolPos!=null"); if (symbolPos == null) { return(enSymbolWearState.OtherState); } param = (int)symbolPos.wOpenLevel; if (pvpLevel >= (uint)symbolPos.wOpenLevel) { return(enSymbolWearState.OpenToWear); } if (this.GridBuyInfo[pos].bBuyFlag == 1) { return(enSymbolWearState.OpenToWear); } ulong[] array2 = this.m_symbolPageArr[page]; int num = array2.Length; int i = 0; while (i < num) { ResSymbolPos symbolPos2 = CSymbolInfo.GetSymbolPos(i); if (pvpLevel < (uint)symbolPos2.wOpenLevel && this.GridBuyInfo[(int)(symbolPos2.bSymbolPos - 1)].bBuyFlag == 0 && symbolPos.dwSymbolColor == symbolPos2.dwSymbolColor) { if (this.GridBuyInfo[(int)(symbolPos.bSymbolPos - 2)].bBuyFlag == 1) { return(((long)param != (long)((ulong)latestOpenLevel)) ? enSymbolWearState.CanBuy : enSymbolWearState.CanBuyAndWillOpen); } ResSymbolPos symbolPos3 = CSymbolInfo.GetSymbolPos(pos - 1); if (symbolPos3 != null && pvpLevel >= (uint)symbolPos3.wOpenLevel) { return(((long)param != (long)((ulong)latestOpenLevel)) ? enSymbolWearState.CanBuy : enSymbolWearState.CanBuyAndWillOpen); } return(enSymbolWearState.UnOpen); } else { i++; } } return(enSymbolWearState.WillOpen); }
public static int GetSymbolPosOpenCnt(int pvpLvl) { int num = 0; for (int i = 0; i < 30; i++) { ResSymbolPos symbolPos = CSymbolInfo.GetSymbolPos(i); if ((int)symbolPos.wOpenLevel <= pvpLvl) { num++; } } return(num); }
public bool IsAnySymbolItemCanWear(int pageIndex, int pos, ref ListView <CSymbolItem> symbolList) { ResSymbolPos symbolPos = CSymbolInfo.GetSymbolPos(pos); CRoleInfo masterRoleInfo = Singleton <CRoleInfoManager> .GetInstance().GetMasterRoleInfo(); if (masterRoleInfo == null || pageIndex < 0 || pageIndex >= this.m_pageCount || symbolPos == null || symbolList == null || ((uint)symbolPos.wOpenLevel > masterRoleInfo.PvpLevel && this.GridBuyInfo[pos].bBuyFlag == 0)) { return(false); } for (int i = 0; i < symbolList.get_Count(); i++) { if (this.IsSymbolPosMatchItem(pageIndex, symbolPos, symbolList.get_Item(i))) { return(true); } } return(false); }
public int GetNextCanEquipPos(int page, int nowPos, ref ListView <CSymbolItem> symbolList) { int num = -1; if (page < 0 || page >= this.m_pageCount || nowPos < 0 || nowPos >= 30) { return(num); } ulong[] array = this.m_symbolPageArr[page]; CRoleInfo masterRoleInfo = Singleton <CRoleInfoManager> .GetInstance().GetMasterRoleInfo(); uint pvpLevel = masterRoleInfo.PvpLevel; uint dwSymbolColor = CSymbolInfo.GetSymbolPos(nowPos).dwSymbolColor; int firstColorIndex = this.GetFirstColorIndex(dwSymbolColor); int num2 = -1; for (int i = firstColorIndex; i < array.Length; i++) { if (i != nowPos && array[i] == 0uL) { ResSymbolPos symbolPos = CSymbolInfo.GetSymbolPos(i); if (symbolPos != null && (pvpLevel >= (uint)symbolPos.wOpenLevel || this.GridBuyInfo[i].bBuyFlag == 1)) { if (this.IsAnySymbolItemCanWear(page, i, ref symbolList)) { num = i; break; } if (num2 == -1) { num2 = i; } } } } if (num == -1) { for (int j = 0; j < firstColorIndex; j++) { if (j != nowPos && array[j] == 0uL) { ResSymbolPos symbolPos2 = CSymbolInfo.GetSymbolPos(j); if (symbolPos2 != null && (pvpLevel >= (uint)symbolPos2.wOpenLevel || this.GridBuyInfo[j].bBuyFlag == 1)) { if (this.IsAnySymbolItemCanWear(page, j, ref symbolList)) { num = j; break; } if (num2 == -1) { num2 = j; } } } } } if (num == -1) { num = num2; } return(num); }