From 3552269b463a8cf9e7696c1a28b7b47ad3ac3c06 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Wed, 7 Dec 2022 12:17:31 -0600 Subject: [PATCH 01/19] partial update to build with vs2022 --- CMakeLists.txt | 4 ++-- build/.gitignore | 1 + build/win64/build-debug.bat | 4 ++-- build/win64/generate-MSVC-all.bat | 6 +++--- build/win64/generate-MSVC-gui.bat | 2 +- library/xml | 2 +- 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 37e657912..b40b4e441 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,8 +61,8 @@ if(UNIX) endif() if(WIN32) - if((NOT MSVC) OR (MSVC_VERSION LESS 1900) OR (MSVC_VERSION GREATER 1919)) - message(SEND_ERROR "MSVC 2015 or 2017 is required") + if((NOT MSVC) OR (MSVC_VERSION LESS 1930) OR (MSVC_VERSION GREATER 1934)) + message(SEND_ERROR "MSVC 2022 is required") endif() endif() diff --git a/build/.gitignore b/build/.gitignore index 47745bc1e..3c85ab4df 100644 --- a/build/.gitignore +++ b/build/.gitignore @@ -1,6 +1,7 @@ VC2010 VC2015 VC2015_32 +VC2022 DF_PATH.txt _CPack_Packages *.tar.* diff --git a/build/win64/build-debug.bat b/build/win64/build-debug.bat index 08ef6d3a9..b8bcff6e9 100644 --- a/build/win64/build-debug.bat +++ b/build/win64/build-debug.bat @@ -1,4 +1,4 @@ -call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -cd VC2015 +call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 +cd VC2022 msbuild /m /p:Platform=x64 /p:Configuration=RelWithDebInfo ALL_BUILD.vcxproj cd .. diff --git a/build/win64/generate-MSVC-all.bat b/build/win64/generate-MSVC-all.bat index d3261fa77..ea8db34c0 100644 --- a/build/win64/generate-MSVC-all.bat +++ b/build/win64/generate-MSVC-all.bat @@ -1,6 +1,6 @@ IF EXIST DF_PATH.txt SET /P _DF_PATH= Date: Wed, 7 Dec 2022 13:08:13 -0600 Subject: [PATCH 02/19] kitbash protobuf into compiling --- depends/protobuf/google/protobuf/stubs/hash.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/depends/protobuf/google/protobuf/stubs/hash.h b/depends/protobuf/google/protobuf/stubs/hash.h index b4b2da574..2018c121e 100644 --- a/depends/protobuf/google/protobuf/stubs/hash.h +++ b/depends/protobuf/google/protobuf/stubs/hash.h @@ -104,7 +104,14 @@ // And.. they are moved back to stdext in MSVC 2013 (haven't checked 2012). That // said, use unordered_map for MSVC 2010 and beyond is our safest bet. #elif defined(_MSC_VER) -# if _MSC_VER >= 1600 // Since Visual Studio 2010 +# if _MSC_VER >= 1900 // Since Visual Studio 2019 +# define GOOGLE_PROTOBUF_HASH_NAMESPACE std +# include +# define GOOGLE_PROTOBUF_HASH_MAP_CLASS unordered_map +# include +# define GOOGLE_PROTOBUF_HASH_SET_CLASS unordered_set + +# elif _MSC_VER >= 1600 // Since Visual Studio 2010 # define GOOGLE_PROTOBUF_HAS_CXX11_HASH # define GOOGLE_PROTOBUF_HASH_COMPARE std::hash_compare # elif _MSC_VER >= 1500 // Since Visual Studio 2008 @@ -233,7 +240,7 @@ namespace google { HashFcn hash_function() const { return HashFcn(); } }; -#elif defined(_MSC_VER) && !defined(_STLPORT_VERSION) +#elif defined(_MSC_VER) && _MSC_VER < 1900 && !defined(_STLPORT_VERSION) template struct hash : public GOOGLE_PROTOBUF_HASH_COMPARE { From f97dce199cbf8ffc5ce6563d7eeba4a74a9917c0 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Wed, 7 Dec 2022 13:42:56 -0600 Subject: [PATCH 03/19] change windows archtecture logic assume win64 by default, it's not 2012 anymore --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b40b4e441..a9428a2d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,10 +102,10 @@ endif() # Automatically detect architecture based on Visual Studio generator if(MSVC AND NOT DEFINED DFHACK_BUILD_ARCH) - if(${CMAKE_GENERATOR} MATCHES "Win64") - set(DFHACK_BUILD_ARCH "64") - else() + if ( (${CMAKE_GENERATOR} MATCHES "Win32") OR (${CMAKE_GENERATOR} MATCHES "x86")) set(DFHACK_BUILD_ARCH "32") + else() + set(DFHACK_BUILD_ARCH "64") endif() else() set(DFHACK_BUILD_ARCH "64" CACHE STRING "Architecture to build ('32' or '64')") From 0b80bd41b092940239dfd79945b157eaf76c7247 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Wed, 7 Dec 2022 12:17:31 -0600 Subject: [PATCH 04/19] partial update to build with vs2022 --- build/.gitignore | 1 + build/win64/build-debug.bat | 4 ++-- build/win64/generate-MSVC-all.bat | 6 +++--- build/win64/generate-MSVC-gui.bat | 2 +- library/xml | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/build/.gitignore b/build/.gitignore index 47745bc1e..3c85ab4df 100644 --- a/build/.gitignore +++ b/build/.gitignore @@ -1,6 +1,7 @@ VC2010 VC2015 VC2015_32 +VC2022 DF_PATH.txt _CPack_Packages *.tar.* diff --git a/build/win64/build-debug.bat b/build/win64/build-debug.bat index 08ef6d3a9..b8bcff6e9 100644 --- a/build/win64/build-debug.bat +++ b/build/win64/build-debug.bat @@ -1,4 +1,4 @@ -call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -cd VC2015 +call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 +cd VC2022 msbuild /m /p:Platform=x64 /p:Configuration=RelWithDebInfo ALL_BUILD.vcxproj cd .. diff --git a/build/win64/generate-MSVC-all.bat b/build/win64/generate-MSVC-all.bat index d3261fa77..ea8db34c0 100644 --- a/build/win64/generate-MSVC-all.bat +++ b/build/win64/generate-MSVC-all.bat @@ -1,6 +1,6 @@ IF EXIST DF_PATH.txt SET /P _DF_PATH= Date: Mon, 12 Dec 2022 04:00:35 -0600 Subject: [PATCH 05/19] update batch files for vs2022 compat --- build/win64/build-debug.bat | 2 +- build/win64/build-release.bat | 4 ++-- build/win64/generate-MSVC-gui.bat | 6 +++--- build/win64/generate-MSVC-minimal.bat | 6 +++--- build/win64/generate-MSVC-release.bat | 6 +++--- build/win64/install-debug.bat | 4 ++-- build/win64/install-release.bat | 4 ++-- build/win64/package-debug.bat | 4 ++-- build/win64/package-release.bat | 4 ++-- 9 files changed, 20 insertions(+), 20 deletions(-) diff --git a/build/win64/build-debug.bat b/build/win64/build-debug.bat index b8bcff6e9..a04cb9984 100644 --- a/build/win64/build-debug.bat +++ b/build/win64/build-debug.bat @@ -1,4 +1,4 @@ -call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 +call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 cd VC2022 msbuild /m /p:Platform=x64 /p:Configuration=RelWithDebInfo ALL_BUILD.vcxproj cd .. diff --git a/build/win64/build-release.bat b/build/win64/build-release.bat index dfeb108b3..8068e5074 100644 --- a/build/win64/build-release.bat +++ b/build/win64/build-release.bat @@ -1,5 +1,5 @@ -call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -cd VC2015 +call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 +cd VC2022 msbuild /m /p:Platform=x64 /p:Configuration=Release ALL_BUILD.vcxproj cd .. pause diff --git a/build/win64/generate-MSVC-gui.bat b/build/win64/generate-MSVC-gui.bat index d48087931..cd18006d0 100644 --- a/build/win64/generate-MSVC-gui.bat +++ b/build/win64/generate-MSVC-gui.bat @@ -1,7 +1,7 @@ IF EXIST DF_PATH.txt SET /P _DF_PATH= Date: Thu, 15 Dec 2022 03:35:57 -0600 Subject: [PATCH 06/19] updates to do test builds of 50.03 --- build/win64/generate-MSVC-testing.bat | 6 ++++++ library/xml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 build/win64/generate-MSVC-testing.bat diff --git a/build/win64/generate-MSVC-testing.bat b/build/win64/generate-MSVC-testing.bat new file mode 100644 index 000000000..57c0db06d --- /dev/null +++ b/build/win64/generate-MSVC-testing.bat @@ -0,0 +1,6 @@ +IF EXIST DF_PATH.txt SET /P _DF_PATH= Date: Thu, 15 Dec 2022 03:42:23 -0600 Subject: [PATCH 07/19] makefile changes --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 311589263..f95d738b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -195,9 +195,9 @@ if(NOT EXISTS ${dfhack_SOURCE_DIR}/library/xml/codegen.pl endif() # set up versioning. -set(DF_VERSION "0.47.05") -set(DFHACK_RELEASE "r8") -set(DFHACK_PRERELEASE FALSE) +set(DF_VERSION "0.50.03") +set(DFHACK_RELEASE "alpha0") +set(DFHACK_PRERELEASE TRUE) set(DFHACK_VERSION "${DF_VERSION}-${DFHACK_RELEASE}") From e6d8f06965f080b173c9f5446de58b581c455630 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Thu, 15 Dec 2022 19:27:52 -0600 Subject: [PATCH 08/19] update structures --- library/xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/xml b/library/xml index 3655eff90..65bb35fb8 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 3655eff9048b3551b6710f809aaedd17636d0405 +Subproject commit 65bb35fb8b714e3944bc59a597ffe777eae280ba From 9587dd42f8c2aab6fb472367c344815673e45fa5 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Thu, 15 Dec 2022 19:56:17 -0600 Subject: [PATCH 09/19] structures update --- library/xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/xml b/library/xml index 65bb35fb8..417df0def 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 65bb35fb8b714e3944bc59a597ffe777eae280ba +Subproject commit 417df0defd193943daf8192392ff5ae55edb9f75 From 7fae0fe44f2de94f4fe0d0ca3b92bde1dd8f89ab Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Thu, 15 Dec 2022 21:19:40 -0600 Subject: [PATCH 10/19] structures --- library/xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/xml b/library/xml index 417df0def..02ef33394 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 417df0defd193943daf8192392ff5ae55edb9f75 +Subproject commit 02ef33394fa391efde85f0239ef493a2a1113bdf From 0953982cfaa459fa244d5478754d58f675bf2cbe Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 15 Dec 2022 22:41:33 -0800 Subject: [PATCH 11/19] remove DF download and tests for v50 revert when there is something to download and test --- .github/workflows/build.yml | 50 ++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a70587ae2..7819cf2ec 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -57,11 +57,11 @@ jobs: echo "DF_VERSION=${DF_VERSION}" >> $GITHUB_ENV echo "DF_FOLDER=${HOME}/DF/${DF_VERSION}/df_linux" >> $GITHUB_ENV echo "CCACHE_DIR=${HOME}/.ccache" >> $GITHUB_ENV - - name: Fetch DF cache - uses: actions/cache@v3 - with: - path: ~/DF - key: dfcache-${{ steps.env_setup.outputs.df_version }}-${{ hashFiles('ci/download-df.sh') }} + # - name: Fetch DF cache + # uses: actions/cache@v3 + # with: + # path: ~/DF + # key: dfcache-${{ steps.env_setup.outputs.df_version }}-${{ hashFiles('ci/download-df.sh') }} - name: Fetch ccache uses: actions/cache@v3 with: @@ -70,9 +70,9 @@ jobs: restore-keys: | ccache-v2-${{ matrix.os }}-gcc-${{ matrix.gcc }}-${{ github.ref_name }} ccache-v2-${{ matrix.os }}-gcc-${{ matrix.gcc }} - - name: Download DF - run: | - sh ci/download-df.sh + # - name: Download DF + # run: | + # sh ci/download-df.sh - name: Configure DFHack env: CC: gcc-${{ matrix.gcc }} @@ -101,23 +101,23 @@ jobs: run: | ninja -C build-ci test exit $? - - name: Run lua tests - id: run_tests_lua - run: | - export TERM=dumb - status=0 - script -qe -c "python ci/run-tests.py --headless --keep-status \"$DF_FOLDER\"" || status=$((status + 1)) - python ci/check-rpc.py "$DF_FOLDER/dfhack-rpc.txt" || status=$((status + 2)) - mkdir -p artifacts - cp "$DF_FOLDER"/test*.json "$DF_FOLDER"/*.log artifacts || status=$((status + 4)) - exit $status - - name: Upload test artifacts - uses: actions/upload-artifact@v1 - if: (success() || failure()) && steps.run_tests.outcome != 'skipped' - continue-on-error: true - with: - name: test-artifacts-${{ matrix.gcc }} - path: artifacts + # - name: Run lua tests + # id: run_tests_lua + # run: | + # export TERM=dumb + # status=0 + # script -qe -c "python ci/run-tests.py --headless --keep-status \"$DF_FOLDER\"" || status=$((status + 1)) + # python ci/check-rpc.py "$DF_FOLDER/dfhack-rpc.txt" || status=$((status + 2)) + # mkdir -p artifacts + # cp "$DF_FOLDER"/test*.json "$DF_FOLDER"/*.log artifacts || status=$((status + 4)) + # exit $status + # - name: Upload test artifacts + # uses: actions/upload-artifact@v1 + # if: (success() || failure()) && steps.run_tests.outcome != 'skipped' + # continue-on-error: true + # with: + # name: test-artifacts-${{ matrix.gcc }} + # path: artifacts - name: Clean up DF folder # prevent DFHack-generated files from ending up in the cache # (download-df.sh also removes them, this is just to save cache space) From 93b8479e94e61f17eb439c398d780beb79617df0 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 16 Dec 2022 11:08:40 -0800 Subject: [PATCH 12/19] comment out problematic code in Buildings.cpp --- library/modules/Buildings.cpp | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/library/modules/Buildings.cpp b/library/modules/Buildings.cpp index 1918771ae..4ec3f11d7 100644 --- a/library/modules/Buildings.cpp +++ b/library/modules/Buildings.cpp @@ -219,7 +219,7 @@ df::specific_ref *Buildings::getSpecificRef(df::building *building, df::specific bool Buildings::setOwner(df::building *bld, df::unit *unit) { CHECK_NULL_POINTER(bld); - +/* TODO: understand how this changes for v50 if (!bld->is_room) return false; if (bld->owner == unit) @@ -255,6 +255,7 @@ bool Buildings::setOwner(df::building *bld, df::unit *unit) { bld->owner_id = -1; } +*/ return true; } @@ -457,12 +458,14 @@ df::building *Buildings::allocInstance(df::coord pos, df::building_type type, in } break; } +/* TODO: understand how this changes for v50 case building_type::Coffin: { if (VIRTUAL_CAST_VAR(obj, df::building_coffinst, bld)) obj->initBurialFlags(); // DF has this copy&pasted break; } +*/ case building_type::Trap: { if (VIRTUAL_CAST_VAR(obj, df::building_trapst, bld)) @@ -786,8 +789,10 @@ bool Buildings::containsTile(df::building *bld, df::coord2d tile, bool room) if (room) { +/* TODO: understand how this changes for v50 if (!bld->is_room || !bld->room.extents) return false; +*/ } else { @@ -961,6 +966,7 @@ static void markBuildingTiles(df::building *bld, bool remove) static void linkRooms(df::building *bld) { +/* TODO: understand how this changes for v50 auto &vec = world->buildings.other[buildings_other_id::IN_PLAY]; bool changed = false; @@ -984,10 +990,12 @@ static void linkRooms(df::building *bld) if (changed) df::global::ui->equipment.update.bits.buildings = true; +*/ } static void unlinkRooms(df::building *bld) { +/* TODO: understand how this changes for v50 for (size_t i = 0; i < bld->parents.size(); i++) { auto parent = bld->parents[i]; @@ -996,6 +1004,7 @@ static void unlinkRooms(df::building *bld) } bld->parents.clear(); +*/ } static void linkBuilding(df::building *bld) @@ -1044,6 +1053,7 @@ static int getMaxStockpileId() return max_id; } +/* TODO: understand how this changes for v50 static int getMaxCivzoneId() { auto &vec = world->buildings.other[buildings_other_id::ANY_ZONE]; @@ -1058,6 +1068,7 @@ static int getMaxCivzoneId() return max_id; } +*/ bool Buildings::constructAbstract(df::building *bld) { @@ -1071,14 +1082,17 @@ bool Buildings::constructAbstract(df::building *bld) switch (bld->getType()) { case building_type::Stockpile: + if (auto stock = strict_virtual_cast(bld)) stock->stockpile_number = getMaxStockpileId() + 1; break; +/* TODO: understand how this changes for v50 case building_type::Civzone: if (auto zone = strict_virtual_cast(bld)) zone->zone_num = getMaxCivzoneId() + 1; break; +*/ default: break; @@ -1381,6 +1395,7 @@ std::string Buildings::getRoomDescription(df::building *building, df::unit *unit CHECK_NULL_POINTER(building); // unit can be null +/* TODO: understand how this changes for v50 if (!building->is_room) return ""; @@ -1399,6 +1414,7 @@ std::string Buildings::getRoomDescription(df::building *building, df::unit *unit } return vector_get(room_quality_names[btype], size_t(level), string("")); +*/ return ""; } void Buildings::getStockpileContents(df::building_stockpilest *stockpile, std::vector *items) @@ -1418,7 +1434,9 @@ bool Buildings::isActivityZone(df::building * building) { CHECK_NULL_POINTER(building); return building->getType() == building_type::Civzone +/* TODO: understand how this changes for v50 && building->getSubtype() == (short)civzone_type::ActivityZone; +*/ ; } bool Buildings::isPenPasture(df::building * building) @@ -1426,35 +1444,45 @@ bool Buildings::isPenPasture(df::building * building) if (!isActivityZone(building)) return false; +/* TODO: understand how this changes for v50 return ((df::building_civzonest*) building)->zone_flags.bits.pen_pasture != 0; +*/ return false; } bool Buildings::isPitPond(df::building * building) { if (!isActivityZone(building)) return false; +/* TODO: understand how this changes for v50 return ((df::building_civzonest*) building)->zone_flags.bits.pit_pond != 0; +*/ return false; } bool Buildings::isActive(df::building * building) { if (!isActivityZone(building)) return false; +/* TODO: understand how this changes for v50 return ((df::building_civzonest*) building)->zone_flags.bits.active != 0; +*/ return false; } bool Buildings::isHospital(df::building * building) { if (!isActivityZone(building)) return false; +/* TODO: understand how this changes for v50 return ((df::building_civzonest*) building)->zone_flags.bits.hospital != 0; +*/ return false; } bool Buildings::isAnimalTraining(df::building * building) { if (!isActivityZone(building)) return false; +/* TODO: understand how this changes for v50 return ((df::building_civzonest*) building)->zone_flags.bits.animal_training != 0; +*/ return false; } // returns building of pen/pit at cursor position (NULL if nothing found) From 55351951f079426a70d9bd822736c48a3016b8ac Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 16 Dec 2022 11:13:30 -0800 Subject: [PATCH 13/19] comment out problematic code in Items.cpp --- library/modules/Items.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/library/modules/Items.cpp b/library/modules/Items.cpp index 3f24df3d6..14c637dc8 100644 --- a/library/modules/Items.cpp +++ b/library/modules/Items.cpp @@ -92,7 +92,7 @@ using namespace std; #include "df/unit_inventory_item.h" #include "df/vehicle.h" #include "df/vermin.h" -#include "df/viewscreen_itemst.h" +#include "df/viewscreen.h" #include "df/world.h" #include "df/world_site.h" #include "df/written_content.h" @@ -904,6 +904,7 @@ static bool detachItem(MapExtras::MapCache &mc, df::item *item) case general_ref_type::CONTAINED_IN_ITEM: if (auto item2 = ref->getItem()) { +/* TODO: understand how this changes for v50 // Viewscreens hold general_ref_contains_itemst pointers for (auto screen = Core::getTopViewscreen(); screen; screen = screen->parent) { @@ -911,7 +912,7 @@ static bool detachItem(MapExtras::MapCache &mc, df::item *item) if (vsitem && vsitem->item == item2) return false; } - +*/ item2->flags.bits.weight_computed = false; removeRef(item2->general_refs, general_ref_type::CONTAINS_ITEM, item->id); From ccc9e976e230f9358cb9118b19d77a3ed3dfa2bb Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 16 Dec 2022 11:26:05 -0800 Subject: [PATCH 14/19] comment out problematic code in Screen.cpp --- library/include/modules/Screen.h | 1 + library/modules/Screen.cpp | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/library/include/modules/Screen.h b/library/include/modules/Screen.h index a91de875c..9be09fa67 100644 --- a/library/include/modules/Screen.h +++ b/library/include/modules/Screen.h @@ -336,6 +336,7 @@ namespace DFHack virtual void logic(); virtual void render(); + virtual void resize(int w, int h) { return; } virtual int8_t movies_okay() { return 1; } virtual bool key_conflict(df::interface_key key); diff --git a/library/modules/Screen.cpp b/library/modules/Screen.cpp index ebcc3f229..60967d771 100644 --- a/library/modules/Screen.cpp +++ b/library/modules/Screen.cpp @@ -79,11 +79,12 @@ using std::string; // returns text grid coordinates, even if the game map is scaled differently df::coord2d Screen::getMousePos() { - int32_t x = Renderer::GET_MOUSE_COORDS_SENTINEL, y = (int32_t)true; - if (!enabler || !enabler->renderer->get_mouse_coords(&x, &y)) { + int32_t a, b, r, f; + if (!enabler || !enabler->renderer->get_mouse_coords(&a, &b, &r, &f)) { return df::coord2d(-1, -1); } - return df::coord2d(x, y); + std::cerr << "a,b,r,f = " << a << ", " << b << ", " << r << ", " << f << std::endl; + return df::coord2d(-1, -1); } df::coord2d Screen::getWindowSize() @@ -108,6 +109,7 @@ static bool doSetTile_default(const Pen &pen, int x, int y, bool map) if (x < 0 || x >= dim.x || y < 0 || y >= dim.y) return false; +/* TODO: understand how this changes for v50 int index = ((x * gps->dimy) + y); auto screen = gps->screen + index*4; screen[0] = uint8_t(pen.ch); @@ -119,7 +121,7 @@ static bool doSetTile_default(const Pen &pen, int x, int y, bool map) gps->screentexpos_grayscale[index] = (pen.tile_mode == Screen::Pen::TileColor); gps->screentexpos_cf[index] = pen.tile_fg; gps->screentexpos_cbr[index] = pen.tile_bg; - +*/ return true; } @@ -143,6 +145,7 @@ static Pen doGetTile_default(int x, int y, bool map) if (x < 0 || x >= dim.x || y < 0 || y >= dim.y) return Pen(0,0,0,-1); +/* TODO: understand how this changes for v50 int index = x*dim.y + y; auto screen = gps->screen + index*4; if (screen[3] & 0x80) @@ -168,6 +171,7 @@ static Pen doGetTile_default(int x, int y, bool map) } return pen; +*/ return Pen(0,0,0,-1); } GUI_HOOK_DEFINE(Screen::Hooks::get_tile, doGetTile_default); From 768c95ecb6f3458f81536c901e1bb4cded7aaecc Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 16 Dec 2022 11:53:44 -0800 Subject: [PATCH 15/19] absorb Putnam's work on Screen --- library/include/modules/Screen.h | 1 + library/modules/Screen.cpp | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/library/include/modules/Screen.h b/library/include/modules/Screen.h index 9be09fa67..347df1011 100644 --- a/library/include/modules/Screen.h +++ b/library/include/modules/Screen.h @@ -178,6 +178,7 @@ namespace DFHack }; DFHACK_EXPORT df::coord2d getMousePos(); + DFHACK_EXPORT df::coord2d getMousePixels(); DFHACK_EXPORT df::coord2d getWindowSize(); inline rect2d getScreenRect() { diff --git a/library/modules/Screen.cpp b/library/modules/Screen.cpp index 60967d771..38611e5ce 100644 --- a/library/modules/Screen.cpp +++ b/library/modules/Screen.cpp @@ -79,12 +79,23 @@ using std::string; // returns text grid coordinates, even if the game map is scaled differently df::coord2d Screen::getMousePos() { - int32_t a, b, r, f; - if (!enabler || !enabler->renderer->get_mouse_coords(&a, &b, &r, &f)) { + int32_t pixelx = 0, pixely = 0, tilex = 0, tiley = 0; + if (!enabler || !enabler->renderer->get_mouse_coords( + &pixelx, &pixely, &tilex, &tiley)) { return df::coord2d(-1, -1); } - std::cerr << "a,b,r,f = " << a << ", " << b << ", " << r << ", " << f << std::endl; - return df::coord2d(-1, -1); + return df::coord2d(tilex, tiley); +} + +// returns the screen pixel coordinates +df::coord2d Screen::getMousePixels() +{ + int32_t pixelx = 0, pixely = 0, tilex = 0, tiley = 0; + if (!enabler || !enabler->renderer->get_mouse_coords( + &pixelx, &pixely, &tilex, &tiley)) { + return df::coord2d(-1, -1); + } + return df::coord2d(pixelx, pixely); } df::coord2d Screen::getWindowSize() From 003b74bf73181c2cf3fcb007e4a9a323087f0dc7 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 16 Dec 2022 11:54:42 -0800 Subject: [PATCH 16/19] absorb Putnam's work on the windows hooks --- library/Hooks-windows.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/library/Hooks-windows.cpp b/library/Hooks-windows.cpp index 916cd9895..d3f39b969 100644 --- a/library/Hooks-windows.cpp +++ b/library/Hooks-windows.cpp @@ -664,6 +664,13 @@ DFhackCExport void SDL_DestroySemaphore(void *sem) _SDL_DestroySemaphore(sem); } +static vPtr (*_SDL_ListModes)(vPtr format, uint32_t flags) = 0; +DFhackCExport vPtr SDL_ListModes(vPtr format, uint32_t flags) +{ + InitSDLPointers(); + return _SDL_ListModes(format, flags); +} + static uint8_t (*_SDL_GetAppState)(void) = 0; DFhackCExport uint8_t SDL_GetAppState(void) { @@ -817,6 +824,9 @@ void FirstCall() _SDL_getenv = (char* (*)(const char*))GetProcAddress(realSDLlib,"SDL_getenv"); _SDL_strlcat = (size_t (*)(char*, const char*, size_t))GetProcAddress(realSDLlib,"SDL_strlcat"); + // new in DF v50.01 + _SDL_ListModes = (void *(*)(void*, uint32_t))GetProcAddress(realSDLlib,"SDL_ListModes"); + _SDL_EnableUNICODE(1); fprintf(stderr,"Initized HOOKS!\n"); From 5cd60e10f080cac4755c458eed56d178b9eaf085 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 16 Dec 2022 12:02:36 -0800 Subject: [PATCH 17/19] comment out problematic code in Gui.cpp --- library/modules/Gui.cpp | 54 ++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index e548b4246..920292af9 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -50,7 +50,6 @@ using namespace DFHack; #include "DataDefs.h" #include "df/announcement_flags.h" -#include "df/assign_trade_status.h" #include "df/building_cagest.h" #include "df/building_civzonest.h" #include "df/building_furnacest.h" @@ -82,36 +81,7 @@ using namespace DFHack; #include "df/ui_unit_view_mode.h" #include "df/unit.h" #include "df/unit_inventory_item.h" -#include "df/viewscreen_announcelistst.h" -#include "df/viewscreen_assign_display_itemst.h" -#include "df/viewscreen_buildinglistst.h" -#include "df/viewscreen_customize_unitst.h" -#include "df/viewscreen_dungeon_monsterstatusst.h" -#include "df/viewscreen_dungeonmodest.h" #include "df/viewscreen_dwarfmodest.h" -#include "df/viewscreen_itemst.h" -#include "df/viewscreen_joblistst.h" -#include "df/viewscreen_jobmanagementst.h" -#include "df/viewscreen_jobst.h" -#include "df/viewscreen_layer.h" -#include "df/viewscreen_layer_assigntradest.h" -#include "df/viewscreen_layer_militaryst.h" -#include "df/viewscreen_layer_noblelistst.h" -#include "df/viewscreen_layer_overall_healthst.h" -#include "df/viewscreen_layer_stockpilest.h" -#include "df/viewscreen_layer_unit_healthst.h" -#include "df/viewscreen_layer_unit_relationshipst.h" -#include "df/viewscreen_locationsst.h" -#include "df/viewscreen_petst.h" -#include "df/viewscreen_storesst.h" -#include "df/viewscreen_textviewerst.h" -#include "df/viewscreen_tradegoodsst.h" -#include "df/viewscreen_unitlistst.h" -#include "df/viewscreen_unitst.h" -#include "df/viewscreen_reportlistst.h" -#include "df/viewscreen_treasurelistst.h" -#include "df/viewscreen_workquota_conditionst.h" -#include "df/viewscreen_workshop_profilest.h" #include "df/world.h" const size_t MAX_REPORTS_SIZE = 3000; // DF clears old reports to maintain this vector size @@ -136,10 +106,12 @@ using df::global::ui_menu_width; using df::global::ui_sidebar_menus; using df::global::world; +/* TODO: understand how this changes for v50 static df::layer_object_listst *getLayerList(df::viewscreen_layer *layer, int idx) { return virtual_cast(vector_get(layer->layer_objects,idx)); } +*/ static std::string getNameChunk(virtual_identity *id, int start, int end) { @@ -343,6 +315,7 @@ DEFINE_GET_FOCUS_STRING_HANDLER(dwarfmode) focus += "/List"; break; +/* TODO: understand how this changes for v50 case Hauling: if (ui->hauling.in_assign_vehicle) { @@ -381,12 +354,14 @@ DEFINE_GET_FOCUS_STRING_HANDLER(dwarfmode) focus += "/Select/" + tag; } break; +*/ default: break; } } +/* TODO: understand how this changes for v50 DEFINE_GET_FOCUS_STRING_HANDLER(dungeonmode) { using df::global::ui_advmode; @@ -599,6 +574,7 @@ DEFINE_GET_FOCUS_STRING_HANDLER(workquota_condition) if (screen->item_count_edit) focus += "/EditCount"; } +*/ std::string Gui::getFocusString(df::viewscreen *top) { @@ -637,8 +613,10 @@ bool Gui::default_hotkey(df::viewscreen *top) { if (strict_virtual_cast(top)) return true; +/* TODO: understand how this changes for v50 if (strict_virtual_cast(top)) return true; +*/ } return false; } @@ -655,15 +633,19 @@ bool Gui::dwarfmode_hotkey(df::viewscreen *top) bool Gui::unitjobs_hotkey(df::viewscreen *top) { +/* TODO: understand how this changes for v50 // Require the unit or jobs list return !!strict_virtual_cast(top) || !!strict_virtual_cast(top); +*/ return false; } bool Gui::item_details_hotkey(df::viewscreen *top) { +/* TODO: understand how this changes for v50 // Require the main dwarf mode screen return !!strict_virtual_cast(top); +*/ return false; } static bool has_cursor() @@ -796,6 +778,7 @@ df::job *Gui::getSelectedWorkshopJob(color_ostream &out, bool quiet) bool Gui::any_job_hotkey(df::viewscreen *top) { +/* TODO: understand how this changes for v50 if (VIRTUAL_CAST_VAR(screen, df::viewscreen_joblistst, top)) return vector_get(screen->jobs, screen->cursor_pos) != NULL; @@ -803,10 +786,12 @@ bool Gui::any_job_hotkey(df::viewscreen *top) return vector_get(screen->jobs[screen->page], screen->cursor_pos[screen->page]) != NULL; return workshop_job_hotkey(top); +*/ return false; } df::job *Gui::getSelectedJob(color_ostream &out, bool quiet) { +/* TODO: understand how this changes for v50 df::viewscreen *top = Core::getTopViewscreen(); if (VIRTUAL_CAST_VAR(screen, df::viewscreen_jobst, top)) @@ -836,6 +821,7 @@ df::job *Gui::getSelectedJob(color_ostream &out, bool quiet) return dfscreen->getSelectedJob(); else return getSelectedWorkshopJob(out, quiet); +*/ return getSelectedWorkshopJob(out, quiet); } df::unit *Gui::getAnyUnit(df::viewscreen *top) @@ -848,6 +834,7 @@ df::unit *Gui::getAnyUnit(df::viewscreen *top) using df::global::ui_building_assign_units; using df::global::ui_building_item_cursor; +/* TODO: understand how this changes for v50 if (VIRTUAL_CAST_VAR(screen, df::viewscreen_unitst, top)) { return screen->unit; @@ -1101,6 +1088,7 @@ df::unit *Gui::getAnyUnit(df::viewscreen *top) default: return NULL; } +*/ return NULL; } bool Gui::any_unit_hotkey(df::viewscreen *top) @@ -1126,6 +1114,7 @@ df::item *Gui::getAnyItem(df::viewscreen *top) using df::global::ui_unit_view_mode; using df::global::ui_building_item_cursor; +/* TODO: understand how this changes for v50 if (VIRTUAL_CAST_VAR(screen, df::viewscreen_textviewerst, top)) { // return the main item if the parent screen is a viewscreen_itemst @@ -1239,6 +1228,7 @@ df::item *Gui::getAnyItem(df::viewscreen *top) default: return NULL; } +*/ return NULL; } bool Gui::any_item_hotkey(df::viewscreen *top) @@ -1262,6 +1252,7 @@ df::building *Gui::getAnyBuilding(df::viewscreen *top) using df::global::ui_look_list; using df::global::ui_look_cursor; +/* TODO: understand how this changes for v50 if (VIRTUAL_CAST_VAR(screen, df::viewscreen_buildinglistst, top)) return vector_get(screen->buildings, screen->cursor); @@ -1303,6 +1294,7 @@ df::building *Gui::getAnyBuilding(df::viewscreen *top) default: return NULL; } +*/ return NULL; } bool Gui::any_building_hotkey(df::viewscreen *top) @@ -2156,6 +2148,7 @@ bool Gui::setDesignationCoords (const int32_t x, const int32_t y, const int32_t df::coord Gui::getMousePos() { df::coord pos; +/* TODO: understand how this changes for v50 if (gps && gps->mouse_x > -1) { // return invalid coords if the cursor is not over the map DwarfmodeDims dims = getDwarfmodeViewDims(); @@ -2167,6 +2160,7 @@ df::coord Gui::getMousePos() pos.x += gps->mouse_x - 1; pos.y += gps->mouse_y - 1; } +*/ return pos; } From 57e599a4d9e13c90c6ffcca60a7a85daf0ca8150 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Sat, 17 Dec 2022 13:07:37 -0600 Subject: [PATCH 18/19] comment out barracks reference barracks appears to have gone away in 50.03 --- CMakeLists.txt | 2 +- library/modules/Gui.cpp | 4 +++- library/xml | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f95d738b6..a02a23b92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -196,7 +196,7 @@ endif() # set up versioning. set(DF_VERSION "0.50.03") -set(DFHACK_RELEASE "alpha0") +set(DFHACK_RELEASE "alpha0pre1") set(DFHACK_PRERELEASE TRUE) set(DFHACK_VERSION "${DF_VERSION}-${DFHACK_RELEASE}") diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index 920292af9..c23d7712d 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -2083,8 +2083,10 @@ bool Gui::inRenameBuilding() { if (!ui_sidebar_menus) return false; - + /* TODO: understand how this changes for v50 return ui_sidebar_menus->barracks.in_rename; + */ + return false; } bool Gui::getViewCoords (int32_t &x, int32_t &y, int32_t &z) diff --git a/library/xml b/library/xml index 02ef33394..7ad3f05c5 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 02ef33394fa391efde85f0239ef493a2a1113bdf +Subproject commit 7ad3f05c5b3608f6fc7fad439cca8acd776dec30 From 607a4b34d4cb9621d5e70471ac2496c7849346fa Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Sat, 17 Dec 2022 15:09:08 -0600 Subject: [PATCH 19/19] update structures --- library/xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/xml b/library/xml index 7ad3f05c5..a42c1ab1e 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 7ad3f05c5b3608f6fc7fad439cca8acd776dec30 +Subproject commit a42c1ab1e07601e4c9ea76ec4f36b4e2fff3777e