⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.cpp

📁 本人刚学游戏编程时开发的一个游戏项目《魔幻森林》中的地图编辑器源码
💻 CPP
字号:
#include ".\app.h"

CTerrain* g_pTerrain=NULL;
CTree* g_pTree=NULL;
CApp::CApp(void)
{
	m_bIsShowExit=false;
}

CApp::~CApp(void)
{
}
void CApp::createScene()
{
	//构造对象
	load();   
	//设置环境光
	mSceneMgr->setAmbientLight(ColourValue(1, 1, 1));
	//CEGUI
	setCEGUI();
	//天空盒子
    mSceneMgr->setSkyDome(true , "Examples/CloudySky" , 10 , 8 , 10000 , true);	
    //摄像机结点
    SceneNode* snCamera=mSceneMgr->getRootSceneNode()->createChildSceneNode("playerCamera");
	snCamera->attachObject(mCamera);
    snCamera->translate(100,100,-100);
	
}
void CApp::createFrameListener(void)
{
	m_pListener= new CListener(mSceneMgr ,mWindow, mCamera , mGUIRenderer);
	m_pListener->showDebugOverlay(true);
	mRoot->addFrameListener(m_pListener);
}
void CApp::chooseSceneManager(void)
{
	mSceneMgr=mRoot->createSceneManager("TerrainSceneManager");
}
void CApp::load()
{
	g_pTerrain=new CTerrain(mSceneMgr);
    g_pTree=new CTree(mSceneMgr, g_pTerrain);
}
void CApp::setCEGUI(void)
{
	mGUIRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY, false, 3000, mSceneMgr);

	mGUISystem = new CEGUI::System(mGUIRenderer);

	CEGUI::Logger::getSingleton().setLoggingLevel(CEGUI::Informative);

	CEGUI::SchemeManager::getSingleton().loadScheme((CEGUI::utf8*)"TaharezLookSkin.scheme");

	mGUISystem->setDefaultMouseCursor((CEGUI::utf8*)"TaharezLook", (CEGUI::utf8*)"MouseArrow");

	mGUISystem->setDefaultFont((CEGUI::utf8*)"SimHei-12");

	CEGUI::Window* sheet = CEGUI::WindowManager::getSingleton().loadWindowLayout((CEGUI::utf8*)"mapedtior.layout"); 

	mGUISystem->setGUISheet(sheet);


	CEGUI::Combobox* objectComboBox = (CEGUI::Combobox*)CEGUI::WindowManager::getSingleton().getWindow("OgreGuiDemo/TabCtrl/Page2/ObjectTypeList");

	CEGUI::ListboxTextItem* item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Grass", 0);
	objectComboBox->addItem(item);
	item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Tree", 1);
	objectComboBox->addItem(item);
	item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Flower", 2);
	objectComboBox->addItem(item);
	item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Rock", 3);
	objectComboBox->addItem(item);
	item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Object", 4);
	objectComboBox->addItem(item);
	item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"House", 5);
	objectComboBox->addItem(item);
    setupButtonEvent();
	if(m_bIsShowExit==false)
	{
        CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")->hide();
	}
}


void CApp::setupButtonEvent()
{
	CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton();


	wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/Object1Button")
		->subscribeEvent(CEGUI::PushButton::EventClicked, 
		CEGUI::Event::Subscriber(&CApp::buttonEditor, this));

	wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/File1Button")
		->subscribeEvent(CEGUI::PushButton::EventClicked, 
		CEGUI::Event::Subscriber(&CApp::buttonMenu, this));

	wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")
		->subscribeEvent(
		CEGUI::Combobox::EventListSelectionAccepted, 
		CEGUI::Event::Subscriber(&CApp::buttonSelect, this));
    
	wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/NEWButton")
		->subscribeEvent(
		CEGUI::PushButton::EventClicked, 
		CEGUI::Event::Subscriber(&CApp::buttonSave, this));
    
	wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/LoadButton")
		->subscribeEvent(
		CEGUI::PushButton::EventClicked, 
		CEGUI::Event::Subscriber(&CApp::buttonLoad, this));

	wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/QiectButton")
		->subscribeEvent(
		CEGUI::PushButton::EventClicked, 
		CEGUI::Event::Subscriber(&CApp::buttonExit2, this));

}
bool CApp::buttonStart(const CEGUI::EventArgs& e)
{

	return true;
}
bool CApp::buttonExit(const CEGUI::EventArgs& e)
{
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/YESButton")->show();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/NOButton")->show();

	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/STARTButton")->hide();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/HIGHSCOREButton")->hide();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/OPTONSButton")->hide();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/CREDITSButton")->hide();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/ExitButton")->hide();

	return true;
}
bool CApp::buttonExit2(const CEGUI::EventArgs& e)
{
    m_pListener->exit();

	return true;
}
bool CApp::buttonYesExit(const CEGUI::EventArgs& e)
{
    m_pListener->m_bShutDown=true;
	return true;
}
bool CApp::buttonNOExit(const CEGUI::EventArgs& e)
{
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/YESButton")->hide();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/NOButton")->hide();

	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/STARTButton")->show();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/HIGHSCOREButton")->show();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/OPTONSButton")->show();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/CREDITSButton")->show();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/ExitButton")->show();

	return true;
}
bool CApp::buttonEditor(const CEGUI::EventArgs& e)
{
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/NEWButton")->hide();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/LoadButton")->hide();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/QiectButton")->hide();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")->show();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")->setAlwaysOnTop(true);

	return true;
}
bool CApp::buttonMenu(const CEGUI::EventArgs& e)
{
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")->hide();

	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/NEWButton")->show();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/LoadButton")->show();
	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/QiectButton")->show();

	return true;

}
bool CApp::buttonSave(const CEGUI::EventArgs& e)
{
	m_pListener->saveMap();
	return true;
}
bool CApp::buttonLoad(const CEGUI::EventArgs& e)
{
	m_pListener->loadMap();

	return true;
}
bool CApp::buttonSelect(const CEGUI::EventArgs& e)
{
	/*CEGUI::Window* window = 0;*/
	const CEGUI::WindowEventArgs& windowEventArgs = static_cast<const CEGUI::WindowEventArgs&>(e);
	CEGUI::ListboxItem* item = static_cast<CEGUI::Combobox*>(windowEventArgs.window)->getSelectedItem();
	//选择序号判断
	switch(item->getID())
	{
	case 0:  //草
		m_pListener->selectGrass();
		break;
	case 1:  //树
        m_pListener->selectTree();
		break;
	case 2:  //花
        m_pListener->selectFlower();
		break;
	case 3:  //石头
        m_pListener->selectRock();
		break;
	case 4: //房子
        m_pListener->selectHouse();
		break;
	case 5: //摄像机
        m_pListener->selectCamera();
		break;
	};


	return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -