void DoSort(INT iColumn, BOOL bAscendant = TRUE) { LV_COLUMN Column; ZeroMemory(&Column, sizeof(Column)); Column.mask = LVCF_IMAGE | LVCF_SUBITEM; Column.iImage = 2; Column.iSubItem = 0; ListView_SetColumn(g_hListView, 0, &Column); Column.iSubItem = 1; ListView_SetColumn(g_hListView, 1, &Column); switch (iColumn) { case 0: Column.iSubItem = 0; if (bAscendant) { std::sort(g_Items.begin(), g_Items.end(), ItemCompareByNameAscend); Column.iImage = 0; ListView_SetColumn(g_hListView, 0, &Column); } else { std::sort(g_Items.begin(), g_Items.end(), ItemCompareByNameDescend); Column.iImage = 1; ListView_SetColumn(g_hListView, 0, &Column); } break; case 1: Column.iSubItem = 1; if (bAscendant) { std::sort(g_Items.begin(), g_Items.end(), ItemCompareBySubAscend); Column.iImage = 0; ListView_SetColumn(g_hListView, 1, &Column); } else { std::sort(g_Items.begin(), g_Items.end(), ItemCompareBySubDescend); Column.iImage = 1; ListView_SetColumn(g_hListView, 1, &Column); } break; } g_iSortColumn = iColumn; g_bSortAscendant = bAscendant; InvalidateRect(g_hListView, NULL, TRUE); }
ItemUpdate_TC::ItemUpdate_TC(position fieldpos, ITEMVECTOR &items) : BasicServerCommand(SC_ITEMUPDATE_TC) { Logger::writeMessage("rot_update", "sending new itemstack for pos("+Logger::toString(fieldpos.x)+", "+Logger::toString(fieldpos.y)+", "+Logger::toString(fieldpos.z)+")",false); addShortIntToBuffer(fieldpos.x); addShortIntToBuffer(fieldpos.y); addShortIntToBuffer(fieldpos.z); int16_t size = static_cast<unsigned char>(items.size()); if (size > 255) { size = 255; } addUnsignedCharToBuffer(static_cast<uint8_t>(size)); for (auto it = items.begin(); it != items.end(); ++it) { //we added 255 items if (size <= 0) { break; } addShortIntToBuffer(it->getId()); addShortIntToBuffer(it->getNumber()); Logger::writeMessage("rot_update", "adding item id: "+Logger::toString(it->getId())+" count: "+Logger::toString(static_cast<int>(it->getNumber())),false); size--; } }
ItemUpdate_TC::ItemUpdate_TC(int16_t px, int16_t py, int16_t pz, ITEMVECTOR &items) : BasicServerCommand(SC_ITEMUPDATE_TC) { addShortIntToBuffer(px); addShortIntToBuffer(py); addShortIntToBuffer(pz); int16_t size = static_cast<unsigned char>(items.size()); if (size > 255) { size = 255; } addUnsignedCharToBuffer(static_cast<uint8_t>(size)); for (auto it = items.begin(); it != items.end(); ++it) { //we added 255 items if (size <= 0) { break; } addShortIntToBuffer(it->getId()); addShortIntToBuffer(it->getNumber()); size--; } }