void Player::CreateGUI() { UI* ui = GetSubsystem<UI>(); Text* scoreText = ui->GetRoot()->CreateChild<Text>(); scoreText->SetName("Score"); scoreTextName_ = scoreText->GetName(); scoreText->SetText(String(score_)); scoreText->SetFont(masterControl_->cache_->GetResource<Font>("Resources/Fonts/skirmishergrad.ttf"), 32); scoreText->SetColor(Color(0.5f, 0.95f, 1.0f, 0.666f)); scoreText->SetHorizontalAlignment(HA_CENTER); scoreText->SetVerticalAlignment(VA_CENTER); scoreText->SetPosition(0, ui->GetRoot()->GetHeight()/2.5f); //Setup 3D GUI elements guiNode_ = masterControl_->world.scene->CreateChild("GUI3D"); healthBarNode_ = guiNode_->CreateChild("HealthBar"); healthBarNode_->SetPosition(Vector3(0.0f, 1.0f, 21.0f)); healthBarNode_->SetScale(Vector3(health_, 1.0f, 1.0f)); healthBarModel_ = healthBarNode_->CreateComponent<StaticModel>(); healthBarModel_->SetModel(masterControl_->cache_->GetResource<Model>("Resources/Models/Bar.mdl")); healthBarModel_->SetMaterial(masterControl_->cache_->GetTempResource<Material>("Resources/Materials/GreenGlowEnvmap.xml")); shieldBarNode_ = guiNode_->CreateChild("HealthBar"); shieldBarNode_->SetPosition(Vector3(0.0f, 1.0f, 21.0f)); shieldBarNode_->SetScale(Vector3(health_, 0.9f, 0.9f)); shieldBarModel_ = shieldBarNode_->CreateComponent<StaticModel>(); shieldBarModel_->SetModel(masterControl_->cache_->GetResource<Model>("Resources/Models/Bar.mdl")); shieldBarModel_->SetMaterial(masterControl_->cache_->GetResource<Material>("Resources/Materials/BlueGlowEnvmap.xml")); Node* healthBarHolderNode = guiNode_->CreateChild("HealthBarHolder"); healthBarHolderNode->SetPosition(Vector3(0.0f, 1.0f, 21.0f)); StaticModel* healthBarHolderModel = healthBarHolderNode->CreateComponent<StaticModel>(); healthBarHolderModel->SetModel(masterControl_->cache_->GetResource<Model>("Resources/Models/BarHolder.mdl")); healthBarHolderModel->SetMaterial(masterControl_->cache_->GetResource<Material>("Resources/Materials/Metal.xml")); appleCounterRoot_ = guiNode_->CreateChild("AppleCounter"); for (int a = 0; a < 5; a++){ appleCounter_[a] = appleCounterRoot_->CreateChild(); appleCounter_[a]->SetEnabled(false); appleCounter_[a]->SetPosition(Vector3(-(a + 8.0f), 1.0f, 21.0f)); appleCounter_[a]->SetScale(0.333f); StaticModel* apple = appleCounter_[a]->CreateComponent<StaticModel>(); apple->SetModel(masterControl_->cache_->GetResource<Model>("Resources/Models/Apple.mdl")); apple->SetMaterial(masterControl_->cache_->GetTempResource<Material>("Resources/Materials/GoldEnvmap.xml")); } heartCounterRoot_ = guiNode_->CreateChild("HeartCounter"); for (int h = 0; h < 5; h++){ heartCounter_[h] = heartCounterRoot_->CreateChild(); heartCounter_[h]->SetEnabled(false); heartCounter_[h]->SetPosition(Vector3(h + 8.0f, 1.0f, 21.0f)); heartCounter_[h]->SetScale(0.333f); StaticModel* heart = heartCounter_[h]->CreateComponent<StaticModel>(); heart->SetModel(masterControl_->cache_->GetResource<Model>("Resources/Models/Heart.mdl")); heart->SetMaterial(masterControl_->cache_->GetTempResource<Material>("Resources/Materials/RedEnvmap.xml")); } }
void HelloGUI::InitWindow() { // Create the Window and add it to the UI's root node window_ = new Window(context_); uiRoot_->AddChild(window_); // Set Window size and layout settings window_->SetMinSize(384, 192); window_->SetLayout(LM_VERTICAL, 6, IntRect(6, 6, 6, 6)); window_->SetAlignment(HA_CENTER, VA_CENTER); window_->SetName("Window"); // Create Window 'titlebar' container UIElement* titleBar = new UIElement(context_); titleBar->SetMinSize(0, 24); titleBar->SetVerticalAlignment(VA_TOP); titleBar->SetLayoutMode(LM_HORIZONTAL); // Create the Window title Text Text* windowTitle = new Text(context_); windowTitle->SetName("WindowTitle"); windowTitle->SetText("Hello GUI!"); // Create the Window's close button Button* buttonClose = new Button(context_); buttonClose->SetName("CloseButton"); // Add the controls to the title bar titleBar->AddChild(windowTitle); titleBar->AddChild(buttonClose); // Add the title bar to the Window window_->AddChild(titleBar); // Apply styles window_->SetStyleAuto(); windowTitle->SetStyleAuto(); buttonClose->SetStyle("CloseButton"); // Subscribe to buttonClose release (following a 'press') events SubscribeToEvent(buttonClose, E_RELEASED, HANDLER(HelloGUI, HandleClosePressed)); // Subscribe also to all UI mouse clicks just to see where we have clicked SubscribeToEvent(E_UIMOUSECLICK, HANDLER(HelloGUI, HandleControlClicked)); }
void UIDrag::CreateGUI() { ResourceCache* cache = GetSubsystem<ResourceCache>(); UI* ui = GetSubsystem<UI>(); UIElement* root = ui->GetRoot(); // Load the style sheet from xml root->SetDefaultStyle(cache->GetResource<XMLFile>("UI/DefaultStyle.xml")); for (int i=0; i < 10; i++) { Button* b = new Button(context_); root->AddChild(b); // Reference a style from the style sheet loaded earlier: b->SetStyle("Button"); b->SetSize(300, 100); b->SetPosition(IntVector2(50*i, 50*i)); if (i % 2 == 0) b->AddTag("SomeTag"); SubscribeToEvent(b, E_DRAGMOVE, URHO3D_HANDLER(UIDrag, HandleDragMove)); SubscribeToEvent(b, E_DRAGBEGIN, URHO3D_HANDLER(UIDrag, HandleDragBegin)); SubscribeToEvent(b, E_DRAGCANCEL, URHO3D_HANDLER(UIDrag, HandleDragCancel)); SubscribeToEvent(b, E_DRAGEND, URHO3D_HANDLER(UIDrag, HandleDragEnd)); { Text* t = new Text(context_); b->AddChild(t); t->SetStyle("Text"); t->SetHorizontalAlignment(HA_CENTER); t->SetVerticalAlignment(VA_CENTER); t->SetName("Text"); } { Text* t = new Text(context_); b->AddChild(t); t->SetStyle("Text"); t->SetName("Event Touch"); t->SetHorizontalAlignment(HA_CENTER); t->SetVerticalAlignment(VA_BOTTOM); } { Text* t = new Text(context_); b->AddChild(t); t->SetStyle("Text"); t->SetName("Num Touch"); t->SetHorizontalAlignment(HA_CENTER); t->SetVerticalAlignment(VA_TOP); } } for (int i = 0; i < 10; i++) { Text* t = new Text(context_); root->AddChild(t); t->SetStyle("Text"); t->SetName("Touch "+ String(i)); t->SetVisible(false); } }