void ProcessInput(const Input& input) { if (input.IsKeyPressed(Key::ESCAPE)) { input.SetCursorVisible(true); m_isMouseGrabbed = false; } if (input.IsKeyDown(Key::W)) { m_cameraTransform->position += m_cameraTransform->GetForward() * m_speed; } if (input.IsKeyDown(Key::S)) { m_cameraTransform->position += m_cameraTransform->GetBack() * m_speed; } if (input.IsKeyDown(Key::A)) { m_cameraTransform->position += m_cameraTransform->GetLeft() * m_speed; } if (input.IsKeyDown(Key::D)) { m_cameraTransform->position += m_cameraTransform->GetRight() * m_speed; } if (m_isMouseGrabbed) { glm::vec2 deltaPos = input.GetMousePosition() - m_centerPosition; bool rotY = deltaPos.x != 0; bool rotX = deltaPos.y != 0; if (rotY) { m_cameraTransform->rotation *= glm::normalize(glm::angleAxis(glm::radians(deltaPos.x * m_sensitivity), m_cameraTransform->GetUp())); } if (rotX) { m_cameraTransform->rotation *= glm::normalize(glm::angleAxis(glm::radians(deltaPos.y * m_sensitivity), m_cameraTransform->GetRight())); } if (rotY || rotX) { input.SetMousePosition(m_centerPosition); } } if (input.IsMouseButtonPressed(Mouse::BUTTON_LEFT)) { input.SetCursorVisible(false); input.SetMousePosition(m_centerPosition); m_isMouseGrabbed = true; } }
int main(int argc, char* argv) { SDL_Init(SDL_INIT_EVERYTHING); SDL_Window* window = nullptr; SDL_Renderer* gRenderer = NULL; window = SDL_CreateWindow("Hi", 50, 50, 1000, 500, SDL_WINDOW_SHOWN); gRenderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); Uint32 tick; bool pauseReset = true; bool running = true; float frame = 0.0f; //Initialize renderer color SDL_SetRenderDrawColor(gRenderer, 0xFF, 0xFF, 0xFF, 0xFF); //Initialize PNG loading int imgFlags = IMG_INIT_PNG; if (!(IMG_Init(imgFlags) & imgFlags)) { printf("SDL_image could not initialize! SDL_image Error: %s\n", IMG_GetError()); } Game game; Entity entity; game.LoadMobList(gRenderer); game.LoadPlayerAnims(gRenderer, &entity); game.InitSpawnManager(); //IDENFITY A MOB //Entity mush = *game.IdentifyMob("mush"); Input PlayerInput; GameMap map; SDL_Rect mapPos; mapPos.w = 1387; mapPos.h = 907; mapPos.x = 0; mapPos.y = -407; map.InitMap("content\\maps\\hennesys\\map01.png", mapPos, gRenderer); entity.SetPositionY(190); while (running) { tick = SDL_GetTicks(); SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: break; case SDL_KEYDOWN: PlayerInput.KeyDown(event.key.keysym.scancode); break; case SDL_KEYUP: PlayerInput.KeyUp(event.key.keysym.scancode); break; } } //Clear screen SDL_RenderClear(gRenderer); if (PlayerInput.IsKeyPressed(SDL_SCANCODE_LEFT)) { entity.Walk(Left); } else if (PlayerInput.IsKeyPressed(SDL_SCANCODE_RIGHT)) { entity.Walk(Right); } else { entity.Station(); } map.DrawMap(mapPos); entity.Draw(); game.ManageMobPool(); //Update screen SDL_RenderPresent(gRenderer); //SpawnManager game.spawn_manager.ManagePool(tick); //LIMIT FPS frame += 0.1f; unsigned int fps = 60; if ((1000 / fps) > SDL_GetTicks() - tick) { SDL_Delay(1000 / fps - (SDL_GetTicks() - tick)); } } SDL_DestroyWindow(window); return 1; }