Exemple #1
0
/**
 * \fn bool manageEvent(SDL_Event event, Viewport* viewport)
 * \brief Manage an event.
 *
 * \param event The event to manage.
 * \param viewport The viewport that can be moved.
 * \return False if the the game ends, true if not.
 */
bool manageEvent(SDL_Event event, Viewport* viewport, Events *flags) {
	bool isInPlay = true;
	
	switch(event.type) {
		// Quit game
		case SDL_QUIT:
			isInPlay = false;
			break;
			
		// Key pressed
		case SDL_KEYDOWN:
			switch(event.key.keysym.sym) {
				// Quit game
				case SDLK_ESCAPE:
					isInPlay = false;
					break;
					
				// Move view
				case SDLK_UP:
					moveViewport(viewport, UP);
					break;
					
				case SDLK_DOWN:
					moveViewport(viewport, DOWN);
					break;
					
				case SDLK_LEFT:
					moveViewport(viewport, LEFT);
					break;
					
				case SDLK_RIGHT:
					moveViewport(viewport, RIGHT);
					break;
					
				default:
					break;
			}
		   break;

      // Mouse left click
      case SDL_MOUSEBUTTONDOWN:
         if(event.button.button == SDL_BUTTON_LEFT) {
            Case* caseClicked = whichCase(event.button.x, event.button.y);
            TypeTo* simpleTowerType = flags->selectedTower;
            Case *viewportOffset = whichCase(viewport->mapsurface.x,viewport->mapsurface.y);
            int mapPositionX = caseClicked->xx + viewportOffset->xx;
            int mapPositionY = caseClicked->yy + viewportOffset->yy;
            Tower *tower = createTower(mapPositionX, mapPositionY, simpleTowerType);
            if(tower){
               flags->enemy_Path_Calculation = true;
               pushList((void*)flags->towerList,tower);
               drawTower(tower);
            }
         }
         break;
			
		default:
			break;
	}
	
	return isInPlay;
}
Exemple #2
0
/**
 * \fn bool manageEvent(SDL_Event event, Viewport* viewport)
 * \brief Manage an event.
 *
 * \param event The event to manage.
 * \param viewport The viewport that can be moved.
 * \return False if the the game ends, true if not.
 */
void manageEvent(SDL_Event event, Viewport* viewport, Events *flags, Action *actionList){
	switch(event.type) {
		// Quit game
		case SDL_QUIT:
			actionList[QUIT].boolean = (void*)1;
			break;
			
		// Key pressed
		case SDL_KEYDOWN:
			switch(event.key.keysym.sym) {
				// Quit game
				case SDLK_ESCAPE:
					actionList[QUIT].boolean = (void*)1;
					break;
					
				// Move view
				case SDLK_UP:
					actionList[ARROW_UP].boolean = (void*)1;
				  break;
					
				case SDLK_DOWN:
					actionList[ARROW_DOWN].boolean = (void*)1;
				  break;
					
				case SDLK_LEFT:
					actionList[ARROW_LEFT].boolean = (void*)1;
				  break;
					
				case SDLK_RIGHT:
					actionList[ARROW_RIGHT].boolean = (void*)1;
				  break;
					
				default:
					break;
			}
		   break;
		// Key released
		case SDL_KEYUP:
			switch(event.key.keysym.sym) {
					
					// Stop Moving view
					case SDLK_UP:
						actionList[ARROW_UP].boolean = NULL;
					  break;
					case SDLK_DOWN:
						actionList[ARROW_DOWN].boolean = NULL;
					  break;
					case SDLK_LEFT:
						actionList[ARROW_LEFT].boolean = NULL;
					  break;
					case SDLK_RIGHT:
						actionList[ARROW_RIGHT].boolean = NULL;
					  break;
					default:
					  break;
		  }

      // Mouse left click
      case SDL_MOUSEBUTTONDOWN:
         if(event.button.button == SDL_BUTTON_LEFT) {
		   	actionList[CASE_CLICKED].boolean = whichCase(viewport->map, event.button.x, event.button.y);
         }
         break;
			
		default:
			break;
	}
}