Esempio n. 1
0
GUI_Multiplayer::GUI_Multiplayer() :
	  clients(0)
	, lineheight(16)
	, msgwin(0)
{
	setSingleton(this);
	
	// allocate some buffers
	clients = (client_t *)calloc(MAX_PEERS,sizeof(client_t));
	

	// tooltip window
	tooltipPanel = MyGUI::Gui::getInstance().createWidget<MyGUI::Widget>("PanelSkin", 0, 0, 200, 20,  MyGUI::Align::Default, "ToolTip");
	tooltipText = tooltipPanel->createWidget<MyGUI::TextBox>("TextBox", 4, 2, 200, 16,  MyGUI::Align::Default);
	tooltipText->setFontName("VeraMono");
	//tooltipPanel->setAlpha(0.9f);
	tooltipText->setFontHeight(16);
	tooltipPanel->setVisible(false);
	
	// message window
	msgwin = MyGUI::Gui::getInstance().createWidget<MyGUI::Window>("WindowCSX", 0, 0, 400, 300,  MyGUI::Align::Center, "Overlapped");
	msgwin->setCaption(_L("Player Information"));
	msgtext = msgwin->createWidget<MyGUI::Edit>("EditStretch", 0, 0, 400, 300,  MyGUI::Align::Default, "helptext");
	msgtext->setCaption("");
	msgtext->setEditWordWrap(true);
	msgtext->setEditStatic(true);
	msgwin->setVisible(false);


	// network quality warning
	netmsgwin = MyGUI::Gui::getInstance().createWidget<MyGUI::Window>("FlowContainer", 5, 30, 300, 40,  MyGUI::Align::Default, "Main");
	netmsgwin->setAlpha(0.8f);
	MyGUI::ImageBox *nimg = netmsgwin->createWidget<MyGUI::ImageBox>("ImageBox", 0, 0, 16, 16,  MyGUI::Align::Default, "Main");
	nimg->setImageTexture("error.png");
	netmsgtext = netmsgwin->createWidget<MyGUI::TextBox>("TextBox", 18, 2, 300, 40,  MyGUI::Align::Default, "helptext");
	netmsgtext->setCaption(_L("Slow  Network  Download"));
	netmsgtext->setFontName("DefaultBig");
	netmsgtext->setTextColour(MyGUI::Colour::Red);
	netmsgtext->setFontHeight(lineheight);
	netmsgwin->setVisible(false);


	// now the main GUI
	MyGUI::IntSize gui_area = MyGUI::RenderManager::getInstance().getViewSize();
	int x=gui_area.width - 300, y=30;

	MyGUI::ImageBox *ib = MyGUI::Gui::getInstance().createWidget<MyGUI::ImageBox>("ImageBox", x, y, sidebarWidth, gui_area.height,  MyGUI::Align::Default, "Main");
	ib->setImageTexture("mpbg.png");

	mpPanel = ib; //->createWidget<MyGUI::Widget>("FlowContainer", x, y, sidebarWidth, gui_area.height,  MyGUI::Align::Default, "Main");
	mpPanel->setVisible(true);

	y=5;
	UTFString tmp;
	for (int i = 0; i < MAX_PEERS + 1; i++) // plus 1 for local entry
	{
		x=100; // space for icons
		player_row_t *row = &player_rows[i];
		row->playername = mpPanel->createWidget<MyGUI::TextBox>("TextBox", x, y+1, sidebarWidth, lineheight,  MyGUI::Align::Default, "Main");
		row->playername->setCaption("Player " + TOSTRING(i));
		row->playername->setFontName("DefaultBig");
		tmp = _L("user name");
		row->playername->setUserString("tooltip", tmp.asUTF8());
		row->playername->eventToolTip += MyGUI::newDelegate(this, &GUI_Multiplayer::openToolTip);
		row->playername->setNeedToolTip(true);
		row->playername->setVisible(false);
		row->playername->setFontHeight(lineheight);
		row->playername->setAlpha(1);

		x -= 18;
		row->flagimg = mpPanel->createWidget<MyGUI::ImageBox>("ImageBox", x, y + 3, 16, 11,  MyGUI::Align::Default, "Main");
		tmp = _L("user country");
		row->flagimg->setUserString("tooltip", tmp.asUTF8());
		row->flagimg->eventToolTip += MyGUI::newDelegate(this, &GUI_Multiplayer::openToolTip);
		row->flagimg->setNeedToolTip(true);
		row->flagimg->setVisible(false);

		x -= 18;
		row->statimg = mpPanel->createWidget<MyGUI::ImageBox>("ImageBox", x, y, 16, 16,  MyGUI::Align::Default, "Main");
		tmp = _L("user authentication level");
		row->statimg->setUserString("tooltip", tmp.asUTF8());
		row->statimg->eventToolTip += MyGUI::newDelegate(this, &GUI_Multiplayer::openToolTip);
		row->statimg->setNeedToolTip(true);
		row->statimg->setVisible(false);

		x -= 18;
		row->userTruckOKImg = mpPanel->createWidget<MyGUI::ImageBox>("ImageBox", x, y, 16, 16,  MyGUI::Align::Default, "Main");
		tmp = _L("truck loading state");
		row->userTruckOKImg->setUserString("tooltip", tmp.asUTF8());
		row->userTruckOKImg->eventToolTip += MyGUI::newDelegate(this, &GUI_Multiplayer::openToolTip);
		row->userTruckOKImg->setNeedToolTip(true);
		row->userTruckOKImg->setVisible(false);
		row->userTruckOKImg->eventMouseButtonClick += MyGUI::newDelegate(this, &GUI_Multiplayer::clickInfoIcon);

		x -= 18;
		row->userTruckOKRemoteImg = mpPanel->createWidget<MyGUI::ImageBox>("ImageBox", x, y, 16, 16,  MyGUI::Align::Default, "Main");
		tmp = _L("remote truck loading state");
		row->userTruckOKRemoteImg->setUserString("tooltip", tmp.asUTF8());
		row->userTruckOKRemoteImg->eventToolTip += MyGUI::newDelegate(this, &GUI_Multiplayer::openToolTip);
		row->userTruckOKRemoteImg->setNeedToolTip(true);
		row->userTruckOKRemoteImg->setVisible(false);
		row->userTruckOKRemoteImg->eventMouseButtonClick += MyGUI::newDelegate(this, &GUI_Multiplayer::clickInfoIcon);
		
		x -= 18;
		row->usergoimg = mpPanel->createWidget<MyGUI::ImageBox>("ImageBox", x, y, 16, 16,  MyGUI::Align::Default, "Main");
		row->usergoimg->setUserString("num", TOSTRING(i));
		tmp = _L("go to user");
		row->usergoimg->setUserString("tooltip", tmp.asUTF8());
		row->usergoimg->setImageTexture("user_go.png");
		row->usergoimg->eventToolTip += MyGUI::newDelegate(this, &GUI_Multiplayer::openToolTip);
		row->usergoimg->setNeedToolTip(true);
		row->usergoimg->setVisible(false);
		row->usergoimg->eventMouseButtonClick += MyGUI::newDelegate(this, &GUI_Multiplayer::clickUserGoIcon);

		/*
		img = MyGUI::Gui::getInstance().createWidget<MyGUI::ImageBox>("ImageBox", x-36, y, 16, 16,  MyGUI::Align::Default, "Overlapped");
		img->setImageTexture("information.png");
		img->eventMouseButtonClick += MyGUI::newDelegate(this, &GUI_Multiplayer::clickInfoIcon);
		img->eventToolTip += MyGUI::newDelegate(this, &GUI_Multiplayer::openToolTip);
		img->setNeedToolTip(true);
		img->setUserString("info", TOSTRING(i));
		img->setUserString("tooltip", _L("information about the user"));
		*/

		y += lineheight;
	}
}
Esempio n. 2
0
void GUI_Multiplayer::updateSlot(player_row_t *row, user_info_t *c, bool self)
{
	if (!row || !c) return;

	int x = 100;
	int y = row->playername->getPosition().top;
	// name
	row->playername->setCaption(c->username);
	ColourValue col = PlayerColours::getSingleton().getColour(c->colournum);
	row->playername->setTextColour(MyGUI::Colour(col.r, col.g, col.b, col.a));
	row->playername->setVisible(true);
	x -= 18;
	
	// flag
	StringVector parts = StringUtil::split(String(c->language), "_");
	if (parts.size() == 2)
	{
		String lang = parts[1];
		StringUtil::toLowerCase(lang);
		row->flagimg->setImageTexture(lang + ".png");
		row->flagimg->setUserString("tooltip", _L("user language: ") + parts[0] + _L(" user country: ") + parts[1]);
		row->flagimg->setVisible(true);
		row->flagimg->setPosition(x, y);
		x -= 18;
	} else
	{
		row->flagimg->setVisible(false);
	}
	
	UTFString tmp;
	// auth
	if (c->authstatus == AUTH_NONE)
	{
		row->statimg->setVisible(false);
	} else if (c->authstatus & AUTH_ADMIN)
	{
		row->statimg->setVisible(true);
		row->statimg->setImageTexture("flag_red.png");
		tmp = _L("Server Administrator");
		row->statimg->setUserString("tooltip", tmp.asUTF8());
		row->statimg->setPosition(x, y);
		x -= 18;
	} else if (c->authstatus & AUTH_MOD)
	{
		row->statimg->setVisible(true);
		row->statimg->setImageTexture("flag_blue.png");
		tmp = _L("Server Moderator");
		row->statimg->setUserString("tooltip", tmp.asUTF8());
		row->statimg->setPosition(x, y);
		x -= 18;
	} else if (c->authstatus & AUTH_RANKED)
	{
		row->statimg->setVisible(true);
		row->statimg->setImageTexture("flag_green.png");
		tmp = _L("ranked user");
		row->statimg->setUserString("tooltip", tmp.asUTF8());
		row->statimg->setPosition(x, y);
		x -= 18;
	}

	// truck ok image
	if (!self)
	{
		row->userTruckOKImg->setVisible(true);
		row->userTruckOKRemoteImg->setVisible(true);
		row->userTruckOKImg->setUserString("uid", TOSTRING(c->uniqueid));
		row->userTruckOKRemoteImg->setUserString("uid", TOSTRING(c->uniqueid));
		row->userTruckOKImg->setPosition(x, y);
		x -= 10;
		row->userTruckOKRemoteImg->setPosition(x, y);
		x -= 10;

		int ok = BeamFactory::getSingleton().checkStreamsOK(c->uniqueid);
		if (ok == 0)
		{
			row->userTruckOKImg->setImageTexture("arrow_down_red.png");
			tmp = _L("Truck loading errors");
			row->userTruckOKImg->setUserString("tooltip", tmp.asUTF8());
		} else if (ok == 1)
		{
			row->userTruckOKImg->setImageTexture("arrow_down.png");
			tmp = _L("Truck loaded correctly, no errors");
			row->userTruckOKImg->setUserString("tooltip", tmp.asUTF8());
		} else if (ok == 2)
		{
			row->userTruckOKImg->setImageTexture("arrow_down_grey.png");
			tmp = _L("no truck loaded");
			row->userTruckOKImg->setUserString("tooltip", tmp.asUTF8());
		}

		int rok = BeamFactory::getSingleton().checkStreamsRemoteOK(c->uniqueid);
		if (rok == 0)
		{
			row->userTruckOKRemoteImg->setImageTexture("arrow_up_red.png");
			tmp = _L("Remote Truck loading errors");
			row->userTruckOKRemoteImg->setUserString("tooltip", tmp.asUTF8());
		} else if (rok == 1)
		{
			row->userTruckOKRemoteImg->setImageTexture("arrow_up.png");
			tmp = _L("Remote Truck loaded correctly, no errors");
			row->userTruckOKRemoteImg->setUserString("tooltip", tmp.asUTF8());
		} else if (rok == 2)
		{
			row->userTruckOKRemoteImg->setImageTexture("arrow_up_grey.png");
			tmp = _L("No Trucks loaded");
			row->userTruckOKRemoteImg->setUserString("tooltip", tmp.asUTF8());
		}
	} else
	{
		row->userTruckOKImg->setVisible(false);
		row->userTruckOKRemoteImg->setVisible(false);
	}
	
	// user go img
	row->usergoimg->setVisible(false);
}