extern "C" int GUI_CreateItem(lua_State *L)
{
	CUserInterface *pUI = CGUIManager::GetInstance()->GetCurrentUI();
	if(pUI)
	{
		cLua *lua = CGUIManager::GetInstance()->GetLuaContext();

		unsigned int id = (unsigned int) lua->GetNumberArgument(1);
		const char *type = lua->GetStringArgument(2);

		CGUIObject *pObject = NULL;

		if(strcmp(type, kpSpriteName) == 0)
		{
			//create a sprite
			CGUISprite *pSprite = new CGUISprite;
			pSprite->SetTexture((char *) lua->GetStringArgument(3));
			pObject = pSprite;
		}

		if(strcmp(type, kpTextFieldName) == 0)
		{
			//create a Text Field
			CTextField  *pTextField = new CTextField;
			pTextField->SetTexture((char *) lua->GetStringArgument(3, NULL));
			pObject = pTextField;
		}

		if(strcmp(type, kpButtonName) == 0)
		{
			//create a button
			CButton *pButton = new CButton;
			char *norm	= (char *) lua->GetStringArgument(3, NULL);
			char *hover = (char *) lua->GetStringArgument(4, NULL);
			char *sel	= (char *) lua->GetStringArgument(5, NULL);
			char *dis	= (char *) lua->GetStringArgument(6, NULL);

			pButton->SetButtonTextures(norm, hover, sel, dis);
			pObject = pButton;
		}

		if(pObject)
		{
			pUI->DeleteGUIObject(id);
			pObject->SetID(id);
			pUI->AddGUIObject(id, pObject);
		}
	}
	return 0;
}
Exemplo n.º 2
0
void CUIManager::CreateGUIItem(const UINT nID, const tstring strType, const vector<tstring>& strTexture)
{
	if ( strTexture[0].empty() )
	{
		return;
	}
	CUserInterface* pUI = GetCurrentUI();;
	if (nullptr == pUI)
	{
		throw tstring(_T("Get current UI field."));
	}

	CObject* pObject = nullptr;

	if (strSpriteName == strType)
	{
		// Create Sprite
		CSprite* pSprite = new CSprite(m_pDDraw);
		pSprite->SetTexture(strTexture);
		pObject = pSprite;
	}
	else if (strTextFieldName == strType)
	{
		// Create Text field
		CTextField* pText = new CTextField(m_pDDraw);
		pText->SetTexture(strTexture);
		pObject = pText;
	}
	else if (strButtonName == strType)
	{
		// Create Button
		CButton* pButton = new CButton(m_pDDraw);
		pButton->SetTexture(strTexture);
		pObject = pButton;
	}
	else
	{
		throw tstring(_T("Type error"));
	}

	if (pObject)
	{
		pUI->DeleteObject(nID);
		pObject->SetID(nID);
		pUI->AddObject(nID, pObject);
	}
}