_MEMBER_FUNCTION_IMPL(GUIElement, constructor)
{
	const char * name;
	sq_getstring(pVM, -1, &name);
	String szName = name;

	if(szName.IsEmpty())
		_SET_RELEASE_HOOK(GUIElement);

	// Get our GUI instance
	CGUI * pGUI = g_pClient->GetGUI();

	try
	{
		pGUI->GetWindowManager()->getWindow(szName.C_String());
	}
	catch(CEGUI::Exception &e)
	{
		e;
		_SET_RELEASE_HOOK(GUIElement);
	}

	CEGUI::Window * pWindow = pGUI->GetWindowManager()->getWindow(szName.C_String());
	if(!pWindow || SQ_FAILED(sq_setinstance(pVM, pWindow)))
	{
		CLogFile::Printf("Can't create GUIElement.");
		sq_pushbool(pVM, false);
		return 1;
	}

	SubscribeGuiEvents(pWindow);

	sq_pushbool(pVM, true);
	return 1;
}
Exemple #2
0
_MEMBER_FUNCTION_IMPL(timer, Kill)
{
	// Get the timer instance
	CTimer * pTimer = sq_getinstance< CTimer *>( pVM );

	// Is the timer invalid?
	if( !pTimer )
	{
		sq_pushbool( pVM, false );
		return 1;
	}

	// Is the timer inside the timer manager and active?
	if( pCore->GetTimerManager()->Contains( pTimer ) && pTimer->IsActive() )
	{
		// Kill the timer
		pTimer->Kill( );

		sq_setinstance( pVM, NULL );
		sq_pushbool( pVM, true );
		return 1;
	}

	sq_pushbool( pVM, false );
	return 1;
}
// GUIText
_MEMBER_FUNCTION_IMPL(GUIText, constructor)
{
	// Get our GUI
	CGUI * pGUI = g_pClient->GetGUI();

	CEGUI::Window * pWindow = pGUI->CreateGUIStaticText();

	if(!pWindow || SQ_FAILED(sq_setinstance(pVM, pWindow)))
	{
		CLogFile::Printf("Can't create GUIText.");
		sq_pushbool(pVM, false);
		return 1;
	}

	//_SET_RELEASE_HOOK(GUIElement);
	CClientScriptManager * pClientScriptManager = g_pClient->GetClientScriptManager();
	pClientScriptManager->GetGUIManager()->Add(pWindow, pClientScriptManager->GetScriptingManager()->Get(pVM));
	pWindow->setVisible(true);
	pWindow->setProperty("FrameEnabled", "false");
	pWindow->setProperty("BackgroundEnabled", "false");
	pWindow->setFont(pGUI->GetFont("tahoma-bold"));
	pWindow->setProperty("TextColours", "tl:FFFFFFFF tr:FFFFFFFF bl:FFFFFFFF br:FFFFFFFF");
	
	SubscribeGuiEvents(pWindow);

	sq_pushbool(pVM, true);
	return 1;
}
Exemple #4
0
_MEMBER_FUNCTION_IMPL(xml, constructor)
{
    const char * filename;
    sq_getstring(pVM, -1, &filename);

    if(filename)
    {
        CXML * pXML = new CXML();
        String strFileName(filename);
        SharedUtility::RemoveIllegalCharacters(strFileName);
        String strPath(SharedUtility::GetAbsolutePath("files/%s", strFileName.Get()));
        pXML->load(strPath);

        if(!pXML || SQ_FAILED(sq_setinstance(pVM, pXML)))
        {
            CLogFile::Print("Failed to load the xml.");
            SAFE_DELETE(pXML);
            sq_pushbool(pVM, false);
            return 1;
        }

        _SET_RELEASE_HOOK(xml);
        sq_pushbool(pVM, true);
        return 1;
    }

    sq_pushbool(pVM, false);
    return 1;
}
_MEMBER_FUNCTION_IMPL(timer, isActive)
{
	CScriptTimer * pTimer = sq_getinstance<CScriptTimer *>(pVM);

	if(!pTimer)
	{
		CLogFile::Print("Failed to get the timer instance.");
		sq_pushbool(pVM, false);
		return 1;
	}

	if(CScriptTimerManager::GetInstance()->contains(pTimer))
	{
		if(pTimer->IsDead())
		{
			sq_setinstance(pVM, NULL);
			sq_pushbool(pVM, false);
			return 1;
		}

		sq_pushbool(pVM, true);
		return 1;
	}

	sq_pushbool(pVM, false);
	return 1;
}
Exemple #6
0
_MEMBER_FUNCTION_IMPL(timer, constructor)
{
	// Check the param count
	CHECK_PARAMS_MIN("timer", 3);

	//
	if( sq_gettype( pVM, 2 ) != OT_NATIVECLOSURE )
		CHECK_TYPE("timer", 1, 2, OT_CLOSURE);

	// Check the params
	CHECK_TYPE("timer", 2, 3, OT_INTEGER);
	CHECK_TYPE("timer", 3, 4, OT_INTEGER);

	SQInteger iInterval = 0;
	SQInteger iRepeations = 0;

	// Get the params
	sq_getinteger( pVM, 3, &iInterval );
	sq_getinteger( pVM, 4, &iRepeations );

	// Invalid repeations?
	if( iRepeations < -1 || iRepeations == 0 )
	{
		sq_pushbool( pVM, false );
		return 1;
	}

	// Get the timer end function
	SQObjectPtr pFunction = stack_get( pVM, 2 );

	// Create the arguments
	CSquirrelArguments * pArguments = new CSquirrelArguments( pVM, 5 );

	// Get the current script instance
#ifdef _CLIENT
	CSquirrel * pScript = pCore->GetClientScriptingManager()->GetScriptingManager()->Get( pVM );
#else
	CSquirrel * pScript = pCore->GetScriptingManager()->Get( pVM );
#endif

	// Create the timer instance
	CTimer * pTimer = new CTimer( pScript, pFunction, iInterval, iRepeations, pArguments );

	// Did it fail to set the timer instance?
	if( SQ_FAILED( sq_setinstance( pVM, pTimer) ) )
	{
		// Delete the timer
		SAFE_DELETE( pTimer );

		sq_pushbool( pVM, false );
		return 1;
	}

	// Add the timer into the manager
	pCore->GetTimerManager()->push_back( pTimer );

	sq_pushbool( pVM, true );
	return 1;
}
// GUIImage
_MEMBER_FUNCTION_IMPL(GUIImage, constructor)
{
	const char * filename;
	sq_getstring(pVM, -1, &filename);

	// check file size
	/*FILE* pFile = fopen(filename, "rb");
	fseek(pFile, 0L, SEEK_END);
	int len = ftell(pFile);
	if(len == 0) {
		sq_pushbool(pVM, false);
		fclose(pFile);
		return 1;
	}
	fclose(pFile);*/

	// Get our GUI
	CGUI * pGUI = g_pClient->GetGUI();

	String szName = pGUI->GetUniqueName();

	// Try to load the image
	try
	{

		CEGUI::ImagesetManager::getSingleton().createFromImageFile(szName.C_String(), filename, "resources");
		CGUIStaticImage * pImage = pGUI->CreateGUIStaticImage(CEGUI::String(szName.C_String()));
		
		pImage->setProperty("FrameEnabled", "false");
		pImage->setProperty("BackgroundEnabled", "false");
		pImage->setProperty("Image", String("set:%s image:full_image", szName.C_String()).C_String());

		if(!pImage || SQ_FAILED(sq_setinstance(pVM, pImage)))
		{
			CLogFile::Printf("Can't create GUIImage.");
			sq_pushbool(pVM, false);
			return 1;
		}

		//_SET_RELEASE_HOOK(GUIElement);
		CClientScriptManager * pClientScriptManager = g_pClient->GetClientScriptManager();
		pClientScriptManager->GetGUIManager()->Add(pImage, pClientScriptManager->GetScriptingManager()->Get(pVM));

		SubscribeGuiEvents(pImage);

		pImage->setVisible(true);
		sq_pushbool(pVM, true);
		return 1;
	}
	catch(CEGUI::Exception e)
	{
		// Failed to load, might not exist
		CLogFile::Printf("Can't create GUIImage (%s does not exist)", filename);
		sq_pushbool(pVM, false);
		return 1;
	}
}
// Font
_MEMBER_FUNCTION_IMPL(GUIFont, constructor)
{
	if(sq_gettop(pVM) < 2)
	{
		sq_pushbool(pVM, false);
		return 1;
	}

	const char * szFont;
	int iSize = 8;
	bool bScaled = false;

	sq_getstring(pVM, 2, &szFont);
	if(sq_gettop(pVM) >= 3)
	{
		sq_getinteger(pVM, 3, &iSize);
		if(iSize < 3 || iSize > 100)
		{
			sq_pushbool(pVM, false);
			return 1;
		}

		if(sq_gettop(pVM) >= 4)
		{
			SQBool sqb;
			sq_getbool(pVM, 4, &sqb);
			bScaled = sqb != 0;
		}
	}


	CEGUI::Font * pFont = g_pClient->GetGUI()->GetFont(szFont, iSize, bScaled);

	if(!pFont || SQ_FAILED(sq_setinstance(pVM, pFont)))
	{
		CLogFile::Printf("Can't create GUIFont.");
		sq_pushbool(pVM, false);
		return 1;
	}

	sq_pushbool(pVM, true);
	return 1;
}
Exemple #9
0
_MEMBER_FUNCTION_IMPL(xml, constructor)
{
    // Get the filename
    const char * szFileName;
    sq_getstring( pVM, -1, &szFileName );

    // Do we have a valid filename?
    if( szFileName )
    {
        // Generate the path string
        String strPath;
#ifdef _CLIENT
        strPath = pCore->GetClientScriptingManager()->GetScriptingManager()->Get( pVM )->GetPath();
        strPath = SharedUtility::GetFileNameForScriptFile( szFileName, strPath.Get(), pCore->GetHost().Get(), pCore->GetPort() );
#else
        strPath = pCore->GetScriptingManager()->Get( pVM )->GetPath();
        strPath = SharedUtility::GetFileNameForScriptFile( szFileName, strPath.Get() );
#endif

        // Create the XML instance
        CXML * pXML = new CXML( strPath.Get() );

        // Did the XML instance fail to create or set the squirrel instance?
        if( !pXML || SQ_FAILED( sq_setinstance( pVM, pXML ) ) )
        {
            // Delete the xml instance
            if( pXML )
                SAFE_DELETE( pXML );

            //
            sq_pushbool( pVM, false );
            return 1;
        }

        //_SET_RELEASE_HOOK(xml);
        sq_pushbool( pVM, true );
        return 1;
    }

    sq_pushbool( pVM, false );
    return 1;
}
// GUIProgressBar
_MEMBER_FUNCTION_IMPL(GUIProgressBar, constructor)
{
	CEGUI::Window * pWindow = g_pClient->GetGUI()->CreateGUIProgressBar();
	if(!pWindow || SQ_FAILED(sq_setinstance(pVM, pWindow)))
	{
		CLogFile::Printf("Can't create GUIProgressBar.");
		sq_pushbool(pVM, false);
		return 1;
	}

	CClientScriptManager * pClientScriptManager = g_pClient->GetClientScriptManager();
	pClientScriptManager->GetGUIManager()->Add(pWindow, pClientScriptManager->GetScriptingManager()->Get(pVM));
 	pWindow->setVisible(true);
 	pWindow->setProperty("CurrentProgress", "0.0");

	SubscribeGuiEvents(pWindow);

 	sq_pushbool(pVM, true);
	return 1;
}
// GUICheckBox
_MEMBER_FUNCTION_IMPL(GUICheckBox, constructor)
{
	CEGUI::Window * pWindow = g_pClient->GetGUI()->CreateGUICheckBox();
	if(!pWindow || SQ_FAILED(sq_setinstance(pVM, pWindow)))
	{
		CLogFile::Printf("Can't create GUICheckBox.");
		sq_pushbool(pVM, false);
		return 1;
	}

	//_SET_RELEASE_HOOK(GUIElement);
	CClientScriptManager * pClientScriptManager = g_pClient->GetClientScriptManager();
	pClientScriptManager->GetGUIManager()->Add(pWindow, pClientScriptManager->GetScriptingManager()->Get(pVM));
	pWindow->setVisible(true);

	SubscribeGuiEvents(pWindow);
	pWindow->subscribeEvent(CEGUI::Checkbox::EventCheckStateChanged, CEGUI::Event::Subscriber(&OnCheckboxCheckStateChanged));

	sq_pushbool(pVM, true);
	return 1;
}
_MEMBER_FUNCTION_IMPL(timer, constructor)
{
	CHECK_PARAMS_MIN("timer", 3);

	if(sq_gettype(pVM, 2) != OT_NATIVECLOSURE)
		CHECK_TYPE("timer", 1, 2, OT_CLOSURE);

	CHECK_TYPE("timer", 2, 3, OT_INTEGER);
	CHECK_TYPE("timer", 3, 4, OT_INTEGER);

	SQInteger interval = 0;
	SQInteger repeations = 0;
	sq_getinteger(pVM, 3, &interval);
	sq_getinteger(pVM, 4, &repeations);

	// Ensure we have a valid repeations value
	if(repeations < -1 || repeations == 0)
	{
		sq_pushbool(pVM, false);
		return 1;
	}

	SQObjectPtr pFunction;
	pFunction = stack_get(pVM, 2);
	CSquirrelArguments * pArguments = new CSquirrelArguments(pVM, 5);

	CScriptTimer * pTimer = new CScriptTimer(CScriptingManager::GetInstance()->Get(pVM), pFunction, interval, repeations, pArguments);

	if(SQ_FAILED(sq_setinstance(pVM, pTimer)))
	{
		delete pTimer;
		delete pArguments;
		sq_pushbool(pVM, false);
		return 1;
	}

	CScriptTimerManager::GetInstance()->push_back(pTimer);
	sq_pushbool(pVM, true);
	return 1;
}