void CDABuyMenu::Update() { m_pWeaponInfo = dynamic_cast<CFolderLabel*>(FindChildByName("WeaponInfo")); m_pWeaponInfo->SetText(""); m_pWeaponImage = dynamic_cast<CModelPanel*>(FindChildByName("WeaponImage")); m_pWeaponImage->SwapModel(""); Button *entry = dynamic_cast<Button *>(FindChildByName("CancelButton")); if (entry) entry->SetVisible(true); CFolderLabel* pWeaponStyle = dynamic_cast<CFolderLabel*>(FindChildByName("WeaponStyle")); int iWeaponStyleX, iWeaponStyleY; pWeaponStyle->GetPos(iWeaponStyleX, iWeaponStyleY); CFolderLabel* pWeaponWeight = dynamic_cast<CFolderLabel*>(FindChildByName("WeaponWeight")); int iWeaponWeightX, iWeaponWeightY; pWeaponWeight->GetPos(iWeaponWeightX, iWeaponWeightY); C_DAPlayer *pPlayer = C_DAPlayer::GetLocalDAPlayer(); if (!pPlayer) return; for ( int i = 0; i < m_apStyles.Count(); i++) { m_apStyles[i]->DeletePanel(); m_apStyles[i] = NULL; } for ( int i = 0; i < m_apWeights.Count(); i++) { m_apWeights[i]->DeletePanel(); m_apWeights[i] = NULL; } for ( int i = 0; i < m_apCheckMarks.Count(); i++) { m_apCheckMarks[i]->DeletePanel(); m_apCheckMarks[i] = NULL; } m_apStyles.RemoveAll(); m_apWeights.RemoveAll(); m_apCheckMarks.RemoveAll(); // stormy tries to do a thing /* const char wpnTypes[8] = { "PISTOL", "SMG", "SHOTGUN", "RIFLE", "BRAWL" }; for (int i = 0; i < 5; i++){ } */ // end the stormy trainwreck CUtlVector<CWeaponButton*> apWeaponButtons; for ( int i = 0 ; i < GetChildCount() ; ++i ) { // Hide the subpanel for the CWeaponButtons CWeaponButton *pPanel = dynamic_cast<CWeaponButton *>( GetChild( i ) ); if (!pPanel) continue; if (pPanel->GetWeaponID() != WEAPON_NONE) apWeaponButtons.AddToTail(pPanel); pPanel->SetEnabled(true); if (!pPanel->GetName()) continue; if (strlen(pPanel->GetName()) < 7) continue; DAWeaponID eWeapon = AliasToWeaponID(pPanel->GetName() + 7); if (!eWeapon) continue; pPanel->SetEnabled(pPlayer->CanAddToLoadout(eWeapon)); pPanel->InvalidateLayout(true); } for (int i = 0; i < apWeaponButtons.Count(); i++) { CWeaponButton* pPanel = apWeaponButtons[i]; int iWeaponX, iWeaponY; pPanel->GetPos(iWeaponX, iWeaponY); CSDKWeaponInfo* pInfo = CSDKWeaponInfo::GetWeaponInfo(pPanel->GetWeaponID()); m_apStyles.AddToTail(new CFolderLabel(this, NULL)); std::ostringstream sStyle; if (pPlayer->GetLoadoutWeaponCount(pPanel->GetWeaponID()) == 2) { if (*pInfo->m_szAkimbo) { CSDKWeaponInfo* pAkimboInfo = CSDKWeaponInfo::GetWeaponInfo(AliasToWeaponID(pInfo->m_szAkimbo)); if (pAkimboInfo && pAkimboInfo->m_flStyleMultiplier > 1) sStyle << pAkimboInfo->m_flStyleMultiplier << "x"; } else if (pInfo->m_flStyleMultiplier > 1) sStyle << pInfo->m_flStyleMultiplier << "x"; } else if (pInfo->m_flStyleMultiplier > 1) sStyle << pInfo->m_flStyleMultiplier << "x"; m_apStyles.Tail()->SetText(sStyle.str().c_str()); m_apStyles.Tail()->SetPos(iWeaponStyleX, iWeaponY); m_apStyles.Tail()->SetZPos(-5); m_apStyles.Tail()->SetFont(vgui::scheme()->GetIScheme(GetScheme())->GetFont("FolderMedium")); m_apStyles.Tail()->SetScheme("FolderScheme"); m_apWeights.AddToTail(new CFolderLabel(this, NULL)); std::ostringstream sWeight; sWeight << pInfo->iWeight; m_apWeights.Tail()->SetText(sWeight.str().c_str()); m_apWeights.Tail()->SetPos(iWeaponWeightX, iWeaponY); m_apWeights.Tail()->SetZPos(-5); m_apWeights.Tail()->SetFont(vgui::scheme()->GetIScheme(GetScheme())->GetFont("FolderMedium")); m_apWeights.Tail()->SetScheme("FolderScheme"); int iWeaponInfoX, iWeaponInfoY; m_pWeaponInfo->GetPos(iWeaponInfoX, iWeaponInfoY); m_apCheckMarks.AddToTail(new CImageButton(this, "checkmark")); m_apCheckMarks.Tail()->SetDimensions(iWeaponInfoX, iWeaponY, pPanel->GetTall(), pPanel->GetTall()); m_apCheckMarks.Tail()->SetZPos(5); m_apCheckMarks.Tail()->SetVisible(true); if (pPlayer->GetLoadoutWeaponCount(pPanel->GetWeaponID())) { m_apCheckMarks.Tail()->SetImage("folder_check"); m_apCheckMarks.Tail()->SetCommand(VarArgs("buy remove %s", pInfo->szClassName+7)); } else if (pPlayer->CanAddToLoadout(pPanel->GetWeaponID())) { m_apCheckMarks.Tail()->SetImage("folder_nocheck"); m_apCheckMarks.Tail()->SetCommand(VarArgs("buy %s", pInfo->szClassName+7)); } else { m_apCheckMarks.Tail()->SetImage("folder_nocheck"); m_apCheckMarks.Tail()->SetImageColor(Color(255, 255, 255, 100)); } if (pInfo->m_szAkimbo[0]) { m_apCheckMarks.AddToTail(new CImageButton(this, "checkmark")); m_apCheckMarks.Tail()->SetDimensions(iWeaponInfoX + pPanel->GetTall() + 5, iWeaponY, pPanel->GetTall(), pPanel->GetTall()); m_apCheckMarks.Tail()->SetZPos(5); m_apCheckMarks.Tail()->SetVisible(true); if (pPlayer->GetLoadoutWeaponCount(pPanel->GetWeaponID()) == 2) { m_apCheckMarks.Tail()->SetImage("folder_check"); m_apCheckMarks.Tail()->SetCommand(VarArgs("buy remove %s", pInfo->szClassName+7)); } else if (pPlayer->GetLoadoutWeaponCount(pPanel->GetWeaponID()) == 0) { m_apCheckMarks.Tail()->SetImage("folder_nocheck"); m_apCheckMarks.Tail()->SetImageColor(Color(255, 255, 255, 100)); } else if (pPlayer->CanAddToLoadout(pPanel->GetWeaponID())) { m_apCheckMarks.Tail()->SetImage("folder_nocheck"); m_apCheckMarks.Tail()->SetCommand(VarArgs("buy %s", pInfo->szClassName+7)); } else { m_apCheckMarks.Tail()->SetImage("folder_nocheck"); m_apCheckMarks.Tail()->SetImageColor(Color(255, 255, 255, 100)); } } } }