diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..469d570
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,32 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: "Bug: "
+labels: bug
+assignees: bra1n
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+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 (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..53777e9
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature Request
+about: Suggest an idea for this project
+title: "Feature Request: "
+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/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..53c470c
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,76 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at steffen@baumgart.biz. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..0ab1b1f
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,81 @@
+# Contributing Guide
+
+Hi! I'm really excited that you are interested in contributing to this project.
+Before submitting your contribution, please make sure to take a moment and read through the following guidelines:
+
+- [Code of Conduct](CODE_OF_CONDUCT.md)
+- [Issue Reporting Guidelines](#issue-reporting-guidelines)
+- [Pull Request Guidelines](#pull-request-guidelines)
+- [Development Setup](#development-setup)
+- [Project Structure](#project-structure)
+
+## Issue Reporting Guidelines
+
+- Report a new issue either through [GitHub](https://github.com/bra1n/townsquare/issues/new/choose) or [Email](mailto:steffen@baumgart.biz)
+- Please include with your issue the browser and operating system you're using as well as steps necessary to reproduce the bug, if any
+- Be patient, I'm working on this project in my spare time :-)
+
+## Pull Request Guidelines
+
+- The `master` branch is what is currently deployed to the website. All development should be done in dedicated branches.
+
+- Work in the `src` folder and **DO NOT** checkin `dist` in the commits.
+
+- It's OK to have multiple small commits as you work on the PR - GitHub will automatically squash it before merging.
+
+- If adding a new feature:
+ - Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first before working on it.
+ - Feel free to write a test for it, but so far I didn't have time for that.
+
+- If fixing a bug:
+ - If you are resolving a special issue, add `(fix #xxxx[,#xxxx])` (#xxxx is the issue id) in your PR title for a better release log, e.g. `update entities encoding/decoding (fix #3899)`.
+ - Provide a detailed description of the bug in the PR. Live demo preferred.
+
+## Development Setup
+
+You will need [Node.js](http://nodejs.org) **version 8+** and a Chrome browser.
+
+After cloning the repo, run:
+
+``` bash
+$ npm install
+```
+
+The development server can be started with `npm run serve`.
+
+### Committing Changes
+
+Commit messages should be verbose enough to allow someone else to follow your changes and should include references to issues that are being worked on.
+
+### Commonly used NPM scripts
+
+``` bash
+# watch and auto re-build dist/
+$ npm run serve
+
+# build all dist files, including npm packages
+$ npm run build
+
+# run linting scripts
+$ npm run link
+```
+
+## Project Structure
+
+- **`dist`**: contains built files for distribution.
+
+- **`src`**: contains the source code. The codebase is written in ES2015.
+
+ - **`assets`**: contains all graphical assets like images, fonts, icons, etc.
+
+ - **`editions`**: edition logos and icons
+
+ - **`fonts`**: webfonts used on the page
+
+ - **`icons`**: character token icons
+
+ - **`components`**: the internal components used in the project
+
+ - **`modals`**: the modals have a separate subfolder
+
+ - **`store`**: the VueX data store and modules
diff --git a/README.md b/README.md
index db65380..6193849 100644
--- a/README.md
+++ b/README.md
@@ -7,14 +7,26 @@ It is supposed to aid storytellers and allow them to quickly set up and capture
[You can try it online!](https://bra1n.github.io/townsquare)
-WORK IN PROGRESS
+### Features
+
+- Public Town Square and Storyteller Grimoire (toggle with **shortcut \[G\]**)
+- Supports custom script JSON generated by the [Script Tool](https://bloodontheclocktower.com/script)
+- Live Session for Storyteller / Players
+- Includes all 3 base editions and travelers
+- Night sheet and reminder text for each character ability to help storytellers
+- Many other customization options!
+
+## [Code of Conduct](CODE_OF_CONDUCT.md)
+
+## [Contributing](CONTRIBUTING.md)
## Acknowledgements and Copyrights
-* [Blood on the Clocktower](https://bloodontheclocktower.com/) images, names and abilities by [The Pandemonium Institute](https://www.thepandemoniuminstitute.com/)
+* [Blood on the Clocktower](https://bloodontheclocktower.com/) names and abilities by [The Pandemonium Institute](https://www.thepandemoniuminstitute.com/)
* Night reminders and other auxiliary text written by [Ben Finney](http://bignose.whitetree.org/projects/botc/diy/)
* Iconography by [Font Awesome](https://fontawesome.com/)
* Background image by [Ryan Maloney](https://www.artstation.com/maloney94)
* Webfonts by [Google Fonts](https://fonts.google.com/) and [Online Web Fonts](https://www.onlinewebfonts.com/)
+* All other images and icons are copyright to their respective owners
-This project and its website are not affiliated with The Pandemonium Institute in any way.
+This project and its website are provided free of charge and not affiliated with The Pandemonium Institute in any way.
diff --git a/src/App.vue b/src/App.vue
index ed7ba5a..c16020f 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -14,8 +14,9 @@
-
-
+
+
+
@@ -27,9 +28,11 @@ import Menu from "./components/Menu";
import RolesModal from "./components/modals/RolesModal";
import EditionModal from "./components/modals/EditionModal";
import Intro from "./components/Intro";
+import ReferenceModal from "./components/modals/ReferenceModal";
export default {
components: {
+ ReferenceModal,
Intro,
TownInfo,
TownSquare,
@@ -46,7 +49,7 @@ export default {
this.$refs.menu.takeScreenshot(dimensions);
},
keyup({ key }) {
- switch (key) {
+ switch (key.toLocaleLowerCase()) {
case "g":
this.$store.commit("toggleGrimoire");
break;
@@ -54,7 +57,7 @@ export default {
this.$refs.menu.addPlayer();
break;
case "r":
- this.$refs.menu.randomizeSeatings();
+ this.$store.commit("toggleModal", "reference");
break;
case "e":
if (this.session.isSpectator) return;
@@ -86,6 +89,12 @@ export default {
url("assets/fonts/papyrus.svg#PapyrusW01") format("svg"); /* iOS 4.1- */
}
+@font-face {
+ font-family: PiratesBay;
+ src: url("assets/fonts/piratesbay.ttf");
+ font-display: swap;
+}
+
html,
body {
font-size: 1.2em;
@@ -121,6 +130,9 @@ h4,
h5 {
margin: 0;
text-align: center;
+ font-family: PiratesBay, sans-serif;
+ letter-spacing: 1px;
+ font-weight: normal;
}
ul {
diff --git a/src/assets/editions/custom.png b/src/assets/editions/custom.png
new file mode 100644
index 0000000..bb1dfb2
Binary files /dev/null and b/src/assets/editions/custom.png differ
diff --git a/src/assets/fonts/piratesbay.ttf b/src/assets/fonts/piratesbay.ttf
new file mode 100644
index 0000000..ba5bbfb
Binary files /dev/null and b/src/assets/fonts/piratesbay.ttf differ
diff --git a/src/assets/icons/custom.png b/src/assets/icons/custom.png
new file mode 100644
index 0000000..3e0590b
Binary files /dev/null and b/src/assets/icons/custom.png differ
diff --git a/src/components/Intro.vue b/src/components/Intro.vue
index 6fd45c4..1c77474 100644
--- a/src/components/Intro.vue
+++ b/src/components/Intro.vue
@@ -1,12 +1,12 @@
-
+
Welcome to the (unofficial)
Virtual Blood on the Clocktower Town Square!
Please add more players through the
-
- Menu
-
+
+ Menu
+
on the top right or by pressing [A].
This project is free and open source and can be found on
GitHub.
diff --git a/src/components/Menu.vue b/src/components/Menu.vue
index 16704ca..17a81b2 100644
--- a/src/components/Menu.vue
+++ b/src/components/Menu.vue
@@ -1,19 +1,26 @@
-
-
+ @click="leaveSession"
+ :title="
+ `You're currently in a live game with ${session.playerCount} other players!`
+ "
+ >
+
+ {{ session.playerCount }}
+
+
+
+
+ To play with a custom script, you need to select the characters you want
+ to play with in the official
+ Script Tool
- {{ edition.name }}
-
-
+ and then upload the generated "custom-list.json" either directly here or
+ provide a URL to such a hosted JSON file.
+