Add Vice City menu for testing ReVC functions and how it looks.

Add src/menus, src/util, and src/test to include path
Label most items in main_menu and vice_city_menu.
Add test for using httplib library.
Disable helpers.cpp, need to figure out how to move this stuff into here.
Add httplib.h
This commit is contained in:
kelson8 2025-03-13 01:56:56 -04:00
parent d2def8c21a
commit 29dbb2b296
13 changed files with 10590 additions and 33 deletions

View File

@ -180,7 +180,10 @@
<PreprocessorDefinitions>_DEBUG;_CONSOLE;_OPENGL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;_CONSOLE;_OPENGL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard> <LanguageStandard>stdcpplatest</LanguageStandard>
<AdditionalIncludeDirectories>lib\imgui\;lib\imgui\backends;include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>lib\imgui\;lib\imgui\backends;include\;.\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard_C>stdc17</LanguageStandard_C>
<AssemblerOutput>AssemblyCode</AssemblerOutput>
<AssemblerListingLocation>$(SolutionDir)asm\</AssemblerListingLocation>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
@ -207,7 +210,7 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Directx9|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Directx9|x64'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>lib\imgui\;lib\imgui\backends;.\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>lib\imgui\;lib\imgui\backends;.\src;.\src\test;.\src\util\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DIRECTX9</PreprocessorDefinitions> <PreprocessorDefinitions>_DIRECTX9</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
@ -222,9 +225,9 @@
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="lib\ImGui\backends\imgui_impl_dx9.cpp" />
<ClCompile Include="lib\ImGui\backends\imgui_impl_opengl3.cpp" /> <ClCompile Include="lib\ImGui\backends\imgui_impl_opengl3.cpp" />
<ClCompile Include="src\Main.cpp" /> <ClCompile Include="src\Main.cpp" />
<ClCompile Include="lib\ImGui\backends\imgui_impl_dx9.cpp" />
<ClCompile Include="lib\ImGui\backends\imgui_impl_win32.cpp" /> <ClCompile Include="lib\ImGui\backends\imgui_impl_win32.cpp" />
<ClCompile Include="lib\ImGui\imgui.cpp" /> <ClCompile Include="lib\ImGui\imgui.cpp" />
<ClCompile Include="lib\ImGui\imgui_demo.cpp" /> <ClCompile Include="lib\ImGui\imgui_demo.cpp" />
@ -233,6 +236,7 @@
<ClCompile Include="lib\ImGui\imgui_widgets.cpp" /> <ClCompile Include="lib\ImGui\imgui_widgets.cpp" />
<ClCompile Include="src\menus\main_menu.cpp" /> <ClCompile Include="src\menus\main_menu.cpp" />
<ClCompile Include="src\menus\text_menu.cpp" /> <ClCompile Include="src\menus\text_menu.cpp" />
<ClCompile Include="src\menus\vice_city_menu.cpp" />
<ClCompile Include="src\test\constructor_test.cpp" /> <ClCompile Include="src\test\constructor_test.cpp" />
<ClCompile Include="src\test\curl_test.cpp" /> <ClCompile Include="src\test\curl_test.cpp" />
<ClCompile Include="src\test\directx9_test.cpp" /> <ClCompile Include="src\test\directx9_test.cpp" />
@ -247,6 +251,7 @@
<ClInclude Include="src\menus\main_menu.h" /> <ClInclude Include="src\menus\main_menu.h" />
<ClInclude Include="src\menus\pch.h" /> <ClInclude Include="src\menus\pch.h" />
<ClInclude Include="src\menus\text_menu.h" /> <ClInclude Include="src\menus\text_menu.h" />
<ClInclude Include="src\menus\vice_city_menu.h" />
<ClInclude Include="src\test\constructor_test.h" /> <ClInclude Include="src\test\constructor_test.h" />
<ClInclude Include="src\test\curl_test.h" /> <ClInclude Include="src\test\curl_test.h" />
<ClInclude Include="src\test\defines.h" /> <ClInclude Include="src\test\defines.h" />

View File

