mirror of https://github.com/bra1n/townsquare.git
commit
1b93347d94
|
@ -1,5 +1,13 @@
|
||||||
# Release Notes
|
# Release Notes
|
||||||
|
|
||||||
|
### Version 2.11.0
|
||||||
|
- new design for character reference sheet
|
||||||
|
- automatically switch to grimoire view when joining a session through a link
|
||||||
|
- fixed demon bluffs showing on public town square
|
||||||
|
- fixed a bug that prevented connecting to a session when previously being connected and joining through a link
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### Version 2.10.0
|
### Version 2.10.0
|
||||||
- added [nomination log indicator](https://fontawesome.com/icons/book-dead). When a nomination log [v] is available, the number of currently visible entries is displayed. Clicking the indicator can reveal/hide the nomination log.
|
- added [nomination log indicator](https://fontawesome.com/icons/book-dead). When a nomination log [v] is available, the number of currently visible entries is displayed. Clicking the indicator can reveal/hide the nomination log.
|
||||||
- fix issue where a player and storyteller updating the same players pronouns at around the same time causes an infinite loop disconnecting the session.
|
- fix issue where a player and storyteller updating the same players pronouns at around the same time causes an infinite loop disconnecting the session.
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
{
|
{
|
||||||
"name": "townsquare",
|
"name": "townsquare",
|
||||||
"version": "2.10.0",
|
"version": "2.11.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"version": "2.10.0",
|
"version": "2.11.0",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-svg-core": "^1.2.32",
|
"@fortawesome/fontawesome-svg-core": "^1.2.32",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "townsquare",
|
"name": "townsquare",
|
||||||
"version": "2.10.0",
|
"version": "2.11.0",
|
||||||
"description": "Blood on the Clocktower Town Square",
|
"description": "Blood on the Clocktower Town Square",
|
||||||
"author": "Steffen Baumgart",
|
"author": "Steffen Baumgart",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -365,10 +365,6 @@ export default {
|
||||||
transition: all 200ms ease-in-out;
|
transition: all 200ms ease-in-out;
|
||||||
z-index: 50;
|
z-index: 50;
|
||||||
|
|
||||||
#townsquare.public &.bluffs {
|
|
||||||
opacity: 0;
|
|
||||||
transform: scale(0.1);
|
|
||||||
}
|
|
||||||
> svg {
|
> svg {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
|
@ -439,6 +435,11 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#townsquare.public > .bluffs {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.1);
|
||||||
|
}
|
||||||
|
|
||||||
.fabled ul li .token:before {
|
.fabled ul li .token:before {
|
||||||
content: " ";
|
content: " ";
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
|
|
@ -74,7 +74,8 @@ export default {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roles & {
|
.roles &,
|
||||||
|
.characters & {
|
||||||
max-height: 100%;
|
max-height: 100%;
|
||||||
max-width: 60%;
|
max-width: 60%;
|
||||||
}
|
}
|
||||||
|
@ -121,6 +122,11 @@ export default {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-content: center;
|
align-content: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
.roles &,
|
||||||
|
.characters & {
|
||||||
|
max-width: 100%;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-fade-enter,
|
.modal-fade-enter,
|
||||||
|
|
|
@ -15,21 +15,16 @@
|
||||||
<font-awesome-icon icon="address-card" />
|
<font-awesome-icon icon="address-card" />
|
||||||
{{ edition.name || "Custom Script" }}
|
{{ edition.name || "Custom Script" }}
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="legend">
|
<div
|
||||||
<li>
|
v-for="(teamRoles, team) in rolesGrouped"
|
||||||
<span class="name">Name</span>
|
:key="team"
|
||||||
<span class="icon">Icon</span>
|
:class="['team', team]"
|
||||||
<span class="ability">Ability</span>
|
>
|
||||||
<span class="player" v-if="Object.keys(playersByRole).length">
|
<aside>
|
||||||
Player
|
<h4>{{ team }}</h4>
|
||||||
</span>
|
</aside>
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<div v-for="(teamRoles, team) in rolesGrouped" :key="team" :class="[team]">
|
|
||||||
<h4>{{ team }}</h4>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li v-for="role in teamRoles" :class="[team]" :key="role.id">
|
<li v-for="role in teamRoles" :class="[team]" :key="role.id">
|
||||||
<span class="name">{{ role.name }}</span>
|
|
||||||
<span
|
<span
|
||||||
class="icon"
|
class="icon"
|
||||||
v-if="role.id"
|
v-if="role.id"
|
||||||
|
@ -43,11 +38,16 @@
|
||||||
})`
|
})`
|
||||||
}"
|
}"
|
||||||
></span>
|
></span>
|
||||||
<span class="ability">{{ role.ability }}</span>
|
<div class="role">
|
||||||
<span class="player" v-if="Object.keys(playersByRole).length">{{
|
<span class="player" v-if="Object.keys(playersByRole).length">{{
|
||||||
playersByRole[role.id] ? playersByRole[role.id].join(", ") : ""
|
playersByRole[role.id] ? playersByRole[role.id].join(", ") : ""
|
||||||
}}</span>
|
}}</span>
|
||||||
|
<span class="name">{{ role.name }}</span>
|
||||||
|
<span class="ability">{{ role.ability }}</span>
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
<li :class="[team]"></li>
|
||||||
|
<li :class="[team]"></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
@ -114,124 +114,128 @@ h3 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
|
||||||
text-transform: capitalize;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
height: 20px;
|
|
||||||
&:before,
|
|
||||||
&:after {
|
|
||||||
content: " ";
|
|
||||||
width: 100%;
|
|
||||||
height: 1px;
|
|
||||||
border-radius: 2px;
|
|
||||||
}
|
|
||||||
&:before {
|
|
||||||
margin-right: 15px;
|
|
||||||
}
|
|
||||||
&:after {
|
|
||||||
margin-left: 15px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.townsfolk {
|
.townsfolk {
|
||||||
.name,
|
.name {
|
||||||
h4 {
|
|
||||||
color: $townsfolk;
|
color: $townsfolk;
|
||||||
&:before,
|
}
|
||||||
&:after {
|
aside {
|
||||||
background-color: $townsfolk;
|
background: linear-gradient(-90deg, $townsfolk, transparent);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.outsider {
|
.outsider {
|
||||||
.name,
|
.name {
|
||||||
h4 {
|
|
||||||
color: $outsider;
|
color: $outsider;
|
||||||
&:before,
|
}
|
||||||
&:after {
|
aside {
|
||||||
background-color: $outsider;
|
background: linear-gradient(-90deg, $outsider, transparent);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.minion {
|
.minion {
|
||||||
.name,
|
.name {
|
||||||
h4 {
|
|
||||||
color: $minion;
|
color: $minion;
|
||||||
&:before,
|
}
|
||||||
&:after {
|
aside {
|
||||||
background-color: $minion;
|
background: linear-gradient(-90deg, $minion, transparent);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.demon {
|
.demon {
|
||||||
.name,
|
.name {
|
||||||
h4 {
|
|
||||||
color: $demon;
|
color: $demon;
|
||||||
&:before,
|
}
|
||||||
&:after {
|
aside {
|
||||||
background-color: $demon;
|
background: linear-gradient(-90deg, $demon, transparent);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.team {
|
||||||
|
display: flex;
|
||||||
|
align-items: stretch;
|
||||||
|
width: 100%;
|
||||||
|
&:not(:last-child):after {
|
||||||
|
content: " ";
|
||||||
|
display: block;
|
||||||
|
width: 25%;
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(90deg, #ffffffaa, transparent);
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
aside {
|
||||||
|
width: 30px;
|
||||||
|
display: flex;
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
overflow: hidden;
|
||||||
|
text-shadow: 0 0 4px black;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
text-transform: uppercase;
|
||||||
|
text-align: center;
|
||||||
|
transform: rotate(90deg);
|
||||||
|
transform-origin: center;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
|
flex-grow: 1;
|
||||||
|
display: flex;
|
||||||
|
padding: 5px 0;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 100%;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
align-content: center;
|
flex-grow: 1;
|
||||||
/*background: linear-gradient(0deg, #ffffff0f, transparent);*/
|
width: 420px;
|
||||||
border-radius: 10px;
|
|
||||||
.icon {
|
.icon {
|
||||||
width: 6vh;
|
width: 8vh;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-position: 0 -5px;
|
background-position: 0 -5px;
|
||||||
flex-grow: 0;
|
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
margin: 0 10px;
|
flex-grow: 0;
|
||||||
text-align: center;
|
|
||||||
border-left: 1px solid #ffffff1f;
|
|
||||||
border-right: 1px solid #ffffff1f;
|
|
||||||
&:after {
|
&:after {
|
||||||
content: " ";
|
content: " ";
|
||||||
display: block;
|
display: block;
|
||||||
padding-top: 65%;
|
padding-top: 75%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.name {
|
.role {
|
||||||
flex-grow: 0;
|
line-height: 80%;
|
||||||
flex-shrink: 0;
|
|
||||||
width: 15%;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: right;
|
|
||||||
font-size: 110%;
|
|
||||||
}
|
|
||||||
.player {
|
|
||||||
flex-grow: 0;
|
|
||||||
flex-shrink: 1;
|
|
||||||
text-align: right;
|
|
||||||
margin: 0 10px;
|
|
||||||
color: #888;
|
|
||||||
font-size: smaller;
|
|
||||||
}
|
|
||||||
.ability {
|
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
}
|
.name {
|
||||||
&.legend {
|
font-weight: bold;
|
||||||
width: 100%;
|
font-size: 75%;
|
||||||
font-weight: bold;
|
display: block;
|
||||||
height: 20px;
|
|
||||||
margin-top: 10px;
|
|
||||||
li span {
|
|
||||||
background: none;
|
|
||||||
height: auto;
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: inherit;
|
|
||||||
color: #fff;
|
|
||||||
}
|
}
|
||||||
.icon:after {
|
.player {
|
||||||
padding-top: 0;
|
color: #888;
|
||||||
|
float: right;
|
||||||
|
font-size: 60%;
|
||||||
|
}
|
||||||
|
.ability {
|
||||||
|
font-size: 70%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** break into 1 column below 1200px **/
|
||||||
|
@media screen and (max-width: 1199.98px) {
|
||||||
|
.modal {
|
||||||
|
max-width: 60%;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
li {
|
||||||
|
.icon { width: 6vh; }
|
||||||
|
.role { line-height: 100%; }
|
||||||
|
.name { font-size: 100%; }
|
||||||
|
.player { font-size: 100%; }
|
||||||
|
.ability { font-size: 90%; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ module.exports = store => {
|
||||||
if (localStorage.getItem("playerId")) {
|
if (localStorage.getItem("playerId")) {
|
||||||
store.commit("session/setPlayerId", localStorage.getItem("playerId"));
|
store.commit("session/setPlayerId", localStorage.getItem("playerId"));
|
||||||
}
|
}
|
||||||
if (localStorage.getItem("session")) {
|
if (localStorage.getItem("session") && !window.location.hash.substr(1)) {
|
||||||
const [spectator, sessionId] = JSON.parse(localStorage.getItem("session"));
|
const [spectator, sessionId] = JSON.parse(localStorage.getItem("session"));
|
||||||
store.commit("session/setSpectator", spectator);
|
store.commit("session/setSpectator", spectator);
|
||||||
store.commit("session/setSessionId", sessionId);
|
store.commit("session/setSessionId", sessionId);
|
||||||
|
|
|
@ -878,5 +878,6 @@ export default store => {
|
||||||
if (sessionId) {
|
if (sessionId) {
|
||||||
store.commit("session/setSpectator", true);
|
store.commit("session/setSpectator", true);
|
||||||
store.commit("session/setSessionId", sessionId);
|
store.commit("session/setSessionId", sessionId);
|
||||||
|
store.commit("toggleGrimoire", false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue