@@ -52,6 +52,8 @@ MenuStateOptionsNetwork::MenuStateOptionsNetwork(Program *program,
5252 mainMessageBox(" Options_Network" , " mainMessageBox" ),
5353
5454 labelExternalPort(" Options_Network" , " labelExternalPort" ),
55+ labelServerBindIpLabel(" Options_Network" , " labelServerBindIpLabel" ),
56+ labelServerBindIp(" Options_Network" , " labelServerBindIp" ),
5557 labelServerPortLabel(" Options_Network" , " labelServerPortLabel" ),
5658
5759 labelPublishServerExternalPort(" Options_Network" ,
@@ -91,6 +93,7 @@ MenuStateOptionsNetwork::MenuStateOptionsNetwork(Program *program,
9193 Config &config = Config::getInstance ();
9294 this ->parentUI = parentUI;
9395 this ->console .setOnlyChatMessagesInStoredLines (false );
96+ this ->activeInputLabel = NULL ;
9497
9598 int leftLabelStart = 100 ;
9699 int leftColumnStart = leftLabelStart + 300 ;
@@ -152,8 +155,21 @@ MenuStateOptionsNetwork::MenuStateOptionsNetwork(Program *program,
152155 extPort = " !!! " + extPort + " !!!" ;
153156 }
154157 labelExternalPort.setText (extPort);
158+ currentLine -= lineOffset;
155159
160+ // Server bind IP
161+ labelServerBindIpLabel.init (currentLabelStart, currentLine);
162+ labelServerBindIpLabel.setText (lang.getString (" ServerBindIP" ));
163+
164+ labelServerBindIp.init (currentColumnStart, currentLine);
165+ labelServerBindIp.setText (config.getString (" ServerBindAddress" , " " ));
166+ labelServerBindIp.setFont (CoreData::getInstance ().getMenuFontBig ());
167+ labelServerBindIp.setFont3D (CoreData::getInstance ().getMenuFontBig3D ());
168+ labelServerBindIp.setEditable (true );
169+ labelServerBindIp.setMaxEditWidth (16 );
170+ labelServerBindIp.setMaxEditRenderWidth (200 );
156171 currentLine -= lineOffset;
172+
157173 // server port
158174 labelServerPortLabel.init (currentLabelStart, currentLine);
159175 labelServerPortLabel.setText (lang.getString (" ServerPort" ));
@@ -292,6 +308,7 @@ void MenuStateOptionsNetwork::reloadUI() {
292308 }
293309
294310 labelServerPortLabel.setText (lang.getString (" ServerPort" ));
311+ labelServerBindIpLabel.setText (lang.getString (" ServerBindAddress" ));
295312 labelPublishServerExternalPort.setText (
296313 lang.getString (" PublishServerExternalPort" ));
297314 labelEnableFTP.setText (lang.getString (" EnableFTP" ));
@@ -347,6 +364,9 @@ void MenuStateOptionsNetwork::mouseClick(int x, int y,
347364 }
348365 mainMenu->setState (new MenuStateRoot (program, mainMenu));
349366 return ;
367+ } else if (labelServerBindIp.mouseClick (x, y) &&
368+ (activeInputLabel != &labelServerBindIp)) {
369+ this ->setActiveInputLabel (&labelServerBindIp);
350370 } else if (buttonAudioSection.mouseClick (x, y)) {
351371 soundRenderer.playFx (coreData.getClickSoundA ());
352372 mainMenu->setState (new MenuStateOptionsSound (
@@ -422,35 +442,29 @@ void MenuStateOptionsNetwork::mouseMove(int x, int y, const MouseState *ms) {
422442}
423443
424444// bool MenuStateOptionsNetwork::isInSpecialKeyCaptureEvent() {
425- // return (activeInputLabel != NULL);
426- // }
427- //
428- // void MenuStateOptionsNetwork::keyDown(SDL_KeyboardEvent key) {
429- // if (activeInputLabel != NULL) {
430- // keyDownEditLabel(key, &activeInputLabel);
431- // }
432- // }
445+ // return (activeInputLabel != NULL);
446+ // }
447+
448+ void MenuStateOptionsNetwork::keyDown (SDL_KeyboardEvent key) {
449+ if (activeInputLabel != NULL ) {
450+ keyDownEditLabel (key, &activeInputLabel);
451+ }
452+ }
433453
434454void MenuStateOptionsNetwork::keyPress (SDL_KeyboardEvent c) {
435- // if(activeInputLabel != NULL) {
436- // //printf("[%d]\n",c); fflush(stdout);
437- // if( &labelPlayerName == activeInputLabel ||
438- // &labelTransifexUser == activeInputLabel ||
439- // &labelTransifexPwd == activeInputLabel ||
440- // &labelTransifexI18N == activeInputLabel) {
441- // textInputEditLabel(c, &activeInputLabel);
442- // }
443- // }
444- // else {
445- Config &configKeys = Config::getInstance (
446- std::pair<ConfigType, ConfigType>(cfgMainKeys, cfgUserKeys));
447- if (isKeyPressed (configKeys.getSDLKey (" SaveGUILayout" ), c) == true ) {
448- GraphicComponent::saveAllCustomProperties (containerName);
449- // Lang &lang= Lang::getInstance();
450- // console.addLine(lang.getString("GUILayoutSaved") + " [" + (saved ?
451- // lang.getString("Yes") : lang.getString("No"))+ "]");
455+ if (activeInputLabel != NULL ) {
456+ keyPressEditLabel (c, &activeInputLabel);
457+ } else {
458+ Config &configKeys = Config::getInstance (
459+ std::pair<ConfigType, ConfigType>(cfgMainKeys, cfgUserKeys));
460+ if (isKeyPressed (configKeys.getSDLKey (" SaveGUILayout" ), c) == true ) {
461+ GraphicComponent::saveAllCustomProperties (containerName);
462+ // Lang &lang= Lang::getInstance();
463+ // console.addLine(lang.getString("GUILayoutSaved") + " [" + (saved ?
464+ // lang.getString("Yes") : lang.getString("No"))+ "]");
465+ }
466+ // }
452467 }
453- // }
454468}
455469
456470void MenuStateOptionsNetwork::render () {
@@ -467,6 +481,8 @@ void MenuStateOptionsNetwork::render() {
467481 renderer.renderButton (&buttonMiscSection);
468482 renderer.renderButton (&buttonNetworkSettings);
469483 renderer.renderLabel (&labelServerPortLabel);
484+ renderer.renderLabel (&labelServerBindIpLabel);
485+ renderer.renderLabel (&labelServerBindIp);
470486 renderer.renderLabel (&labelExternalPort);
471487 renderer.renderLabel (&labelPublishServerExternalPort);
472488 renderer.renderListBox (&listBoxServerPort);
@@ -498,10 +514,14 @@ void MenuStateOptionsNetwork::render() {
498514void MenuStateOptionsNetwork::saveConfig () {
499515 Config &config = Config::getInstance ();
500516 Lang &lang = Lang::getInstance ();
501- setActiveInputLable (NULL );
517+ this -> setActiveInputLabel (NULL );
502518
503519 lang.loadGameStrings (config.getString (" Lang" ));
504520
521+ if (labelServerBindIp.getText ().length () >= 0 ) {
522+ config.setString (" ServerBindAddress" , labelServerBindIp.getText ());
523+ }
524+
505525 config.setString (" PortServer" , listBoxServerPort.getSelectedItem ());
506526 config.setInt (" FTPServerPort" , config.getInt (" PortServer" ) + 1 );
507527 config.setBool (" EnableFTPXfer" , checkBoxEnableFTP.getValue ());
@@ -520,7 +540,18 @@ void MenuStateOptionsNetwork::saveConfig() {
520540 console.addLine (lang.getString (" SettingsSaved" ));
521541}
522542
523- void MenuStateOptionsNetwork::setActiveInputLable (GraphicLabel *newLable) {}
543+ bool MenuStateOptionsNetwork::textInput (std::string text) {
544+ if (activeInputLabel != NULL ) {
545+ if (&labelServerBindIp == activeInputLabel) {
546+ return textInputEditLabel (text, &activeInputLabel);
547+ }
548+ }
549+ return false ;
550+ }
551+
552+ void MenuStateOptionsNetwork::setActiveInputLabel (GraphicLabel *newLabel) {
553+ MenuState::setActiveInputLabel (newLabel, &activeInputLabel);
554+ }
524555
525556} // namespace Game
526557} // namespace Glest
0 commit comments