mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	A patch from O01eg: http://forum.vcmi.eu/viewtopic.php?p=9313#9313
This commit is contained in:
		| @@ -562,7 +562,7 @@ void CGPreGame::removeFromGui() | ||||
| 	GH.popInt(GH.topInt()); //remove background | ||||
| } | ||||
|  | ||||
| CSelectionScreen::CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMultiMode MultiPlayer /*= CMenuScreen::SINGLE_PLAYER*/, const std::map<ui8, std::string> *Names /*= NULL*/) | ||||
| CSelectionScreen::CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMultiMode MultiPlayer /*= CMenuScreen::SINGLE_PLAYER*/, const std::map<ui8, std::string> * Names /*= NULL*/, const std::string & Address /*=""*/, const std::string & Port /*= ""*/) | ||||
| 	: ISelectionScreenInfo(Names), serverHandlingThread(NULL), mx(new boost::recursive_mutex), | ||||
| 	  serv(NULL), ongoingClosing(false), myNameID(255) | ||||
| { | ||||
| @@ -711,7 +711,7 @@ CSelectionScreen::CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMulti | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			serv = CServerHandler::justConnectToServer(); | ||||
| 			serv = CServerHandler::justConnectToServer(Address, Port); | ||||
| 		} | ||||
|  | ||||
| 		serv->enterPregameConnectionMode(); | ||||
| @@ -3086,8 +3086,7 @@ void CMultiMode::joinTCP() | ||||
| { | ||||
| 	Settings name = settings.write["general"]["playerName"]; | ||||
| 	name->String() = txt->text; | ||||
| 	GH.popIntTotally(this); | ||||
| 	GH.pushInt(new CSelectionScreen(CMenuScreen::newGame, CMenuScreen::MULTI_NETWORK_GUEST)); | ||||
| 	GH.pushInt(new CSimpleJoinScreen);	 | ||||
| } | ||||
|  | ||||
| CHotSeatPlayers::CHotSeatPlayers(const std::string &firstPlayer) | ||||
| @@ -4153,3 +4152,43 @@ void CPrologEpilogVideo::clickLeft( tribool down, bool previousState ) | ||||
| 	GH.popInt(this); | ||||
| 	exitCb(); | ||||
| } | ||||
|  | ||||
| CSimpleJoinScreen::CSimpleJoinScreen() | ||||
| { | ||||
| 	OBJ_CONSTRUCTION_CAPTURING_ALL; | ||||
| 	bg = new CPicture("MUDIALOG.bmp"); // address background | ||||
| 	pos = bg->center(); //center, window has size of bg graphic (x,y = 396,278 w=232 h=212) | ||||
|  | ||||
| 	Rect boxRect(20, 20, 205, 50); | ||||
| 	title = new CTextBox("Enter address:", boxRect, 0, FONT_BIG, CENTER, Colors::WHITE); | ||||
|  | ||||
| 	address = new CTextInput(Rect(25, 68, 175, 16), *bg); | ||||
| 	address->cb += boost::bind(&CSimpleJoinScreen::onChange, this, _1); | ||||
|  | ||||
| 	port = new CTextInput(Rect(25, 115, 175, 16), *bg); | ||||
| 	port->cb += boost::bind(&CSimpleJoinScreen::onChange, this, _1); | ||||
| 	port->filters.add(boost::bind(&CTextInput::numberFilter, _1, _2, 0, 65535)); | ||||
|  | ||||
| 	ok = new CAdventureMapButton(CGI->generaltexth->zelp[560], bind(&CSimpleJoinScreen::enterSelectionScreen, this), 26, 142, "MUBCHCK.DEF", SDLK_RETURN); | ||||
| 	cancel = new CAdventureMapButton(CGI->generaltexth->zelp[561], bind(&CGuiHandler::popIntTotally, ref(GH), this), 142, 142, "MUBCANC.DEF", SDLK_ESCAPE); | ||||
| 	bar = new CGStatusBar(new CPicture(Rect(7, 186, 218, 18), 0)); | ||||
|  | ||||
| 	port->setTxt(boost::lexical_cast<std::string>(settings["server"]["port"].Float()), true); | ||||
| 	address->setTxt(settings["server"]["server"].String(), true); | ||||
| 	address->giveFocus(); | ||||
| } | ||||
|  | ||||
| void CSimpleJoinScreen::enterSelectionScreen() | ||||
| { | ||||
| 	std::string textAddress = address->text; | ||||
| 	std::string textPort = port->text; | ||||
|  | ||||
| 	GH.popIntTotally(this); | ||||
| 	GH.pushInt(new CSelectionScreen(CMenuScreen::newGame, CMenuScreen::MULTI_NETWORK_GUEST, NULL, textAddress, textPort)); | ||||
| } | ||||
|  | ||||
| void CSimpleJoinScreen::onChange(const std::string & newText) | ||||
| { | ||||
| 	ok->block(address->text.empty() || port->text.empty()); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -359,7 +359,7 @@ public: | ||||
| 	bool ongoingClosing; | ||||
| 	ui8 myNameID; //used when networking - otherwise all player are "mine" | ||||
|  | ||||
| 	CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMultiMode MultiPlayer = CMenuScreen::SINGLE_PLAYER, const std::map<ui8, std::string> *Names = NULL); | ||||
| 	CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMultiMode MultiPlayer = CMenuScreen::SINGLE_PLAYER, const std::map<ui8, std::string> * Names = NULL, const std::string & Address = "", const std::string & Port = ""); | ||||
| 	~CSelectionScreen(); | ||||
| 	void toggleTab(CIntObject *tab); | ||||
| 	void changeSelection(const CMapInfo *to); | ||||
| @@ -606,5 +606,21 @@ public: | ||||
| 	void showAll(SDL_Surface *to); | ||||
| }; | ||||
|  | ||||
| /// Simple window to enter the server's address. | ||||
| class CSimpleJoinScreen : public CIntObject | ||||
| { | ||||
| 	CPicture * bg; | ||||
| 	CTextBox * title; | ||||
| 	CAdventureMapButton * ok, * cancel; | ||||
| 	CGStatusBar * bar; | ||||
| 	CTextInput * address; | ||||
| 	CTextInput * port; | ||||
|  | ||||
| 	void enterSelectionScreen(); | ||||
| 	void onChange(const std::string & newText); | ||||
| public: | ||||
| 	CSimpleJoinScreen(); | ||||
| }; | ||||
|  | ||||
| extern ISelectionScreenInfo *SEL; | ||||
| extern CGPreGame *CGP; | ||||
|   | ||||
| @@ -50,7 +50,7 @@ VCMI supports resolutions higher than original 800x600. Namely these are: | ||||
| Switching resolution may not only change visible area of map, but also alters some interface features such as \hyperref[Stack_Queue]{Stack Queue.}\\ | ||||
| To change resolution or full screen mode use System Options menu when in game. Changes in resolution will take place when you restart VCMI. \\ | ||||
| Fullscreen mode can be toggled anytime using F4 hotkey. | ||||
| \end{itemize} | ||||
| %\end{itemize} | ||||
| \label{Mods} | ||||
| \subsection{Game modification} | ||||
| Since 0.9, there is a possibility to edit gameplay settings with config file. You may turn some options on/off or adjust certain values in \texttt{config/defaultMods.json} file. This file is read at game launch and the settings are stored in savegame file, so editing config won't break existing games.\\ | ||||
| @@ -149,7 +149,7 @@ Following cheat codes have been implemented in VCMI. Type them in console: | ||||
| \item \texttt{vcmiforgeofnoldorking} - Hero gets all artifacts except spell book, spell scrolls and war machines | ||||
| \end{itemize} | ||||
| \subsection{Command line} | ||||
| It is possible to save a starting configuration (such as map and options) in pregame by typing \"\texttt{sinfo} filename\". Then VCMI can be started with option \texttt{-i --start=fname} and it will automatically start the game.\\ | ||||
| It is possible to save a starting configuration (such as map and options) in pregame by typing "\texttt{sinfo} filename". Then VCMI can be started with option \texttt{-i --start=fname} and it will automatically start the game.\\ | ||||
| \texttt{--onlyAI} command line option allows to run AI-on-AI game (without GUI). Also, typing \texttt{onlyai} in pregame triggers that mode. | ||||
| \newpage | ||||
| \section{Release notes} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user