void FGameplayDebuggerModule::OnWorldInitialized(UWorld* World, const UWorld::InitializationValues IVS)
{
	// make sure that world has valid player manager, create when it doesn't
	if (World && World->IsGameWorld())
	{
		GetPlayerManager(World);
	}
}
Esempio n. 2
0
Player* Controller::GetMyPlayer()
{
	if (m_pMyPlayer == 0)
	{
		m_strMyPlayerID = Game()->GetConfig()->GetRandomID();
		m_pMyPlayer = new Player();
		m_pMyPlayer->init();
		m_pMyPlayer->SetID(m_strMyPlayerID);
		GetPlayerManager()->AddPlayer(m_pMyPlayer);
	}

	return m_pMyPlayer;
}
Esempio n. 3
0
void sv::ObstacleManager::ParseLevel()
{
	char dir[1024];
	char path[15];
	memcpy(path, "../Level/?.lvl", 15 * sizeof(char));
	path[9] = '0' + GetPlayerManager()->GetNumber();
	Engine::Instance()->GetPath(path, dir, sizeof(dir));

	std::ifstream inFile;
	inFile.open(dir);

	bool success = ! inFile.fail();

	if(! success)
	{
		Engine::Instance()->GetPath("../Level/default.lvl", dir, sizeof(dir));
		inFile.open(dir);
		success = ! inFile.fail();
	}

	if(success)
	{
		char lane = 0;
		char step = 0;
		char c = inFile.get();

		char line[LANE_MAX];
		char* level[1024];

		while(inFile.good() && lane < sizeof(level))
		{
			while(c != '\n' && c != '\r' && inFile.good())
			{
				if(step < 16)
					line[step++] = c;
				
				c = inFile.get();
			}

			if(step > 0)
			{
				level[lane] = (char*) malloc(LANE_MAX * sizeof(char));
				memcpy(level[lane], line, LANE_MAX * sizeof(char));

				lane++;
			}
			step = 0;

			c = inFile.get();
		}

		m_LevelSize = lane;
		m_Level = (char**) malloc(lane * sizeof(char*));
		memcpy(m_Level, level, lane * sizeof(char*));

		inFile.close();
	}
	else
	{
		m_LevelSize = 1;
		m_Level = (char**) malloc(1 * sizeof(char*));
		m_Level[0] = (char*) malloc(LANE_MAX * sizeof(char));
		memset(m_Level[0], ' ', LANE_MAX * sizeof(char));
	}
}
Esempio n. 4
0
/************************************************************************
*  游戏主循环
************************************************************************/
void Controller::LoopGame(float delt)
{
	static int StaticTimeInterval = 0.0f;

	

	if(!m_bLoopGame)
	{
		return;
	}

	StaticTimeInterval += delt;

	if(m_bIsNetGame)
	{
		GameProtocol protocol;
		 if (Game()->GetNetworkModule()->TryReadPackage(protocol))
		 {
			 Game()->GetRecvDataLogic()->Process(protocol);
		 }
	}

	if (m_bIsNetGame && StaticTimeInterval > 1.0f)
	{
		GameProtocol protocol;
		//GamePackage_Player* pl = protocol.AddPlayer();
		//GetPlayerManager()->ConvertPlayer2Package(*GetPlayerManager()->GetPlayer(m_strMyPlayerID),*pl);
		//protocol.SetMsgCode(CodeMsg::code_player_send_state);
		//GetNetworkModule()->SendPackage(protocol);
		StaticTimeInterval = 0.0f;
	}

	// 怪物管理器对怪物进行的一些处理
	Game()->GetMonsterManager()->Process(delt);

	// 怪物的AI处理
	Game()->GetMonsterAI()->Process(delt);

	vector<Player*> playerList = GetPlayerManager()->GetPlayerList();

	for (int i = 0 ;i < playerList.size(); ++i)
	{
		Player* player = playerList[i];

		// 玩家死亡
		if (player->GetMsg() == CodeMsg::code_player_die)
		{
			PlayerLogic::GetInstance()->HandlePlayerDie(player);
			continue;;
		}

		// 检测玩家是否在传送门中
		if (CheckPlayerIsInPortal())
		{
			return;
		}

		// 玩家回血
		PlayerLogic::GetInstance()->HandlePlayerBloodChange(player,Game()->GetConfig()->GetPlayerBloodReturnValue());

		// 玩家回魔
		PlayerLogic::GetInstance()->HandlePlayerMagicChange(player,Game()->GetConfig()->GetPlayerMagicReturnValue());

		// 装备管理器对装备进行的一些处理
		Game()->GetEquipmentManager()->Process(delt);

		// 设置当前被选中的怪物(假如有的话)
		SetCurrentSelectedMonster();

		// 主要针对玩家的处理
		PlayerLogic::GetInstance()->PlayerProcess(player,m_pCurrentSelectedMonster);
	}
	
}
Esempio n. 5
0
bool CServer::OnLoad()
{
	// If in debug mode set memory test function
#ifdef NIV_DEBUG
	atexit(MemoryTest);
#endif

	// Open the log file
	CLogFile::Open("Server.log", true);

	// Install our exception handler
	CExceptionHandler::Install();

	CLogFile::Printf("Starting up " SERVER_TITLE "...");

	// Create the config instance
	g_pConfig = new CConfig();

	if(!g_pConfig)
	{
		CLogFile::Printf("Failed to create config instance!");
		return false;
	}

	CLogFile::Printf("Config instance created");

	// Open the config file
	if(!g_pConfig->Open(String("%sServer.conf", SharedUtility::GetAppPath())))
		CLogFile::Printf("Failed to open config file! Settings will default to appropriate values.");
	else
		CLogFile::Printf("Config file opened");

	// Initialize the net module
	if(!CNetworkModule::Init())
	{
		CLogFile::Printf("Failed to initialize the net module!");
		return false;
	}

	CLogFile::Printf("Net module initialized");

	// Create the network manager instance
	m_pNetworkManager = new CNetworkManager();

	if(!m_pNetworkManager)
	{
		CLogFile::Printf("Failed to create network manager instance!");
		return false;
	}

	CLogFile::Printf("Network manager instance created");

	// Create the player manager instance
	m_pPlayerManager = new CPlayerManager();

	if(!GetPlayerManager())
	{
		CLogFile::Printf("Failed to create player manager instance!");
	}

	CLogFile::Printf("Player manager instance created");

	// Create the vehicle manager instance
	m_pVehicleManager = new CVehicleManager();

	if(!m_pVehicleManager)
	{
		CLogFile::Printf("Failed to create vehicle manager instance!");
	}

	CLogFile::Printf("Vehicle manager instance created");

	// Get server port
	int iServerPort = GetConfigInteger("port", 9999);

	// Get show fps
	m_bShowFPS = GetConfigBoolean("showfps", true);

	// Start up the network manager
	m_pNetworkManager->Startup(iServerPort, PLAYER_MAX);

	CLogFile::Printf("Network manager started up");

	// Create the resource and scripting manager
	CEntityIDs::Initalize();
	m_pRootEntity = new CRootEntity();
	g_pRootEntity = m_pRootEntity;
	m_pResourceManager = new CResourceManager("resources/");
	g_pResourceManager = m_pResourceManager;

	// Load resources, get the first resource node
	if(g_pConfig->GetXML()->findNode("resource"))
	{
		while(true)
		{
			// Get the resource name
			String strResource = g_pConfig->GetXML()->nodeContent();

			// Make sure the name is valid and attempt to load the resource
			if(strResource && !strResource.IsEmpty())
				m_pResourceManager->Load(strResource);

			// Attempt to load the next resource node (if any)
			if(!g_pConfig->GetXML()->nextNode())
				break;
		}
	}
	/*TiXmlDocument pDocument("Server.conf");
	if(pDocument.LoadFile())
	{
		TiXmlNode* pNode = pDocument.RootElement()->FirstChild("resource");
		while(pNode)
		{
			String strResource = pNode->ToElement()->GetText();
			
			pNode = pNode->NextSibling("resource");
		}
	}*/

	// Create the server lister instance
	m_pServerLister = new CServerLister(iServerPort);

	// Set the server title
#ifdef WIN32
	SetTitle(SERVER_TITLE);
#endif

	CLogFile::Printf("Server started on port %d", iServerPort);

	/*// Temporary code
	CVehicle * pVehicle = m_pVehicleManager->Add(174);
	pVehicle->SetPosition(CVector3(-341.36f, 1144.80f, 14.79f));
	pVehicle->SetRotation(CVector3(0.0f, 0.0f, 40.114815f));
	pVehicle->SpawnForWorld();*/
	return true;
}