]> git.localhorst.tv Git - space.git/blobdiff - src/app/Application.cpp
simple zoom
[space.git] / src / app / Application.cpp
index b2ef9161287b5cf77e30ca188386174f116d1390..9ebc2613d7d24a93be4fca69ddc66c200d16a13d 100644 (file)
@@ -87,6 +87,12 @@ void Application::OnKeyDown(const SDL_KeyboardEvent &e) {
                case SDLK_d:
                        control.x += 1;
                        break;
+               case SDLK_z:
+                       cam.DoubleZoom();
+                       break;
+               case SDLK_x:
+                       cam.HalfZoom();
+                       break;
                default:
                        break;
        }
@@ -127,6 +133,7 @@ void Application::OnKeyUp(const SDL_KeyboardEvent &e) {
 void Application::Update(int dt) {
        const float delta = dt / 1e3;
        controlled->acc = Vector<float>(control * 10);
+       cam.Update(delta);
        univ.Update(delta);
        focus.Update(delta);
 }
@@ -140,17 +147,17 @@ void Application::Render() {
        constexpr Color focusColor(0xFA, 0xFA, 0x00);
 
        SDL_Surface *dst = screen.Screen();
-       const Vector<int> begin = cam.Offset();
+       const Vector<int> begin = cam.ToScreen(Vector<float>(0, 0));
        const Vector<int> end =
-               begin + (univ.size * univ.secSize * univ.areaSize) + Vector<int>(1, 1);
+               cam.ToScreen((univ.size * univ.secSize * univ.areaSize)) + Vector<int>(1, 1);;
 
        Fill(dst, background);
-       Grid(dst, begin, end, univ.areaSize, secGrid);
-       Grid(dst, begin, end, univ.secSize * univ.areaSize, univGrid);
-       Cross(dst, begin + Vector<int>(focus.Pos()), 15, focusColor);
+       Grid(dst, begin, end, cam.ToScale(univ.areaSize), secGrid);
+       Grid(dst, begin, end, cam.ToScale(univ.secSize * univ.areaSize), univGrid);
+       Cross(dst, cam.ToScreen(focus.Pos()), 15, focusColor);
 
        for (const Entity &e : univ.Entities()) {
-               Cross(dst, begin + (e.area * univ.areaSize) + Vector<int>(e.pos), 10, entityColor);
+               Cross(dst, cam.ToScreen((e.area * univ.areaSize) + Vector<int>(e.pos)), 10, entityColor);
        }
 }