Ejemplo n.º 1
0
void Game::handleEvent(Event& e)
{
	if(strcmp(e.getID(), "changestate") == 0)
	{
		if(strcmp(e[0].toChar(), "menu") == 0)
		{
			MenuState* pMenuState = dynamic_cast<MenuState*>(m_pStateManager->initState(new MenuState()));
			pMenuState->Initialize();

			m_pStateManager->setActiveState(pMenuState);
		}
		else if(strcmp(e[0].toChar(), "game") == 0)
		{			
			SPGameState* pGameState = dynamic_cast<SPGameState*>(m_pStateManager->initState(new SPGameState()));
			pGameState->Initialize();

			m_pStateManager->setActiveState(pGameState);
		}
		else if(strcmp(e[0].toChar(), "editor") == 0)
		{			
			EditorState* pEditorState = dynamic_cast<EditorState*>(m_pStateManager->initState(new EditorState()));
			pEditorState->Initialize();

			m_pStateManager->setActiveState(pEditorState);
		}
	}
}
Ejemplo n.º 2
0
void TitleState::update() {
	if (input.upPressed() || input.downPressed()) {
		// move cursor
		if (cursor.getSelection() == CONTINUE) {
			cursor.setSelection(NEW);
		} else {
			cursor.setSelection(CONTINUE);
		}
	}

	if (input.getConfirm()) {
		// select option
		if (cursor.getSelection() == NEW) {
			MenuState *ms = new MenuState();
			stateManager->pushState(ms);
			ms->pushMenu(new NewMenu());
		} else {
			// load in party data from some file
			printf("TODO: Continue :)\n");
		}
	}

	// input handled
	input.resetAll();
}
Ejemplo n.º 3
0
void
Shader::NewProject(const wxString& type)
{
	MenuState *ms = NEW(MenuState, (m_MenuBar));
	ms->Add(wxID_UNDO);
	ms->Add(wxID_REDO);
	ms->Add(wxID_CUT);
	ms->Add(wxID_COPY);
	//ms->Add(wxID_PASTE);
	ms->Add(wxID_DUPLICATE);
	ms->Add(wxID_GROUP);
	ms->Add(wxID_UNGROUP);
	ms->Add(wxID_SAVEGROUP);
	ms->Get();
	Project::New(this, ms, type);
}
Ejemplo n.º 4
0
MenuState *
MenuState::Clone()
{
	MenuState *clone = NEW(MenuState, (m_MenuBar));
	const size_t length = m_Ranges.size();
	int count = 0;
	for (size_t index = 0; index < length; index++)
	{
		Range range = m_Ranges[index];
		clone->Add(range.first, range.last);
		count += range.last - range.first + 1;
	}
	if (m_States != 0)
	{
		clone->m_States = NEWARRAY(bool, count);
		for (int index = 0; index < count; index++)
		{
			clone->m_States[index] = m_States[index];
		}
	}
Ejemplo n.º 5
0
void
Shader::Open(const wxString& file)
{
	MenuState *ms = NEW(MenuState, (m_MenuBar));
	ms->Add(wxID_UNDO);
	ms->Add(wxID_REDO);
	ms->Add(wxID_CUT);
	ms->Add(wxID_COPY);
	//ms->Add(wxID_PASTE);
	ms->Add(wxID_DUPLICATE);
	ms->Add(wxID_GROUP);
	ms->Add(wxID_UNGROUP);
	ms->Add(wxID_SAVEGROUP);
	ms->Get();

  m_FileName = file;
  wxFileName fn(m_FileName);
  m_FilePath = fn.GetPath();	
  Project::Load(this, ms, m_FileName);
	m_RecentMenu->Put(m_FileName);
}
Ejemplo n.º 6
0
int main()
{
	sfw::initContext(SCREEN_WIDTH, SCREEN_HEIGHT, "NSFW Draw");
		

	loadTexture("Background","./Textures/background.png", 1, 1);

	loadTexture("Start",   "./Textures/GameButton.png", 1, 1);
	loadTexture("Credits", "./Textures/CreditsButton.png", 1, 1);
	loadTexture("Quit",    "./Textures/QuitButton.png", 1, 1);
	loadTexture("Mouse",   "./Textures/mouse.jpg", 1, 1);

	loadTexture("Fireball", "./Textures/Player/newFireball.png", 5, 1);

	loadTexture("playerIDLE", "./Textures/Player/playerIDLE.png", 6, 1);
	loadTexture("playerHIT", "./Textures/Player/playerHIT.png", 6, 1);
	loadTexture("playerRUN", "./Textures/Player/playerRUN.png", 8, 1);
	loadTexture("playerSHOOT", "./Textures/Player/playerShoot.png", 6, 1);

	loadTexture("enemyIDLE", "./Textures/Enemy/enemyIDLE.png", 6, 1);
	loadTexture("enemyHIT", "./Textures/Enemy/enemyHIT.png", 8, 1);
	loadTexture("enemyWALK", "./Textures/Enemy/enemyWALK.png", 8, 1);
	loadTexture("enemySPAWN", "./Textures/Enemy/enemySPAWN.png", 10, 1);
	loadTexture("enemyDIE", "./Textures/Enemy/enemyDIE.png", 8, 1);

	addAnimation("Fireball", "bAni", { 0,1,2,3,4 }, 12);

	addAnimation("playerIDLE", "pIDLE", { 0,1,2,3,4,5}, 12);
	addAnimation("playerHIT", "pHIT", { 0,1,2,3,4,5 }, 12);
	addAnimation("playerRUN", "pRUN", { 0,1,2,3,4,5,6,7 }, 12);
	addAnimation("playerSHOOT", "pSHOOT", { 0,1,2,3,4,5 }, 12);

	addAnimation("enemyIDLE", "eIDLE", { 0,1,2,3,4,5 }, 12);
	addAnimation("enemyHIT", "eHIT", { 0,1,2,3,4,5,6,7 }, 12);
	addAnimation("enemyWALK", "eWALK", { 0,1,2,3,4,5,6,7 }, 12);
	addAnimation("enemySPAWN", "eSPAWN", { 0,1,2,3,4,5,6,7,8,9 }, 12);
	addAnimation("enemyDIE", "eDIE", { 0,1,2,3,4,5,6,7 }, 12);

	GameState game;
	MenuState menu;

	STATE current = MENU;

	while (sfw::stepContext())
	{
		
		switch (current)
		{
		case MENU:
			current = menu.update();
			menu.draw();
			break;
		case GAME:
			current = game.update();
			game.draw(); 
			break;
		case CREDITS:
			break;
		case QUIT:
			return 0;
		}
		
		
		//dinosaur.CollisionBox(CLEAR);
 
	}

	sfw::termContext();
}
Ejemplo n.º 7
0
void main()
{
	sfw::initContext(800, 600, "Saving Bob");
	sfw::setBackgroundColor(BLACK);

	loadTexture("Space", "../res/space800x600.jpg", 1, 1);
	loadTexture("Asteroid Belt", "../res/asteroidbelt.png", 1, 1);
	loadTexture("Nebula", "../res/nebula.png", 1, 1);
	loadTexture("Nebula2", "../res/nebula2.png", 1, 1);
	loadTexture("Player", "../res/playership.png", 8, 1);
	loadTexture("Bullet", "../res/bullet.png", 1, 1);
	loadTexture("eBullet", "../res/enemyBullet.png", 1, 1);
	loadTexture("Enemy", "../res/enemyship.png", 9, 1);
	loadTexture("Explosion", "../res/explosion.png", 4, 4);
	loadTexture("Play", "../res/PlayBlue.png", 1, 1);
	loadTexture("Exit", "../res/ExitBlue.png", 1, 1);
	loadTexture("Credits", "../res/CreditsBlue.png", 1, 1);
	loadTexture("GameOver", "../res/GameOver.jpg", 1, 1);
	loadTexture("Options", "../res/OptionsBlue.png", 1, 1);
	loadTexture("Crosshair", "../res/crosshair.png", 1, 1);
	loadTexture("SavingTitle", "../res/savingTitle.png", 1, 1);
	loadTexture("BobTitle", "../res/bobTitle.png", 1, 1);
	loadTexture("PlanetBob", "../res/planetBob.png", 5, 4);
	loadTexture("Back", "../res/backButton.png", 1, 1);
	loadTexture("CreditsPage", "../res/Credits.jpg", 1, 1);
	addAnimation("Player", "Thrusters", { 0,1,2,3,4,5,6,7 });
	addAnimation("Enemy", "eThrusters", { 0,1,2,3,4,5,6,7,8 });
	addAnimation("Explosion", "Boom", { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 });
	addAnimation("PlanetBob", "Rotation", { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 });

	GameState game;
	MenuState menu;
	CreditsPage creditsPage;
	GameOverBG gameOverPage;
	menu.menuLayout();
	game.start();
	creditsPage.creditsPG();
	//gameOverPage.gameOverPG();
	


	while (sfw::stepContext())
	{
		
		
		switch (menuSelection)
		{
		case 1:
			menu.update();
			menu.draw();
			break;
		case 2:
			game.update();
			game.draw();
			break;
		case 3:
			creditsPage.update();
			creditsPage.draw();
			break;
		case 4:
			sfw::termContext();
			break;
		case 5:
			gameOverPage.update();
			gameOverPage.draw();
		}

		
	}
	sfw::termContext();
}
Ejemplo n.º 8
0
void StartMenuAspect::init(MenuState & gs) {
	gs.slotActivateState.subscribe([&] ( MenuState & gs, StateChangeInfoPtr const& changeInfo )
	{
		logging::Info() << "setting up Menu state" << std::endl;
		EntityFactory fact(gs.getEngines());

		// call this, once the screen transform is available
			gs.getEngines().renderEngine().setCameraLocation(Vector3(0.0f, 0.0f, 0.0f));

			/*Entity * guyEnt = fact.create<  SingleVisualEntity>("bullet", Vector2(4.0f, 4.0f));
			 gs.getEngines().entityEngine().addEntity(guyEnt, &gs.getManagedEntityList());
			 */
			auto toMenu = std::dynamic_pointer_cast< GameToMenuInfo >(changeInfo);

			gs.bootstrapMenu();

			ScreenTransform const& trans = gs.getEngines().renderEngine().getScreenTransform();

			// we could also have no GameToMenuInfo, on the first start of the game
			bool playerDied = false;

			// we might not have a change info at all
			if ( toMenu ) {
				if ( toMenu->PlayerDied)
				playerDied = true;
			}

			if (playerDied )
			{
				Vector2 gameOverPos(4.0f, 6.0f);
				TexturePtr textTex = gs.getEngines().resourceEngine().loadImage("textChars.png");
				m_gameOverVisual = new TextVisual(trans, textTex,
						gameOverPos, "Game Over");
				gs.getEngines().renderEngine().addTextVisual(m_gameOverVisual);

				Vector2 scorePos(4.0f, 5.0f);

				std::stringstream sScore;
				sScore << "Score: " << toMenu->FinalScore;

				m_scoreVisual = new TextVisual(trans, textTex,
						scorePos,sScore.str());
				gs.getEngines().renderEngine().addTextVisual(m_scoreVisual);

				m_delayedGameOver = 1.0f;

			} else {
				/*
				 Vector2 gameOverPos(0.0f, 6.0f);
				 TexturePtr textTex = gs.getEngines().resourceEngine().loadImage("textChars.png");
				 auto testTxt = new TextVisual(trans, textTex,
				 gameOverPos, "TEST");
				 gs.getEngines().renderEngine().addTextVisual(testTxt);*/

				EntityFactory fact(gs.getEngines());
				m_logoEntity = fact.createFromTemplateName< SingleVisualEntity>("game_logo",
						Vector2(1.0f, 1.0f));
				m_logoEntity->getActiveVisual().get().setIngame(trans, Vector2(0.0f, 5.0f), false);
				VisualSupport::placeXCenter( m_logoEntity, 0.5f, 0.75f, trans );
				gs.getEngines().entityEngine().addEntity(m_logoEntity , &gs.getManagedEntityList());
				/*
				 m_controlsEntity = fact.create<  SingleVisualEntity>("xbox-gamepad-labels", Vector2(13.0f, 7.0f));
				 gs.getEngines().entityEngine().addEntity( m_controlsEntity, &gs.getManagedEntityList());*/

				const float tableX = VisualSupport::positionXCenter( 0.5f, 0.5f, trans ).x() * 0.8f;

				const Vector2 posItemOne ( VisualSupport::positionXCenter( 0.28f, 0.0f, trans ).x(),
						VisualSupport::positionXCenter( 0.0f, 0.47f, trans ).y() );
				const Vector2 posItemTwo = posItemOne - Vector2(0.0f, 1.2f);

				MenuItem it("start", "Start Game",
						posItemOne);
				gs.addMenuItem(it);
				//VisualSupport::place( it.TextVis,  )

				it = MenuItem("exit", "Exit", Vector2(posItemTwo));
				gs.addMenuItem(it);

				gs.setCurrentItem(0);

				// generate all icons for the input devices
				DeviceList devList = gs.getEngines().inputEngine().availableInputDevices();
				logging::Info() << "Setting up menu for " << devList.size() << " input devices";

				const float maxTiles = trans.screenSizeInTiles().x();
				const size_t maxDevices = gs.getEngines().inputEngine().maxInputDevices();

				const float tilePerInputDev = maxTiles / float ( maxDevices);
				const float tileFreeSpace = tilePerInputDev * 0.5f;
				const float posYInputIcon = 2.5f;
				const float posYenableDisable = 1.1f;

				size_t curDevIndex = 0;
				if ( gs.getDeviceItems().size() == 0)
				{
					// add all available input devices, only done on the first execution
					for ( InputDevice const& iDev : devList )
					{
						MenuState::DeviceItem item;
						// todo: enable always the first controller, if there is only one
						item.m_isEnabled = false;
						item.m_type = iDev.Type;
						item.m_ContainerId = iDev.Index;

						gs.addDeviceItem( item );
					}
				}

				// setup graphics for the input items
				for ( auto & item : gs.getDeviceItems())
				{
					const float thisBeginTile = tilePerInputDev * float ( curDevIndex) + tileFreeSpace;

					const Vector2 posInputIcon (thisBeginTile, posYInputIcon);
					const Vector2 posInputEnable(thisBeginTile, posYenableDisable);

					std::string iconActive;
					std::string iconPassive;
					std::string iconDisable;
					std::string iconEnable;

					if ( item.m_type == InputDevice::TypeEnum::Keyboard ) {
						iconActive = "keyboard";
						iconPassive = "keyboard-passive";
						iconDisable = "keyboard-disable";
						iconEnable = "keyboard-enable";
					}
					else if ( item.m_type == InputDevice::TypeEnum::Gamepad ) {
						//todo: check for ouya / pc and use controllers accordingly

						/*						iconActive = "xbox-gamepad";
						 iconPassive = "xbox-gamepad-passive";
						 iconDisable = "xbox-gamepad-disable";
						 iconEnable = "xbox-gamepad-enable";*/

						iconActive = "ouya-gamepad";
						iconPassive = "ouya-gamepad-passive";
						iconDisable = "ouya-gamepad-disable";
						iconEnable = "ouya-gamepad-enable";
					}
					else
					{
						logging::Fatal() << "This input type is not supported by the menu";
					}

					item.m_Icon = fact.createFromTemplateName< SingleVisualEntity>(iconActive, posInputIcon);
					item.m_Icon->getActiveVisual().get().setIngame( trans, posInputIcon, false );
					gs.getEngines().entityEngine().addEntity( item.m_Icon, &gs.getManagedEntityList());

					item.m_IconPassive = fact.createFromTemplateName< SingleVisualEntity>(iconPassive, posInputIcon);
					item.m_IconPassive->getActiveVisual().get().setIngame( trans, posInputIcon, false );
					gs.getEngines().entityEngine().addEntity( item.m_IconPassive, &gs.getManagedEntityList());

					item.m_DisableText = fact.createFromTemplateName< SingleVisualEntity>(iconDisable, posInputEnable);
					item.m_DisableText->getActiveVisual().get().setIngame( trans, posInputEnable, false );
					gs.getEngines().entityEngine().addEntity( item.m_DisableText, &gs.getManagedEntityList());

					item.m_EnableText = fact.createFromTemplateName< SingleVisualEntity>(iconEnable, posInputEnable);
					item.m_EnableText->getActiveVisual().get().setIngame( trans, posInputEnable, false );
					gs.getEngines().entityEngine().addEntity( item.m_EnableText, &gs.getManagedEntityList());

					curDevIndex++;
				}

				gs.updateDevices();
			}

		});

	gs.slotDeactivateState.subscribe([&] ( MenuState & gs )
	{
		// remove all the entities which might still be registered with the render system
			logging::Info() << "closing menu";
			gs.getEngines().entityEngine().cleanManagedList(gs.getManagedEntityList(), gs.getEngines());
			gs.getManagedEntityList().clear();

			// entities have been cleaned via cleanManagedList
			// keep this for the next time we enter the menu
			//gs.m_deviceItems.clear();

			// kill text visuals
			for (MenuItem & it : gs.getMenuItemList()) {
				gs.getEngines().renderEngine().removeTextVisual(it.TextVis);
				delete it.TextVis;
			}
			gs.getMenuItemList().clear();

			if (m_gameOverVisual) {
				gs.getEngines().renderEngine().removeTextVisual(m_gameOverVisual);
				delete m_gameOverVisual;
				m_gameOverVisual = nullptr;
			}

			if (m_scoreVisual) {
				gs.getEngines().renderEngine().removeTextVisual(m_scoreVisual);
				delete m_scoreVisual;
				m_scoreVisual = nullptr;
			}

		});

	gs.slotStep.subscribe([&] ( MenuState & gs, float deltaT )
	{
		if ( m_delayedGameOver > 0.0f)
		{
			m_delayedGameOver -= deltaT;

			if ( m_delayedGameOver <= 0.0f )
			{
				MenuItem it("restart", "Continue", Vector2( 4.0f, 4.0f));
				gs.addMenuItem(it);
				/*it = MenuItem("exit", "Exit", Vector2( 4.0f, 3.0f));
				 gs.addMenuItem(it);*/

				gs.setCurrentItem(0);
			}
		}

	});

}