Skip to content
Snippets Groups Projects
Select Git revision
  • 390d6836cfd61db36c6d23cc23a168f140d1b40f
  • main default
  • qlearn-4
  • qlearning5
  • qlearn5
  • render
  • qlearn
  • ball
  • fire
  • player
10 results

gest_event.c

Blame
  • user avatar
    antoinemeyer5 authored
    c07056fd
    History
    gest_event.c 4.23 KiB
    #include "gest_event.h"
    
    SDL_Point mousePosition;
    
    int keys[10];
    
    void manageMenu(){
        SDL_Event event;
        while (SDL_PollEvent(&event)){
                switch(event.type)
                {   
                    case SDL_QUIT:
                        running = 0;
                        break;
    
                    case SDL_KEYUP:
                        switch (event.key.keysym.sym)
                        {
                        case SDLK_ESCAPE:
                            running = 0;
                            continue;
    
                        default:
                            continue;
                        }
                        break;
                    
                    case SDL_KEYDOWN:
                        switch (event.key.keysym.sym)
                        {
                        case SDLK_ESCAPE:
                            running = 0;
                            continue;
    
                        default:
                            continue;
                        }
                        break;
                    
                    case SDL_MOUSEMOTION:
                        mousePosition.x = event.motion.x;
                        mousePosition.y = event.motion.y;
                        continue;
    
    
                    case SDL_MOUSEBUTTONDOWN:
                        if (SDL_PointInRect(&mousePosition, &buttonRect)){
                            gameState = GAME;
                        }
                        break;
    
                    default:
                        continue;
                }
        }
        manageMovement();
        SDL_Delay(5);
    }
    
    void manageGame(){
        SDL_Event event;
        while (SDL_PollEvent(&event)){
                switch(event.type)
                {   
                    case SDL_QUIT:
                        running = 0;
                        break;
    
                    case SDL_KEYUP:
                        switch (event.key.keysym.sym)
                        {
                        case SDLK_ESCAPE:
                            running = 0;
                            continue;
    
                        case SDLK_UP:
                            keys[PLAYER_UP] = 0;
                            break;
                        
                        case SDLK_DOWN:
                            keys[PLAYER_DOWN] = 0;
                            break;
    
                        case SDLK_LEFT:
                            keys[PLAYER_LEFT] = 0;
                            break;
    
                        case SDLK_RIGHT:
                            keys[PLAYER_RIGHT] = 0;
                            break;
    
                        default:
                            continue;
                        }
                        break;
                    
                    case SDL_KEYDOWN:
                        switch (event.key.keysym.sym)
                        {
                        case SDLK_ESCAPE:
                            running = 0;
                            continue;
                        
                        case SDLK_UP:
                            keys[PLAYER_UP] = 1;
                            break;
    
                        case SDLK_DOWN:
                            keys[PLAYER_DOWN] = 1;
                            break;
    
                        case SDLK_LEFT:
                            keys[PLAYER_LEFT] = 1;
                            break;
    
                        case SDLK_RIGHT:
                            keys[PLAYER_RIGHT] = 1;
                            break;
    
                        default:
                            continue;
                        }
                        break;
                    
                    case SDL_MOUSEMOTION:
                        mousePosition.x = (event.motion.x - (screenDimension.w - (MAPSIZE * CELLSIZE)) / 2) / CELLSIZE;
                        mousePosition.y = (event.motion.y - 0) / CELLSIZE;
                        continue;
    
                    case SDL_MOUSEBUTTONDOWN:
                        //clic on water
                        if(2 == map[mousePosition.y][mousePosition.x]){
                            fillWater(mousePosition.x, mousePosition.y);
                        }else{
                            pourWater(mousePosition.x, mousePosition.y);
                        }                    
                        break;
    
                    default:
                        continue;
                }
        }
        manageMovement();
        SDL_Delay(5);
    }
    
    void *eventLoop(void *arg){
        while(running){
            switch(gameState){
                case MENU : manageMenu();break;
                case GAME : manageGame();break;
                default:printf("game state fault");break;
            }
        }
        return NULL;
    }