Example #1
0
void EnchantsDialog::OnClick(wxCommandEvent &event)
{
	if (event.GetId() == ID_ENCHANTSOK)
	{
		std::string sel = effectsListbox->GetStringSelection().c_str();

		if (sel == "")
		{
			Show(false);
			return;
		}

		if (sel==wxT("NONE") || sel==wxT("None"))
		{
			if (slot->GetSelection() == 0)
				RHandEnchant = -1;
			else
				LHandEnchant = -1;
			Show(false);
			return;
		}

		for (std::map<int, EnchantsRec>::iterator it=enchants.begin();  it!=enchants.end();  ++it)
		{
			if (it->second.name == sel)
			{
			  EnchantsRec enchant = it->second;
				int s = slot->GetSelection();
				s += 10;

				if (!charControl->model)
					return;

				if (!slotHasModel(s))
					return;
				
				if (slot->GetSelection() == 0)
					RHandEnchant = it->first;
				else
					LHandEnchant = it->first;

				// children:
				for (size_t i=0; i < charControl->charAtt->children.size(); i++)
				{
					if (charControl->charAtt->children[i]->slot == s)
					{
						Attachment *att = charControl->charAtt->children[i];
						if (att->children.size() > 0)
							att->delChildren();

						WoWModel *m = static_cast<WoWModel*>(att->model());
						if (!m)
							return;

						for (ssize_t k=0; k<5; k++)
						{
							if ((enchant.models[k] != "") && (m->attLookup[k]>=0)) {
								att->addChild(enchant.models[k].c_str(), k, -1);
							}
						}
						break;
					}
				}

				Show(false);
				return;
			}
		}
	}
	else if (event.GetId() == ID_ENCHANTSCANCEL)
	{
		this->Show(false);
	}
}