, cam(c.Size(), focus.Pos())
, last(SDL_GetTicks())
, running(false) {
- controlled = univ.AddEntity(Entity());
+ controlled = univ.AddShip(Ship());
}
void Application::Update(int dt) {
const float delta = dt / 1e3;
- controlled->acc = Vector<float>(control * 10);
+ controlled->rotThrottle = control.x;
+ controlled->linThrottle = -control.y;
cam.Update(delta);
univ.Update(delta);
focus.SetSpeed(500 / cam.Zoom());
canvas.Cross(cam.ToScreen(focus.Pos()), 15);
canvas.SetColor(entityColor);
- for (const Entity &e : univ.Entities()) {
- canvas.Cross(
- cam.ToScreen(Vector<float>(e.area * univ.areaSize) + e.pos),
- 10);
+ 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);
}
}