Fixed MN_STRINGSELECT menu item a bit more and hooked up aspect ration
authorIngo Ruhnke <grumbel@gmx.de>
Tue, 6 May 2008 13:32:47 +0000 (13:32 +0000)
committerIngo Ruhnke <grumbel@gmx.de>
Tue, 6 May 2008 13:32:47 +0000 (13:32 +0000)
SVN-Revision: 5425

src/gui/menu.cpp
src/options_menu.cpp

index 31ee3fb..c8ee876 100644 (file)
@@ -474,6 +474,8 @@ Menu::update()
           items[active_item]->selected--;
         else
           items[active_item]->selected = items[active_item]->list.size()-1;
+        
+        menu_action(items[active_item]);
       }
       break;
 
@@ -483,6 +485,8 @@ Menu::update()
           items[active_item]->selected++;
         else
           items[active_item]->selected = 0;
+        
+        menu_action(items[active_item]);
       }
       break;
 
@@ -507,6 +511,15 @@ Menu::update()
           menu_action(items[active_item]);
           break;
 
+        case MN_STRINGSELECT:
+          if(items[active_item]->selected+1 < items[active_item]->list.size())
+              items[active_item]->selected++;
+          else
+            items[active_item]->selected = 0;
+
+          menu_action(items[active_item]);
+          break;
+
         case MN_TEXTFIELD:
         case MN_NUMFIELD:
           menuaction = MENU_ACTION_DOWN;
index 7502ce5..1bd8e70 100644 (file)
@@ -32,6 +32,7 @@ Menu* options_menu   = 0;
 
 enum OptionsMenuIDs {
   MNID_FULLSCREEN,
+  MNID_ASPECTRATIO,
   MNID_SOUND,
   MNID_MUSIC
 };
@@ -122,8 +123,12 @@ OptionsMenu::OptionsMenu()
   add_toggle(MNID_FULLSCREEN,_("Fullscreen"), config->use_fullscreen)
     ->set_help(_("Let the game cover the whole screen"));
 
-  add_toggle(MNID_SOUND, _("Aspect Ration"), config->sound_enabled)
-    ->set_help(_("Change the aspect ratio"));
+  MenuItem* aspect = add_string_select(MNID_ASPECTRATIO, _("Aspect Ration"));
+  aspect->set_help(_("Adjust the aspect ratio"));
+  aspect->list.push_back("16:9");
+  aspect->list.push_back("16:10");
+  aspect->list.push_back("4:3");
+  aspect->list.push_back("5:4");
 
   if (sound_manager->is_audio_enabled()) {
     add_toggle(MNID_SOUND, _("Sound"), config->sound_enabled)
@@ -152,6 +157,32 @@ void
 OptionsMenu::menu_action(MenuItem* item)
 {
   switch (item->id) {
+    case MNID_ASPECTRATIO:
+      { // FIXME: Really crude and ugly here, move to video or so
+        int   aspect_width;
+        int   aspect_height;
+
+        if(sscanf(item->list[item->selected].c_str(), "%d:%d", &aspect_width, &aspect_height) == 2) 
+          {
+            config->aspect_ratio = static_cast<double>(aspect_width) /
+              static_cast<double>(aspect_height);
+
+            if (config->aspect_ratio > 1) {
+              SCREEN_WIDTH  = static_cast<int> (600 * config->aspect_ratio + 0.5);
+              SCREEN_HEIGHT = 600;
+            } else {
+              SCREEN_WIDTH  = 600;
+              SCREEN_HEIGHT = static_cast<int> (600 * 1/config->aspect_ratio + 0.5);
+            }
+
+            glMatrixMode(GL_PROJECTION);
+            glLoadIdentity();
+            glOrtho(0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, -1.0, 1.0);
+            std::cout << __FILE__ << ":" << __LINE__ << ": change aspect ratio to " << item->list[item->selected] << std::endl;
+          }
+      }
+      break;
+
     case MNID_FULLSCREEN:
       if(config->use_fullscreen != options_menu->is_toggled(MNID_FULLSCREEN)) {
         config->use_fullscreen = !config->use_fullscreen;