
## What do I need to know to help?

If you are looking to help to with a code contribution,
The project uses

- C++ (17 and above standards)
- SDL2.0 (for graphics and rendering)
- emscripten (for compiling the source to WebAsm, having knowledge about this is totally optional)

If you don't feel ready to make a code contribution yet, no problem! You can also check out the [documentation issues](https://github.com/Arsenic-ATG/Tetris/issues?q=is%3Aissue+is%3Aopen+label%3Adocumentation) or suggest ideas about how the game can be improved via creating a new issue ( keep in mind that no idea is stupid ).

If you are interested in making a code contribution and would like to learn more about the technologies that we use, check out the list below.

TODO: Add links to useful resources to learn C++ and SDL2.0 (if you know something then you can also contribute )

## How do I make a contribution?

Never made an open source contribution before? Wondering how contributions work in our project? Here's a quick rundown!

1. Find an issue that you are interested in addressing or a feature that you would like to add.
2. Fork the repository ( So that you can have a copy of repository you can hack upon )
3. Clone the repository to your local machine using `git clone https://github.com/github-username/repository-name.git` (you can get the http/ssh link directly from github also )
4. Create a new branch for your fix using `git checkout -b branch-name-here` ( It is always a good practice to keep the master/main branch clean and work on your seperate branch instead ).
5. Make the appropriate changes for the issue you are trying to address or the feature that you want to add.
6. Use `git add insert-paths-of-changed-files-here` to add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index.
7. Use `git commit -m "Insert a short message of the changes made here"` ( See previous commit messages via `git log` to get some idea of how to write one ) to store the contents of the index with a descriptive message.
8. Push the changes to the remote repository using `git push origin branch-name-here`.
9. Submit a pull request to the upstream repository.
10. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so "Added more log outputting to resolve #4352".
11. In the description of the pull request, explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it!
12. Wait for the pull request to be reviewed by a maintainer.
13. Make changes to the pull request if the reviewing maintainer recommends them.
14. Celebrate your success after your pull request is merged!

## Where can I go for help?

If you need help, you can ask questions via the discuss section of the repository or open an issue regarding the same.

## What does the Code of Conduct mean for me?

Our Code of Conduct means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behaviour or comments as described in our [Code of Conduct](TODO: add code of conduct link), we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, as per our code.
