Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     void CreateOptionsMenu()
  2.     {
  3.         //resolution
  4.         //fullscreen
  5.         //sound volume
  6.         //music volume
  7.         //Main Menu button
  8.         GuiHelper gh;
  9.         gh.base.x_ = GetSubsystem<Graphics>()->GetWidth();
  10.         gh.base.y_ = GetSubsystem<Graphics>()->GetHeight();
  11.         OptionsMenu = GetSubsystem<UI>()->GetRoot()->CreateChild<UIElement>("UIElement");
  12.         OptionsMenu->SetStyleAuto();
  13.         OptionsMenu->SetVisible(false);
  14.  
  15.         Button* backButton = CreateButton("Back", OptionsMenu, 0.5, 0.64, 0.2, 0.05);
  16.         SubscribeToEvent(backButton, E_RELEASED, URHO3D_HANDLER(Game, backButtonHandle));
  17.         ///Screen Resolution
  18.         Text* resText = new Text(context_);
  19.         resText->SetText("Screen Resolution");
  20.         resText->SetStyleAuto();
  21.         resText->SetHorizontalAlignment(HorizontalAlignment::HA_CENTER);
  22.         gh.SetControlSizePos(resText, 0.5, 0.37, 0.2, 0.03, false);
  23.         OptionsMenu->AddChild(resText);
  24.  
  25.         DropDownList* list = new DropDownList(context_);
  26.         unsigned selection = M_MAX_UNSIGNED;
  27.         list->SetSelection(selection);
  28.         list->SetStyleAuto();
  29.         gh.SetControlSizePos(list, 0.5, 0.4, 0.2, 0.025,true);
  30.         list->SetResizePopup(true);
  31.         list->SetName("SR");
  32.         OptionsMenu->AddChild(list);
  33.  
  34.         VideoModes = GetSubsystem<Graphics>()->GetResolutions();
  35.         for (int i = 0; i < VideoModes.Size(); ++i)
  36.         {
  37.             String str = String(VideoModes[i].x_) + " x " + String(VideoModes[i].y_);
  38.             Text * t = new Text(context_);
  39.             t->SetText(str);
  40.             t->SetHorizontalAlignment(HorizontalAlignment::HA_CENTER);
  41.             t->SetStyle("ConsoleText");
  42.             list->AddItem(t);
  43.         }
  44.         ///Fullscreen
  45.         Text* fsText = new Text(context_);
  46.         fsText->SetText("Fullscreen");
  47.         fsText->SetStyleAuto();
  48.         fsText->SetHorizontalAlignment(HorizontalAlignment::HA_RIGHT);
  49.         gh.SetControlSizePos(fsText, 0.5, 0.44, 0.2, 0.03, false);
  50.         OptionsMenu->AddChild(fsText);
  51.  
  52.         CheckBox* fsBox = new CheckBox(context_);
  53.         fsBox->SetStyleAuto();
  54.         fsBox->SetName("FS");
  55.         gh.SetControlSizePos(fsBox, 0.4, 0.44, 0.2, 0.03, false);
  56.         OptionsMenu->AddChild(fsBox);
  57.         SubscribeToEvent(fsBox, E_CLICK, URHO3D_HANDLER(Game, fsHandle));
  58.  
  59.         ///sound
  60.         Text* st = new Text(context_);
  61.         st->SetText("Sound Volume");
  62.         st->SetStyleAuto();
  63.         st->SetHorizontalAlignment(HorizontalAlignment::HA_CENTER);
  64.         gh.SetControlSizePos(st, 0.5, 0.48, 0.2, 0.03, false);
  65.         OptionsMenu->AddChild(st);
  66.  
  67.         Slider* sound = new Slider(context_);
  68.         gh.SetControlSizePos(sound, 0.5, 0.52, 0.2, 0.03, true);
  69.         sound->SetName("sound");
  70.         sound->SetStyleAuto();
  71.         sound->SetRange(10);
  72.         sound->SetMinWidth(sound->GetWidth());
  73.         OptionsMenu->AddChild(sound);
  74.         //slider->SetValue(audio->GetMasterGain(SOUND_EFFECT));
  75.         //SubscribeToEvent(slider, E_SLIDERCHANGED, URHO3D_HANDLER(SoundEffects, HandleSoundVolume));
  76.         ///music
  77.         Text* mt = new Text(context_);
  78.         mt->SetText("Music Volume");
  79.         mt->SetStyleAuto();
  80.         mt->SetHorizontalAlignment(HorizontalAlignment::HA_CENTER);
  81.         gh.SetControlSizePos(mt, 0.5, 0.56, 0.2, 0.03, false);
  82.         OptionsMenu->AddChild(mt);
  83.  
  84.         Slider* music = new Slider(context_);
  85.         gh.SetControlSizePos(music, 0.5, 0.60, 0.2, 0.03, true);
  86.         music->SetName("music");
  87.         music->SetStyleAuto();
  88.         music->SetRange(10);
  89.         music->SetMinWidth(music->GetWidth());
  90.         OptionsMenu->AddChild(music);
  91.  
  92.         OptionsMenu->Remove();
  93.         OptionsMenu->SetVisible(true);
  94.  
  95.     }
  96. struct  GuiHelper
  97. {
  98.     IntVector2 base;
  99.     IntVector2 AbsoluteFromRelative(float x, float y)
  100.     {
  101.         return IntVector2(base.x_ * x, base.y_*y);
  102.     }
  103.  
  104.     void SetControlSizePos(UIElement* ui, float pos_x, float pos_y, float size_x, float size_y, bool halfSizeOffset)
  105.     {
  106.         ui->SetWidth(base.x_ * size_x);
  107.         ui->SetHeight(base.y_ * size_y);
  108.         float half = 0;
  109.         if(halfSizeOffset)
  110.             half = ui->GetWidth() / 2;
  111.         ui->SetPosition((base.x_* pos_x)- half, base.y_ * pos_y);
  112.     }
  113. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement