summaryrefslogtreecommitdiff
path: root/csgo-loader/csgo-client/UserExperience/UserInterface.cpp
diff options
context:
space:
mode:
authorboris <wzn@moneybot.cc>2018-12-19 00:13:24 +1300
committerboris <wzn@moneybot.cc>2018-12-19 00:13:24 +1300
commit77b52da44b263df4884be2f35f885d8edccbb6fa (patch)
tree54a9a07c67d507cb5120ae7e4ee86669dfec7c6b /csgo-loader/csgo-client/UserExperience/UserInterface.cpp
parent1270999026bd77165edfffebfce277a34761710c (diff)
added new loader project :)
merry christmas
Diffstat (limited to 'csgo-loader/csgo-client/UserExperience/UserInterface.cpp')
-rw-r--r--csgo-loader/csgo-client/UserExperience/UserInterface.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/csgo-loader/csgo-client/UserExperience/UserInterface.cpp b/csgo-loader/csgo-client/UserExperience/UserInterface.cpp
new file mode 100644
index 0000000..f8f465f
--- /dev/null
+++ b/csgo-loader/csgo-client/UserExperience/UserInterface.cpp
@@ -0,0 +1,65 @@
+#include <UserExperience/UserInterface.hpp>
+
+#include <UserExperience/MoneybotShared/d3d_sprite.hpp>
+#include <UserExperience/MoneybotShared/window.hpp>
+#include <UserExperience/MoneybotShared/ui.h>
+
+// Global accessor for the user interface.
+UserExperience::UserInterfacePtr UserInterface = std::make_unique<UserExperience::UserInterface>();
+
+namespace UserExperience {
+ void OnDirectXFrame() {
+ if(g_d3d.run_frame(g_window.m_d3d_device)) {
+ g_d3d.begin();
+ for(auto& it : d3d::sprites) {
+ it->begin(g_window.m_d3d_device);
+ }
+
+ static auto last_time = GetTickCount() * 0.001f;
+ auto cur_time = GetTickCount() * 0.001f;
+
+ auto deltatime = cur_time - last_time;
+
+ last_time = cur_time;
+
+ constexpr float anim_step = 1.0f / 15.f;
+ static float anim_time = 0.f;
+ static bool flip = false;
+ if(anim_time == 1.0f) {
+ flip = true;
+ }
+ if(anim_time == 0.f) {
+ flip = false;
+ }
+
+ if(flip) anim_time = std::clamp(anim_time - anim_step * deltatime, 0.f, 1.0f);
+ else anim_time = std::clamp(anim_time + anim_step * deltatime, 0.f, 1.0f);
+
+ ui::set_animtime(anim_time);
+ ui::render();
+
+ RECT cur_rect{ };
+ GetWindowRect(g_window.get_hwnd(), &cur_rect);
+
+ g_d3d.end();
+ for(auto& it : d3d::sprites) {
+ it->end();
+ }
+ }
+ }
+
+ bool UserInterface::Start() {
+ bool result = g_window.create();
+
+ if(result) {
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
+ g_window.add_on_frame(&OnDirectXFrame);
+ }
+
+ return result;
+ }
+
+ void UserInterface::RunUiFrame() {
+ g_window.on_frame();
+ }
+} \ No newline at end of file