case SDLK_d:
control.x += 1;
break;
+ case SDLK_z:
+ cam.DoubleZoom();
+ break;
+ case SDLK_x:
+ cam.HalfZoom();
+ break;
default:
break;
}
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);
}
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);
}
}