diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3d67324 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[$PBOPREFIX$] +insert_final_newline = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..0823608 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +* text=auto +*.png binary +*.jpg binary +*.paa binary + +# Change GitHub language categorisation +*.cpp linguist-language=SQF +*.hpp linguist-language=SQF +*.inc linguist-language=SQF +include/* linguist-vendored diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..e417650 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners +# +* @ArmaForces/sqf-devs diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..4b7aa51 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,9 @@ +**When merged this pull request will:** +- Describe what this pull request will do +- Each change in a separate line + + diff --git a/.github/labels.json b/.github/labels.json new file mode 100644 index 0000000..b736b8d --- /dev/null +++ b/.github/labels.json @@ -0,0 +1,43 @@ +[ + { + "name": "bug", + "color": "#d73a4a", + "description": "Something isn't working" + }, + { + "name": "bugfix", + "color": "#5e7f03", + "description": "Fix for a bug" + }, + { + "name": "documentation", + "color": "#0075ca", + "description": "Improvements or additions to documentation" + }, + { + "name": "duplicate", + "color": "#cfd3d7", + "description": "This issue or pull request already exists" + }, + { + "name": "feature", + "color": "#21c2c4", + "description": "New feature or request" + }, + { + "name": "enhancement", + "color": "#a2eeef", + "description": "Fixes and improvements for existing feature" + }, + { + "name": "cleanup", + "color": "#00ffcc", + "description": "Code cleanup for existing feature" + }, + { + "name": "ignore changelog", + "color": "#fff", + "description": "Do not add to changelog" + } +] + diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..c8dfa9c --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,33 @@ +branches: + - master + +name-template: 'v$NEXT_PATCH_VERSION' +tag-template: 'v$NEXT_PATCH_VERSION' + +categories: + - title: '**ADDED:**' + labels: + - feature + - title: '**FIXED:**' + labels: + - bugfix + - title: '**CHANGED:**' + labels: + - cleanup + - enhancement + +exclude-labels: + - 'ignore changelog' + +change-template: '- $TITLE (#$NUMBER)' +template: | + _ArmaForces NEW_MOD_PRETTY release._ + + ## Change Log Summary + + $CHANGES + +replacers: + # Category titles + - search: '/\#\# (\*\*(ADDED|FIXED|CHANGED):\*\*)/g' + replace: '$1' diff --git a/.github/workflows/arma.yml b/.github/workflows/arma.yml new file mode 100644 index 0000000..a39bd54 --- /dev/null +++ b/.github/workflows/arma.yml @@ -0,0 +1,53 @@ +name: Arma + +on: + push: + branches: + - master + pull_request: + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: Checkout the source code + uses: actions/checkout@master + - name: Validate SQF + run: python3 tools/sqf_validator.py + - name: Validate Return Types + run: python3 tools/return_checker.py + - name: Validate Config + run: python3 tools/config_style_checker.py + - name: Validate Stringtables + run: python3 tools/stringtable_validator.py + - name: Check for BOM + uses: arma-actions/bom-check@master + + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout the source code + uses: actions/checkout@master + - name: Lint (sqflint) + uses: arma-actions/sqflint@master + continue-on-error: true # No failure due to many false-positives + + build: + runs-on: windows-2022 + steps: + - name: Checkout the source code + uses: actions/checkout@master + - name: Pull Arma3Tools + run: | + echo ${{ secrets.CR_PAT }} | docker login -u ${{ secrets.CR_USER }} --password-stdin ghcr.io + docker pull ghcr.io/armaforces/arma3tools:v2 + - name: Build using HEMTT + run: | + docker run -v "$(pwd):c:/workdir" -e CI=$True ghcr.io/armaforces/arma3tools:v2 hemtt release + + - uses: actions/upload-artifact@v2 + with: + name: armaforces_NEW_MOD_SNAKE + path: | + releases/*.zip + !releases/NEW_MOD_ABBR-latest.zip diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml new file mode 100644 index 0000000..4be2b7a --- /dev/null +++ b/.github/workflows/labels.yml @@ -0,0 +1,11 @@ +on: issues +name: Create Default Labels +jobs: + labels: + name: Default Labels Action + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: lannonbr/issue-label-manager-action@2.0.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml new file mode 100644 index 0000000..9093115 --- /dev/null +++ b/.github/workflows/release-drafter.yml @@ -0,0 +1,16 @@ +name: Release Drafter + +on: + push: + branches: + - master + +jobs: + draft: + runs-on: ubuntu-latest + steps: + - name: Release Drafter + if: github.repository == 'ArmaForces/NEW_MOD_PRETTY' + uses: release-drafter/release-drafter@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..3ccf593 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,70 @@ +name: Release + +on: + release: + types: + - published + +jobs: + build_addon: + runs-on: windows-2022 + steps: + - name: Set VERSION env + run: echo VERSION=${GITHUB_REF:11} >> $GITHUB_ENV + + - uses: actions/checkout@v2 + + - name: Pull Arma3Tools + run: | + echo ${{ secrets.CR_PAT }} | docker login -u ${{ secrets.CR_USER }} --password-stdin ghcr.io + docker pull ghcr.io/armaforces/arma3tools:v2 + + - name: Build using HEMTT + run: | + docker run -v "$(pwd):c:/workdir" -e CI=$True ghcr.io/armaforces/arma3tools:v2 hemtt release + + - uses: actions/upload-artifact@v2 + with: + name: hemttout + path: .hemttout/ + if-no-files-found: error + retention-days: 1 + + - uses: actions/upload-artifact@v2 + with: + name: releases + path: releases/ + if-no-files-found: error + retention-days: 7 + + release_addon: + runs-on: ubuntu-latest + needs: build_addon + steps: + - name: Set VERSION env + run: echo VERSION=${GITHUB_REF:11} >> $GITHUB_ENV + + # Upload to GitHub + - uses: actions/download-artifact@v2 + with: + name: releases + path: releases + - uses: softprops/action-gh-release@v1 + with: + files: 'releases/NEW_MOD_ABBR-${{ env.VERSION }}-*.zip' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # Upload to Steam Workshop + - uses: actions/download-artifact@v2 + with: + name: hemttout + path: .hemttout + - uses: arma-actions/workshop-upload@v1 + with: + itemId: '1934142795' # Id of item to update + contentPath: '.hemttout/release' + changelog: 'https://github.com/ArmaForces/NEW_MOD_PRETTY/releases/tag/v${{ env.VERSION }}' + env: + STEAM_USERNAME: ${{ secrets.STEAM_USERNAME }} + STEAM_PASSWORD: ${{ secrets.STEAM_PASSWORD }} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..fac656b --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,23 @@ +name: Rust Checks + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + fmt: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: rustfmt + run: cd extension && cargo fmt -- --check + clippy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: clippy + run: | + rustup -q component add clippy + cd extension && cargo clippy --all-features -- -D warnings diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..25afacd --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# Build output +/.hemttout/ + +# Releases +/releases/ + +hemtt +hemtt.exe +.hemtt/local +symbols/* + +# Bikey +*.biprivatekey + +extension/target/ diff --git a/.hemtt/hooks/pre_build/set_version.rhai b/.hemtt/hooks/pre_build/set_version.rhai new file mode 100644 index 0000000..f26f229 --- /dev/null +++ b/.hemtt/hooks/pre_build/set_version.rhai @@ -0,0 +1,14 @@ + +let modCpp = HEMTT_VFS + .join("mod.cpp") + .open_file() + .read() +; + +modCpp.replace("0.0.0", HEMTT.project().version().to_string_short()); + +HEMTT_VFS + .join("mod.cpp") + .create_file() + .write(modCpp) +; diff --git a/.hemtt/project.toml b/.hemtt/project.toml new file mode 100644 index 0000000..ba33dfb --- /dev/null +++ b/.hemtt/project.toml @@ -0,0 +1,90 @@ + +name = "ArmaForces NEW_MOD_PRETTY" +mainprefix = "z" +prefix = "NEW_MOD_ABBR" + +[files] +include = [ + "LICENSE", + "mod.cpp", + "README.md", + "armaforces_NEW_MOD_SNAKE_x64.dll", +] + +exclude = ["*.psd", "*.png", "*.tga"] + +[properties] +author = "ArmaForces" + +[version] +path = "addons/main/script_version.hpp" + +# Unused in HEMTT v1.11 or higher, kept for backwards compatibility +[asc] +exclude = [ + ".inc.sqf", +] + +[hemtt.launch.default] +workshop = [ + "450814997", # CBA_A3 + "2369477168", # ADT +] +parameters = [ + "-name=dev", + "-window", +] + +[hemtt.launch.ace] +workshop = [ + "450814997", # CBA_A3 + "2369477168", # ADT + "463939057", # ACE +# "766491311", # KKA3 ACE Extension +] +parameters = [ + "-name=dev", +] + +[hemtt.launch.cup] +workshop = [ + "450814997", # CBA_A3 + "2369477168", # ADT + "583496184", # CUP Terrains - Core + "583544987", # CUP Terrains - Maps +] +parameters = [ + "-name=dev", + "-window", +] + +[hemtt.launch.vn] +workshop = [ + "450814997", # CBA_A3 + "2369477168", # ADT +] +parameters = [ + "-name=dev", + "-window", +] +dlc = [ + "S.O.G. Prairie Fire", +] + +[hemtt.launch.ww2] +workshop = [ + "450814997", # CBA_A3 + "2369477168", # ADT +] +parameters = [ + "-name=dev", + "-window", +] +dlc = [ + "Spearhead 1944", +] + +[hemtt.launch.gm] +dlc = [ + "Global Mobilization", +] diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..5d22a4a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "ADE", + "type": "sqf", + "request": "launch", + "missionRoot": "${workspaceFolder}", + "scriptPrefix": "z\\NEW_MOD_ABBR" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..edd1b06 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,61 @@ +{ + "sqf.enableCBA": true, + "sqf.enableACE3": true, + "files.associations": { + "*.hpp": "ext" + }, + "sqflint.ignoredVariables": [ + "_input0", + "_thisArgs", + "_thisId", + "_thisType", + "cba_disposable_replaceDisposableLauncher", + "cba_disposable_NormalLaunchers", + ], + "sqflint.exclude": [], + "psi-header.lang-config": [ + { + "license": "Custom", + "language": "sqf", + "rootDirFileName": "hemtt.toml", + "beforeHeader": ["#include \"script_component.hpp\""], + "begin": "/*", + "prefix": " *", + "end": " */", + "blankLinesAfter": 1, + "forceToTop": true + } + ], + "sqflint.includePrefixes": { + // Dokan PBO\P drive + "\\A3\\": "P:/a3/", + "\\a3\\": "P:/a3/", + "\\x\\": "P:/x/", + "\\z\\": "P:/z/", + }, + "psi-header.changes-tracking": { + "include": ["sqf"], + "autoHeader": "manualSave" + }, + "psi-header.templates": [ + { + "language": "sqf", + "template": [ + " Author: ", + " Function description", + "", + " Arguments:", + " 0: Objects ", + " 1: All ", + "", + " Return Value:", + " None", + "", + " Example:", + " [[bob, ted], false] call NEW_MOD_ABBR_main_fnc_example", + "", + " Public: No" + ] + } + ] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..7fd5bec --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,14 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "HEMTT Build", + "type": "shell", + "command": "hemtt build", + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} diff --git a/AUTHORS.txt b/AUTHORS.txt new file mode 100644 index 0000000..264d1e9 --- /dev/null +++ b/AUTHORS.txt @@ -0,0 +1,14 @@ +# ArmaForces NEW_MOD_PRETTY CONTRIBUTOR LIST +# If you contributed, but are not listed here, +# contact one of the Core Team members. +# +# Feel free to add yourself to this when creating +# a pull request. + +# CORE TEAM +3Mydlo3 +veteran29 + +# CONTRIBUTORS +Jonpas +mharis001 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4c9b736 --- /dev/null +++ b/LICENSE @@ -0,0 +1,369 @@ +ArmaForces NEW_MOD_PRETTY for Arma 3 +Copyright (C) 2019 veteran29 + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Additionally to the conditions of the GPL, you are granted the right to +redistribute any combination of the .pbo-files of the finished product +without having to share your source code, as long as you do not modify the +source code of the individual modules. + +When publishing a derivative of this product you may not use a name that +might create the impression that your version is an official release. + +Some folders of this project may contain a separate LICENSE or LICENSE.md +or LICENSES.md file. Should that be the case, everything in that folder +and all subfolders is subject to that license instead. + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..80410a9 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +

