예제 #1
0
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));
			}
		}
	}
}