From df6944b0fbfc66841b44d9d36d8508f7a09fe264 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Wed, 28 Aug 2024 18:56:43 -0400 Subject: [PATCH] A really bad quick SFML based UI to get started with the FTXUI removal, and a slight reworking of the default .tarpit.json so that it's just a sample and I can use my own config for my dev and have different sounds. --- .gitignore | 1 + .tarpit.json => .tarpit_sample.json | 2 +- assets/sprite.png | Bin 0 -> 2745 bytes sfmltest.cpp | 69 +++++++++++++++++++++------- 4 files changed, 54 insertions(+), 18 deletions(-) rename .tarpit.json => .tarpit_sample.json (84%) create mode 100644 assets/sprite.png diff --git a/.gitignore b/.gitignore index e0b9aa3..bafeaa5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.sqlite3-wal *.sqlite3-shm debug +imgui.ini coverage/ .coverage builddir diff --git a/.tarpit.json b/.tarpit_sample.json similarity index 84% rename from .tarpit.json rename to .tarpit_sample.json index 00fb3a3..1e67401 100644 --- a/.tarpit.json +++ b/.tarpit_sample.json @@ -3,7 +3,7 @@ "you_died": "./assets/you_died.mp3", "build_works": "./assets/build_works.mp3", "build_failed": "./assets/build_failed.mp3", - "building": "./assets/nothing.mp3" + "building": "./assets/building.mp3" }, "git_path": ".\\", "build_cmd": "meson compile -C builddir" diff --git a/assets/sprite.png b/assets/sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..eec9fe99ab3d79419a61def38007591316a6821e GIT binary patch literal 2745 zcmV;q3P$ybP)ey2?M=?t=O+`VW`l%LaHq_JibuzS=AUC{ZZO&`eUJW6o0`?v2CL>yO0YY z7Zi*HLV@B;)m+@HC#piP_HSN-OE42O6aW@G);iyH1k^nTh&fB}xdDoqic3{5R_W7f zuM_^+Jk6O{1qcQT1;l7*09`ZbaArJ37pve*#oRsN?aPDL#VAKvK4wRsSEwOd6@M56`6Hq#>EBIy= z?5ir>rTrPIE_PAO)Pjx`h&yokEz`|Eb9tBDINkMkOtb##kN1&t5*B`FPeWIBhvfF4XyB1I~#a zoX0E|_p!x(OR<*bJsKKSLj$kZMM*L-Tz1oReX#Jl88m=+DZA{No}5?CNK`(ER6Ap> zV9Y395d1N} z>y38)A2`JI*XYT)_BaLdpeeu}Pyurk2-GGHEWnoQF46~Et^ar)6=KVcdU9_1cob2F z$2wXvN25C4(wG&_O70W9{^j=@sZD@z?S9?%4+MN2&RqtaBRx3xdLYRnQw^A{TDoF3 z`WapWHeY*@_wRm>Veo;y@3Hxm#-t(e=IakQUpFM@+XkE)FUm8-g7~*-m^Jd%*V`34 zDG-OGD#Y2_b2fZjt<67PvxL^-sO>}h+~d7_->Y`{DuQFr*?hn`GT^*C;hZ<%eCvR- zn~f&-AcAc6lG2XwL&YbQV9-V0p#E%CAd)Zd{ZZt)R$JKz}W%Lw1zB zU?SI$G!2$iiy9TTX~UJQ^T8w+OH0{_y_ZbOk}_Q9w*B7c(#AoJWk?)l}_;hbZbRiNcFoNII>fD(Jwv=W=#*z6)dme{>q7_qvi)nVGO z8cG!A_<=Qfo2T!h5kP9wfNt)Z9f$J9|jozW6q2{)l7ANa))uw;Cf=d^2`E^t6 zhFjTUV_yDzc6b?EZw`q2C=?Qb~Fm||y=m_JE` z9$Ca8XL9>}EVJZPoB15p8x3OcfcHNp`OyLVU|&A)20r^vW-J-k`X73f&;NiU##rzh zUj8Ce925NIP`>ybj@q9Wzc9%eDvB}e`V5ocXwA;za52skD!1OvkB?x#Q+UNTY_T3U z+|GRu^Qqr3Z&$uBm*tnq1C@{ekbk*~iw|alwNVi-bCy|(Uw(r( za_r$pnKqqgJxi?a!Ywox;YIM@CIIvC0wD1I1-SWcKJk0b|0$cUg(7x#6^*So;H+PB z$f>;U3v9j~uicRwZe!o$_~r-La>IaQ$Ov)irNwbb0de%me1Os(2aK7axLUDhrUCEy zC95pUH|7QV0rO&s@d*w(nNu%eqqW)PrMz(KWPgxM8*+_F3NN>)HpZgG1pp_RtN4p} z$A{Kf<1L)?BQ{(k-Nn^oqg2m9=9@0_^9riD*bks~qOt?9P`oF{#3b+BnGIGC)NPoU zy!219dU1j@msyAd0id+UERIv`syKmU#*!A+5-aqW-9Qtf!e+i-Ff@r>F$S>)G%$uU zgWSGfoL}TOT3e4&Tc8;!CPU3QQ*%;hynz6=*Dz0U7ei!MUF0RRyjmkFf(&_G>3{CR zTuqAw&~3BagnjTg(4bGnxTEqdo6#)w4hEFxBoW53w@Ejfq}!@V!uAU1Yu+6WUNCF% zVB%t`eA9G{M6)Kv^#I^KnhP{E5)BC2%k7IF2RBZWJp?`K0HFYTR-|fD7%hIJ*;gYM zK-P*+<7n~%L|%Ldj`uB#*FZRV>HTPYh8z_+USdM?YR!+t+fG2fBcsQFhrPcqjYWQl zSDQ3plB5OOmITN%VYA;vs+;^nBXDXhTdHeoOFl*bm8M8IJVxcCF+H!}P zf0lT87Akhd>~NhQqLp@=Cx^?8DBi62hH5RuDlE$8dS!my2PeOzI`HrD;AD(z%uu{r z@p{z@lfm^*iJ_vpNHrh7!=k_Eqq8|~wmSAu%u&r&Ov}n<$x|lds?!w5D2{u29-h9| z(~CPTt(c`+f3e5rtN8Kx|NdNEk2CPFrxE`Ns%Ip(5$P&O00000NkvXXu0mjf`~_ #include +using namespace ImGui; + constexpr int FPS=30; constexpr int X_DIM = 1920 / 2; constexpr int Y_DIM = 1080 / 2; +bool window_active_out = true; void ImGui_setup(sf::RenderWindow &window) { - bool res = ImGui::SFML::Init(window); + bool res = SFML::Init(window); fmt::println("IMGUI returned {}", res); } void ImGui_update(sf::RenderWindow &window, sf::Clock &deltaClock, sf::Time &tick) { - ImGui::SFML::Update(window, deltaClock.restart()); - // ImGui::ShowDemoWindow(); - ImGui::Begin("Clock"); sf::Vector2u size = window.getSize(); - ImGui::SetWindowPos(ImVec2(size.x - 150, 0)); - ImGui::SetWindowSize(ImVec2(150, 50)); - std::string msg = fmt::format("Time: {}\n", tick.asSeconds()); - ImGui::Button(msg.c_str()); - ImGui::End(); + + SFML::Update(window, deltaClock.restart()); + + SetNextWindowPos(ImVec2(0, size.y / 2)); + SetNextWindowSize(ImVec2(size.x, size.y / 2)); + + Begin("Turing's Tarpit", &window_active_out); + + // HP | Hits Taken | Round | Streak + Text("HP X"); SameLine(); + Text("Hits Taken X"); SameLine(); + Text("Round X"); SameLine(); + Text("Streak X"); + // HP BAR + float hp = 50.0f; + SliderFloat("HP", &hp, 0.0f, 100.0f); + // Build Log + TextColored(ImVec4(1,1,0,1), "Build Log"); + BeginChild("Scrolling"); + for(int n = 0; n < 50; n++) { + TextWrapped("%04d: Some Text", n); + } + EndChild(); + + // image placeholder + + End(); } -void Window_update(sf::RenderWindow &window) { +void Window_update(sf::RenderWindow &window, sf::Sprite &player) { window.clear(); - ImGui::SFML::Render(window); + window.draw(player); + SFML::Render(window); window.display(); } @@ -42,7 +65,7 @@ void Handle_events(sf::RenderWindow &window) { // is this a main event loop while (window.pollEvent(event)) { - ImGui::SFML::ProcessEvent(window, event); + SFML::ProcessEvent(window, event); switch(event.type) { @@ -62,14 +85,17 @@ void Handle_events(sf::RenderWindow &window) { } } -sf::Time Update_entities(sf::RenderWindow &window, sf::Clock &clock, sf::Clock &deltaClock, sf::Time &tick) { +sf::Time Update_entities(sf::RenderWindow &window, sf::Sprite &player, sf::Clock &clock, sf::Clock &deltaClock, sf::Time &tick) { sf::Vector2u winSize = window.getSize(); float timeStep = 1.0f / FPS; sf::Time since = clock.getElapsedTime(); sf::Time nextTick = since - tick > sf::seconds(1) ? since : tick; + player.setPosition(winSize.x/2, 0); + player.setScale({2.0f, 2.0f}); + ImGui_update(window, deltaClock, tick); - Window_update(window); + Window_update(window, player); return nextTick; } @@ -91,12 +117,21 @@ int main() { sf::Clock deltaClock; sf::Clock clock; sf::Time tick = clock.getElapsedTime(); + sf::Texture texture; + sf::Sprite player; + + // fake image here + if(!texture.loadFromFile("./assets/sprite.png")) { + fmt::println("Error loading sprite!"); + } + texture.setSmooth(true); + player.setTexture(texture); - while (window.isOpen()) { + while (window.isOpen() && window_active_out) { Handle_events(window); // preparing for refactoring this into a class or struct for everything - tick = Update_entities(window, clock, deltaClock, tick); + tick = Update_entities(window, player, clock, deltaClock, tick); } - ImGui::SFML::Shutdown(); + SFML::Shutdown(); }