@ -13,9 +13,6 @@
<ClCompile Include="lib\ImGui\imgui_draw.cpp"> <ClCompile Include="lib\ImGui\imgui_draw.cpp">
<Filter>src\lib\ImGui</Filter> <Filter>src\lib\ImGui</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="lib\ImGui\backends\imgui_impl_dx9.cpp">
<Filter>src\lib\ImGui</Filter>
</ClCompile>
<ClCompile Include="lib\ImGui\backends\imgui_impl_win32.cpp"> <ClCompile Include="lib\ImGui\backends\imgui_impl_win32.cpp">
<Filter>src\lib\ImGui</Filter> <Filter>src\lib\ImGui</Filter>
</ClCompile> </ClCompile>
@ -61,6 +58,12 @@
<ClCompile Include="src\menus\text_menu.cpp"> <ClCompile Include="src\menus\text_menu.cpp">
<Filter>src\menus</Filter> <Filter>src\menus</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="lib\ImGui\backends\imgui_impl_dx9.cpp">
<Filter>src\lib\ImGui</Filter>
</ClCompile>
<ClCompile Include="src\menus\vice_city_menu.cpp">
<Filter>src\menus</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="lib\ImGui\imconfig.h"> <ClInclude Include="lib\ImGui\imconfig.h">
@ -132,6 +135,9 @@
<ClInclude Include="src\menus\text_menu.h"> <ClInclude Include="src\menus\text_menu.h">
<Filter>src\menus</Filter> <Filter>src\menus</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\menus\vice_city_menu.h">
<Filter>src\menus</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Filter Include="src"> <Filter Include="src">

View File

@ -4,7 +4,7 @@ Size=400,400
Collapsed=1 Collapsed=1
[Window][Dear ImGui Demo] [Window][Dear ImGui Demo]
Pos=638,72 Pos=656,58
Size=550,681 Size=550,681
[Window][Hello, world!] [Window][Hello, world!]
@ -16,7 +16,7 @@ Pos=10,55
Size=517,436 Size=517,436
[Window][Example: Console] [Window][Example: Console]
Pos=91,56 Pos=89,56
Size=520,600 Size=520,600
[Window][Example: Documents] [Window][Example: Documents]
@ -36,8 +36,32 @@ IsChild=1
Size=200,100 Size=200,100
[Window][KCNet ImGui] [Window][KCNet ImGui]
Pos=113,150 Pos=126,147
Size=505,566 Size=487,408
[Window][About Dear ImGui]
Pos=39,68
Size=570,126
[Window][Example: Custom rendering]
Pos=124,129
Size=531,414
[Window][Example: Log]
Pos=60,60
Size=500,400
[Window][Example: Property editor]
Pos=60,60
Size=430,450
[Window][Example: Simple layout]
Pos=60,60
Size=500,440
[Window][Example: Simple layout/left pane_AED60EF8]
IsChild=1
Size=150,386
[Table][0x64418101,3] [Table][0x64418101,3]
RefScale=13 RefScale=13
@ -112,3 +136,7 @@ Column 0 Width=86
Column 1 Width=86 Column 1 Width=86
Column 2 Width=86 Column 2 Width=86
[Table][0xD181190E,2]
Column 0 Weight=1.0000
Column 1 Weight=1.0000

