コード例 #1
0
ファイル: LobbyMenu.cpp プロジェクト: EthanShimooka/BAA
int LobbyMenu::checkButtons(){
	InputManager::getInstance()->update();
	for (size_t i = 0; i < classButt.size(); ++i){
		// if pressed 
		if (dynamic_cast<ButtonLogicComponent*>(classButt[i]->GetComponent(COMPONENT_LOGIC))->isButtonPressed()){
			int selection = dynamic_cast<ButtonRenderComponent*>(classButt[i]->GetComponent(COMPONENT_RENDER))->getCurrImage();
			playerSelection(selection);
			selected = selection;
			return i+10;
		}
		// if hovering over show images of the tutorials
		if (dynamic_cast<ButtonLogicComponent*>(classButt[i]->GetComponent(COMPONENT_LOGIC))->isMouseHovering()){
			dynamic_cast<TutorialRenderComponent*>(tutorials[i]->GetComponent(COMPONENT_RENDER))->toggleImage(true);
		}
		else {
			dynamic_cast<TutorialRenderComponent*>(tutorials[i]->GetComponent(COMPONENT_RENDER))->toggleImage(false);
		}
	}
	if (selected != -1 && readyButt && dynamic_cast<ButtonLogicComponent*>(readyButt->GetComponent(COMPONENT_LOGIC))->isButtonPressed()){
		ready = !ready;
		AudioManager* audioMan = AudioManager::getAudioInstance();
		audioMan->playByName("readyupsfx.ogg");
		playerReady(ready);
		return BUTTON_READY;
	}
	if (dynamic_cast<ButtonLogicComponent*>(backButt->GetComponent(COMPONENT_LOGIC))->isButtonPressed()){
		return BUTTON_BACK;
	}
	return BUTTON_NONE;
}
コード例 #2
0
ファイル: MainWindow.cpp プロジェクト: scrime/LiveTuiles
void MainWindow::cbStop(Fl_Widget*) {
    AudioManager* man = AudioManager::getInstance();
    m_playPauseButton->label("@>");
    man->stopTrees();
    m_playPauseButton->value(0);
    m_tuilesTree->redraw();
}
コード例 #3
0
  NS_IMETHODIMP Run() {
    nsCOMPtr<nsIAudioManager> amService = do_GetService(NS_AUDIOMANAGER_CONTRACTID);
    NS_ENSURE_TRUE(amService, NS_OK);
    AudioManager *am = static_cast<AudioManager *>(amService.get());
    for (int loop = 0; loop < AUDIO_STREAM_CNT; loop++) {
      AudioSystem::initStreamVolume(static_cast<audio_stream_type_t>(loop), 0,
                                   sMaxStreamVolumeTbl[loop]);
      int32_t index;
      am->GetStreamVolumeIndex(loop, &index);
      am->SetStreamVolumeIndex(loop, index);
    }

    if (sHeadsetState & AUDIO_DEVICE_OUT_WIRED_HEADSET)
      InternalSetAudioRoutes(SWITCH_STATE_HEADSET);
    else if (sHeadsetState & AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
      InternalSetAudioRoutes(SWITCH_STATE_HEADPHONE);
    else
      InternalSetAudioRoutes(SWITCH_STATE_OFF);

    int32_t phoneState = nsIAudioManager::PHONE_STATE_INVALID;
    am->GetPhoneState(&phoneState);
#if ANDROID_VERSION < 17
    AudioSystem::setPhoneState(phoneState);
#else
    AudioSystem::setPhoneState(static_cast<audio_mode_t>(phoneState));
#endif

    AudioSystem::get_audio_flinger();
    return NS_OK;
  }
コード例 #4
0
ファイル: FakeAudio.cpp プロジェクト: bagobor/FakeWebGL
void FakeAudio::loadAudio()
{
	// this might take some time, we should move this to a bg thread
	buffer = manager.getBuffer(src);
	if (!buffer) {
		buffer = new OpenALBuffer(src);
		manager.setBuffer(buffer, src);
	}
	alGenSources(1, &sourceId);
	alSourcei(sourceId, AL_BUFFER, buffer->getBufferId());
	alSourcei(sourceId, AL_PITCH, 1.0f);
	alSourcei(sourceId, AL_GAIN, 1.0f);
	loaded = true;
	if (autoplay)
		play(NULL, 0, NULL);
	if (loop)
		alSourcei(sourceId, AL_LOOPING, AL_TRUE);
	// get the duration
    ALint bufferID = buffer->getBufferId(),
		bufferSize, frequency, bitsPerSample, channels;
    alGetBufferi(bufferID, AL_SIZE, &bufferSize);
    alGetBufferi(bufferID, AL_FREQUENCY, &frequency);
    alGetBufferi(bufferID, AL_CHANNELS, &channels);
    alGetBufferi(bufferID, AL_BITS, &bitsPerSample);
	
    duration = ((float)bufferSize)/(frequency*channels*(bitsPerSample/8));
}
コード例 #5
0
void PlayerLogicComponent::hatchBird(bool respawn){
	if (isEgg){
		if (respawn && gameObjectRef->isLocal){
			AudioManager* audioMan = AudioManager::getAudioInstance();
			audioMan->playByName("roostersfx.ogg");
		}
		PlayerRenderComponent* renderComp = dynamic_cast<PlayerRenderComponent*>(gameObjectRef->GetComponent(COMPONENT_RENDER));
		//reset sprites
		//for (auto obj : renderComp->allObjs)obj.second->visible = true;
		createParticle(renderComp->allObjs["egg"], 10, gameObjectRef->posX, gameObjectRef->posY);
		renderComp->allObjs["body"]->visible = true;
		renderComp->allObjs["egg"]->visible = false;

		//reset positions
		renderComp->allObjs["base"]->posX = gameObjectRef->posX;
		renderComp->allObjs["base"]->posY = gameObjectRef->posY;
		//reset rotation
		PlayerPhysicsComponent* physicsComp = dynamic_cast<PlayerPhysicsComponent*>(gameObjectRef->GetComponent(COMPONENT_PHYSICS));
		b2Vec2 pos;
		physicsComp->mBody->SetFixedRotation(true);
		pos = physicsComp->mBody->GetPosition();
		gameObjectRef->rotation = 0;
		physicsComp->mBody->SetTransform(pos, 0);
		renderComp->allObjs["base"]->rotation = 0;
		isEgg = false;
	}
}
コード例 #6
0
ファイル: AudioManager.cpp プロジェクト: scrime/LiveTuiles
int jackCallback(jack_nframes_t nbFrames, void *arg) {
    AudioManager* aman = AudioManager::getInstance();
    //progress in the trees
    aman->processTrees(float(nbFrames)*aman->m_procStep);
    //process the buffers
    aman->process(nbFrames);
	return 0;
}
コード例 #7
0
ファイル: FakeAudio.cpp プロジェクト: funkaster/FakeWebGL
// background thread that will check the status of the buffers
static void* _checkBufferStatus(void* args) {
	AudioManager* manager = (AudioManager*)args;
	while (bgThreadAlive) {
		manager->checkBuffers();
		usleep(500); // 500usec -> 0.5ms
	}
	return NULL;
}
コード例 #8
0
void PowerShieldLogicComponent::playShieldCollisionSFX() {
    //Need shield object
    PowerShieldRenderComponent* rendComp = dynamic_cast<PowerShieldRenderComponent*>(gameObjectRef->GetComponent(COMPONENT_RENDER));
    RenderManager* renderMan = RenderManager::getRenderManager();
    if (renderMan->isObjOnScreen(rendComp->objRef)) {
        AudioManager* audioMan = AudioManager::getAudioInstance();
        audioMan->playByName("chickenshieldsfx.ogg");
    }
}
コード例 #9
0
TEST(AudioManager, init)
{
	AudioManager audioMgr;
	audioMgr.startUp();
	EXPECT_TRUE(audioMgr.isSupport());
	
	audioMgr.shutDown();
	EXPECT_FALSE(audioMgr.isSupport());
}
コード例 #10
0
int			recordCallback(	const void *input, void *output,
                            unsigned long,
							const PaStreamCallbackTimeInfo* timeInfo,
							PaStreamCallbackFlags statusFlags,
							void *userData)
{
	AudioManager *dis = (AudioManager*)userData;
	const SAMPLE *in = (const SAMPLE *)input;
	int retenc(0);
	(void) timeInfo;
	(void) statusFlags;
	(void) output;

    //OLD
//        dis->setDataRec(dis->getEnc()->encodeAudio(in, &retenc));
//    dis->setRetencRec(retenc);

    dis->getPool().tryLock(REC_MUTEX);
    //dis->getBufferRec().write(dis->getEnc()->encodeAudio(in, &retenc), retenc);
    unsigned char *tmp = dis->getEnc()->encodeAudio(in, &retenc);

    if (dis->getSizeRec() + retenc < 255*255)
    {
      LibC::memcpy(dis->getStaticBufferRec() + dis->getSizeRec(), tmp, retenc);
         dis->setSizeRec(dis->getSizeRec() + retenc);
    }
    dis->getPool().unLock(REC_MUTEX);

	return paContinue;
}
コード例 #11
0
ファイル: main.cpp プロジェクト: arunganesan/radiosampler
int main () {
  AudioManager * am = new AudioManager();
  am->loadSamples("sampled-repos/car-clean-10.26.2015/");
  am->loadGroundTruth("audio-repos/car-clean-10.26.2015/");
  XCorrIdentifier * xc = new XCorrIdentifier(am);
  xc->doAllMatches();
  int correct = am->evaluate(xc->getMatches());
  cout << "Got " << correct << " out of " << am->getNumSamples() << endl;
  //Identifier identifiers [2] = {XCorrIdentifier(am), RandomIdentifier(am)};
  return 0;
}
コード例 #12
0
ファイル: Test.cpp プロジェクト: Jbtyson/EmawEngine
void test(){
	AudioManager* am = AudioManager::getInstance();

	//Adding music to filename's map
	am->add("1", "FileName1.mp3");
	am->add("2", "FileName2.mp3");

	char c = 0;

	//Testing based on user input
	while (42){
		c = _getch();
		cout << (int)c << endl;
		switch (c){
		case 'c':
		case 'C':
			delete am;
			AudioRenderer::destroy();
			return;
		case 'p':
		case 'P':
			(AudioRenderer::Instance())->pauseMusic();
			break;
		case 's':
		case 'S':
			(AudioRenderer::Instance())->stopMusic();
			break;
		case '1':
			(AudioRenderer::Instance())->loadAndPlayMusic("1", am);
			break;
		case '2':
			(AudioRenderer::Instance())->loadAndPlayMusic("2", am);
			break;
		case 'u':
		case 'U':
			(AudioRenderer::Instance())->musicVolumeUp();
			break;
		case 'd':
		case 'D':
			(AudioRenderer::Instance())->musicVolumeDown();
			break;
		case 'm':
		case 'M':
			(AudioRenderer::Instance())->muteMusic();
			break;
		case 'r':
		case 'R':
			(AudioRenderer::Instance())->musicVolumeReset();
			break;
		default:
			break;
		}
	}
}
コード例 #13
0
ファイル: FakeAudio.cpp プロジェクト: funkaster/FakeWebGL
void FakeAudio::loadAudio()
{
	buffer = manager.getBuffer(src);
	if (!buffer) {
		buffer = new OpenALBuffer(src);
		manager.setBuffer(buffer, src);
	}
	alGenSources(1, &sourceId);
	genSource(sourceId, buffer->getBufferId(), loop);
	loaded = true;
	if (autoplay)
		play(NULL, 0, NULL);
	updateDuration();
}
コード例 #14
0
ファイル: MainWindow.cpp プロジェクト: scrime/LiveTuiles
void MainWindow::togglePlayPause() {
    AudioManager* man = AudioManager::getInstance();
    if(man->isPlaying()) {
		m_playPauseButton->label("@>");
		man->pauseTrees();
        m_playPauseButton->value(0);
    }
    else {
		m_playPauseButton->label("@||");
		man->startTrees();
        m_playPauseButton->value(1);
	}
    m_tuilesTree->redraw();
}
コード例 #15
0
int			playCallback(	const void *input, void *output,
                            unsigned long,
							const PaStreamCallbackTimeInfo* timeInfo,
							PaStreamCallbackFlags statusFlags,
							void *userData)
{
	AudioManager *dis = (AudioManager*)userData;
	SAMPLE	*out = (SAMPLE *)output;
	(void) timeInfo;
	(void) statusFlags;
	(void) input;
    int tmp;

//NEW WAY
    dis->getPool().tryLock(PLAY_MUTEX);
    tmp = dis->getSizePlay();
    dis->setSizePlay(0);
    dis->getPool().unLock(PLAY_MUTEX);

    if (tmp)
        dis->getEnc()->decodeAudio(dis->getStaticBufferPlay(), out, tmp);


    //OLD
    //dis->getEnc()->decodeAudio(dis->getDataPlay(), out, dis->getRetencPlay());
	return paContinue;
}
コード例 #16
0
ファイル: Sound.cpp プロジェクト: Crant/Game_Project
Sound::Sound(int eventId)
{
	AudioManager* am = AudioManager::GetInstance();
	am->GetEventHandle(eventId, this->zEvent);
	this->zCurrentTime = 0;

	switch (eventId)
	{
	case EVENTID_NOTDEADYET_WALK_GRASS:
		this->zMaxTime = 0.5f;
		break;
	case EVENTID_NOTDEADYET_WALK_DIRT:
		this->zMaxTime = 0.5f;
		break;
	default:
		break;
	}
}
コード例 #17
0
ファイル: TreeWidget.cpp プロジェクト: scrime/LiveTuiles
void TreeWidget::updateChildren() {
    m_childrenTuileWidgets.clear();
    //get new children tuile widgets
    AudioManager* man = AudioManager::getInstance();
    vector<Tuile*>::const_iterator itChild=man->getChildren().begin();
    for(; itChild!=man->getChildren().end(); ++itChild) {
        if(m_tuileWidgets.find((*itChild)->getID())!=m_tuileWidgets.end()){
            m_childrenTuileWidgets.push_back(
                                        m_tuileWidgets[(*itChild)->getID()]);
        }
    }
    //update the children of all the tuilewidgets
    map<unsigned int, TuileWidget*>::iterator itWid=m_tuileWidgets.begin();
    for(; itWid!=m_tuileWidgets.end(); ++itWid) {
        itWid->second->updateChildren();
    }
    //print the trees
    man->printTrees();
    //update everything
    notifyUpdate();
}
コード例 #18
0
ファイル: main.cpp プロジェクト: Crant/Game_Project
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int) 
{
	MaloW::ClearDebug();
#ifdef INCLUDE_MODEL_VIEWER
	_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
	MaloW::Debug("(DEBUG): Client: Debug flag set to: _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF). ");
	MaloW::Debug("(DEBUG): Client: vld.h included.");
#endif

	if ( !GraphicsInit(hInstance) )
	{
		MaloW::Debug("Failed Initializing Graphics!");
		return 1;
	}
	if ( !PlayerSettingsInit() )
	{
		MaloW::Debug("Failed Initializing PlayerSettings!");
		return 1;
	}
	AudioManager* am = AudioManager::GetInstance();

	// IMPLEMENT MAIN PROGRAM HERE.
	MainMenu* menu = new MainMenu();
	menu->Init();
	menu->Run();
	SAFE_DELETE(menu);

	am->ReleaseInstance();
	am = NULL;

	// Free Graphics
	FreeGraphics();

	// Save and Free Settings
	SavePlayerSettings();
	FreePlayerSettings();
	//_CrtDumpMemoryLeaks();
	MaloW::Debug("Quit Game.");
	return 0;
}
コード例 #19
0
void PlayerLogicComponent::playDeathSFX(int playerClass, uint64_t deadPlayerID){
	//Need to pass a reference to the GameObject* associated with player who was killed
	GameObject* deadPlayer = GameObjects.GetGameObject(deadPlayerID);
	PlayerRenderComponent* rendComp = dynamic_cast<PlayerRenderComponent*>(deadPlayer->GetComponent(COMPONENT_RENDER));
	RenderManager* renderMan = RenderManager::getRenderManager();
	if (renderMan->isObjOnScreen(rendComp->objRef)){
		AudioManager* audioMan = AudioManager::getAudioInstance();
		switch (playerClass){
		case CLASS_CHICKEN:
			audioMan->playByName("chickensfx.ogg");
			break;
		case CLASS_PEACOCK:
			audioMan->playByName("peacocksfx.ogg");
			break;
		case CLASS_FLAMINGO:
			audioMan->playByName("flamingosfx.ogg");
			break;
		case CLASS_QUAIL:
			audioMan->playByName("quailsfx.ogg");
			break;
		case CLASS_TURKEY:
			audioMan->playByName("turkeysfx.ogg");
			break;
		case CLASS_EAGLE:
			//Unimplemented
			//audioMan->playByName("eaglesfx.ogg");
			break;
		}
	}
}
コード例 #20
0
ファイル: MainScene.cpp プロジェクト: Jenovez/Frame2D-old
bool MainScene::Init()
{
	// 获得用户
	UserManager* userMgr = UserManager::getInstance();
	// 启动子弹系统
	BulletManager::getInstance()->startUp("Data/bulletConfig.lua");
	// 启动道具系统
	ItemManager::getInstance()->startUp("Data/itemConfig.lua");
	// 启动飞机系统
	PlaneManager::getInstance()->startUp("Data/planeConfig.lua");
	// 启动特效系统
	EffectManager::getInstance()->startUp("Data/effectConfig.lua");

	// 调整摄像机的z轴位置
	Camera::getInstance()->SetCameraPosition(0, 0, -600);

	// 缓存音效
	AudioManager* audioMgr = AudioManager::getInstance();
	audioMgr->loadSoundForCache("Sound/se/beiji.ogg");
	audioMgr->loadSoundForCache("Sound/se/boom.mp3");
	audioMgr->loadSoundForCache("Sound/se/fly.ogg");
	audioMgr->loadSoundForCache("Sound/se/get_item.mp3");
	audioMgr->loadSoundForCache("Sound/se/missile.mp3");
	audioMgr->loadSoundForCache("Sound/se/own_shoot1.ogg");
	audioMgr->loadSoundForCache("Sound/se/own_shoot2.mp3");
	audioMgr->loadSoundForCache("Sound/se/own_shoot3.ogg");
	audioMgr->loadSoundForCache("Sound/se/se_warning.ogg");

	// 初始化主角飞机
	_own = Own::Create(userMgr->GetOwn());
	_own->SetPosition(0, -150, 0);
	Add(_own, LAYER_PLAYER);

	// 分数
	_scoreText = TextSprite::Create("SCORE:0", "微软雅黑", 16);
	Add(_scoreText);

	// 启动关卡系统
	StageManager::getInstance()->startUp("Data/stage" + to_string(userMgr->GetStage()) + ".lua", this);

	// 启动数据更新函数
	AddUpdateFunc(UpdateFunc::Create(CALLBACK_PARAMETER_1(MainScene::UpdateData, this)));
	EventDispatcher::getInstance()->Add(
		KeyboardListener::Create(
		this, KeyboardFunc::Create(
		CALLBACK_PARAMETER_2(MainScene::onkey, this))));

	return true;
}
コード例 #21
0
bool rd::AudioManager::destroyAudioManager()
{
    //-- First, stop & delete the manager currently in use (if any)
    if (audioManagerInstance != NULL)
    {
        audioManagerInstance->stop();

        delete audioManagerInstance;
        audioManagerInstance = NULL;

        //-- Remove it also from the registry
        std::map<std::string, AudioManager *>::iterator it = audioManagerRegistry.find(currentId);
        if (it != audioManagerRegistry.end())
            audioManagerRegistry.erase(it);
    }

    //-- Destroy all the remaining registered InputManagers
    for ( std::map<std::string, AudioManager *>::iterator it = audioManagerRegistry.begin();
          it != audioManagerRegistry.end(); ++it)
    {
        AudioManager * currentManager = it->second;

        if (currentManager != NULL)
        {
            currentManager->stop();

            delete currentManager;
            currentManager = NULL;
         }

         //-- Remove it also from the registry
         audioManagerRegistry.erase(it);
    }

    return true;
}
コード例 #22
0
ファイル: GameLoop.cpp プロジェクト: pyridine/Roguebud
bool initialize()
{
	REQUIRE(RBConfig::initialize(CONFIG_FILENAME));
	REQUIRE(Logger::initialize(LOG_COUT | LOG_TIMESTAMP_SHORT));
	REQUIRE(display.init());
	REQUIRE(audio.init());
	ms_per_frame = RBConfig::getMSPerFrame();

	keys     = new Keyboard;
	mouse    = new Mouse;
	painter  = new RBPainter;
	setupWindows();

	stringstream welcome;
	Logger::log("Welcome to Roguebud V. %s.",RBConfig::getVersion().c_str());

	return true;
}
コード例 #23
0
ファイル: GameSession.cpp プロジェクト: EthanShimooka/BAA
int GameSession::Run(){

	// temp
	int numLobbyPlayer = 0;
	int numPlayers = 1;
	//


	/// MANAGERS

	LogManager* log = LogManager::GetLogManager();
	InputManager* input = InputManager::getInstance();
	AudioManager* audioMan = AudioManager::getAudioInstance();
	RenderManager* renderMan = RenderManager::getRenderManager();
	ResourceManager* resourceMan = ResourceManager::GetResourceManager();
	SceneManager* sceneMan = SceneManager::GetSceneManager();

	input->update();


	/////////////////////////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////////////////////////

	///  SYSTEMS

	SystemNetworkUpdater sysNetwork;
	SystemRenderUpdater sysRenderer;
	SystemInputUpdater sysInput;
	SystemLogicUpdater sysLogic;
	SystemPhysicsUpdater sysPhysics;
	SystemClassUpdater sysClass;
	SystemUIUpdater sysUI;

	/// ENTITIES
	PlayerObjectFactory pFactory;
	MinionObjectFactory mFactory;
	FeatherObjectFactory fFactory;
	PlatformObjectFactory plFactory;
	MidPlatObjectFactory mpFactory;

	numPlayers = NetworkManager::sInstance->GetPlayerCount();
	
	//std::cout << NetworkManager::sInstance->GetLobbyId() << std::endl;
	/*for (const auto& iter : NetworkManager::sInstance->lobbyInfoMap){
		std::cout << iter.first << std::endl;
		std::cout << "\tClass:" << iter.second.classType << std::endl;
	}*/

	GameObject * player = NULL;
	Stats stats;
	/// try to join a game and give each user a unique character in the game
	unordered_map< uint64_t, PlayerInfo > lobby = NetworkManager::sInstance->getLobbyInfoMap();
	Stats::resetStats();
	int i = 0;
	bool local = true;
	for (auto &iter : lobby){
		int classType = iter.second.classType;
		std::cout << "classType: " << classType << std::endl;
		if (iter.first == NetworkManager::sInstance->GetMyPlayerId()){
			player = GameObjects.AddObject(pFactory.Spawn(iter.first, (classType % 50) + 1, (i % 2) + 1, local));
			Stats::setLocalTeam((i % 2) + 1);
			Stats::addPlayer(iter.first, (i % 2) + 1);
		}
		else{
			GameObjects.AddObject(pFactory.Spawn(iter.first, (classType % 50) + 1, (i % 2) + 1, !local));
			Stats::addPlayer(iter.first, (i % 2) + 1);
		}
		++i;
	}



	/////////////////////////////////////////////////////
	/*              * * * GAME LOOP * * *              */
	/////////////////////////////////////////////////////


	bool gameloop = true;
	int var = 0;
	renderMan->zoom = 0.5;

	float size = 6;
	float ratio = 0.7f;
	int armswing = (int)size;
	int moveSpd = 1;
	int pressed = 0;
	int pressedTime = 3;
	int rotation = 0;
	audioMan->playByName("bgmBAAGameplay.ogg");
	bool gameEndMusic = false;
	int mousecounter = 5;
	renderMan->zoom = 0.6f;
	
	SystemUIObjectQueue queue;

	//World Loading
	GameSession::LoadWorld();
	GameSession::LoadPlayers();
	GameSession::LoadHUD(player, queue);

	///*auto spawning minion variables
	int minionCounter = 10000;

	//crosshair variables
	SDLRenderObject * crosshair = sceneMan->InstantiateObject(sceneMan->findLayer("layer1"), 1109, -1000, -1000, -0.05f);
	SDLRenderObject * crosshairCharging = sceneMan->InstantiateObject(sceneMan->findLayer("layer1"), 1111, -1000, -1000, -0.05f);
	crosshairCharging->visible = false;
	PlayerLogicComponent* playerLogic = dynamic_cast<PlayerLogicComponent*>(player->GetComponent(COMPONENT_LOGIC));
	PlayerRenderComponent* playerRend = dynamic_cast<PlayerRenderComponent*>(player->GetComponent(COMPONENT_RENDER));

	//midway fountain
	/*
	SDLRenderObject * fount = sceneMan->InstantiateObject(sceneMan->findLayer("layer2"), 101004, 40, 150, 0.005f);
	fount->setScale(0.5f);
	list<motion> motions;
	motions.push_back(makeMotion(keyframeAnimate(fount, 0, 15), 0, 1));
	Animation * runWater = new Animation(100, motions);
	int aniCounter = 0;
	*/
	LoadBackgroundProps();

	int aniCounter = 0;


	bool firstTime = true;
	Timing::sInstance.SetCountdownStart();
	NetworkManager::sInstance->SetState(NetworkManager::NMS_Playing);
	std::cout << NetworkManager::sInstance->GetState() << std::endl;


	clock_t current_ticks, delta_ticks;
	clock_t fps = 0;
	string fpscounter = "";

	SDLRenderObject * fpsHUD = sceneMan->InstantiateObject(sceneMan->findLayer("layer1"), -1, 5, 0, true);
	fpsHUD->setResourceObject(renderMan->renderText(fpscounter.c_str(), 255, 0, 0, 20, "VT323-Regular"));
	fpsHUD->setPos(0, 0);
	SDLRenderObject * leftbaseHUDicon = nullptr;
	SDLRenderObject * rightbaseHUDicon = nullptr;

	if (player->team == TEAM_PURPLE){
		leftbaseHUDicon = sceneMan->InstantiateObject(sceneMan->findLayer("layer1"), 7006, 0, 0, true);
		leftbaseHUDicon->flipH = true;
		rightbaseHUDicon = sceneMan->InstantiateObject(sceneMan->findLayer("layer1"), 7005, 0, 0, true);
		rightbaseHUDicon->flipH = true;
	}
	else{

		leftbaseHUDicon = sceneMan->InstantiateObject(sceneMan->findLayer("layer1"), 7005, 0, 0, true);
		rightbaseHUDicon = sceneMan->InstantiateObject(sceneMan->findLayer("layer1"), 7006, 0, 0, true);
	}

	leftbaseHUDicon->setPos(-150, 600);

	string leftBaseHealth = "";
	SDLRenderObject * leftbaseHUD = sceneMan->InstantiateObject(sceneMan->findLayer("layer1"), -1, 5, 0, true);
	leftbaseHUD->setResourceObject(renderMan->renderText(leftBaseHealth.c_str(), 255, 0, 0, 60, "VT323-Regular"));
	leftbaseHUD->setPos(15, 650);



	rightbaseHUDicon->setPos(1214, 600);

	string rightBaseHealth = "";
	SDLRenderObject * rightbaseHUD = sceneMan->InstantiateObject(sceneMan->findLayer("layer1"), -1, 5, 0, true);
	rightbaseHUD->setResourceObject(renderMan->renderText(rightBaseHealth.c_str(), 255, 0, 0, 60, "VT323-Regular"));
	rightbaseHUD->setPos(1281, 650);


	

	renderMan->toggleCursor(0);

	/////////////Flip screen if needed/////////////////

	if (player->team == TEAM_PURPLE){
		std::cout << "flip the screen" << std::endl;
		renderMan->flippedScreen = true;
	}
	//////////////////////////////////////////////////

	bool gameEnd = false;
	inGameStatsRenderComponent inGameStats;

	while (gameloop) {
		current_ticks = clock();


		if (input->isKeyDown(KEY_TAB)){
			inGameStats.updateText();
			inGameStats.toggleOn(true);
		}
		else{
			inGameStats.toggleOn(false);
		}

		//std::cout << NetworkManager::sInstance->GetState() << std::endl;
		
	

		/*if (input->isKeyDown(KEY_Q)){
			if (renderMan->cameraPoint.z < -5){
				renderMan->cameraPoint.z += 1;
			}
		}
		if (input->isKeyDown(KEY_W)){
			renderMan->cameraPoint.z -= 1;
		}
		if (input->isKeyDown(KEY_E)){
			renderMan->flippedScreen = !renderMan->flippedScreen;
		}*/

		/*clock_t t;
		t = clock();*/

		

		if (input->isKeyDown(KEY_F)){
			std::cout << "Number of feathers: " << GameObjects.dead_feathers.size() << std::endl;
		}

		if (input->isKeyDown(KEY_M)){
			std::cout << "Number of minions: " << GameObjects.dead_minions.size() << std::endl;
		}

		if (input->isKeyDown(KEY_L)){
			std::cout << "Alive Objects: " << GameObjects.alive_objects.size() << std::endl;
		} 

		if (input->isKeyDown(KEY_Y)) {
			renderMan->ShakeScreen(.2f, .5f);
		}
		
		mousecounter++;
		////////////////////////////////////

		if (numPlayers != 1)  NetworkManager::sInstance->UpdateDelay();

		//CAMERA MOVEMENT - based on player position
		if (!gameEnd){
			if (player){
				//Camera Shake
				if ((!rightBase->isAlive || !leftBase->isAlive) && !endedBaseShake) {
					endedBaseShake = true;
					renderMan->ShakeScreen(1, 1);
				}
				/*int mousePos = input->getMouseX();
				int wid, hei;
				renderMan->getWindowSize(&wid, &hei);
				float xRatio = (mousePos - wid / 2) / float(wid / 2);
				float xPlus = (float)(wid / 4) - 20;
				//std::cout << xRatio << std::endl;
				renderMan->setCameraPoint(player->posX + xRatio*xPlus, 0);*/
				float mouseX, mouseY;
				renderMan->windowCoordToWorldCoord(mouseX, mouseY, input->getMouseX(), input->getMouseY());
				float cameraX = (player->posX + mouseX) / 2;
				//next line makes the camera favor staying closer to the player
				cameraX = (player->posX + cameraX) / 2;
				renderMan->setCameraPoint(cameraX, 0);

			}
		}
		int length = 20;
		float loop = (float)(var % length);

		//crosshair updating
		float crossX, crossY;
		renderMan->windowCoordToWorldCoord(crossX, crossY, input->getMouseX(), input->getMouseY());
		crosshair->posX = crosshairCharging->posX = crossX;
		crosshair->posY = crosshairCharging->posY = crossY;
		float attackCDPercent = Timing::sInstance.GetAttackCooldownRemaining();
		float chargePercent = 1.0f - (playerLogic->currChargePercentage > 0.75f ? 0.75f : playerLogic->currChargePercentage);
		if (chargePercent != 1.0f){ //sets scale during charge
			//crosshair->setScale(chargePercent);
			crosshairCharging->visible = false;
			crosshair->visible = true;
			playerRend->crosshairRef = crosshair;
		}
		else if (chargePercent == 1.0f && Timing::sInstance.AttackCooldownEnded()) {
			crosshairCharging->visible = false;
			crosshair->visible = true;
			crosshair->setScale(1.0f);
			playerRend->crosshairRef = crosshair;
		}
		else {//if(attackCDPercent < 1.0f) { //sets scale during attack cooldown
			crosshairCharging->setScale(attackCDPercent);
			crosshairCharging->visible = true;
			crosshair->visible = false;
			playerRend->crosshairRef = crosshairCharging;
		} 
		

		//physics testing stuff
		PhysicsListener listener;
		GameWorld* gameWorld = GameWorld::getInstance();
		gameWorld->physicsWorld->SetContactListener(&listener);

		gameWorld->update(); //update physics world
		//end physics testing stuff

		sysInput.InputUpdate(GameObjects.alive_objects);
		sysRenderer.RenderUpdate(GameObjects.alive_objects);
		sysLogic.LogicUpdate(GameObjects.alive_objects);
		sysPhysics.PhysicsUpdate(GameObjects.alive_objects);
		sysClass.ClassUpdate(GameObjects.alive_objects);
		sysUI.UIUpdate(queue.alive_objects);

		if (numPlayers != 1) sysNetwork.NetworkUpdate(GameObjects.alive_objects);

		//updates all timers
		Invoke::UpdateTimers();

		if (input->isKeyDown(KEY_ESCAPE))
			gameloop = false;

		//OBJECT POOLING - moves recently dead objects to respective dead pool
		for (unsigned int i = 0; i < GameObjects.alive_objects.size(); i++){
			if (!GameObjects.alive_objects[i]->isAlive){
				//object has died this last gameloop. send it to the object pool
				//std::cout << "ID: " << GameObjects.alive_objects[i]->ID << std::endl;
				if (GameObjects.alive_objects[i]->type == OBJECT_FEATHER){
					GameObjects.dead_feathers.push_back(GameObjects.alive_objects[i]);
				}
				else if (GameObjects.alive_objects[i]->type == OBJECT_MINION){
					GameObjects.dead_minions.push_back(GameObjects.alive_objects[i]);
				}
				else {
					GameObjects.dead_objects.push_back(GameObjects.alive_objects[i]);
				}
				GameObjects.alive_objects.erase(GameObjects.alive_objects.begin() + i);
			}
		}
		
		if (!firstTime) //allows culling to start after all initialization happens
			cullObjects();


		if (NetworkManager::sInstance->IsMasterPeer() && Timing::sInstance.SpawnMinions()){
			GameObjects.AddObject(mFactory.Spawn(minionCounter++, -900, 0, TEAM_YELLOW));
			GameObjects.AddObject(mFactory.Spawn(minionCounter++, 900, 0, TEAM_PURPLE));

		}
		input->update();
		sceneMan->AssembleScene();

		//triggers endgame screen
		if (Timing::sInstance.GetTimeRemainingS() <= 0) {
			/*if (player->team == TEAM_PURPLE){
					std::cout << "flip the screen" << std::endl;
					renderMan->flippedScreen = false;
			}*/
			gameEnd = true;//so the mouse stops registering 
			int myTeam;
			for (unsigned int i = 0; i < players.size(); i++){
				if (GamerServices::sInstance->GetLocalPlayerId() == players[i]->playerId){
					myTeam = players[i]->team;
				}
			}

			std::cout << "END REACHED " << std::endl;
		  //GameEnd end = GameEnd::GameEnd();
		  //end.runGameEnd(myTeam, leftBase, rightBase);
		  gameloop = false;
		}

		if (Timing::sInstance.GetTimeRemainingS() <= 30 && !gameEndMusic){
			gameEndMusic = true;
			audioMan->stopByName("bgmBAAGameplay.ogg");
			audioMan->playByName("bgmBAAGameEnd.ogg");
		}

		firstTime = false;

		delta_ticks = clock() - current_ticks; //the time, in ms, that took to render the scene
		if (delta_ticks > 0)
			fps = CLOCKS_PER_SEC / delta_ticks;
		//std::cout <<" FPS : " << fps << std::endl;
		fpscounter = std::to_string(fps);
		
		//leftBase->health


		//renderMan->renderText(fpscounter.c_str(), 255, 255, 0, 70, "BowlbyOneSC-Regular");
		fpsHUD->setResourceObject(renderMan->renderText(fpscounter.c_str(), 0, 20, 240, 20, "VT323-Regular"));
		inGameStats.Update();
	}
	/////////////////////////////////////////////////////
	/////////////////////////////////////////////////////
	/////////////////////////////////////////////////////
	audioMan->stopByName("bgmBAAGameEnd.ogg");
	std::cout << renderMan << std::endl;
	std::cout << renderMan << std::endl;
	konamiUnlocked = false;
	log->close();

	//delete surf;
	//delete fount;
	//delete runWater;


	GameWorld::getInstance()->~GameWorld();
	return SCENE_GAMEOVER;
}
コード例 #24
0
void UIInputComponent::Update(){	

	uint64_t me = NetworkManager::sInstance->GetMyPlayerId();
	switch (uiObjectRef->ID){
	case PLAY_BUTTON:
		if (isButtonPressed(BUTTON_WIDTH, BUTTON_HEIGHT)){
			std::cout << "Play!" << std::endl;
			NetworkManager::sInstance->SetState(NetworkManager::sInstance->NMS_SinglePlayer);
		}
		break;
	case CANCEL_BUTTON:
		break;
	case BACK_BUTTON:
		break;
	case JOIN_BUTTON:
		if (isButtonPressed(BUTTON_WIDTH, BUTTON_HEIGHT)){
			std::cout << "Join!" << std::endl;
			NetworkManager::sInstance->StartLobbySearch();
		}
		break;
	case READY_BUTTON:
		if (isButtonPressed(READY_BUTTON_WIDTH, READY_BUTTON_HEIGHT)){
			//std::cout << "click" << std::endl;
		}
		break;
	case INVITE_BUTTON:
		if (isButtonPressed(BUTTON_WIDTH, BUTTON_HEIGHT)){
			//std::cout << "click" << std::endl;
			GamerServices::sInstance->InviteFriendsFromOverlay();
		}
		break;
	case CHICKEN:
		if (isButtonPressed(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "click" << std::endl;
			AudioManager* audioMan = AudioManager::getAudioInstance();
			audioMan->playByName("chickensfx.ogg");
			uiObjectRef->ready = true;
		}
		if (isMouseHovering(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "hovering" << std::endl;
			uiObjectRef->hoverPicture = true;
		}
		else{
			uiObjectRef->hoverPicture = false;
		}
		break;
	case EAGLE:
	case TURKEY:
		if (isButtonPressed(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "click" << std::endl;
			AudioManager* audioMan = AudioManager::getAudioInstance();
			audioMan->playByName("turkeysfx.ogg");
			uiObjectRef->ready = true;
		}
		if (isMouseHovering(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "hovering" << std::endl;
			uiObjectRef->hoverPicture = true;
		}
		else{
			uiObjectRef->hoverPicture = false;
		}
		break;
	case QUAIL:
		if (isButtonPressed(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "click" << std::endl;
			AudioManager* audioMan = AudioManager::getAudioInstance();
			audioMan->playByName("quailsfx.ogg");
			uiObjectRef->ready = true;
		}
		if (isMouseHovering(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "hovering" << std::endl;
			uiObjectRef->hoverPicture = true;
		}
		else{
			uiObjectRef->hoverPicture = false;
		}
		break;
	case FLAMINGO:
		if (isButtonPressed(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "click" << std::endl;
			AudioManager* audioMan = AudioManager::getAudioInstance();
			audioMan->playByName("flamingosfx.ogg");
			uiObjectRef->ready = true;
		}
		if (isMouseHovering(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "hovering" << std::endl;
			uiObjectRef->hoverPicture = true;
		}
		else{
			uiObjectRef->hoverPicture = false;
		}
		break;
	case PEACOCK:
		if (isButtonPressed(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "click" << std::endl;
			AudioManager* audioMan = AudioManager::getAudioInstance();
			audioMan->playByName("peacocksfx.ogg");
			uiObjectRef->ready = true;
		}
		if (isMouseHovering(this->uiObjectRef->getWidth(), this->uiObjectRef->getHeight())){
			//std::cout << "hovering" << std::endl;
			uiObjectRef->hoverPicture = true;
		}
		else{
			uiObjectRef->hoverPicture = false;
		}
		break;
	}
}
コード例 #25
0
ファイル: main.cpp プロジェクト: Th3NiKo/Projects
int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "Space Invaders");
    //STARTING SETTINGS

    AudioManager audioManager;
    BulletManager bulletManager;
    EnemyManager enemyManager;
    Randomizer random;
    TimeManager time;
    Menu mainMenu;
    Interface mainInterface;
    Player player(400, 500);
    Player *playerWsk = &player;

    //CONTROL VARIABLES
    bool menu = true;
    bool init = false;
    bool menuMusic = false;
    bool stageTwo = false;


    mainMenu.loadData();

    while (window.isOpen())
    {
        if(menu == false)
        {

            if(init == false)
            {
                audioManager.stopMenu();
                menuMusic = false;

                player.setHealth(3);


                //CREATING ENEMIES and INITILIAZING
                enemyManager.addEnemies(); //2 ROWS


                random.initialize();
                audioManager.playMusic();
                init = true;
            }
        if((stageTwo == false) && (mainInterface.getScore() >= 280))
        {
            enemyManager.addEnemiesMedium();
            stageTwo = true;

        }
        if((mainInterface.getScore() >= 560))
        {
            audioManager.stopMusic();
            init = false;
            menu = true;
        }

        time.updateShoot();
        time.updateRandomShoot();
        // REFRESHING WINDOW
        // ALL PHYSICS HERE

        while(time.getAccumulator() > time.getUps())
        {
            time.updateAccumulator();
            player.keyboardControl(time.getUps(), bulletManager, time.getShootTimer(), time, audioManager);
            enemyManager.controlEnemies(random, bulletManager, time);
            bulletManager.controlBullets(time.getUps());


            //COLLISIONS
            bulletManager.checkPlayerCollisions(playerWsk);
            enemyManager.updateDead(bulletManager);
            player.gameOver(audioManager, menu, init);

        }


        //SIMPLE EVENTS
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        mainInterface.checkRecords(mainMenu);

        //DRAWING
        window.clear();
        mainInterface.drawText(window, player.getHealth());
        enemyManager.drawEnemies(window);
        window.draw(player.getSprite());
        bulletManager.drawBullets(window);
        window.display();

         if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
            {
                window.close();
            }

        time.restartAccumulator();
        }
        else
        {

            if(menuMusic == false)
            {
                audioManager.playMenu();
                menuMusic = true;
            }

            enemyManager.clearAll();
            bulletManager.clearAll();
            time.clearAll();
            mainInterface.clearScore();

            mainMenu.keyboardControl(window, menu);

            sf::Event event;
            while (window.pollEvent(event))
            {
                if (event.type == sf::Event::Closed)
                window.close();
            }
            window.clear();
            mainMenu.drawMenu(window);
            window.display();

            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
            {
                window.close();
            }
        }


    }

    return EXIT_SUCCESS;
}
コード例 #26
0
ファイル: Box2dTest.cpp プロジェクト: iaco79/IrrGameDemo
 void Box2dTest::BeginContact(b2Contact* contact)
  {
	
    void* userData1= contact->GetFixtureA()->GetBody()->GetUserData();
    void* userData2= contact->GetFixtureB()->GetBody()->GetUserData();

    if(userData1 && userData2)
    {		
		BoxData* data1 = (BoxData*)userData1;
        BoxData* data2 = (BoxData*)userData2;
		int sound = -1;

		//if(data1->m_ValidCode == 777777 || data2->m_ValidCode == 777777)
		{
				
		
			{

				if(data1->m_shapeType == FIGUREDEF_BALL && 
				   data1->m_setContactPointer == false 
				   
				   )
				{					
					
					data1->m_setContactPointer=true;

					if(	   data2->m_shapeType == FIGUREDEF_BRICK_BOX
						|| data2->m_shapeType == FIGUREDEF_BRICK_TRIANGLE
						|| data2->m_shapeType == FIGUREDEF_BRICK_TRIANGLE_BIG
						|| data2->m_shapeType == FIGUREDEF_BRICK_RECTANGLE
						
						)
					{
						sound = AudioItem::CHUNK_BLAST;
						data2->m_setForRemoval=true;
					}
					else
					{						
						sound = AudioItem::CHUNK_EXTCOLLIDE;					
					}
					
				}

				if(data2->m_shapeType == FIGUREDEF_BALL && 
				   data2->m_setContactPointer == false )
				
				{					
					
					data2->m_setContactPointer=true;
					
					if(	   data1->m_shapeType == FIGUREDEF_BRICK_BOX
						|| data1->m_shapeType == FIGUREDEF_BRICK_TRIANGLE
						|| data1->m_shapeType == FIGUREDEF_BRICK_TRIANGLE_BIG
						|| data1->m_shapeType == FIGUREDEF_BRICK_RECTANGLE						
						)
					{
						sound = AudioItem::CHUNK_BLAST;
						data1->m_setForRemoval=true;
					}
					else
					{						
						sound = AudioItem::CHUNK_EXTCOLLIDE;					
					}
				}				

				if(mCollideExternal<=MAX_COLLIDE_SOUNDS && sound>-1)
				{	
					AudioManager* audiomgr = AudioManager::getInstance();
					AudioItem audioBlast;
					audioBlast.mChunkId = AudioManager::gChunkIndexes[sound];
					audioBlast.mFlags = AudioItem::PLAYONCE;
					audioBlast.mLoop=0;				
					audioBlast.mId = audiomgr->playSoundNow(audioBlast);						
					mCollideExternal++;					
				}	
			}
		}
    }
}
コード例 #27
0
void MinionPhysicsComponent::handleCollision(GameObject* otherObj){
	//if hit, destroy minion or move it out of the alive_objects queue
	//std::cout << "MINION handling collision with object ID: " << otherObj->ID << std::endl;

	switch (otherObj->type){
	case GAMEOBJECT_TYPE::OBJECT_FEATHER:{
											 if (otherObj->team == gameObjectRef->team)break;
											 if (otherObj->isLocal){
												 AudioManager* audioMan = AudioManager::getAudioInstance();
												 audioMan->playByName("miniondeathsfx.ogg");
											 }
											 //dynamic_cast<MinionNetworkComponent*>(gameObjectRef->GetComponent(COMPONENT_NETWORK))->SendMinionDeath();
											 //createParticle(minRend->allObjs["body"], 20, gameObjectRef->posX, gameObjectRef->posY);
											 //createDustCloudParticle(4, 50, 200, gameObjectRef->posX, gameObjectRef->posY);
											 MinionLogicComponent* logicComp = dynamic_cast<MinionLogicComponent*>(gameObjectRef->GetComponent(COMPONENT_LOGIC));
											 logicComp->MinionDeath(otherObj->isLocal);
											 
											 //GameObjects.dead_feathers.push_back(gameObjectRef);
											 break;
	}
	case GAMEOBJECT_TYPE::OBJECT_MINION:{
											//just push each other around. Most likely done for us by box2d already
											//std::cout << "Value of coliding minion : " << otherObj->team  << "\n"<< std::endl;
											//std::cout << "Value of our minion : " << gameObjectRef->team << "\n" << std::endl;
											if (otherObj->team != gameObjectRef->team){
												if (gameObjectRef->team == TEAM_YELLOW)
													std::cout << gameObjectRef->ID % 1000 << ", " << otherObj->ID % 1000 << ", " << gameObjectRef->posX << std::endl;
												//createParticle(minRend->allObjs["body"], 20, gameObjectRef->posX, gameObjectRef->posY);
												//createDustCloudParticle(4, 50, 200, gameObjectRef->posX, gameObjectRef->posY);
												MinionLogicComponent* logicComp = dynamic_cast<MinionLogicComponent*>(gameObjectRef->GetComponent(COMPONENT_LOGIC));
												logicComp->MinionDeath(false);
											}

											//gameObjectRef->isAlive = false;//currently setting the poof to dead,
											//w/o this obj keeps moving around
											break;
	}
	case GAMEOBJECT_TYPE::OBJECT_BASE:{
										  if (otherObj->team == gameObjectRef->team) break;
										  //createParticle(minRend->allObjs["body"], 20, gameObjectRef->posX, gameObjectRef->posY);
										  //gameObjectRef->setPos(-10000, 0);
										  //gameObjectRef->isAlive = false;
										  break;
	}
	case GAMEOBJECT_TYPE::OBJECT_FAN:{

									 	 //mBody->SetLinearVelocity(b2Vec2(mBody->GetLinearVelocity().x, mBody->GetLinearVelocity().y-500));
								  	 	  FanPhysicsComponent* fanPhys = dynamic_cast<FanPhysicsComponent*>(otherObj->GetComponent(COMPONENT_PHYSICS));
										  blownForce = fanPhys->forceVec;
									 	  isGettingBlown = true;
									   	  break;
	}
	case GAMEOBJECT_TYPE::OBJECT_PLATFORM:{
										  if (mBody->GetPosition().y < 0){
											  //hit top wall
											  mBody->SetLinearVelocity(b2Vec2(mBody->GetLinearVelocity().x, -mBody->GetLinearVelocity().y));
										  }
										  else {
											  //hit bot wall
											  mBody->SetLinearVelocity(b2Vec2(mBody->GetLinearVelocity().x, -mBody->GetLinearVelocity().y));
										  }
										  if (!isBounce){
											  savedYForce = -mBody->GetLinearVelocity().y;
										  }
										  isBounce = true;
										  ////Bounce off the walls
										  //b2Vec2 vel = mBody->GetLinearVelocity();
										  //vel.y = -1.0f * vel.y;
										  ////Ensure moving in right direction
										  //if (gameObjectRef->team == TEAM_YELLOW) vel.x = abs(vel.x);
										  //if (gameObjectRef->team == TEAM_PURPLE) vel.x = -abs(vel.x);
										  //mBody->SetLinearVelocity(vel);
										  //mBody->ApplyForce(b2Vec2(0, -50*mBody->GetLinearVelocity().y), mBody->GetWorldCenter(), true);
										  break;
	}
	case GAMEOBJECT_TYPE::OBJECT_MINE:{

										  if (gameObjectRef->team == otherObj->team) break;
										  if (otherObj->isLocal){
											  AudioManager* audioMan = AudioManager::getAudioInstance();
											  audioMan->playByName("miniondeathsfx.ogg");
										  }
										 MinionLogicComponent* logicComp = dynamic_cast<MinionLogicComponent*>(gameObjectRef->GetComponent(COMPONENT_LOGIC));
										 logicComp->MinionDeath(otherObj->isLocal);
										 break;
	}
	default:
		break;
	}
}
コード例 #28
0
void PlayerLogicComponent::playFailSound(){
	AudioManager* audioMan = AudioManager::getAudioInstance();
	audioMan->playByName("abilityfailsfx.ogg");
}
コード例 #29
0
void PlayerLogicComponent::stopFootstepSFX(){
	AudioManager* audioMan = AudioManager::getAudioInstance();
	audioMan->stopByName("bgmfootstepsfx.ogg");
}
コード例 #30
0
ファイル: main.cpp プロジェクト: geoffwhitehead/snooker_game
void main(void) {

	std::string data = "./levels/data.json";
	Json::Value root;   // 'root' will contain the root value after parsing.
	Json::Reader reader;
	ifstream fs(data);
	if (!fs) cout << "Failed to read from path.";
	if (!reader.parse(fs, root)) cout << "Failed to parse.";

	// GAME MANAGER
	GameManager *gm = new GameManager(W_X, W_Y);

	//ADD SYSTEM MANAGERS
	CollisionManager* cm = new CollisionManager();
	AudioManager* am = new AudioManager();
	InputManager* im = new InputManager();
	EventManager* em = new EventManager();
	GameLogicManager* glm = new GameLogicManager();

	//CREATE SUB SYSTEMS
	GameEvents* ge = new GameEvents(gm);

	Camera* camera = new Camera(0.0f, 0.0f, Vector3(0, 0, 400), W_X, W_Y);
	Camera::projMatrix = Matrix4::Orthographic(1, 1000, W_X/4.0f, -W_X/4.0f, W_Y/4.0f, -W_Y/4.0f);
	//Camera::viewMatrix = Matrix4::BuildCamera(Vector3(0.0, 50.0, 20.0), Vector3(0.0, 0.0, 0.0));
		
		//camera->BuildViewMatrix();
	
	GameInput* gi = new GameInput(gm, ge, camera);
	GameAudio* ga = new GameAudio(am, ge);
	CollisionResponse* cr = new CollisionResponse(cm, ge);
	GameLogic* gl = new GameLogic(glm, ge);
	
	// JSON STUFF
	Json::Value level = root["level"][0];


	//TEXTURES
	for (int i = 0; i < level["textures"].size(); i++)
	{
		string name = level["textures"][i]["name"].asString();
		GLuint tex = gm->LoadTexture(level["textures"][i]["path"].asCString());
		map_textures.insert(pair <string, GLuint>(name, tex));
	}

	//AUDIO
	for (int i = 0; i < level["audio"].size(); i++)
	{
		string name = level["audio"][i]["name"].asString();
		string path = level["audio"][i]["path"].asCString();
		float vol = level["audio"][i]["default_volume"].asFloat();
		am->loadSound(name, path.c_str(), vol);
	}

	//SHADERS
	for (int i = 0; i < level["shaders"].size(); i++)
	{
		Shader* s = new Shader(level["shaders"][i]["vert"].asString(), level["shaders"][i]["frag"].asString());
		map_shaders.insert(pair <string, Shader*>(level["shaders"][i]["name"].asString(), s));
	}

	//MESHES
	for (int i = 0; i < level["meshes"].size(); i++)
	{
		string function = level["meshes"][i]["function"].asString();
		Mesh * m;
		if (function == "GenerateQuad") {
			m = Mesh::GenerateQuad(level["meshes"][i]["x"].asFloat(), level["meshes"][i]["y"].asFloat());
		}
		else if (function == "GenerateTriFan") {
			m = Mesh::GenerateTriFan(level["meshes"][i]["radius"].asFloat(), Vector4(level["meshes"][i]["x"].asFloat(), level["meshes"][i]["y"].asFloat(), level["meshes"][i]["z"].asFloat(), level["meshes"][i]["w"].asFloat()));
		}
		map_meshes.insert(pair<string, Mesh*>(level["meshes"][i]["name"].asString(), m));
	}

	//ENTITIES
	for (int i = 0; i < level["entities"].size(); i++)
	{
		Entity *e = new Entity(
			level["entities"][i]["name"].asString(),
			level["entities"][i]["group"].asString(),
			level["entities"][i]["subgroup"].asString(),
			Vector3(
				level["entities"][i]["position"][0].asFloat(),
				level["entities"][i]["position"][1].asFloat(),
				level["entities"][i]["position"][2].asFloat()
				),
			Vector3(
				level["entities"][i]["acceleration"][0].asFloat(),
				level["entities"][i]["acceleration"][1].asFloat(),
				level["entities"][i]["acceleration"][2].asFloat()
				),
			Vector3(
				level["entities"][i]["velocity"][0].asFloat(),
				level["entities"][i]["velocity"][1].asFloat(),
				level["entities"][i]["velocity"][2].asFloat()
				),
			map_meshes[level["entities"][i]["mesh"].asString()],
			map_shaders[level["entities"][i]["shader"].asString()],
			map_textures[level["entities"][i]["texture"].asString()]
			);

		e->setMass(level["entities"][i]["mass"].asFloat());

		if (level["entities"][i]["hidden"].asBool() == true) {
			e->is_renderable = false;
		}
			
		if (level["entities"][i]["collidable"].asBool()) {

			if (level["entities"][i]["collision_object"].asString() == "CIRCLE")
				cm->addObject(e, level["entities"][i]["collision_radius"].asFloat());
			if (level["entities"][i]["collision_object"].asString() == "PLANE")
				cm->addObject(e, e->getPhysicsObject()->getPos().Length(), 
					Vector3(
						level["entities"][i]["normal"][0].asFloat(),
						level["entities"][i]["normal"][1].asFloat(),
						level["entities"][i]["normal"][2].asFloat()
						));
		}
		if (level["entities"][i]["parent"].asString() == "")
			map_entities.insert(pair<string, Entity*>(level["entities"][i]["name"].asString(), e));
		else
			map_entities[level["entities"][i]["parent"].asString()]->addChild(e); 
	}

	// register entities
	for (auto iterator = map_entities.begin(); iterator != map_entities.end(); iterator++)
		gm->addEntity(iterator->second);

	//register managers
	gm->addSystemManager(am);
	gm->addSystemManager(cm);
	gm->addSystemManager(im);
	gm->addSystemManager(em);
	gm->addSystemManager(glm);

	//register sub systems
	im->addSubSystem(camera);
	glm->addSubSystem(gl);
	im->addSubSystem(gi);
	am->addSubSystem(ga);
	cm->addSubSystem(cr);
	em->addSubSystem(ge);
	
	gm->run();

}