#pragma once #include #include #include #include #include "basics.h" struct App{ std::vector people_online; int uid{0}; void update_positions(){ const float speed = 0.4; typedef std::chrono::duration> fseconds; static auto start = std::chrono::steady_clock::now(); auto end = std::chrono::steady_clock::now(); double time = std::chrono::duration_cast(end-start).count(); //std::cout << time << std::endl; auto n = people_online.size(); for(int i = 0; i < n; ++i){ User& user = *people_online[i]; double x = cos(speed * time + 2*M_PI*i/double(n)); double y = sin(speed * time + 2*M_PI*i/double(n)); user.position.x = 200 + 200*x; user.position.y = 200 + 200*y; } } void login(User& user){ user.index = uid++; people_online.push_back(&user); } void logout(User& user){ people_online.erase(std::remove(people_online.begin(), people_online.end(), &user), people_online.end()); } };