10271
include/httplib.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
#if _WIN32 #if _WIN32
#include "imgui_impl_win32.h" #include "imgui_impl_win32.h"
#include <Windows.h> #include <Windows.h>
#include "./util/keystates.h" #include "keystates.h"
#endif #endif
#include <d3d9.h> #include <d3d9.h>
@ -14,20 +14,21 @@
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
// Utility functions // Utility functions
#include "./util/text_functions.h" #include "text_functions.h"
#include "./util/text_file_functions.h" #include "text_file_functions.h"
// Test functions // Test functions
#include "./test/directx9_test.h" #include "directx9_test.h"
// New test // New test
#include "./test/constructor_test.h" #include "constructor_test.h"
// OpenGL // OpenGL
#include "./test/opengl_test.h" #include "opengl_test.h"
// Menus // Menus
#include "./menus/main_menu.h" //#include "../menus/main_menu.h"
#include "main_menu.h"
#include "vice_city_menu.h"
// https://www.geeksforgeeks.org/macros-and-its-types-in-c-cpp/ // https://www.geeksforgeeks.org/macros-and-its-types-in-c-cpp/
// Test macros // Test macros
@ -54,6 +55,7 @@ bool OpenGLTest::show_demo_window = false;
// TODO Try to play around with PS3 homebrew or Nintendo Switch homebrew. // TODO Try to play around with PS3 homebrew or Nintendo Switch homebrew.
// This doesn't work // This doesn't work
#ifdef _TEST1 #ifdef _TEST1
/// <summary> /// <summary>
@ -86,9 +88,15 @@ void MainMenu::MainMenuTest() {
#ifdef _TEST1 // TODO Fixme #ifdef _TEST1 // TODO Fixme
Car car1("Ford", "Mustang", 1969); Car car1("Ford", "Mustang", 1969);
#endif //_TEST1 #endif //_TEST1
// Vice City Test (ReVC)
VC::Menus::MainMenu();
//-------------- Menu bar-----------//
// Menu bar // Menu bar
if (ImGui::BeginMenuBar()) if (ImGui::BeginMenuBar())
{ {
//-------------- Test menu bar item -----------//
if (ImGui::BeginMenu("Test")) if (ImGui::BeginMenu("Test"))
{ {
ImGui::MenuItem("Main menu bar", NULL, &DirectX9Test::show_app_main_menu_bar); ImGui::MenuItem("Main menu bar", NULL, &DirectX9Test::show_app_main_menu_bar);
@ -97,6 +105,7 @@ void MainMenu::MainMenuTest() {
ImGui::EndMenuBar(); ImGui::EndMenuBar();
} }
//-------------- Test1 header -----------//
// Main testing header. // Main testing header.
if (ImGui::CollapsingHeader("test1")) if (ImGui::CollapsingHeader("test1"))
{ {
@ -206,6 +215,7 @@ void MainMenu::MainMenuTest() {
// Added some spacing to this // Added some spacing to this
ImGui::Text(" Enabled by default for KCNet-ImGui"); ImGui::Text(" Enabled by default for KCNet-ImGui");
// TODO What was this for? Remove this later
#else #else
if (!ImGui::Checkbox("Dark Mode", &DirectX9Test::dark_mode)) if (!ImGui::Checkbox("Dark Mode", &DirectX9Test::dark_mode))
{ {
@ -375,7 +385,7 @@ void MainMenu::MainMenuTest() {
ImGui::Separator(); ImGui::Separator();
// New //-------------- Test2 header -----------//
const int vsprintBufferSize = 1024; const int vsprintBufferSize = 1024;
char* vsPrintBuffer = new char[vsprintBufferSize]; char* vsPrintBuffer = new char[vsprintBufferSize];
@ -394,13 +404,14 @@ void MainMenu::MainMenuTest() {
} }
// //
// Disabled, these are just for testing.
// This works for a column, having multiple items on the same row. // This works for a column, having multiple items on the same row.
ImGui::Columns(2); //ImGui::Columns(2);
ImGui::Text("Hello"); //ImGui::Text("Hello");
ImGui::NextColumn(); //ImGui::NextColumn();
ImGui::Text("World"); //ImGui::Text("World");
ImGui::Columns(1); //ImGui::Columns(1);
//} //}
} }

View File

@ -15,10 +15,10 @@
#include <fstream> #include <fstream>
// Utility functions // Utility functions
#include "./util/text_file_functions.h" #include "text_file_functions.h"
// Test functions // Test functions
#include "./test/directx9_test.h" #include "directx9_test.h"
// Menus // Menus
#include "./menus/text_menu.h" #include "./menus/text_menu.h"

View File

@ -0,0 +1,190 @@
#include "vice_city_menu.h"
#include "imgui.h"
#include <iostream>
// ReVC Stuff
// I'm basically making a test menu for ReVC in my own ImGui test.
bool spawnInCar = false;
bool showVehicleListBox = false;
const char* vehicles[] = { "Rhino", "Cheetah", "Infernus" };
int currentItem = 150;
//int currentItem = 150;
//int *currentItemPtr = &currentItem;
// Test
int selectedIndex = 0;
bool showMainMenuBar = false;
bool pedsEnabled = true;
bool vehiclesEnabled = true;
int vehicleMin = 130;
enum Vehicles {
Rhino = 0,
Cheetah = 1,
Infernus = 2
};
void VC::Menus::MainMenu()
{
bool item_highlight = false;
if (ImGui::CollapsingHeader("ReVC"))
{
if (ImGui::BeginTabBar("ReVC"))
{
//-------------- Player -----------//
if (ImGui::BeginTabItem("Player")) {
if (ImGui::Button("Heal")) {
std::cout << "Player healed" << std::endl;
//PlayerCheats::HealPlayer();
}
ImGui::SameLine();
if (ImGui::Button("Suicide")) {
std::cout << "Player killed" << std::endl;
//PlayerCheats::SuicideCheat();
}
// TODO Come up with a solution for this.
// Possibly use ImGui::ListBox, need to test it some more and mess around with it.
//ImGui::Text("Warps");
//if (ImGui::Button("Airport")) {
//}
ImGui::EndTabItem();
}
//-------------- Vehicles -----------//
if (ImGui::BeginTabItem("Vehicle"))
{
//
ImGui::Text("ReVC Vehicle test");
if (ImGui::Button("Toggle vehicle list"))
{
showVehicleListBox = !showVehicleListBox;
}
// Add a test for spawning in the car
// TODO Add a list of vehicles to spawn into
ImGui::Checkbox("Spawn in vehicle", &spawnInCar);
//
ImGui::SliderInt("Vehicles", &vehicleMin, 130, 236);
if (showVehicleListBox)
{
// TODO Figure out how to make this start from 130 instead of 0.
// TODO Setup submit button for this.
if (ImGui::BeginListBox("Vehicles"))
{
for (int n = 0; n < IM_ARRAYSIZE(vehicles); n++)
{
const bool is_selected = (currentItem == n);
if (ImGui::Selectable(vehicles[n], is_selected)) {
currentItem = n;
std::cout << n << std::endl;
// TODO Come up with a better solution for this...
switch (n) {
case Rhino:
// Spawn the vehicle in here..
// VehicleFunctions::SpawnVehicle(VehicleModels::TAXI, false, false);
std::cout << "Rhino spawned" << std::endl;
}
}
if (item_highlight && ImGui::IsItemHovered())
currentItem = n;
// Set the initial focus when opening the combo (scrolling + keyboard navigation focus)
if (is_selected)
ImGui::SetItemDefaultFocus();
}
ImGui::EndListBox();
}
}
//
// Moved to above
//if (showVehicleListBox)
//{
// ImGui::ListBox("Vehicles", &currentItem, vehicles, 3);
//}
ImGui::EndTabItem();
}
//-------------- Cheats -----------//
if (ImGui::BeginTabItem("Cheats"))
{
if (ImGui::Button("Weapon1"))
{
std::cout << "Weapon set 1 given" << std::endl;
}
if (ImGui::Button("Weapon2"))
{
std::cout << "Weapon set 2 given" << std::endl;
}
if (ImGui::Button("Weapon3"))
{
std::cout << "Weapon set 3 given" << std::endl;
}
// These two below mimic the change that happens in ReVC with my ImGui menu.
if (ImGui::Button("Toggle peds")) {
pedsEnabled = !pedsEnabled;
if (pedsEnabled) {
std::cout << "Peds enabled" << std::endl;
}
else {
std::cout << "Peds disabled" << std::endl;
}
}
if (ImGui::Button("Toggle vehicles")) {
vehiclesEnabled = !vehiclesEnabled;
if (vehiclesEnabled) {
std::cout << "Vehicles enabled" << std::endl;
}
else {
std::cout << "Vehicles disabled" << std::endl;
}
}
//
ImGui::EndTabItem();
}
ImGui::EndTabBar();
}
ImGui::Spacing();
ImGui::Spacing();
ImGui::Spacing();
ImGui::Separator();
}
}

View File

@ -0,0 +1,6 @@
#pragma once
namespace VC {
namespace Menus {
void MainMenu();
}
}

View File

@ -42,8 +42,8 @@
#include <fstream> #include <fstream>
// Util // Util
#include "./util/text_file_functions.h" #include "text_file_functions.h"
#include "./util/text_functions.h" #include "text_functions.h"
// //
// Menus // Menus
#include "./menus/main_menu.h" #include "./menus/main_menu.h"
@ -51,13 +51,12 @@
// Enums, menu title and etc. // Enums, menu title and etc.
// TODO Move into main source folder // TODO Move into main source folder
#include "./test/defines.h" #include "defines.h"
#include "./util/helpers.h" #include "./util/helpers.h"
// TODO Move into ../menus/http_menu.h // TODO Move into ../menus/http_menu.h
#include "./test/http_lib_test.h" #include "http_lib_test.h"
// //
// Switch to using helpers.cpp for helper functions. // Switch to using helpers.cpp for helper functions.
@ -66,6 +65,8 @@
// TODO Create src folder for project, move source files into it // TODO Create src folder for project, move source files into it
// TODO Possibly create headers folder for project. // TODO Possibly create headers folder for project.
// TODO Get OpenGL test working and try to place it somewhere in the GZDoom game once I get it setup with CMake.
// https://www.geeksforgeeks.org/macros-and-its-types-in-c-cpp/ // https://www.geeksforgeeks.org/macros-and-its-types-in-c-cpp/
// Test macros // Test macros
#define LIMIT 5 #define LIMIT 5
@ -78,6 +79,9 @@
// Data // Data
// TODO Move into helpers.cpp or helpers.h // TODO Move into helpers.cpp or helpers.h
#ifndef _TEST2 //!_TEST2 #ifndef _TEST2 //!_TEST2
// TODO Make these public, add them into the header.
// That should fix this to work in the helpers.cpp
static LPDIRECT3D9 g_pD3D = nullptr; static LPDIRECT3D9 g_pD3D = nullptr;
static LPDIRECT3DDEVICE9 g_pd3dDevice = nullptr; static LPDIRECT3DDEVICE9 g_pd3dDevice = nullptr;
static UINT g_ResizeWidth = 0, g_ResizeHeight = 0; static UINT g_ResizeWidth = 0, g_ResizeHeight = 0;
@ -123,6 +127,7 @@ bool isDown = keyState & 0x8000;
//} //}
// //
// TODO Move these test items into a functions file, separate everything out.
int test() int test()
{ {
int num1 = 5; int num1 = 5;

View File

@ -0,0 +1,18 @@
#include "http_lib_test.h"
// https://github.com/yhirose/cpp-httplib
// TODO Figure out how to add libssl and libcrypto to this
// This doesn't work
#ifdef _TEST1
#define CPPHTTPLIB_OPENSSL_SUPPORT
#include "../include/httplib.h"
httplib::Client cli("https://dashy.internal.kelsoncraft.net");
void HttpTest::test() {
auto res = cli.Get("/");
std::cout << res->status;
std::cout << res->body;
}
#endif //_TEST1

9
src/test/http_lib_test.h Normal file
View File

@ -0,0 +1,9 @@
#pragma once
class HttpTest
{
#ifdef _TEST1
public:
static void HttpTest::test();
#endif //_TEST1
};

View File

@ -4,6 +4,8 @@
#include "imgui.h" #include "imgui.h"
#include "imgui_impl_dx9.h" #include "imgui_impl_dx9.h"
#ifdef _TEST2
// Data // Data
static LPDIRECT3D9 g_pD3D = nullptr; static LPDIRECT3D9 g_pD3D = nullptr;
static LPDIRECT3DDEVICE9 g_pd3dDevice = nullptr; static LPDIRECT3DDEVICE9 g_pd3dDevice = nullptr;
@ -14,6 +16,8 @@ static D3DPRESENT_PARAMETERS g_d3dpp = {};
// If I define _TEST2 into directx9_test.cpp it'll switch everything to using this file // If I define _TEST2 into directx9_test.cpp it'll switch everything to using this file
// It crashes because g_d3dpp is a nullptr though // It crashes because g_d3dpp is a nullptr though
bool Helpers::CreateDeviceD3D(HWND hWnd) bool Helpers::CreateDeviceD3D(HWND hWnd)
{ {
if ((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == nullptr) if ((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == nullptr)
@ -47,4 +51,6 @@ void Helpers::ResetDevice()
if (hr == D3DERR_INVALIDCALL) if (hr == D3DERR_INVALIDCALL)
IM_ASSERT(0); IM_ASSERT(0);
ImGui_ImplDX9_CreateDeviceObjects(); ImGui_ImplDX9_CreateDeviceObjects();
} }
#endif //_TEST2

View File

@ -7,12 +7,13 @@
// No wonder this didn't work. // No wonder this didn't work.
// https://stackoverflow.com/questions/12524168/resolving-found-at-file-scope-missing-function-header-in-vs2010-c // https://stackoverflow.com/questions/12524168/resolving-found-at-file-scope-missing-function-header-in-vs2010-c
#ifdef _TEST2
class Helpers { class Helpers {
public: public:
#ifdef _WIN32 #ifdef _WIN32
static bool CreateDeviceD3D(HWND hWnd); static bool CreateDeviceD3D(HWND hWnd);
static void CleanupDeviceD3D(); static void CleanupDeviceD3D();
static void Helpers::ResetDevice(); static void ResetDevice();
#ifdef _TEST2 #ifdef _TEST2
static LPDIRECT3D9 g_pD3D; static LPDIRECT3D9 g_pD3D;
@ -28,5 +29,6 @@ public:
static bool CreateDeviceD3D(); static bool CreateDeviceD3D();
#endif #endif
}; };
#endif //_TEST2