From c29c88895094fbdaa591bc164e02895ee15e348e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 17 Sep 2023 21:17:23 +0200 Subject: [PATCH] reference commit documenting the changes to current vkDoom master # Conflicts: # .github/workflows/continuous_integration.yml --- .devcontainer/GZDoom.dockerfile | 16 --- .devcontainer/devcontainer.json | 6 - .github/ISSUE_TEMPLATE/bug_report.yml | 124 ----------------- .github/ISSUE_TEMPLATE/feature_request.yml | 107 --------------- .github/workflows/appimage.yml | 53 -------- .github/workflows/continuous_integration.yml | 128 ------------------ AppImageBuilder.yml | 45 ------ CMakeLists.txt | 2 +- README.md | 26 +--- .../zvulkan/vk_mem_alloc/vk_mem_alloc.h | 1 - soundfont/{gzdoom.sf2 => vkdoom.sf2} | Bin src/CMakeLists.txt | 4 +- src/am_map.cpp | 12 +- src/common/menu/menu.cpp | 2 +- .../rendering/hwrenderer/data/hw_cvars.cpp | 2 +- src/common/startscreen/endoom.cpp | 2 +- src/common/statusbar/base_sbar.cpp | 4 +- src/console/c_cmds.cpp | 4 +- src/d_main.cpp | 32 ++--- src/d_netinfo.cpp | 2 +- src/g_game.cpp | 6 +- src/g_level.cpp | 6 +- src/g_levellocals.h | 3 +- src/gamedata/g_mapinfo.cpp | 34 ++--- src/gamedata/g_mapinfo.h | 11 +- src/menu/doommenu.cpp | 6 +- src/p_saveg.cpp | 2 +- src/posix/osx/zdoom.icns | Bin 120245 -> 80444 bytes src/rendering/hwrenderer/scene/hw_sprites.cpp | 4 +- src/scripting/vmthunks.cpp | 6 +- src/version.h | 26 ++-- src/win32/icon1.ico | Bin 300318 -> 1453926 bytes src/win32/zdoom.rc | 26 ++-- wadsrc/CMakeLists.txt | 2 +- wadsrc/static/zscript/actors/doom/doommisc.zs | 5 +- wadsrc/static/zscript/constants.zs | 6 +- wadsrc/static/zscript/doombase.zs | 7 +- 37 files changed, 106 insertions(+), 616 deletions(-) delete mode 100644 .devcontainer/GZDoom.dockerfile delete mode 100644 .devcontainer/devcontainer.json delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml delete mode 100644 .github/workflows/appimage.yml delete mode 100644 .github/workflows/continuous_integration.yml delete mode 100644 AppImageBuilder.yml rename soundfont/{gzdoom.sf2 => vkdoom.sf2} (100%) diff --git a/.devcontainer/GZDoom.dockerfile b/.devcontainer/GZDoom.dockerfile deleted file mode 100644 index da2440913d..0000000000 --- a/.devcontainer/GZDoom.dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM ubuntu:latest -LABEL org.opencontainers.image.authors="CandiceJoy " -LABEL author="CandiceJoy" -LABEL description="GZDoom compilation image (Designed for GZDoom 4.11pre)" -LABEL verion="4.11pre" - -# Update these as needed -ENV GZ_ZMUSIC_URL="https://github.com/coelckers/ZMusic.git" -ENV GZ_ZMUSIC_COMMIT="75d2994b4b1fd6891b20819375075a2976ee34de" -ENV GZ_PACKAGES="build-essential git cmake libsdl2-dev libvpx-dev" - -# Update package lists and install package-based build dependencies -RUN apt-get update; apt-get install -y $GZ_PACKAGES - -# Install ZMusic -RUN git clone $GZ_ZMUSIC_URL; git reset --hard $GZ_ZMUSIC_COMMIT; cd ZMusic; cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr; make; make install diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index 9bcbdd2f9f..0000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "build":{ "dockerfile": "GZDoom.dockerfile" }, - "name": "GZDoom", - "features": { - } -} diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index 7ed0af7ce6..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,124 +0,0 @@ -name: Bug Report -description: File a Bug report -title: '[BUG] ' -labels: bug -#assignees: 'anonymous@temp' - -body: - - type: markdown - attributes: - value: | - ## Please fill out forms as cleanly as possible. - #### Make sure that you have - * properly edited & filled in the title of this bug report - - type: input - id: version - attributes: - label: GZDoom version - description: | - What version are you using? - Run `gzdoom --version` or check in the console in game. - Make sure to update to latest [release](https://github.com/coelckers/gzdoom/releases) version and test again before continuing. - placeholder: "ex: GZDoom 4.0.0, Git version, Branch, other" - validations: - required: false - - type: dropdown - id: gameid - attributes: - label: Which game are you running with GZDoom? - multiple: false - options: - - Doom - - Doom 2 - - Heretic - - Hexen - - Strife - - Other - validations: - required: false - - type: dropdown - id: OS - attributes: - label: What Operating System are you using? - multiple: false - options: - - Windows 11 - - Windows 10 - - Windows 8 - - Windows 7 - - Windows Other - - Mac OS - - Linux x86 - - Linux x86_64 - - Linux ARM (Raspberry Pi) - - Other - validations: - required: false - - type: input - id: os_detail - attributes: - label: Please describe your specific OS version - description: Other details - placeholder: "Windows 11 Home/Pro/Server/etc, Mac OSX version, Debian 10/11/etc, Ubuntu 18/20/etc, Arch, etc." - validations: - required: false - - type: input - id: hardware - attributes: - label: Relevant hardware info - description: Hardware - placeholder: "CPU, GPU, device brand/model: e.g. Intel, AMD, Nvidia, etc" - validations: - required: false - - type: checkboxes - id: checked - attributes: - label: Have you checked that no other similar issue already exists? - description: Searched issues before creating report? - options: - - label: I have searched and not found similar issues. - required: true - - type: textarea - id: description - attributes: - label: A clear and concise description of what the bug is. - description: Describe what happens, what software were you running? _Include a small mod demonstrating the bug, or a screenshot if possible_ - placeholder: "How & When does this occur?" - validations: - required: true - - type: textarea - id: steps - attributes: - label: Steps to reproduce the behaviour. - description: How can we reproduce this? - placeholder: "Explain how to reproduce" - value: | - Explain how to reproduce - 1. - 2. - 3. - validations: - required: false - - type: textarea - id: config_file - attributes: - label: Your configuration - description: | - Share the config file(s) you've been using to run the program. (`gzdoom.ini`) - Please avoid pasting the full config, _use attachments or links_ in a [Gist](https://gist.github.com/) - placeholder: "example: cl_autorun=true" - render: ini # syntax highlighting - validations: - required: false - - type: textarea - id: log - attributes: - label: Provide a Log - description: Please avoid pasting the full log, _use attachments or links_ in a [Gist](https://gist.github.com/) - placeholder: "Copy & paste error log section or provide link" - validations: - required: false - - type: markdown - attributes: - value: | - * Make sure you have properly filled in the title of this bug report diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index 60c7440fe5..0000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,107 +0,0 @@ -name: Feature Request -description: Suggest an idea (a new feature or other improvement) for this project -title: '[Feature] ' -labels: enhancement -#assignees: 'anonymous@temp' - -body: - - type: markdown - attributes: - value: | - ## Please fill out forms as cleanly as possible. - #### Make sure that you have - * properly edited & filled in the title of this bug report - - type: input - id: version - attributes: - label: GZDoom version - description: | - What version are you using? - Run `gzdoom --version` or check in the console in game. - Make sure to update to latest [release](https://github.com/coelckers/gzdoom/releases) version and test again before continuing. - placeholder: "ex: GZDoom 4.0.0, Git version, Branch, other" - validations: - required: false - - type: dropdown - id: gameid - attributes: - label: Which game are you running with GZDoom? - multiple: false - options: - - Doom - - Doom 2 - - Heretic - - Hexen - - Strife - - Other - validations: - required: false - - type: dropdown - id: OS - attributes: - label: What Operating System are you using? - multiple: false - options: - - Windows 11 - - Windows 10 - - Windows 8 - - Windows 7 - - Windows Other - - Mac OS - - Linux x86 - - Linux x86_64 - - Linux ARM (Raspberry Pi) - - Other - validations: - required: false - - type: input - id: other - attributes: - label: If Other OS, please describe - description: Other details - placeholder: "Windows, Mac OSX version, Debian, Ubuntu, Arch, etc." - validations: - required: false - - type: input - id: hardware - attributes: - label: Relevant hardware info - description: Hardware - placeholder: "CPU, GPU, device brand/model: e.g. Intel, AMD, Nvidia, etc" - validations: - required: false - - type: textarea - id: related - attributes: - label: Is your feature request related to a problem? Please describe. - description: Related - placeholder: "Ex. I'm always frustrated when" - validations: - required: true - - type: textarea - id: solution - attributes: - label: Describe the solution you'd like - placeholder: "Ex. How can we make it better?" - validations: - required: false - - type: textarea - id: alternative - attributes: - label: Describe alternatives you've considered - description: A clear and concise description of any alternative solutions or features you've considered. - placeholder: "Similar idea or software" - validations: - required: false - - type: textarea - id: additional - attributes: - label: Add any other context or screenshots about the feature request here. - description: Screenshots or Links? - placeholder: "Ex. Screenshot or Link" - validations: - required: false - - type: markdown - attributes: - value: | - * Make sure you have properly filled in the title of this feature request diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml deleted file mode 100644 index 885c329210..0000000000 --- a/.github/workflows/appimage.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: Continuous Integration - -on: [push, pull_request] - -jobs: - build-appimage: - name: Linux Clang 12 | AppImage - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - name: Install GZDoom dependencies - run: | - sudo apt-get update - sudo apt-get install clang-12 libsdl2-dev libvpx-dev libwebp-dev cmake -y - - name: Install appimage-builder dependencies - run: | - sudo apt-get install binutils coreutils desktop-file-utils fakeroot fuse libgdk-pixbuf2.0-dev patchelf -y - sudo apt-get install python3-pip python3-setuptools squashfs-tools strace util-linux zsync -y - sudo apt-get install imagemagick-6.q16hdri -y - - name: Install appimage-builder - run: | - python3 -m pip install --upgrade pip - pip install appimage-builder - - name: Build zmusic dependency - run: | - git clone -b 1.1.12 https://github.com/ZDoom/ZMusic.git zmusic_build - mkdir ./zmusic_build/build - cd ./zmusic_build/build - cmake -DCMAKE_BUILD_TYPE=Release .. - cmake --build . - cd ../../ - mkdir -p ./AppDir/zmusic/lib - mkdir ./AppDir/zmusic/include - mv ./zmusic_build/build/source/libzmusic* ./AppDir/zmusic/lib/ - mv ./zmusic_build/include/zmusic.h ./AppDir/zmusic/include/ - - name: Configure - run: cmake -B AppDir -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=`pwd`/AppDir/zmusic -DPK3_QUIET_ZIPDIR=ON -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 . - - name: Build - shell: bash - run: | - export MAKEFLAGS=--keep-going - cmake --build AppDir --config Release --parallel `nproc` - cp ./AppDir/zmusic/lib/* ./AppDir/ - mkdir -p ./AppDir/usr/share/icons - convert ./src/win32/icon1.ico[0] -flatten ./AppDir/usr/share/icons/game_icon.png - - name: Build AppImage - run: | - appimage-builder --skip-tests - - uses: actions/upload-artifact@v2 - with: - name: AppImage - path: './*.AppImage*' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml deleted file mode 100644 index aa323c9399..0000000000 --- a/.github/workflows/continuous_integration.yml +++ /dev/null @@ -1,128 +0,0 @@ -name: Continuous Integration - -on: [push, pull_request] - -jobs: - build: - name: ${{ matrix.config.name }} | ${{ matrix.config.build_type }} - runs-on: ${{ matrix.config.os }} - strategy: - fail-fast: false - matrix: - config: - - name: Visual Studio 2022 - os: windows-2022 - extra_options: -DCMAKE_TOOLCHAIN_FILE=build/vcpkg/scripts/buildsystems/vcpkg.cmake - build_type: Release - - - name: Visual Studio 2022 - os: windows-2022 - extra_options: -DCMAKE_TOOLCHAIN_FILE=build/vcpkg/scripts/buildsystems/vcpkg.cmake - build_type: Debug - - - name: Visual Studio 2019 - os: windows-2019 - extra_options: -DCMAKE_TOOLCHAIN_FILE=build/vcpkg/scripts/buildsystems/vcpkg.cmake - build_type: Release - - - name: macOS - os: macos-12 - deps_cmdline: brew install libvpx webp - build_type: Release - - - name: macOS - os: macos-12 - extra_options: -G Xcode -DDYN_OPENAL=OFF - deps_cmdline: brew install libvpx webp - build_type: Debug - - - name: Linux GCC 9 - os: ubuntu-22.04 - extra_options: -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 - deps_cmdline: sudo apt update && sudo apt install libsdl2-dev libvpx-dev libgtk2.0-dev libwebp-dev - build_type: RelWithDebInfo - - - name: Linux GCC 12 - os: ubuntu-22.04 - extra_options: -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_CXX_COMPILER=g++-12 - deps_cmdline: sudo apt update && sudo apt install libsdl2-dev libvpx-dev libgtk-3-dev libwebp-dev - build_type: MinSizeRel - - - name: Linux Clang 11 - os: ubuntu-22.04 - extra_options: -DCMAKE_C_COMPILER=clang-11 -DCMAKE_CXX_COMPILER=clang++-11 -DDYN_OPENAL=OFF - deps_cmdline: sudo apt update && sudo apt install clang-11 libsdl2-dev libvpx-dev libopenal-dev libwebp-dev - build_type: Debug - - - name: Linux Clang 15 - os: ubuntu-22.04 - extra_options: -DCMAKE_C_COMPILER=clang-15 -DCMAKE_CXX_COMPILER=clang++-15 - deps_cmdline: sudo apt update && sudo apt install clang-15 libsdl2-dev libvpx-dev libwebp-dev - build_type: Release - - steps: - - uses: actions/checkout@v4 - - - name: Install Dependencies - shell: bash - run: | - if [[ -n "${{ matrix.config.deps_cmdline }}" ]]; then - eval ${{ matrix.config.deps_cmdline }} - fi - mkdir build - if [[ "${{ runner.os }}" == 'macOS' ]]; then - export ZMUSIC_PACKAGE=zmusic-1.1.9-macos.tar.xz - elif [[ "${{ runner.os }}" == 'Linux' ]]; then - export ZMUSIC_PACKAGE=zmusic-1.1.9-linux.tar.xz - fi - if [[ -n "${ZMUSIC_PACKAGE}" ]]; then - cd build - wget -q "https://github.com/coelckers/gzdoom/releases/download/ci_deps/${ZMUSIC_PACKAGE}" - tar -xf "${ZMUSIC_PACKAGE}" - fi - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11 - if: runner.os == 'Windows' - with: - vcpkgDirectory: '${{ github.workspace }}/build/vcpkg' - vcpkgGitCommitId: '2c401863dd54a640aeb26ed736c55489c079323b' - - - name: Configure - shell: bash - run: | - cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} -DCMAKE_PREFIX_PATH=`pwd`/build/zmusic -DPK3_QUIET_ZIPDIR=ON ${{ matrix.config.extra_options }} . - - - name: Build - shell: bash - run: | - export MAKEFLAGS=--keep-going - cmake --build build --config ${{ matrix.config.build_type }} --parallel 3 - - - name: Create Package - if: runner.os == 'Windows' # Remove to make packages of all targets - shell: bash - run: | - cd build - mkdir package - if [[ "${{ runner.os }}" == 'Windows' ]]; then - cp ${{ matrix.config.build_type }}/gzdoom.exe ${{ matrix.config.build_type }}/*.pk3 package - elif [[ "${{ runner.os }}" == 'macOS' ]]; then - cp -r gzdoom.app package - elif [[ "${{ runner.os }}" == 'Linux' ]]; then - cp gzdoom *.pk3 package - fi - - - name: Upload Package - if: runner.os == 'Windows' # Remove to store packages of all targets - uses: actions/upload-artifact@v3 - with: - path: build/package - name: ${{ matrix.config.name }} ${{ matrix.config.build_type }} - - - name: List Build Directory - if: always() - shell: bash - run: | - git status - ls -lR build diff --git a/AppImageBuilder.yml b/AppImageBuilder.yml deleted file mode 100644 index 6f9ebcc3bd..0000000000 --- a/AppImageBuilder.yml +++ /dev/null @@ -1,45 +0,0 @@ -# appimage-builder recipe see https://appimage-builder.readthedocs.io for details -version: 1 -AppDir: - path: ./AppDir - app_info: - id: com.GZDoom.app - name: GZDoom - icon: game_icon.png - version: latest - exec: ./gzdoom - exec_args: $@ - apt: - arch: amd64 - allow_unauthenticated: true - sources: - - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy main restricted - - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy-updates main restricted - include: [] - files: - include: [] - exclude: - - usr/share/man - - usr/share/doc/*/README.* - - usr/share/doc/*/changelog.* - - usr/share/doc/*/NEWS.* - - usr/share/doc/*/TODO.* - test: - fedora-30: - image: appimagecrafters/tests-env:fedora-30 - command: ./AppRun - debian-stable: - image: appimagecrafters/tests-env:debian-stable - command: ./AppRun - archlinux-latest: - image: appimagecrafters/tests-env:archlinux-latest - command: ./AppRun - centos-7: - image: appimagecrafters/tests-env:centos-7 - command: ./AppRun - ubuntu-xenial: - image: appimagecrafters/tests-env:ubuntu-xenial - command: ./AppRun -AppImage: - arch: x86_64 - update-information: guess diff --git a/CMakeLists.txt b/CMakeLists.txt index 94101d28a1..1582492acd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_HOS set(VCPKG_TARGET_TRIPLET "x64-windows-static") endif() -project(GZDoom) +project(VkDoom) if (WIN32 AND VCPKG_TOOLCHAIN) option(LIBVPX_VCPKG "Use libvpx from vcpkg" OFF) diff --git a/README.md b/README.md index 7268877ea3..a0ea1d01ce 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,10 @@ -# Welcome to GZDoom! +## Welcome to VkDoom! -[![Continuous Integration](https://github.com/ZDoom/gzdoom/actions/workflows/continuous_integration.yml/badge.svg)](https://github.com/ZDoom/gzdoom/actions/workflows/continuous_integration.yml) +VkDoom is a source port based on the DOOM engine with a focus on Vulkan and modern computers. -## GZDoom is a modder-friendly OpenGL and Vulkan source port based on the DOOM engine +Please see license files for individual contributor licenses. -Copyright (c) 1998-2023 ZDoom + GZDoom teams, and contributors - -Doom Source (c) 1997 id Software, Raven Software, and contributors - -Please see license files for individual contributor licenses - -Special thanks to Coraline of the EDGE team for allowing us to use her [README.md](https://github.com/3dfxdev/EDGE/blob/master/README.md) as a template for this one. +Visit our [website](https://vkdoom.org) for more details. ### Licensed under the GPL v3 ##### https://www.gnu.org/licenses/quick-guide-gplv3.en.html ---- - -## How to build GZDoom - -To build GZDoom, please see the [wiki](https://zdoom.org/wiki/) and see the "Programmer's Corner" on the bottom-right corner of the page to build for your platform. - -# Resources -- https://zdoom.org/ - Home Page -- https://forum.zdoom.org/ - Forum -- https://zdoom.org/wiki/ - Wiki -- https://dsc.gg/zdoom - Discord Server -- https://docs.google.com/spreadsheets/d/1pvwXEgytkor9SClCiDn4j5AH7FedyXS-ocCbsuQIXDU/edit?usp=sharing - Translation sheet (Google Docs) diff --git a/libraries/ZVulkan/include/zvulkan/vk_mem_alloc/vk_mem_alloc.h b/libraries/ZVulkan/include/zvulkan/vk_mem_alloc/vk_mem_alloc.h index 39f9d9d42e..147dd69281 100644 --- a/libraries/ZVulkan/include/zvulkan/vk_mem_alloc/vk_mem_alloc.h +++ b/libraries/ZVulkan/include/zvulkan/vk_mem_alloc/vk_mem_alloc.h @@ -121,7 +121,6 @@ for user-defined purpose without allocating any real GPU memory. See documentation chapter: \ref statistics. */ - #ifdef __cplusplus #include extern "C" { diff --git a/soundfont/gzdoom.sf2 b/soundfont/vkdoom.sf2 similarity index 100% rename from soundfont/gzdoom.sf2 rename to soundfont/vkdoom.sf2 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b41d6ded92..56f90f1306 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1338,7 +1338,7 @@ endif() add_custom_command(TARGET zdoom POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${CMAKE_SOURCE_DIR}/soundfont/gzdoom.sf2 $/soundfonts/gzdoom.sf2 + ${CMAKE_SOURCE_DIR}/soundfont/vkdoom.sf2 $/soundfonts/vkdoom.sf2 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/fm_banks/GENMIDI.GS.wopl $/fm_banks/GENMIDI.GS.wopl COMMAND ${CMAKE_COMMAND} -E copy_if_different @@ -1377,7 +1377,7 @@ if( APPLE ) set_target_properties(zdoom PROPERTIES LINK_FLAGS "${LINK_FRAMEWORKS}" MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/posix/osx/zdoom-info.plist" - XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "org.drdteam.gzdoom" + XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "org.vkdoom.vkdoom" XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" ) # Dymanic libraries like libvulkan.dylib or libMoltenVK.dylib will be loaded by dlopen() diff --git a/src/am_map.cpp b/src/am_map.cpp index 0b8e9c181d..373a7f810f 100644 --- a/src/am_map.cpp +++ b/src/am_map.cpp @@ -132,8 +132,8 @@ struct islope_t CVAR(Bool, am_textured, true, CVAR_ARCHIVE) CVAR(Float, am_linealpha, 1.0f, CVAR_ARCHIVE) -CVAR(Int, am_linethickness, 1, CVAR_ARCHIVE) -CVAR(Int, am_lineantialiasing, 0, CVAR_ARCHIVE) +CVAR(Int, am_linethickness, 2, CVAR_ARCHIVE) +CVAR(Int, am_lineantialiasing, 1, CVAR_ARCHIVE) CVAR(Bool, am_thingrenderstyles, true, CVAR_ARCHIVE) CVAR(Int, am_showsubsector, -1, 0); @@ -1547,13 +1547,11 @@ void DAutomap::Ticker () if (!automapactive) return; -#ifdef UNFRIENDLY_OPTIONS - if ((primaryLevel->flags9 & LEVEL9_NOAUTOMAP)) + if ((primaryLevel->vkdflags & VKDLEVELFLAG_NOAUTOMAP)) { AM_ToggleMap(); return; } -#endif amclock++; } @@ -3457,10 +3455,8 @@ void AM_ToggleMap() if (!primaryLevel || !primaryLevel->automap) return; -#ifdef UNFRIENDLY_OPTIONS - if (!automapactive && (primaryLevel->flags9 & LEVEL9_NOAUTOMAP)) + if (!automapactive && (primaryLevel->vkdflags & VKDLEVELFLAG_NOAUTOMAP)) return; -#endif if (!automapactive) { diff --git a/src/common/menu/menu.cpp b/src/common/menu/menu.cpp index 67ed85a6ed..a7f560828b 100644 --- a/src/common/menu/menu.cpp +++ b/src/common/menu/menu.cpp @@ -64,7 +64,7 @@ CVAR (Int, m_showinputgrid, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) CVAR(Bool, m_blockcontrollers, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) CVAR (Float, snd_menuvolume, 0.6f, CVAR_ARCHIVE) -CVAR(Int, m_use_mouse, 2, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) +CVAR(Int, m_use_mouse, 1, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR(Int, m_show_backbutton, 0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR(Bool, m_cleanscale, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) // Option Search diff --git a/src/common/rendering/hwrenderer/data/hw_cvars.cpp b/src/common/rendering/hwrenderer/data/hw_cvars.cpp index 8e5ee81cf4..2476c00247 100644 --- a/src/common/rendering/hwrenderer/data/hw_cvars.cpp +++ b/src/common/rendering/hwrenderer/data/hw_cvars.cpp @@ -120,7 +120,7 @@ CUSTOM_CVARD(Float, gl_texture_filter_anisotropic, 8.f, CVAR_ARCHIVE | CVAR_GLOB screen->SetTextureFilterMode(); } -CUSTOM_CVARD(Int, gl_texture_filter, 4, CVAR_ARCHIVE|CVAR_GLOBALCONFIG|CVAR_NOINITCALL, "changes the texture filtering settings") +CUSTOM_CVARD(Int, gl_texture_filter, 6, CVAR_ARCHIVE|CVAR_GLOBALCONFIG|CVAR_NOINITCALL, "changes the texture filtering settings") { if (self < 0 || self > 6) self=4; screen->SetTextureFilterMode(); diff --git a/src/common/startscreen/endoom.cpp b/src/common/startscreen/endoom.cpp index 0fff948c0d..c0b5fee023 100644 --- a/src/common/startscreen/endoom.cpp +++ b/src/common/startscreen/endoom.cpp @@ -67,7 +67,7 @@ // PUBLIC DATA DEFINITIONS ------------------------------------------------- -CUSTOM_CVAR(Int, showendoom, 1, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) +CUSTOM_CVAR(Int, showendoom, 0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) { if (self < 0) self = 0; else if (self > 2) self=2; diff --git a/src/common/statusbar/base_sbar.cpp b/src/common/statusbar/base_sbar.cpp index 95719632bb..3b1029c651 100644 --- a/src/common/statusbar/base_sbar.cpp +++ b/src/common/statusbar/base_sbar.cpp @@ -59,8 +59,8 @@ IMPLEMENT_CLASS(DHUDFont, false, false); CVAR(Color, crosshaircolor, 0xff0000, CVAR_ARCHIVE); CVAR(Int, crosshairhealth, 2, CVAR_ARCHIVE); -CVARD(Float, crosshairscale, 0.3f, CVAR_ARCHIVE, "changes the size of the crosshair"); -CVAR(Bool, crosshairgrow, false, CVAR_ARCHIVE); +CVARD(Float, crosshairscale, 0.2f, CVAR_ARCHIVE, "changes the size of the crosshair"); +CVAR(Bool, crosshairgrow, true, CVAR_ARCHIVE); CUSTOM_CVARD(Float, hud_scalefactor, 1.f, CVAR_ARCHIVE, "changes the hud scale") { diff --git a/src/console/c_cmds.cpp b/src/console/c_cmds.cpp index 8745153a64..80dad5014a 100644 --- a/src/console/c_cmds.cpp +++ b/src/console/c_cmds.cpp @@ -700,13 +700,11 @@ UNSAFE_CCMD (load) UNSAFE_CCMD(save) { -#ifdef UNFRIENDLY_OPTIONS - if ((primaryLevel->flags9 & LEVEL9_NOUSERSAVE)) + if ((primaryLevel->vkdflags & VKDLEVELFLAG_NOUSERSAVE)) { Printf("%s\n", GStrings("SAVEDEAD")); return; } -#endif if (argv.argc() < 2 || argv.argc() > 3 || argv[1][0] == 0) { diff --git a/src/d_main.cpp b/src/d_main.cpp index 3b7cc14109..4858b5db26 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -3998,6 +3998,22 @@ void I_UpdateWindowTitle() I_SetWindowTitle(copy.Data()); } +CCMD(fs_dir) +{ + int numfiles = fileSystem.GetNumEntries(); + + for (int i = 0; i < numfiles; i++) + { + auto container = fileSystem.GetResourceFileFullName(fileSystem.GetFileContainer(i)); + auto fn1 = fileSystem.GetFileFullName(i); + auto fns = fileSystem.GetFileShortName(i); + auto fnid = fileSystem.GetResourceId(i); + auto length = fileSystem.FileLength(i); + bool hidden = fileSystem.FindFile(fn1) != i; + Printf(PRINT_HIGH | PRINT_NONOTIFY, "%s%-64s %-15s (%5d) %10d %s %s\n", hidden ? TEXTCOLOR_RED : TEXTCOLOR_UNTRANSLATED, fn1, fns, fnid, length, container, hidden ? "(h)" : ""); + } +} + #ifdef _WIN32 // For broadest GL compatibility, require user to explicitly enable quad-buffered stereo mode. // Setting vr_enable_quadbuffered_stereo does not automatically invoke quad-buffered stereo, @@ -4030,19 +4046,3 @@ void UpdateVRModes(bool considerQuadBuffered) } vals = filteredValues; } - -CCMD(fs_dir) -{ - int numfiles = fileSystem.GetNumEntries(); - - for (int i = 0; i < numfiles; i++) - { - auto container = fileSystem.GetResourceFileFullName(fileSystem.GetFileContainer(i)); - auto fn1 = fileSystem.GetFileFullName(i); - auto fns = fileSystem.GetFileShortName(i); - auto fnid = fileSystem.GetResourceId(i); - auto length = fileSystem.FileLength(i); - bool hidden = fileSystem.FindFile(fn1) != i; - Printf(PRINT_HIGH | PRINT_NONOTIFY, "%s%-64s %-15s (%5d) %10d %s %s\n", hidden ? TEXTCOLOR_RED : TEXTCOLOR_UNTRANSLATED, fn1, fns, fnid, length, container, hidden ? "(h)" : ""); - } -} diff --git a/src/d_netinfo.cpp b/src/d_netinfo.cpp index 0db1c94e6e..f276233631 100644 --- a/src/d_netinfo.cpp +++ b/src/d_netinfo.cpp @@ -54,7 +54,7 @@ static FRandom pr_pickteam ("PickRandomTeam"); -CVAR (Float, autoaim, 35.f, CVAR_USERINFO | CVAR_ARCHIVE); +CVAR (Float, autoaim, 0.f, CVAR_USERINFO | CVAR_ARCHIVE); CVAR (String, name, "Player", CVAR_USERINFO | CVAR_ARCHIVE); CVAR (Color, color, 0x40cf00, CVAR_USERINFO | CVAR_ARCHIVE); CVAR (Int, colorset, 0, CVAR_USERINFO | CVAR_ARCHIVE); diff --git a/src/g_game.cpp b/src/g_game.cpp index cda19ee735..dad662e94d 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -201,7 +201,7 @@ int lookspeed[2] = {450, 512}; #define SLOWTURNTICS 6 -CVAR (Bool, cl_run, true, CVAR_GLOBALCONFIG|CVAR_ARCHIVE) // Always run? +CVAR (Bool, cl_run, false, CVAR_GLOBALCONFIG|CVAR_ARCHIVE) // Always run? CVAR (Bool, freelook, true, CVAR_GLOBALCONFIG|CVAR_ARCHIVE) // Always mlook? CVAR (Bool, lookstrafe, false, CVAR_GLOBALCONFIG|CVAR_ARCHIVE) // Always strafe with mouse? CVAR (Float, m_forward, 1.f, CVAR_GLOBALCONFIG|CVAR_ARCHIVE) @@ -2197,10 +2197,8 @@ CUSTOM_CVAR (Int, quicksaverotationcount, 4, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) void G_DoAutoSave () { -#ifdef UNFRIENDLY_OPTIONS - if ((primaryLevel->flags9 & LEVEL9_NOUSERSAVE)) + if ((primaryLevel->vkdflags & VKDLEVELFLAG_NOUSERSAVE)) return; -#endif FString description; FString file; diff --git a/src/g_level.cpp b/src/g_level.cpp index 06d32f544d..cd05872e9a 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -1521,11 +1521,9 @@ void FLevelLocals::DoLoadLevel(const FString &nextmapname, int position, bool au DoDeferedScripts (); // [RH] Do script actions that were triggered on another map. -#ifdef UNFRIENDLY_OPTIONS // [Nash] allow modder control of autosaving if (changeflags & CHANGELEVEL_NOAUTOSAVE) autosave = false; -#endif // [RH] Always save the game when entering a new if (autosave && !savegamerestore && disableautosave < 1) @@ -1807,7 +1805,7 @@ void FLevelLocals::Init() flags = 0; flags2 = 0; flags3 = 0; - flags9 = 0; + vkdflags = 0; ImpactDecalCount = 0; frozenstate = 0; @@ -1856,7 +1854,7 @@ void FLevelLocals::Init() flags |= info->flags; flags2 |= info->flags2; flags3 |= info->flags3; - flags9 |= info->flags9; + vkdflags |= info->vkdflags; levelnum = info->levelnum; Music = info->Music; musicorder = info->musicorder; diff --git a/src/g_levellocals.h b/src/g_levellocals.h index aed244d587..ab76f6600e 100644 --- a/src/g_levellocals.h +++ b/src/g_levellocals.h @@ -605,7 +605,8 @@ public: uint32_t flags; uint32_t flags2; uint32_t flags3; - uint32_t flags9; + + uint32_t vkdflags; uint32_t fadeto; // The color the palette fades to (usually black) uint32_t outsidefog; // The fog for sectors with sky ceilings diff --git a/src/gamedata/g_mapinfo.cpp b/src/gamedata/g_mapinfo.cpp index 6dd0219164..eae713b67a 100644 --- a/src/gamedata/g_mapinfo.cpp +++ b/src/gamedata/g_mapinfo.cpp @@ -250,7 +250,7 @@ void level_info_t::Reset() else flags2 = LEVEL2_LAXMONSTERACTIVATION; flags3 = 0; - flags9 = 0; + vkdflags = 0; Music = ""; LevelName = ""; AuthorName = ""; @@ -1695,9 +1695,9 @@ enum EMIType MITYPE_SETFLAG3, MITYPE_CLRFLAG3, MITYPE_SCFLAGS3, - MITYPE_SETFLAG9, - MITYPE_CLRFLAG9, - MITYPE_SCFLAGS9, + MITYPE_SETVKDFLAG, + MITYPE_CLRVKDFLAG, + MITYPE_SCVKDFLAGS, MITYPE_COMPATFLAG, MITYPE_CLRCOMPATFLAG, }; @@ -1796,9 +1796,6 @@ MapFlagHandlers[] = { "nolightfade", MITYPE_SETFLAG3, LEVEL3_NOLIGHTFADE, 0 }, { "nocoloredspritelighting", MITYPE_SETFLAG3, LEVEL3_NOCOLOREDSPRITELIGHTING, 0 }, { "forceworldpanning", MITYPE_SETFLAG3, LEVEL3_FORCEWORLDPANNING, 0 }, - { "nousersave", MITYPE_SETFLAG9, LEVEL9_NOUSERSAVE, 0 }, - { "noautomap", MITYPE_SETFLAG9, LEVEL9_NOAUTOMAP, 0 }, - { "noautosaveonenter", MITYPE_SETFLAG9, LEVEL9_NOAUTOSAVEONENTER, 0 }, { "propermonsterfallingdamage", MITYPE_SETFLAG3, LEVEL3_PROPERMONSTERFALLINGDAMAGE, 0 }, { "disableshadowmap", MITYPE_SETFLAG3, LEVEL3_NOSHADOWMAP, 0 }, { "enableshadowmap", MITYPE_CLRFLAG3, LEVEL3_NOSHADOWMAP, 0 }, @@ -1806,6 +1803,9 @@ MapFlagHandlers[] = { "disableskyboxao", MITYPE_CLRFLAG3, LEVEL3_SKYBOXAO, 0 }, { "avoidmelee", MITYPE_SETFLAG3, LEVEL3_AVOIDMELEE, 0 }, { "attenuatelights", MITYPE_SETFLAG3, LEVEL3_ATTENUATE, 0 }, + { "nousersave", MITYPE_SETVKDFLAG, VKDLEVELFLAG_NOUSERSAVE, 0 }, + { "noautomap", MITYPE_SETVKDFLAG, VKDLEVELFLAG_NOAUTOMAP, 0 }, + { "noautosaveonenter", MITYPE_SETVKDFLAG, VKDLEVELFLAG_NOAUTOSAVEONENTER, 0 }, { "nobotnodes", MITYPE_IGNORE, 0, 0 }, // Skulltag option: nobotnodes { "nopassover", MITYPE_COMPATFLAG, COMPATF_NO_PASSMOBJ, 0 }, { "passover", MITYPE_CLRCOMPATFLAG, COMPATF_NO_PASSMOBJ, 0 }, @@ -1960,27 +1960,27 @@ void FMapInfoParser::ParseMapDefinition(level_info_t &info) info.flags3 = (info.flags3 & handler->data2) | handler->data1; break; - case MITYPE_SETFLAG9: + case MITYPE_SETVKDFLAG: if (!CheckAssign()) { - info.flags9 |= handler->data1; + info.vkdflags |= handler->data1; } else { sc.MustGetNumber(); - if (sc.Number) info.flags9 |= handler->data1; - else info.flags9 &= ~handler->data1; + if (sc.Number) info.vkdflags |= handler->data1; + else info.vkdflags &= ~handler->data1; } - info.flags9 |= handler->data2; + info.vkdflags |= handler->data2; break; - case MITYPE_CLRFLAG9: - info.flags9 &= ~handler->data1; - info.flags9 |= handler->data2; + case MITYPE_CLRVKDFLAG: + info.vkdflags &= ~handler->data1; + info.vkdflags |= handler->data2; break; - case MITYPE_SCFLAGS9: - info.flags9 = (info.flags9 & handler->data2) | handler->data1; + case MITYPE_SCVKDFLAGS: + info.vkdflags = (info.vkdflags & handler->data2) | handler->data1; break; case MITYPE_CLRCOMPATFLAG: diff --git a/src/gamedata/g_mapinfo.h b/src/gamedata/g_mapinfo.h index c3915a92ac..c3b05d55f4 100644 --- a/src/gamedata/g_mapinfo.h +++ b/src/gamedata/g_mapinfo.h @@ -271,10 +271,10 @@ enum ELevelFlags : unsigned int LEVEL3_NOJUMPDOWN = 0x00040000, // only for MBF21. Inverse of MBF's dog_jumping flag. LEVEL3_LIGHTCREATED = 0x00080000, // a light had been created in the last frame - // Deliberately skip ahead... - LEVEL9_NOUSERSAVE = 0x00000001, - LEVEL9_NOAUTOMAP = 0x00000002, - LEVEL9_NOAUTOSAVEONENTER = 0x00000004, // don't make an autosave when entering a map + // VKDoom custom flags + VKDLEVELFLAG_NOUSERSAVE = 0x00000001, + VKDLEVELFLAG_NOAUTOMAP = 0x00000002, + VKDLEVELFLAG_NOAUTOSAVEONENTER = 0x00000004, // don't make an autosave when entering a map }; @@ -347,7 +347,8 @@ struct level_info_t int32_t flags; uint32_t flags2; uint32_t flags3; - uint32_t flags9; + + uint32_t vkdflags; FString Music; FString LevelName; diff --git a/src/menu/doommenu.cpp b/src/menu/doommenu.cpp index 75967a01a3..33337a8362 100644 --- a/src/menu/doommenu.cpp +++ b/src/menu/doommenu.cpp @@ -251,13 +251,11 @@ bool M_SetSpecialMenu(FName& menu, int param) return false; } -#ifdef UNFRIENDLY_OPTIONS - if ((primaryLevel->flags9 & LEVEL9_NOUSERSAVE)) + if ((primaryLevel->vkdflags & VKDLEVELFLAG_NOUSERSAVE)) { M_StartMessage(GStrings("SAVEDEAD"), 1); return false; } -#endif break; @@ -473,7 +471,7 @@ CCMD (quicksave) return; } - if ((primaryLevel->flags9 & LEVEL9_NOUSERSAVE)) + if ((primaryLevel->vkdflags & VKDLEVELFLAG_NOUSERSAVE)) return; if (gamestate != GS_LEVEL) diff --git a/src/p_saveg.cpp b/src/p_saveg.cpp index a5ec9ac8f5..2b9bd1ed8f 100644 --- a/src/p_saveg.cpp +++ b/src/p_saveg.cpp @@ -970,7 +970,7 @@ void FLevelLocals::Serialize(FSerializer &arc, bool hubload) arc("flags", flags) ("flags2", flags2) ("flags3", flags3) - ("flags9", flags9) + ("vkdflags", vkdflags) ("fadeto", fadeto) ("found_secrets", found_secrets) ("found_items", found_items) diff --git a/src/posix/osx/zdoom.icns b/src/posix/osx/zdoom.icns index a0df7f5f7931e269dc82f81a9e4e15548bb5e9a6..ad89dfc5063b5c184bbcc394349a7692402bd18c 100644 GIT binary patch literal 80444 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
!8%|8d$ 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