Esempio n. 1
0
void GameMode::msgBox (const char* mbox, const char* title, glictContainer* focusondismiss)
{
	glictSize s;
	glictMessageBox *mb;
	desktop.AddObject(mb = new glictMessageBox);

	mb->SetCaption(title);
	mb->SetMessage(mbox);

	mb->SetHeight(glictFontNumberOfLines(mbox)*12 + 35 + 10 + 10);
	int size1 = (int)glictFontSize(title, "system");
	int size2 = (int)glictFontSize(mbox, "system");
	mb->SetWidth(MAX(size1, size2) + 10 + 10);
	mb->Focus(NULL);
    #if (GLICT_APIREV >= 85)
	mb->SetTextOffset(10,10);
	#else
	#warning For nicer msgboxes get GLICT APIREV 85+.
	#endif

	mb->GetSize(&s);

	mb->SetPos(glictGlobals.w / 2 - s.w / 2, glictGlobals.h/ 2 - s.h / 2);

	mb->SetOnDismiss(MBOnDismiss);

	mb->SetCustomData(focusondismiss);

}
Esempio n. 2
0
void Popup::addItem(const std::string &txt, Callback_t cb, void* data) {
    Popup::Item* pi = new Popup::Item;
    pi->pnl.SetCustomData(pi);
    pi->txt = txt;
    pi->cb = cb;
    pi->data = data;
    if(txt != "-") {
		pi->pnl.SetCaption(txt);
		pi->pnlSep = NULL;
    }
    else {
    	pi->pnlSep = new glictPanel;
    	pi->pnl.AddObject(pi->pnlSep);
    	pi->pnlSep->SetPos(0, 6);
    	pi->pnlSep->SetHeight(2);
    	pi->pnlSep->SetWidth(114);
    	pi->pnlSep->SetSkin(&g_skin.chk);
    	pi->pnlSep->SetFocusable(false);
    }
    pi->pnl.SetBGActiveness(false);
    pi->pnl.SetHeight(14);
    pi->pnl.SetWidth(114);
    pi->pnl.SetFont("gamefont");
    pi->pnl.SetFocusable(false);
    pi->pnl.SetBGColor(.7, .7, .7, 1.);
    pi->parent = this;
    items.push_back(pi);
    m_list.AddObject(&pi->pnl);

    m_list.SetHeight(14*items.size());
    m_pnl.SetHeight(m_list.GetHeight() + 10);
    m_list.SetWidth(114);

    if (glictFontSize(txt.c_str(), "gamefont")>m_maxw)
    {
        m_maxw = int(glictFontSize(txt.c_str(), "gamefont"));
    }

}
Esempio n. 3
0
void Effect::Render(const position_t *pos, bool overlayed) {
    switch (effecttype) {
        case MAGICEFFECT:
            if (!overlayed) Thing::Render();
            break;
        case TEXT:
            glColor4f(textcolor.r, textcolor.g, textcolor.b, textcolor.a);
            glRotatef(180,1,0,0);
            if (overlayed) glictFontRender(text.c_str(), "system", 16 - glictFontSize(text.c_str(), "system")/2., -64);
            glRotatef(180,1,0,0);
            glColor4f(1., 1., 1., 1.);
            break;
        case ANIMATEDTEXT:
            glColor4f(textcolor.r, textcolor.g, textcolor.b, textcolor.a);
            glRotatef(180,1,0,0);
            if (overlayed) glictFontRender(text.c_str(), "system", 0, -64-animationpercent/3.);
            glRotatef(180,1,0,0);
            glColor4f(1., 1., 1., 1.);
            break;
		case DISTANCESHOT: {

			glTranslatef((distdelta.x*animationpercent/100.  * 32.), -(distdelta.y*animationpercent/100. * 32.), 0);


			position_t p;


			if (distdelta.x < 0) p.x = 0;
			if (distdelta.x == 0) p.x = 1;
			if (distdelta.x > 0) p.x = 2;

			if (distdelta.y < 0) p.y = 0;
			if (distdelta.y == 0) p.y = 1;
			if (distdelta.y > 0) p.y = 2;

			if (overlayed) {
				sprgfx->Render(&p);
				//std::stringstream s;
				//s << (distdelta.x*animationpercent/100.*32.) << " " << (distdelta.y*animationpercent/100.*32.) << " - " << distdelta.x << "x" << distdelta.y << " => " << animationpercent/100.;
				//console.insert(s.str());
				//printf("%s\n", s.str().c_str());

			}


			break;
		}
        default:
            printf("Still don't know how to render this magic effect\n");
    }
}
Esempio n. 4
0
void GM_Debug::msgBox (const char* mbox, const char* title, glictContainer* focusondismiss)
{
	glictSize s;
	glictMessageBox *mb;
	desktop.AddObject(mb = new glictMessageBox);

	mb->SetCaption(title);
	mb->SetMessage(mbox);

	mb->SetHeight(glictFontNumberOfLines(mbox)*12 + 35);
	int size1 = (int)glictFontSize(title, "system");
	int size2 = (int)glictFontSize(mbox, "system");
	mb->SetWidth(MAX(size1, size2));
	mb->Focus(NULL);

	mb->GetSize(&s);

	mb->SetPos(glictGlobals.w / 2 - s.w / 2, glictGlobals.h/ 2 - s.h / 2);

	mb->SetOnDismiss(GM_Debug::MBOnDismiss);

	mb->SetCustomData(focusondismiss);
}
Esempio n. 5
0
GM_MainMenu::GM_MainMenu() {
    DEBUGPRINT(DEBUGPRINT_LEVEL_JUNK, DEBUGPRINT_NORMAL, "Entering main menu\n");

    ONInitThreadSafe(threadsafe);

    SoundSetMusic("music/logon.mp3");

//    SPRLoader("tibia76.spr");
    currentspr = 1;

    #ifdef USEGLUT
	glutSwapBuffers();
	#endif
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    #ifdef USEGLUT
	glutSwapBuffers();
	#endif


    DEBUGPRINT(DEBUGPRINT_LEVEL_JUNK, DEBUGPRINT_NORMAL, "Loading logo and background\n");

    logo = new Texture("logo.bmp");



    if (skin && skin->tmmloaded) {
        bg = new Texture(std::string("skins/" + ::options.skin + "/bg.bmp" ));
        city = NULL;

        desktop.AddObject(&tibia);
        RebuildMainMenu();
    } else {
        bg = NULL;
        city = new Obj3ds("outcastcity.3DS");
        if (!flythrough.load("outcastcity.fly")) {
            DEBUGPRINT(DEBUGPRINT_LEVEL_USEFUL, DEBUGPRINT_WARNING, "Failed to load flythrough file!\n");
        }

        desktop.AddObject(&mainmenu);
        RebuildMainMenu();
    }




    DEBUGPRINT(DEBUGPRINT_LEVEL_JUNK, DEBUGPRINT_NORMAL, "Constructing GLICT UI\n");

    if (skin) {
    	tibia.SetSkin(&skin->tmm);
		tibia.SetWidth(118);
		tibia.SetHeight(170);
		tibia.SetBGColor(.4,.4,.4,1.);
    }

    mainmenu.SetWidth(200);
    mainmenu.SetHeight(232);
    mainmenu.SetCaption("Main Menu");




	desktop.AddObject(&login);
	login.SetWidth(300);
	login.SetHeight(180);
	login.SetCaption("Log in");
	login.AddObject(&pnlLogin);
	pnlLogin.SetCaption("Please enter the username, password and \n"
	                    "server address of the server to connect to.\n"
	                    "\n"
	                    "We advise you not to connect to Cipsoft's\n"
	                    "servers using this client, as this is a \n"
	                    "breach of Tibia Rules.\n"
	                    "REMINDER: Did you read the README?");
	pnlLogin.SetWidth(300);
	pnlLogin.SetPos(0,0);
	pnlLogin.SetHeight(92);
	pnlLogin.SetBGActiveness(false);

    char tmp[512];

	login.AddObject(&pnlLoginProtocol);
	pnlLoginProtocol.SetCaption("Protocol:");
	pnlLoginProtocol.SetPos(0, 5*15);
	pnlLoginProtocol.SetHeight(14);
	pnlLoginProtocol.SetWidth(70);
	pnlLoginProtocol.SetBGActiveness(false);
	login.AddObject(&txtLoginProtocol);
	txtLoginProtocol.SetPos(100, 5*15);
	txtLoginProtocol.SetHeight(14);
	txtLoginProtocol.SetWidth(150);
	dbLoadSetting("protocol", tmp, 510, "760");
    txtLoginProtocol.SetCaption(tmp);

	login.AddObject(&pnlLoginServer);
	pnlLoginServer.SetCaption("Server:");
	pnlLoginServer.SetPos(0, 6*15);
	pnlLoginServer.SetHeight(14);
	pnlLoginServer.SetWidth(70);
	pnlLoginServer.SetBGActiveness(false);
	login.AddObject(&txtLoginServer);
	txtLoginServer.SetPos(100, 6*15);
	txtLoginServer.SetHeight(14);
	txtLoginServer.SetWidth(150);
	dbLoadSetting("server", tmp, 510, "localhost");
	txtLoginServer.SetCaption( tmp );

	login.AddObject(&pnlLoginUsername);
	pnlLoginUsername.SetCaption("Account:");
	pnlLoginUsername.SetPos(0, 7*15);
	pnlLoginUsername.SetHeight(14);
	pnlLoginUsername.SetWidth(70);
	pnlLoginUsername.SetBGActiveness(false);
	login.AddObject(&txtLoginUsername);
	txtLoginUsername.SetPos(100, 7*15);
	txtLoginUsername.SetHeight(14);
	txtLoginUsername.SetWidth(150);
	txtLoginUsername.SetPassProtectCharacter('*');
	dbLoadSetting("username", tmp, 510, "111111");
	txtLoginUsername.SetCaption(tmp);

	login.AddObject(&pnlLoginPassword);
	pnlLoginPassword.SetCaption("Password:"******"password", tmp, 510, "tibia");
	txtLoginPassword.SetCaption(tmp);

	login.AddObject(&btnLoginLogin);
	btnLoginLogin.SetPos(170, 14 + 9*15);
	btnLoginLogin.SetWidth(130);
	btnLoginLogin.SetCaption("Log in");
	btnLoginLogin.SetBGColor(.6,.6,.6,1.);
	btnLoginLogin.SetOnClick(&GM_MainMenu_LoginLogin);
	login.AddObject(&btnLoginCancel);
	btnLoginCancel.SetPos(0, 14 + 9*15);
	btnLoginCancel.SetWidth(130);
	btnLoginCancel.SetCaption("Cancel");
	btnLoginCancel.SetBGColor(.6,.6,.6,1.);
	btnLoginCancel.SetOnClick(&GM_MainMenu_LoginCancel);

	login.SetVisible(false);


	charlist.SetCaption("Logging in...");
	charlist.SetHeight(28);
	charlist.SetWidth(400);
	charlist.SetBGColor(.3,.3,.3,1.);
	charlist.SetVisible(false);

	desktop.AddObject(&characterlist);
	characterlist.SetCaption("Choose a character");
	characterlist.SetVisible(false);

	about.SetCaption("About");
	//about.SetBGColor(.5,.5,.5,1.);
	about.SetOnDismiss(&GM_MainMenu_AboutOnDismiss);
	char abouttext[20000];
	char extensions[20000];
	strcpy(extensions, (char*)glGetString(GL_EXTENSIONS));
	int lenext = strlen(extensions);
	int linelen = 0;
	char outext[20000];
	strcpy(outext,"");
	char outextension[20000];
	DEBUGPRINT(DEBUGPRINT_LEVEL_JUNK, DEBUGPRINT_NORMAL, "Building extension list\n");
	for (int i = 0 ; i < lenext ; ) {
		char extension[1000];

		int j;
		for (j = i; j < lenext && extensions[j]!=' ' ; ++j);

		extensions[j] = 0;
		strcpy(extension, extensions+i);

		linelen += (int)glictFontSize(extension, "system") + (int)glictFontSize(", ", "system");
		if (linelen < 500) {
			if (i==0) {
				sprintf(outextension, "%s", extension);
			} else {
				sprintf(outextension, "%s, %s", outext, extension);
//				linelen += glictFontSize(",  ", "system");
			}
		}
		else {
			sprintf(outextension, "%s\n%s", outext, extension);
			linelen = (int)glictFontSize(extension, "system");
		}
		strcpy(outext, outextension);

		i = j+1;
	}
	sprintf(abouttext, "%s 0.4.3\n\nCopyright (c) 2005-2007 OBJECT Networks.\nAll rights reserved.\n\nThis software comes with no warranty; authors cannot be held responsible\nfor any kind of data, financial or any other kind of loss,\nnor with any breach of copyright at hands of the end users.\n\nGL vendor: %s\nGL renderer: %s\nGL version: %s\nGL extensions:\n%s", APPTITLE, glGetString(GL_VENDOR), glGetString(GL_RENDERER), glGetString(GL_VERSION), outextension);
	about.SetMessage(abouttext);
//    about.SetMessage("oi");
	about.SetHeight(390);
	about.SetWidth(500);

	tos.SetCaption("Terms of Service");
	//about.SetBGColor(.5,.5,.5,1.);
	tos.SetOnDismiss(&GM_MainMenu_ToSOnDismiss);
	char tostext[] = "Terms of usage of the client software is stated in the License Agreement. On \nthe other hand, rights of use of the service are stated here, and by using\nthe service, you also agree to these Terms of Service (\"ToS\" and \"Terms\").\n\nThese Terms are stated here:\n\n"
		"1. OBJECT Networks (\"we\") reserve the right to change this ToS at any time.\n"
		"We shall notify you of each ToS appropriately, upon next login since the\n"
		"change of the ToS.";
	tos.SetMessage(tostext);
	tos.SetHeight(390);
	tos.SetWidth(500);






	desktop.AddObject(&options);
	options.SetVisible(false);
	options.SetCaption("Options");
	options.SetWidth(220);
	options.SetHeight(200);

    options.AddObject(&pnlOptionsRestartWarning);
	pnlOptionsRestartWarning.SetPos(0, 200-16-16);
	pnlOptionsRestartWarning.SetCaption("(*) Won't apply until restart");
	pnlOptionsRestartWarning.SetHeight(16);
	pnlOptionsRestartWarning.SetWidth(220);
	pnlOptionsRestartWarning.SetBGActiveness(false);


    options.AddObject(&pnlOptionsMaptrack);
    pnlOptionsMaptrack.SetPos(0, 20);
    pnlOptionsMaptrack.SetHeight(16);
    pnlOptionsMaptrack.SetWidth(100);
    pnlOptionsMaptrack.SetCaption("Map storing:");
    pnlOptionsMaptrack.SetBGActiveness(false);

    options.AddObject(&btnOptionsMaptrack);
    btnOptionsMaptrack.SetPos(100, 20);
    btnOptionsMaptrack.SetHeight(16);
    btnOptionsMaptrack.SetWidth(16);
    btnOptionsMaptrack.SetOnClick(GM_MainMenu_OptionsCheckbox);
    btnOptionsMaptrack.SetBGColor(.6,.6,.6,1.);

    options.AddObject(&pnlOptionsFullscreen);
    pnlOptionsFullscreen.SetPos(0, 40);
    pnlOptionsFullscreen.SetHeight(16);
    pnlOptionsFullscreen.SetWidth(100);
    pnlOptionsFullscreen.SetCaption("Fullscreen: (*)");
    pnlOptionsFullscreen.SetBGActiveness(false);

    options.AddObject(&btnOptionsFullscreen);
    btnOptionsFullscreen.SetPos(100, 40);
    btnOptionsFullscreen.SetHeight(16);
    btnOptionsFullscreen.SetWidth(16);
    btnOptionsFullscreen.SetOnClick(GM_MainMenu_OptionsCheckbox);
    btnOptionsFullscreen.SetBGColor(.6,.6,.6,1.);

	options.AddObject(&pnlOptionsIntro);
    pnlOptionsIntro.SetPos(0, 60);
    pnlOptionsIntro.SetHeight(16);
    pnlOptionsIntro.SetWidth(100);
    pnlOptionsIntro.SetCaption("Show intro: (*)");
    pnlOptionsIntro.SetBGActiveness(false);

    options.AddObject(&btnOptionsIntro);
    btnOptionsIntro.SetPos(100, 60);
    btnOptionsIntro.SetHeight(16);
    btnOptionsIntro.SetWidth(16);
    btnOptionsIntro.SetOnClick(GM_MainMenu_OptionsCheckbox);
    btnOptionsIntro.SetBGColor(.6,.6,.6,1.);

	options.AddObject(&pnlOptionsOSCursor);
    pnlOptionsOSCursor.SetPos(0, 80);
    pnlOptionsOSCursor.SetHeight(16);
    pnlOptionsOSCursor.SetWidth(100);
	pnlOptionsOSCursor.SetCaption("Use OS cursor:");
    pnlOptionsOSCursor.SetBGActiveness(false);


    options.AddObject(&btnOptionsOSCursor);
    btnOptionsOSCursor.SetPos(100, 80);
    btnOptionsOSCursor.SetHeight(16);
    btnOptionsOSCursor.SetWidth(16);
    btnOptionsOSCursor.SetOnClick(GM_MainMenu_OptionsCheckbox);
    btnOptionsOSCursor.SetBGColor(.6,.6,.6,1.);

	options.AddObject(&pnlOptionsSkin);
    pnlOptionsSkin.SetPos(0, 100);
    pnlOptionsSkin.SetHeight(16);
    pnlOptionsSkin.SetWidth(100);
    pnlOptionsSkin.SetCaption("Skin: ");
    pnlOptionsSkin.SetBGActiveness(false);

    options.AddObject(&txtOptionsSkin);
    txtOptionsSkin.SetPos(100, 100);
    txtOptionsSkin.SetHeight(16);
    txtOptionsSkin.SetWidth(100);
    txtOptionsSkin.SetBGColor(.6,.6,.6,1.);




	options.AddObject(&pnlOptionsSound);
    pnlOptionsSound.SetPos(0, 120);
    pnlOptionsSound.SetHeight(16);
    pnlOptionsSound.SetWidth(100);
	pnlOptionsSound.SetCaption("Play sounds:");
    pnlOptionsSound.SetBGActiveness(false);

    options.AddObject(&btnOptionsSound);
    btnOptionsSound.SetPos(100, 120);
    btnOptionsSound.SetHeight(16);
    btnOptionsSound.SetWidth(16);
    btnOptionsSound.SetOnClick(GM_MainMenu_OptionsCheckbox);
    btnOptionsSound.SetBGColor(.6,.6,.6,1.);

	options.AddObject(&pnlOptionsMinimap);
    pnlOptionsMinimap.SetPos(0, 140);
    pnlOptionsMinimap.SetHeight(16);
    pnlOptionsMinimap.SetWidth(100);
	pnlOptionsMinimap.SetCaption("Minimap:");
    pnlOptionsMinimap.SetBGActiveness(false);

    options.AddObject(&btnOptionsMinimap);
    btnOptionsMinimap.SetPos(100, 140);
    btnOptionsMinimap.SetHeight(16);
    btnOptionsMinimap.SetWidth(16);
    btnOptionsMinimap.SetOnClick(GM_MainMenu_OptionsCheckbox);
    btnOptionsMinimap.SetBGColor(.6,.6,.6,1.);




	options.AddObject(&btnOptionsOk);
	btnOptionsOk.SetPos(220 - 64 - 64 - 5, 200-16);
	btnOptionsOk.SetCaption("Ok");
	btnOptionsOk.SetHeight(16);
	btnOptionsOk.SetWidth(64);
    btnOptionsOk.SetOnClick(GM_MainMenu_OptionsOk);
	btnOptionsOk.SetBGColor(.6,.6,.6,1.);

	options.AddObject(&btnOptionsCancel);
	btnOptionsCancel.SetPos(220 - 64, 200-16);
	btnOptionsCancel.SetCaption("Cancel");
	btnOptionsCancel.SetHeight(16);
	btnOptionsCancel.SetWidth(64);
    btnOptionsCancel.SetOnClick(GM_MainMenu_OptionsCancel);
	btnOptionsCancel.SetBGColor(.6,.6,.6,1.);






	sine_flag_angle = 0.;
	bg_move_angle = 0.;
	fadein = 1.;
	fadeout = 0.;

	aboutIsOpen = false;
	tosIsOpen = false;

	glDisable(GL_DEPTH_TEST);

    glClearColor(0., 0., 0., 0.);
    glColor4f(1., 1., 1., 1.);
    glDisable(GL_LIGHTING);

	DEBUGPRINT(DEBUGPRINT_LEVEL_JUNK, DEBUGPRINT_NORMAL, "Construction of main menu complete\n");
}