- SDL_Surface *dst = screen.Screen();
- const Vector<int> begin = cam.ToScreen(Vector<float>(0, 0));
- const Vector<int> end =
- cam.ToScreen((univ.size * univ.secSize * univ.areaSize))
- + Vector<int>(1, 1);
-
- Fill(dst, background);
- Grid2(dst, begin, end, cam.ToScale(univ.areaSize), univ.secSize, secGrid, univGrid);
- Cross(dst, cam.ToScreen(focus.Pos()), 15, focusColor);
-
- for (const Entity &e : univ.Entities()) {
- Cross(dst, cam.ToScreen((e.area * univ.areaSize) + Vector<int>(e.pos)), 10, entityColor);
+ canvas.SetColor(background);
+ canvas.Fill();
+
+ canvas.Grid2(
+ cam.ToScreen(Vector<float>(0, 0)),
+ cam.ToScale(univ.size * univ.secSize * univ.areaSize),
+ cam.ToScale(univ.areaSize),
+ univ.secSize,
+ secGrid,
+ univGrid);
+
+ canvas.SetColor(focusColor);
+ canvas.Cross(cam.ToScreen(focus.Pos()), 15);
+
+ canvas.SetColor(entityColor);
+ for (const Ship &s : univ.Ships()) {
+ const Vector<float> direction = s.Dir();
+ const Vector<int> position = cam.ToScreen(Vector<float>(s.area * univ.areaSize) + s.pos);
+ const Vector<int> nose = position + Vector<int>(direction * 15.0f);
+ const Vector<int> left = position + Vector<int>((Rotate90(direction) * 8.0f) - (direction * 4.0f));
+ const Vector<int> right = position + Vector<int>((Rotate270(direction) * 8.0f) - (direction * 4.0f));
+ canvas.Line(position, nose);
+ canvas.Quad(nose, left, position, right);