1 #include "Application.h"
3 #include "../graphics/Color.h"
4 #include "../graphics/primitive.h"
5 #include "../sdl/InitScreen.h"
10 Application::Application(InitScreen &s)
12 , univ(Vector<int>(10, 10), Vector<int>(10, 10), Vector<int>(10, 10), 10)
13 , focus(Vector<float>(500, 500), 500)
14 , cam(800, 800, focus.Pos())
15 , last(SDL_GetTicks())
17 controlled = univ.AddEntity(Entity());
21 void Application::Run() {
24 Uint32 now = SDL_GetTicks();
25 int delta = now - last;
32 void Application::Loop(int delta) {
40 void Application::HandleEvents() {
42 while (SDL_PollEvent(&event)) {
48 screen.Resize(event.resize.w, event.resize.h);
49 cam.Resize(event.resize.w, event.resize.h);
64 void Application::OnKeyDown(const SDL_KeyboardEvent &e) {
65 switch (e.keysym.sym) {
95 void Application::OnKeyUp(const SDL_KeyboardEvent &e) {
96 switch (e.keysym.sym) {
127 void Application::Update(int dt) {
128 const float delta = dt / 1e3;
129 controlled->acc = Vector<float>(control * 10);
135 void Application::Render() {
136 constexpr Color background(0x00, 0x00, 0x00);
137 constexpr Color univGrid(0xEE, 0xEE, 0xEE);
138 constexpr Color secGrid(0x77, 0x77, 0x77);
139 constexpr Color entityColor(0x00, 0xAA, 0xAA);
140 constexpr Color focusColor(0xFA, 0xFA, 0x00);
142 SDL_Surface *dst = screen.Screen();
143 const Vector<int> begin = cam.Offset();
144 const Vector<int> end =
145 begin + (univ.size * univ.secSize * univ.areaSize) + Vector<int>(1, 1);
147 Fill(dst, background);
148 Grid(dst, begin, end, univ.areaSize, secGrid);
149 Grid(dst, begin, end, univ.secSize * univ.areaSize, univGrid);
150 Cross(dst, begin + Vector<int>(focus.Pos()), 15, focusColor);
152 for (const Entity &e : univ.Entities()) {
153 Cross(dst, begin + (e.area * univ.areaSize) + Vector<int>(e.pos), 10, entityColor);