+ +

+

+ + ArmaForces NEW_MOD_PRETTY Issues + + + ArmaForces NEW_MOD_PRETTY License + + + + +

+

Requires the latest version of CBA.

+ +**ArmaForces NEW_MOD_PRETTY** is a collaborative effort by the members of ArmaForces, polish Arma 3 community. + +Main purpose of this addon is to bend and adjust Arma 3 game features to the Group gameplay needs and style. + +The mod is on the same foundation as the ACE3 mod, using its framework, systems, tools and standards. It is entirely **open-source** and licensed under the GNU General Public License ([GPLv2](https://github.com/ArmaForces/NEW_MOD_PRETTY/blob/master/LICENSE)). + +Huge appreciation and thanks to [ACE3 Team](http://ace3mod.com/team.html) for their open-source nature and permission to use their systems. + +**Replace `NEW_MOD_PRETTY`, `NEW_MOD_SNAKE`, `NEW_MOD_ABBR` and `NEW_MOD_ABBR_CAPS` with name of your mod like in examples below.** + +- `Mods`, `mods`, `afm`, `AFM` +- `Mission Framework`, `mission_framework`, `afmf`, `AFMF` + +## Setup + +### Requirements + +- Arma 3 +- Arma 3 Tools (available on Steam) +- Run Arma 3 and Arma 3 Tools directly from Steam once to install registry entries (and again after every update) +- [HEMTT](https://github.com/synixebrett/HEMTT) binary placed in project root or globally installed + - `hemtt` (Linux) or `hemtt.exe` (Windows) or `setup.exe` (Windows global install) + +### Procedure + +_Replace `hemtt` with `hemtt.exe` on Windows._ + +- Open terminal (Linux) or command line (Windows) +- Run `$ hemtt build` to create a development build (add `-f` to overwrite already built addons) +- Run `$ hemtt build --release` to create a release build (add `-f` to overwrite already built release) +- Run `$ hemtt clean` to clean build files + +**Windows Helpers:** +- Double-click `build.bat` to create a development build + +### Recommended tools + +It's recommended to use [Visual Studio Code](https://) editor with following plugins to ensure equal development environment for all contributors: +- [EditorConfig](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) +- [SQFLint](https://marketplace.visualstudio.com/items?itemName=skacekachna.sqflint) +- [SQF Langauge](https://marketplace.visualstudio.com/items?itemName=Armitxes.sqf) +- [psioniq File Header](https://marketplace.visualstudio.com/items?itemName=psioniq.psi-header) diff --git a/addons/common/$PBOPREFIX$ b/addons/common/$PBOPREFIX$ new file mode 100644 index 0000000..e78271e --- /dev/null +++ b/addons/common/$PBOPREFIX$ @@ -0,0 +1 @@ +z\NEW_MOD_ABBR\addons\common \ No newline at end of file diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp new file mode 100644 index 0000000..2a3f71f --- /dev/null +++ b/addons/common/CfgEventHandlers.hpp @@ -0,0 +1,15 @@ +class Extended_PreStart_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_SCRIPT(XEH_preStart)); + }; +}; +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_SCRIPT(XEH_preInit)); + }; +}; +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_SCRIPT(XEH_postInit)); + }; +}; diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp new file mode 100644 index 0000000..cde2f95 --- /dev/null +++ b/addons/common/XEH_PREP.hpp @@ -0,0 +1,2 @@ +PREP(isEmptyString); +PREP(systemChat); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf new file mode 100644 index 0000000..421c54b --- /dev/null +++ b/addons/common/XEH_postInit.sqf @@ -0,0 +1 @@ +#include "script_component.hpp" diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf new file mode 100644 index 0000000..ecb5d0c --- /dev/null +++ b/addons/common/XEH_preInit.sqf @@ -0,0 +1,8 @@ +#include "script_component.hpp" +ADDON = false; + +PREP_RECOMPILE_START; +#include "XEH_PREP.hpp" +PREP_RECOMPILE_END; + +ADDON = true; diff --git a/addons/common/XEH_preStart.sqf b/addons/common/XEH_preStart.sqf new file mode 100644 index 0000000..a51262a --- /dev/null +++ b/addons/common/XEH_preStart.sqf @@ -0,0 +1,2 @@ +#include "script_component.hpp" +#include "XEH_PREP.hpp" diff --git a/addons/common/config.cpp b/addons/common/config.cpp new file mode 100644 index 0000000..c45ea42 --- /dev/null +++ b/addons/common/config.cpp @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { + "NEW_MOD_ABBR_main" + }; + author = "ArmaForces"; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" diff --git a/addons/common/functions/fnc_isEmptyString.sqf b/addons/common/functions/fnc_isEmptyString.sqf new file mode 100644 index 0000000..49d9672 --- /dev/null +++ b/addons/common/functions/fnc_isEmptyString.sqf @@ -0,0 +1,22 @@ +#include "script_component.hpp" +/* + * Author: 3Mydlo3 + * Example function checking if string is empty. + * + * Arguments: + * 0: String to check + * + * Return Value: + * True if string is null or empty + * + * Example: + * [nil] call NEW_MOD_ABBR_common_fnc_isEmptyString + * + * Public: No + */ + +params [["_string", ""]]; + +if (_string isEqualTo "") exitWith { true }; + +false diff --git a/addons/common/functions/fnc_systemChat.sqf b/addons/common/functions/fnc_systemChat.sqf new file mode 100644 index 0000000..8754298 --- /dev/null +++ b/addons/common/functions/fnc_systemChat.sqf @@ -0,0 +1,24 @@ +#include "script_component.hpp" +/* + * Author: 3Mydlo3 + * Example function printing sytemChat message. + * + * Arguments: + * 0: Actual message + * + * Return Value: + * True if message was printed + * + * Example: + * ["Test message"] call NEW_MOD_ABBR_common_fnc_systemChat + * + * Public: No + */ + +params [["_message", ""]]; + +if (_message call FUNC(isEmptyString)) exitWith { false }; + +sytemChat _message; + +true diff --git a/addons/common/functions/script_component.hpp b/addons/common/functions/script_component.hpp new file mode 100644 index 0000000..f94dd0a --- /dev/null +++ b/addons/common/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\NEW_MOD_ABBR\addons\common\script_component.hpp" diff --git a/addons/common/script_component.hpp b/addons/common/script_component.hpp new file mode 100644 index 0000000..f591412 --- /dev/null +++ b/addons/common/script_component.hpp @@ -0,0 +1,18 @@ +#define COMPONENT common +#include "\z\NEW_MOD_ABBR\addons\main\script_mod.hpp" + +#include "\a3\ui_f\hpp\defineCommonGrids.inc" +#include "\a3\ui_f\hpp\defineResincl.inc" +#include "\a3\ui_f\hpp\defineResinclDesign.inc" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE + +#ifdef DEBUG_ENABLED_COMMON + #define DEBUG_MODE_FULL +#endif + #ifdef DEBUG_SETTINGS_COMMON + #define DEBUG_SETTINGS DEBUG_SETTINGS_COMMON +#endif + +#include "\z\NEW_MOD_ABBR\addons\main\script_macros.hpp" diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml new file mode 100644 index 0000000..d16a9f0 --- /dev/null +++ b/addons/common/stringtable.xml @@ -0,0 +1,17 @@ + + + + + ArmaForces - Common + ArmaForces - Common + + + Enable component + Włącz komponent + + + Controls whether this component is active. + Pozwala kontrolować czy komponent jest włączony. + + + diff --git a/addons/main/$PBOPREFIX$ b/addons/main/$PBOPREFIX$ new file mode 100644 index 0000000..8b84e6d --- /dev/null +++ b/addons/main/$PBOPREFIX$ @@ -0,0 +1 @@ +z\NEW_MOD_ABBR\addons\main \ No newline at end of file diff --git a/addons/main/CfgEden.hpp b/addons/main/CfgEden.hpp new file mode 100644 index 0000000..a8a162e --- /dev/null +++ b/addons/main/CfgEden.hpp @@ -0,0 +1,11 @@ +class Cfg3DEN { + class Object { + class AttributeCategories { + class PREFIX { + displayName = CSTRING(Attributes); + collapsed = 1; + class Attributes {}; + }; + }; + }; +}; diff --git a/addons/main/CfgModuleCategories.hpp b/addons/main/CfgModuleCategories.hpp new file mode 100644 index 0000000..5fca03b --- /dev/null +++ b/addons/main/CfgModuleCategories.hpp @@ -0,0 +1,12 @@ +class CfgFactionClasses { + class NO_CATEGORY; + class PREFIX: NO_CATEGORY { + displayName = CSTRING(Category); + }; +}; + +class CfgVehicleClasses { + class PREFIX##_Vehicles { + displayName = CSTRING(Category); + }; +}; diff --git a/addons/main/DisplayEden.hpp b/addons/main/DisplayEden.hpp new file mode 100644 index 0000000..908134d --- /dev/null +++ b/addons/main/DisplayEden.hpp @@ -0,0 +1,22 @@ +class CtrlMenuStrip; +class Display3DEN { + class Controls { + class MenuStrip: CtrlMenuStrip { + class Items { + items[] += {QUOTE(PREFIX)}; + class PREFIX { + text = CSTRING(Toolbar); + items[] += { + QGVAR(Wiki) + }; + }; + class GVAR(Wiki) { + text = CSTRING(ToolbarWiki); + picture = "\a3\3DEN\Data\Controls\ctrlMenu\link_ca.paa"; + weblink = "https://wiki.armaforces.com/"; + opensNewWindow = 1; + }; + }; + }; + }; +}; diff --git a/addons/main/README.md b/addons/main/README.md new file mode 100644 index 0000000..778c5aa --- /dev/null +++ b/addons/main/README.md @@ -0,0 +1,7 @@ +## Main + +Base for other components. Provides CBA Macros framework, editor categories and similar. + +### Authors + +- [veteran29](http://github.com/veteran29) diff --git a/addons/main/config.cpp b/addons/main/config.cpp new file mode 100644 index 0000000..2c86d83 --- /dev/null +++ b/addons/main/config.cpp @@ -0,0 +1,19 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { + "cba_main" + }; + author = "ArmaForces"; + VERSION_CONFIG; + }; +}; + +#include "CfgEden.hpp" +#include "CfgModuleCategories.hpp" +#include "DisplayEden.hpp" diff --git a/addons/main/script_component.hpp b/addons/main/script_component.hpp new file mode 100644 index 0000000..6d4db29 --- /dev/null +++ b/addons/main/script_component.hpp @@ -0,0 +1,14 @@ +#define COMPONENT main +#include "\z\NEW_MOD_ABBR\addons\main\script_mod.hpp" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE + +#ifdef DEBUG_ENABLED_MAIN + #define DEBUG_MODE_FULL +#endif + #ifdef DEBUG_SETTINGS_MAIN + #define DEBUG_SETTINGS DEBUG_SETTINGS_MAIN +#endif + +#include "\z\NEW_MOD_ABBR\addons\main\script_macros.hpp" diff --git a/addons/main/script_debug.hpp b/addons/main/script_debug.hpp new file mode 100644 index 0000000..13974f4 --- /dev/null +++ b/addons/main/script_debug.hpp @@ -0,0 +1,24 @@ + +/** + Fast Recompiling via function +**/ +// #define DISABLE_COMPILE_CACHE +// To Use: [] call NEW_MOD_ABBR_CAPS_PREP_RECOMPILE; + +#ifdef DISABLE_COMPILE_CACHE + #define LINKFUNC(x) {_this call FUNC(x)} + #define PREP_RECOMPILE_ADD_BUTTON \ + if (isNil 'PREFIX##_PREP_RECOMPILE_BUTTON') then {\ + [] spawn {\ + INFO('Adding Recompilation button');\ + [['Recomp. PREFIX', 'Recompile functions of PREFIX'], {call PREFIX##_PREP_RECOMPILE}] call EFUNC(debug_console,addButton);\ + };\ + PREFIX##_PREP_RECOMPILE_BUTTON = true;\ + } + #define PREP_RECOMPILE_START if (isNil 'PREFIX##_PREP_RECOMPILE') then {PREFIX##_RECOMPILES = []; PREFIX##_PREP_RECOMPILE = {{call _x} forEach PREFIX##_RECOMPILES;}}; private _recomp = {INFO('Compiling'); + #define PREP_RECOMPILE_END }; call _recomp; PREFIX##_RECOMPILES pushBack _recomp; PREP_RECOMPILE_ADD_BUTTON; +#else + #define LINKFUNC(x) FUNC(x) + #define PREP_RECOMPILE_START ; + #define PREP_RECOMPILE_END ; +#endif diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp new file mode 100644 index 0000000..5f3a56a --- /dev/null +++ b/addons/main/script_macros.hpp @@ -0,0 +1,31 @@ +#include "\x\cba\addons\main\script_macros_common.hpp" +#define DFUNC(module) TRIPLES(ADDON,fnc,module) +#ifdef DISABLE_COMPILE_CACHE + #undef PREP + #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QPATHTOF(functions\DOUBLES(fnc,fncName).sqf) +#else + #undef PREP + #define PREP(fncName) [QPATHTOF(functions\DOUBLES(fnc,fncName).sqf), QFUNC(fncName)] call CBA_fnc_compileFunction +#endif + +// ACE3 reference macros +#define ACE_PREFIX ace + +#define ACEGVAR(module,var) TRIPLES(ACE_PREFIX,module,var) +#define QACEGVAR(module,var) QUOTE(ACEGVAR(module,var)) + +#define ACEFUNC(module,function) TRIPLES(DOUBLES(ACE_PREFIX,module),fnc,function) +#define QACEFUNC(module,function) QUOTE(ACEFUNC(module,function)) + +#define ACELSTRING(module,string) QUOTE(TRIPLES(STR,DOUBLES(ACE_PREFIX,module),string)) +#define ACECSTRING(module,string) QUOTE(TRIPLES($STR,DOUBLES(ACE_PREFIX,module),string)) + +// NEW_MOD_ABBR_CAPS macros +#define IS_MOD_LOADED(modclass) (isClass (configFile >> "CfgPatches" >> #modclass)) + +// Extension macros +#define EXT "armaforces_NEW_MOD_SNAKE" +#define EXT_LOG "armaforces_NEW_MOD_SNAKE_log" + +// NEW_MOD_ABBR_CAPS Debug macros +#include "\z\NEW_MOD_ABBR\addons\main\script_debug.hpp" diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp new file mode 100644 index 0000000..c043876 --- /dev/null +++ b/addons/main/script_mod.hpp @@ -0,0 +1,16 @@ +#define MAINPREFIX z +#define PREFIX NEW_MOD_ABBR + +#include "script_version.hpp" + +#define VERSION MAJOR.MINOR +#define VERSION_STR MAJOR.MINOR.PATCH +#define VERSION_AR MAJOR,MINOR,PATCH + +#define REQUIRED_VERSION 2.14 + +#ifdef COMPONENT_BEAUTIFIED + #define COMPONENT_NAME QUOTE(NEW_MOD_ABBR_CAPS - COMPONENT_BEAUTIFIED) +#else + #define COMPONENT_NAME QUOTE(NEW_MOD_ABBR_CAPS - COMPONENT) +#endif diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp new file mode 100644 index 0000000..960a5de --- /dev/null +++ b/addons/main/script_version.hpp @@ -0,0 +1,3 @@ +#define MAJOR 1 +#define MINOR 17 +#define PATCH 0 diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml new file mode 100644 index 0000000..8a76018 --- /dev/null +++ b/addons/main/stringtable.xml @@ -0,0 +1,18 @@ + + + + + ArmaForces Attributes + Atrybuty ArmaForces + + + ArmaForces + + + ArmaForces + + + Wiki + + + diff --git a/addons/main/ui/logo_sm_ca.paa b/addons/main/ui/logo_sm_ca.paa new file mode 100644 index 0000000..37d7faf Binary files /dev/null and b/addons/main/ui/logo_sm_ca.paa differ diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..3392b5b --- /dev/null +++ b/build.bat @@ -0,0 +1,3 @@ +@echo off +hemtt.exe build +pause diff --git a/hemtt.toml b/hemtt.toml new file mode 100644 index 0000000..df016ea --- /dev/null +++ b/hemtt.toml @@ -0,0 +1,49 @@ +name = "ArmaForces NEW_MOD_PRETTY" +prefix = "NEW_MOD_ABBR" +author = "ArmaForces" +files = [ + "LICENSE", + "mod.cpp", + "README.md", + "armaforces_NEW_MOD_SNAKE_x64.dll", +] + +exclude = ["*.psd", "*.png", "*.tga"] + +modname = "armaforces_NEW_MOD_SNAKE" +key_name = "armaforces_NEW_MOD_SNAKE_{{version}}" +authority = "armaforces_NEW_MOD_SNAKE_{{version}}" + +releasebuild = [ + "!set_version", + "@zip", + "!publish" +] + +[header_exts] +version = "{{git \"id 8\"}}" + +[scripts.extension] + show_output = true + steps_windows = [ + "cd extension && cargo build --release", + "copy extension\\target\\release\\armaforces_NEW_MOD_SNAKE.dll armaforces_NEW_MOD_SNAKE_x64.dll" + ] + steps_linux = [ + "echo \"Unable to build extension on Linux\"" + ] + +[scripts.set_version] + steps_windows = [ + "powershell ./tools/Set-Version.ps1 {{version}} '@armaforces_NEW_MOD_SNAKE'" + ] + steps_linux = [ + "sed -i 's/0.0.0/{{version}}/' ./releases/{{version}}/@armaforces_NEW_MOD_SNAKE/mod.cpp" + ] + # show_output = true + +[scripts.publish] + steps_windows = [ + "powershell ./tools/Publish.ps1 {{version}} 1934142795 '@armaforces_NEW_MOD_SNAKE'" + ] + show_output = true diff --git a/meta.cpp b/meta.cpp new file mode 100644 index 0000000..7f8d960 --- /dev/null +++ b/meta.cpp @@ -0,0 +1,2 @@ +protocol = 1; +publishedid = 1934142795; diff --git a/mod.cpp b/mod.cpp new file mode 100644 index 0000000..4526f6b --- /dev/null +++ b/mod.cpp @@ -0,0 +1,11 @@ +name = "ArmaForces NEW_MOD_PRETTY - 0.0.0"; +dir = "@armaforces_NEW_MOD_SNAKE"; +author = "ArmaForces"; +url = "https://github.com/armaforces/NEW_MOD_SNAKE/"; +action = "https://armaforces.com/"; +actionName = "Website"; +logo = "\z\NEW_MOD_ABBR\addons\main\ui\logo_sm_ca.paa"; +logoOver = "\z\NEW_MOD_ABBR_CAPS\addons\main\ui\logo_sm_ca.paa"; +overviewPicture = "\z\NEW_MOD_ABBR_CAPS\addons\main\ui\logo_sm_ca.paa"; +tooltip = "ArmaForces NEW_MOD_PRETTY"; +description = "ArmaForces in-house NEW_MOD_SNAKE developed by community members.";