1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-18 05:05:23 +00:00

Added stormlib and command line parser. Added initial mpq file check on startup.

This commit is contained in:
Tim Sarbin 2019-02-21 21:21:51 -05:00
parent 0f601cb024
commit f46542a05f
18 changed files with 118 additions and 62 deletions

4
.gitignore vendored
View File

@ -1,2 +1,4 @@
cmake-build-*
.idea
.idea
.vscode
build/

6
.gitmodules vendored
View File

@ -4,3 +4,9 @@
[submodule "3rdparty/spdlog"]
path = 3rdparty/spdlog
url = git@github.com:gabime/spdlog.git
[submodule "3rdparty/stormlib"]
path = 3rdparty/stormlib
url = git@github.com:ladislav-zezula/StormLib.git
[submodule "3rdparty/cli11"]
path = 3rdparty/cli11
url = git@github.com:CLIUtils/CLI11.git

View File

@ -2,3 +2,7 @@ set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
add_subdirectory(glfw)
add_subdirectory(stormlib)
add_subdirectory(cli11)

1
3rdparty/cli11 vendored Submodule

@ -0,0 +1 @@
Subproject commit 1a1cde98f5e8868ca2f17707ab84dcae5718110e

1
3rdparty/stormlib vendored Submodule

@ -0,0 +1 @@
Subproject commit f2c8d249607009a282904a43a4c4ba60922a92bb

View File

@ -10,12 +10,13 @@ include(CTest)
include(CMakeDependentOption)
set(CMAKE_CXX_STANDARD 17)
set(CXX_STANDARD 17)
set(OpenGL_GL_PREFERENCE "GLVND")
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
add_subdirectory(3rdparty)
add_subdirectory(OpenDiablo2.OS)
add_subdirectory(OpenDiablo2.Graphics)
add_subdirectory(OpenDiablo2.Game)
add_subdirectory(src/OpenDiablo2.OS)
add_subdirectory(src/OpenDiablo2.Graphics)
add_subdirectory(src/OpenDiablo2.Game)

View File

@ -1,19 +0,0 @@
#include <memory>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <OpenDiablo2.Game/D2Engine.h>
int
main() {
spdlog::set_level(spdlog::level::trace);
spdlog::set_pattern("[%^%l%$] %v");
spdlog::info("OpenDiablo 2 has started");
auto engine = std::make_unique<OpenDiablo2::Game::D2Engine>();
engine->Run();
return 0;
}

View File

@ -1,23 +0,0 @@
project(libOpenDiablo2.Graphics VERSION 0.1 LANGUAGES CXX)
find_package(OpenGL)
include_directories(
include
../3rdparty/bgfx/include
../3rdparty/spdlog/include
${OPENGL_INCLUDE_DIRS}
)
add_library(OpenDiablo2.Graphics SHARED
src/D2Graphics.cpp
)
target_link_libraries(OpenDiablo2.Graphics ${OPENGL_LIBRARIES})
if(MSVC)
target_compile_options(OpenDiablo2.Graphics PRIVATE /W4 /WX)
else(MSVC)
target_compile_options(OpenDiablo2.Graphics PRIVATE -Wall -Wextra -pedantic -Werror)
endif(MSVC)

View File

@ -4,19 +4,26 @@ add_executable(OpenDiablo2
src/D2Engine.cpp
)
include_directories(OpenDiablo2
include
../OpenDiablo2.OS/include
../OpenDiablo2.Graphics/include
../3rdparty/spdlog/include
)
target_link_libraries(OpenDiablo2
PUBLIC
PRIVATE
OpenDiablo2.OS
OpenDiablo2.Graphics
storm
CLI11
stdc++fs
)
target_compile_features(OpenDiablo2 PRIVATE cxx_std_17)
target_include_directories(OpenDiablo2
PUBLIC
include
PRIVATE
include
../OpenDiablo2.OS/include
../OpenDiablo2.Graphics/include
../../3rdparty/spdlog/include
../../3rdparty/stormlib/src
../../3rdparty/cli11/include
)
if(MSVC)
target_compile_options(OpenDiablo2 PRIVATE /W4 /WX)

View File

@ -0,0 +1,42 @@
#include <memory>
#include <experimental/filesystem>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <OpenDiablo2.Game/D2Engine.h>
#include <CLI/CLI.hpp>
#include <StormLib.h>
int
main(int argc, char** argv) {
spdlog::set_level(spdlog::level::trace);
spdlog::set_pattern("[%^%l%$] %v");
spdlog::info("OpenDiablo 2 has started");
CLI::App app{"OpenDiablo2 - An open source re-implementation of Diablo 2."};
std::string basePath = std::experimental::filesystem::current_path();
app.add_option("-p,--path", basePath, "The base path for Diablo 2");
CLI11_PARSE(app, argc, argv);
spdlog::info("Base file path is '" + basePath + "'");
// Sanity-check that files are where we expect them to be...
auto testArchivePath = basePath + std::experimental::filesystem::path::preferred_separator + "d2data.mpq";
HANDLE mpq = nullptr;
if (!SFileOpenArchive(("flat-file:" + testArchivePath).c_str(), 0, STREAM_FLAG_READ_ONLY, &mpq)) {
spdlog::error("Diablo 2 content files were not detected. Please make sure the base path is properly set!");
exit(0);
}
SFileCloseFile(mpq);
spdlog::info("Content files were located, starting engine.");
auto engine = std::make_unique<OpenDiablo2::Game::D2Engine>();
engine->Run();
return 0;
}

View File

@ -0,0 +1,28 @@
project(OpenDiablo2.Graphics VERSION 0.1 LANGUAGES CXX)
find_package(OpenGL)
add_library(OpenDiablo2.Graphics SHARED
src/D2Graphics.cpp
)
target_include_directories(OpenDiablo2.Graphics
PUBLIC
include
PRIVATE
include
../../3rdparty/bgfx/include
../../3rdparty/spdlog/include
${OPENGL_INCLUDE_DIRS}
)
target_link_libraries(OpenDiablo2.Graphics
PRIVATE
${OPENGL_LIBRARIES}
)
if(MSVC)
target_compile_options(OpenDiablo2.Graphics PRIVATE /W4 /WX)
else(MSVC)
target_compile_options(OpenDiablo2.Graphics PRIVATE -Wall -Wextra -pedantic -Werror)
endif(MSVC)

View File

@ -1,16 +1,22 @@
project(libOpenDiablo2.OS VERSION 0.1 LANGUAGES CXX)
include_directories(
include
../3rdparty/glfw/include
../3rdparty/spdlog/include
)
add_library(OpenDiablo2.OS SHARED
src/D2Window.cpp
)
target_link_libraries(OpenDiablo2.OS glfw)
target_include_directories(OpenDiablo2.OS
PUBLIC
include
PRIVATE
include
../../3rdparty/glfw/include
../../3rdparty/spdlog/include
)
target_link_libraries(OpenDiablo2.OS
PRIVATE
glfw
)
if(MSVC)
target_compile_options(OpenDiablo2.OS PRIVATE /W4 /WX)

View File

@ -21,7 +21,7 @@ namespace OpenDiablo2 {
spdlog::debug("Creating GLFW window");
glfwWindowHint(GLFW_RESIZABLE, 0);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
glfwWindow = glfwCreateWindow(800, 600, "OpenDiablo 2", nullptr, nullptr);
}