GameplayScreen::GameplayScreen() { //Set up the 3D scene Ogre::SceneManager* mSceneManager = Ogre::Root::getSingletonPtr()->getSceneManager("ApplicationSceneManager"); Ogre::Entity* stageEntity = mSceneManager->createEntity("Stage", "Stage.mesh"); mStageNode = mSceneManager->getRootSceneNode()->createChildSceneNode("StageNode"); mStageNode->attachObject(stageEntity); mStageNode->setPosition(0.0f, -6.0f, -6.5f); //Set up game objects mWhacker = new Whacker(mSceneManager, mSceneManager->getRootSceneNode()); mWhacker->SetMovePlane(Ogre::Vector3(0.0f, 2.0f, 1.0f), Ogre::Vector3(0.0f, -0.5f, -6.5f), 3.8f, 3.0f); float dragonPositions[] = { -3.0f, -2.5f, -7.0f, -1.5f, -2.0f, -8.0f, -1.5f, -3.0f, -6.0f, 0.0f, -2.5f, -7.0f, 1.5f, -2.0f, -8.0f, 1.5f, -3.0f, -6.0f, 3.0f, -2.5f, -7.0f }; mDragons = std::vector<Dragon*>(); for (int i=0; i < 7; i++) { mDragons.push_back(new Dragon(mSceneManager, mSceneManager->getRootSceneNode())); mDragons[i]->SetPosition(Ogre::Vector3(dragonPositions[i*3], dragonPositions[(i*3)+1], dragonPositions[(i*3)+2])); } //Set up game variables timeBetweenPopups = 1.0f; timeSinceLastPopup = 0.0f; score = 0; numPeasants = 200; subtractPopTime = 0.05f; scorePerPopTimeSub = 15; minPopTime = 0.75f; mWhackerMoveScalar = 0.01f; //Lets set up our scoring overlay (Lots of uninteresting code :/ ) //Fonts are loaded due to a resource loading bug in OGRE 1.8 http://www.ogre3d.org/forums/viewtopic.php?f=2&t=63652 Ogre::FontManager::getSingleton().load( "YeOldShire", "General" ); Ogre::FontManager::getSingleton().load( "DejaVuSans", "General" ); //Title overlays Ogre::OverlayManager* overlayMgr = Ogre::OverlayManager::getSingletonPtr(); mOverlay = overlayMgr->create("GameStats"); Ogre::OverlayContainer* newContainer = static_cast<Ogre::OverlayContainer*>(overlayMgr->createOverlayElement("Panel", "StatsTitleContainer")); //Breaks Here newContainer->setMetricsMode(Ogre::GMM_RELATIVE); newContainer->setDimensions(0.4f, 0.15f); newContainer->setPosition(0.5f, 0.75f); newContainer->setHorizontalAlignment(Ogre::GHA_LEFT); Ogre::TextAreaOverlayElement* newElement = static_cast<Ogre::TextAreaOverlayElement*>(overlayMgr->createOverlayElement("TextArea", "ScoreTitleText")); newElement->setCaption("Score"); newElement->setFontName("YeOldShire"); newElement->setColour(Ogre::ColourValue(0.0f, 0.0f, 0.0f, 1.0f)); newElement->setAlignment(Ogre::TextAreaOverlayElement::Right); newElement->setVerticalAlignment(Ogre::GVA_TOP); newElement->setMetricsMode(Ogre::GMM_RELATIVE); newElement->setPosition(0, 0); newElement->setDimensions(0.4f, 0.4f); newElement->setCharHeight(0.028f); newContainer->addChild(newElement); newElement = static_cast<Ogre::TextAreaOverlayElement*>(overlayMgr->createOverlayElement("TextArea", "PeasantsTitleText")); newElement->setCaption("Peasants Left"); newElement->setFontName("YeOldShire"); newElement->setColour(Ogre::ColourValue(0.0f, 0.0f, 0.0f, 1.0f)); newElement->setAlignment(Ogre::TextAreaOverlayElement::Right); newElement->setVerticalAlignment(Ogre::GVA_BOTTOM); newElement->setMetricsMode(Ogre::GMM_RELATIVE); newElement->setPosition(0, 0); newElement->setDimensions(0.4f, 0.4f); newElement->setCharHeight(0.028f); newContainer->addChild(newElement); mOverlay->add2D(newContainer); //Value Overlays newContainer = static_cast<Ogre::OverlayContainer*>(overlayMgr->createOverlayElement("Panel", "StatsValueContainer")); newContainer->setMetricsMode(Ogre::GMM_RELATIVE); newContainer->setDimensions(0.4f, 0.15f); newContainer->setPosition(0.5f, 0.75f); newContainer->setHorizontalAlignment(Ogre::GHA_LEFT); newContainer->setColour(Ogre::ColourValue(1.0f, 1.0f, 1.0f, 0.3f)); newElement = static_cast<Ogre::TextAreaOverlayElement*>(overlayMgr->createOverlayElement("TextArea", "ScoreValueText")); Ogre::String num_str = Ogre::StringConverter::toString(score); newElement->setCaption(":"+num_str); newElement->setFontName("DejaVuSans"); newElement->setColour(Ogre::ColourValue(0.0f, 0.0f, 0.0f, 1.0f)); newElement->setAlignment(Ogre::TextAreaOverlayElement::Left); newElement->setVerticalAlignment(Ogre::GVA_TOP); newElement->setMetricsMode(Ogre::GMM_RELATIVE); newElement->setPosition(0, 0); newElement->setDimensions(0.4f, 0.4f); newElement->setCharHeight(0.045f); mScoreText = newElement; newContainer->addChild(newElement); newElement = static_cast<Ogre::TextAreaOverlayElement*>(overlayMgr->createOverlayElement("TextArea", "PeasantsValueText")); num_str = Ogre::StringConverter::toString(numPeasants); newElement->setCaption(":"+num_str); newElement->setFontName("DejaVuSans"); newElement->setColour(Ogre::ColourValue(0.0f, 0.0f, 0.0f, 1.0f)); newElement->setAlignment(Ogre::TextAreaOverlayElement::Left); newElement->setVerticalAlignment(Ogre::GVA_BOTTOM); newElement->setMetricsMode(Ogre::GMM_RELATIVE); newElement->setPosition(0, 0); newElement->setDimensions(0.4f, 0.4f); newElement->setCharHeight(0.045f); mPeasantText = newElement; newContainer->addChild(newElement); mOverlay->add2D(newContainer); mOverlay->show(); }
//void setAlignment( Alignment a ); void textareaoverlayelement_set_alignment(TextAreaOverlayElementHandle handle, textarea_overlayelement_alignment a) { Ogre::TextAreaOverlayElement* toe = static_cast<Ogre::TextAreaOverlayElement*>(handle); Ogre::TextAreaOverlayElement::Alignment align = llcoi_textarea_alignment_to_ogre_textarea_alignment(a); toe->setAlignment(align); }