diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..ad39a1a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,31 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior, if possible. +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop:** + - OS: [e.g. Linux] + - Version: + +**Port:** +- Curses, SDL, etc. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..11fc491 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/cmake-single-platform.yml b/.github/workflows/cmake-single-platform.yml new file mode 100644 index 0000000..153b471 --- /dev/null +++ b/.github/workflows/cmake-single-platform.yml @@ -0,0 +1,45 @@ +# This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage. +# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml +name: Build + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Debug + +jobs: + build: + # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. + # You can convert this to a matrix build if you need cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: true + + - name: Restore artifacts or run vcpkg. + uses: lukka/run-vcpkg@v10.2 + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake --preset=dev -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: Test + working-directory: ${{github.workspace}}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest -C ${{env.BUILD_TYPE}} + diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5e85074..b1e5b77 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: Create Release +name: Release on: push: tags: @@ -24,9 +24,23 @@ jobs: configurePreset: 'release' buildPreset: 'release' + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake --preset=release -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: Test + working-directory: ${{github.workspace}}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest -C ${{env.BUILD_TYPE}} + - name: Create Package run: | - zip -rq zenzizenzizenzic-${{ runner.os }} build/zenzizenzizenzic_ncurses build/data/ README.md + zip -rq ${{github.workspace}}/zenzizenzizenzic-${{ runner.os }} ${{github.workspace}}/build/zenzizenzizenzic_ncurses ${{github.workspace}}/build/data/ ${{github.workspace}}/README.md ${{github.workspace}}/LICENSE - name: Create Release id: create_release @@ -38,6 +52,7 @@ jobs: release_name: Release ${{ github.ref }} draft: false prerelease: false + - name: Upload Release Asset id: upload-release-asset uses: actions/upload-release-asset@v1 diff --git a/CMakeLists.txt b/CMakeLists.txt index ef2fa58..681a938 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,8 +5,8 @@ set(PROJECT_NAME zenzizenzizenzic_ncurses) set(PROJECT_VENDOR Kestrel Gregorich-Trevor) set(PROJECT_DESCRIPTION A roguelike about fighting games.) set(ZZZZZZ_DESKTOP_DIR /usr/share/applications) -set(VERSION_MAJOR 1) -set(VERSION_MINOR 0) +set(VERSION_MAJOR 0) +set(VERSION_MINOR 1) SET(VERSION_PATCH 0) SET(RELEASE_TYPE "alpha") @@ -69,4 +69,4 @@ set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") set(CPACK_PACKAGE_EXECUTABLES "zenzizenzizenzic_ncurses;ZZZZZZ") -include(CPack) \ No newline at end of file +include(CPack) diff --git a/README.md b/README.md index e818326..9d78f7a 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ # Zenzizenzizenzic -![Screenshot](/img/screenshot.png) -## Overview +![Release Status](https://github.com/NullCGT/Zenzizenzizenzic-RL/actions/workflows/cmake-single-platform.yml/badge.svg) +![Release Status](https://github.com/NullCGT/Zenzizenzizenzic-RL/actions/workflows/release.yml/badge.svg?branch=main) + +A traditional roguelike with mechanics that mimic those found in fighting games. -Zenzizenzizenzic is a traditional roguelike. It's still pretty early in development, so please don't -judge it too harshly yet. +![Screenshot](/img/screenshot.png) ## Command Line Options | Syntax | Example | Purpose | @@ -25,43 +26,17 @@ cmake --build build The game binary and necessary data files will appear in the newly-created build directory. -## Combat - -### Attack Types - -An attack can be one or more of the following types: -- Low: - - Hits standing characters. - - Blocked by crouching characters. -- Mid: - - Hits teching characters. - - Blocked by standing or crouching characters. - - Often very high accuracy. -- High: - - Hits crouching characters. - - Often low accuracy, but high damage. -- Grab: - - Hits crouching or standing characters. - - Deflected by teching characters. - -### Blocking Attacks - -At any time, a character can be in one of threee stances, each of which has different effects. -- Crouching: - - Automatically block low and mid attacks. - - Entered by pressing '<' - - Lasts until manually exited. -- Standing: - - Automatically block mid and high attacks. - - Entered by pressing '>'. - - Lasts until manually exited. -- Teching: - - Deflect grabs. - - Entered by pressing '.' or executing a grab attack. - - Lasts for one turn, after which the character returns to their previous stance. - -When an attack is blocked, the blocker takes reduced damage. When a grab is -deflected, the blocker takes no damage and the attacker is left vulnerable. +## Combat Basics + +An attack can be one or more of four types: Low, Mid, High, or Grab. Conversely, a character can be in one of three stances: Crouch, Stand, or Tech. The way an attack interacts with a target depends on the stance that the target is in, as shown in the following table. + +| | Low | Mid | High | Tech | +|----------|-------|-------|-------|-------| +|**Crouch**| Block | Block | Hit | Hit | +|**Stand**| Hit | Block | Block | Hit | +|**Tech** | Hit | Hit | Hit | Block | + +If an attack hits, the target takes full damage and enters a stunned state. If an attack is blocked, the target takes only partial damage and is not stunned. ## FAQ