Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
955794b5c0 | ||
|
|
b0ac1dcc29 | ||
|
|
83150bc527 | ||
|
|
061f1fd0a5 | ||
|
|
e40dd196e6 | ||
|
|
5dbb59ef80 | ||
|
|
49e25d7304 | ||
|
|
85df0257e2 | ||
|
|
b88bb95928 | ||
|
|
2122e543d5 | ||
|
|
a71519aaa7 |
@@ -16,7 +16,6 @@ differential:vulcanize
|
|||||||
matb33:collection-hooks
|
matb33:collection-hooks
|
||||||
zimme:collection-softremovable
|
zimme:collection-softremovable
|
||||||
momentjs:moment
|
momentjs:moment
|
||||||
mike:mocha
|
|
||||||
dburles:mongo-collection-instances
|
dburles:mongo-collection-instances
|
||||||
percolate:migrations
|
percolate:migrations
|
||||||
ecwyne:mathjs
|
ecwyne:mathjs
|
||||||
@@ -24,3 +23,5 @@ useraccounts:polymer
|
|||||||
accounts-google
|
accounts-google
|
||||||
splendido:accounts-meld
|
splendido:accounts-meld
|
||||||
email
|
email
|
||||||
|
fourseven:scss@2.1.1
|
||||||
|
wolves:bourbon
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ accounts-ui@1.1.5
|
|||||||
accounts-ui-unstyled@1.1.7
|
accounts-ui-unstyled@1.1.7
|
||||||
aldeed:collection2@2.3.3
|
aldeed:collection2@2.3.3
|
||||||
aldeed:simple-schema@1.3.3
|
aldeed:simple-schema@1.3.3
|
||||||
amplify@1.0.0
|
|
||||||
autoupdate@1.2.1
|
autoupdate@1.2.1
|
||||||
base64@1.0.3
|
base64@1.0.3
|
||||||
binary-heap@1.0.3
|
binary-heap@1.0.3
|
||||||
@@ -25,6 +24,7 @@ ecwyne:mathjs@0.25.0
|
|||||||
ejson@1.0.6
|
ejson@1.0.6
|
||||||
email@1.0.6
|
email@1.0.6
|
||||||
fastclick@1.0.3
|
fastclick@1.0.3
|
||||||
|
fourseven:scss@2.1.1
|
||||||
geojson-utils@1.0.3
|
geojson-utils@1.0.3
|
||||||
google@1.1.5
|
google@1.1.5
|
||||||
html-tools@1.0.4
|
html-tools@1.0.4
|
||||||
@@ -50,7 +50,6 @@ logging@1.0.7
|
|||||||
matb33:collection-hooks@0.7.13
|
matb33:collection-hooks@0.7.13
|
||||||
meteor@1.1.6
|
meteor@1.1.6
|
||||||
meteor-platform@1.2.2
|
meteor-platform@1.2.2
|
||||||
mike:mocha@0.5.4
|
|
||||||
minifiers@1.1.5
|
minifiers@1.1.5
|
||||||
minimongo@1.0.8
|
minimongo@1.0.8
|
||||||
mobile-status-bar@1.0.3
|
mobile-status-bar@1.0.3
|
||||||
@@ -61,19 +60,13 @@ oauth@1.1.4
|
|||||||
oauth2@1.1.3
|
oauth2@1.1.3
|
||||||
observe-sequence@1.0.6
|
observe-sequence@1.0.6
|
||||||
ordered-dict@1.0.3
|
ordered-dict@1.0.3
|
||||||
package-version-parser@3.0.3
|
|
||||||
percolate:migrations@0.7.5
|
percolate:migrations@0.7.5
|
||||||
practicalmeteor:chai@1.9.2_3
|
|
||||||
practicalmeteor:loglevel@1.1.0_3
|
|
||||||
random@1.0.3
|
random@1.0.3
|
||||||
reactive-dict@1.1.0
|
reactive-dict@1.1.0
|
||||||
reactive-var@1.0.5
|
reactive-var@1.0.5
|
||||||
reload@1.1.3
|
reload@1.1.3
|
||||||
retry@1.0.3
|
retry@1.0.3
|
||||||
routepolicy@1.0.5
|
routepolicy@1.0.5
|
||||||
sanjo:long-running-child-process@1.0.3
|
|
||||||
sanjo:meteor-files-helpers@1.1.0_4
|
|
||||||
sanjo:meteor-version@1.0.0
|
|
||||||
service-configuration@1.0.4
|
service-configuration@1.0.4
|
||||||
session@1.1.0
|
session@1.1.0
|
||||||
sha@1.0.3
|
sha@1.0.3
|
||||||
@@ -90,12 +83,8 @@ underscore@1.0.3
|
|||||||
url@1.0.4
|
url@1.0.4
|
||||||
useraccounts:core@1.9.1
|
useraccounts:core@1.9.1
|
||||||
useraccounts:polymer@1.9.1
|
useraccounts:polymer@1.9.1
|
||||||
velocity:chokidar@0.12.6_1
|
|
||||||
velocity:core@0.6.1
|
|
||||||
velocity:html-reporter@0.5.3
|
|
||||||
velocity:meteor-internals@1.1.0_7
|
|
||||||
velocity:shim@0.1.0
|
|
||||||
webapp@1.2.0
|
webapp@1.2.0
|
||||||
webapp-hashing@1.0.3
|
webapp-hashing@1.0.3
|
||||||
|
wolves:bourbon@1.0.0
|
||||||
zimme:collection-behaviours@1.0.4
|
zimme:collection-behaviours@1.0.4
|
||||||
zimme:collection-softremovable@1.0.4
|
zimme:collection-softremovable@1.0.4
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ Router.plugin("ensureSignedIn", {
|
|||||||
"atResetPwd",
|
"atResetPwd",
|
||||||
"atEnrollAccount",
|
"atEnrollAccount",
|
||||||
"atVerifyEmail",
|
"atVerifyEmail",
|
||||||
"atresendVerificationEmail",
|
"atResendVerificationEmail",
|
||||||
"loginButtons",
|
"loginButtons",
|
||||||
"notFound",
|
"notFound",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -13,10 +13,9 @@
|
|||||||
"tests"
|
"tests"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"polymer": "Polymer/polymer#~0.5.4",
|
"polymer": "Polymer/polymer#~0.5.5",
|
||||||
"core-elements": "Polymer/core-elements#~0.5.4",
|
"core-elements": "Polymer/core-elements#~0.5.5",
|
||||||
"paper-elements": "Polymer/paper-elements#~0.5.4",
|
"paper-elements": "Polymer/paper-elements#~0.5.5"
|
||||||
"paper-fab-menu": "cwdoh/paper-fab-menu"
|
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"core-component-page": "^0.5.0",
|
"core-component-page": "^0.5.0",
|
||||||
|
|||||||
91
rpg-docs/client/style/cards.scss
Normal file
91
rpg-docs/client/style/cards.scss
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
@import "bourbon/bourbon";
|
||||||
|
|
||||||
|
$thickColumnWidth: 304px;
|
||||||
|
$thinColumnWidth: 240px;
|
||||||
|
|
||||||
|
//Column layouts of cards
|
||||||
|
.column-container {
|
||||||
|
@include column-fill(balance);
|
||||||
|
@include column-gap(8px);
|
||||||
|
@include column-width($thickColumnWidth);
|
||||||
|
padding: 8px;
|
||||||
|
|
||||||
|
&.thin-columns {
|
||||||
|
@include column-count(4);
|
||||||
|
@include column-width($thinColumnWidth);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Cards
|
||||||
|
.card {
|
||||||
|
background: white;
|
||||||
|
border-radius: 2px;
|
||||||
|
|
||||||
|
.column-container & {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
width: 100%;
|
||||||
|
//hack to stop flickering
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
-webkit-transform: translateX(0);
|
||||||
|
//stop breaking over column divide
|
||||||
|
-webkit-column-break-inside: avoid;
|
||||||
|
page-break-inside: avoid;
|
||||||
|
break-inside: avoid;
|
||||||
|
//Fixes extra margin at top of columns
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top {
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 16px;
|
||||||
|
border-radius: 2px 2px 0 0;
|
||||||
|
&.white {
|
||||||
|
cursor: auto;
|
||||||
|
padding: 16px;
|
||||||
|
border-bottom: rgba(0,0,0,0.12) solid 1px;
|
||||||
|
}
|
||||||
|
paper-checkbox::shadow #ink[checked] {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
paper-checkbox::shadow #ink {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
paper-checkbox::shadow #checkbox.checked {
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-color: rgba(255,255,255,0.27);
|
||||||
|
border-color: #ffffff;
|
||||||
|
border-color: rgba(255,255,255,0.27);
|
||||||
|
}
|
||||||
|
paper-checkbox::shadow #checkbox {
|
||||||
|
border-color: #ffffff;
|
||||||
|
border-color: rgba(255,255,255,0.54);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bottom {
|
||||||
|
padding: 16px;
|
||||||
|
border-radius: 0 0 2px 2px;
|
||||||
|
&.list {
|
||||||
|
padding: 0 0 16px 0;
|
||||||
|
.subhead {
|
||||||
|
color: rgba(0,0,0,0.54);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: 0.010em;
|
||||||
|
padding: 12px 16px 12px 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.text {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.left {
|
||||||
|
padding: 16px;
|
||||||
|
border-radius: 2px 0 0 2px;
|
||||||
|
text-align: center;
|
||||||
|
min-width: 72px;
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
padding: 16px;
|
||||||
|
border-radius: 0 2px 2px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
37
rpg-docs/client/style/listItem.scss
Normal file
37
rpg-docs/client/style/listItem.scss
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
List items
|
||||||
|
*/
|
||||||
|
.item-slot {
|
||||||
|
background-color: rgb(232, 232, 232);
|
||||||
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
background: white;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 16px;
|
||||||
|
height: 40px;
|
||||||
|
margin: 1px 0 1px 0;
|
||||||
|
padding: 0 16px 0 16px;
|
||||||
|
position: relative;
|
||||||
|
transition: box-shadow 0.3s ease, opacity 0.5s ease-in-out;
|
||||||
|
&.small {
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
&.tall {
|
||||||
|
height: 56px;
|
||||||
|
}
|
||||||
|
&.flexible {
|
||||||
|
height: auto;
|
||||||
|
padding-top: 16px;
|
||||||
|
padding-bottom: 16px;
|
||||||
|
}
|
||||||
|
&[hero], &:active{
|
||||||
|
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.37);
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
core-icon, paper-icon-button {
|
||||||
|
color: #747474;
|
||||||
|
color: rgba(0,0,0,0.54);
|
||||||
|
}
|
||||||
|
}
|
||||||
62
rpg-docs/client/style/main.scss
Normal file
62
rpg-docs/client/style/main.scss
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
@import "bourbon/bourbon";
|
||||||
|
@import "colors";
|
||||||
|
|
||||||
|
//apply a natural box layout model to all elements
|
||||||
|
*, *:before, *:after {
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
root {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial;
|
||||||
|
margin: 0;
|
||||||
|
overflow-x: hidden;
|
||||||
|
background-color: #E0E0E0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Horizontal rule
|
||||||
|
hr {
|
||||||
|
background-color: #444;
|
||||||
|
opacity: 0.12;
|
||||||
|
border-width: 0;
|
||||||
|
color: #444;
|
||||||
|
height: 1px;
|
||||||
|
line-height: 0;
|
||||||
|
margin: 16px -16px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
//FABs
|
||||||
|
.floatyButton {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 24px;
|
||||||
|
right: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Buttons
|
||||||
|
paper-button {
|
||||||
|
color: #000;
|
||||||
|
color: rgba(0,0,0,0.87);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
letter-spacing: 0.010;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Style shortcuts
|
||||||
|
.scroll-y {
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clickable, core-item, paper-tab {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fab-buffer {
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
20
rpg-docs/client/style/shadowDom.css
Normal file
20
rpg-docs/client/style/shadowDom.css
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
.card .left paper-icon-button {
|
||||||
|
display: block;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0;
|
||||||
|
width: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .left paper-icon-button[disabled] {
|
||||||
|
color: rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .left paper-icon-button /deep/ core-icon {
|
||||||
|
height: 32px;
|
||||||
|
width: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*fix paper-dropdowns*/
|
||||||
|
body /deep/ core-menu {
|
||||||
|
overflow-x: hidden !important;
|
||||||
|
}
|
||||||
@@ -1,268 +0,0 @@
|
|||||||
root {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial;
|
|
||||||
margin: 0;
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.core-narrow {
|
|
||||||
padding: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body /deep/ core-menu {
|
|
||||||
overflow-x: hidden !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculatedValue {
|
|
||||||
color: #021C33;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
border-spacing: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.summaryTable td{
|
|
||||||
text-align: right;
|
|
||||||
padding: 4px;
|
|
||||||
min-width: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.summaryTable td:first-child {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
background-color: #444;
|
|
||||||
opacity: 0.12;
|
|
||||||
border-width: 0;
|
|
||||||
color: #444;
|
|
||||||
height: 1px;
|
|
||||||
line-height: 0;
|
|
||||||
margin: 0 -16px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
paper-button {
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 400;
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: #000;
|
|
||||||
color: rgba(0,0,0,0.87);
|
|
||||||
letter-spacing: 0.010;
|
|
||||||
}
|
|
||||||
|
|
||||||
core-item {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.listRow {
|
|
||||||
height: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card {
|
|
||||||
margin-bottom: 8px;
|
|
||||||
/*hack to stop flickering*/
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
-webkit-transform: translateX(0);
|
|
||||||
/*stop divs breaking over divide*/
|
|
||||||
-webkit-column-break-inside: avoid;
|
|
||||||
page-break-inside: avoid;
|
|
||||||
break-inside: avoid;
|
|
||||||
/*Fixes extra margin at top of columns*/
|
|
||||||
display: inline-block;
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
font-size: 14px;
|
|
||||||
border-radius: 2px;
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card.double {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card paper-button {
|
|
||||||
font-size: 14px;
|
|
||||||
letter-spacing: 0.01em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cardHeader {
|
|
||||||
height: 48px;
|
|
||||||
padding: 0 16px 0 16px;
|
|
||||||
align-content: center;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 400;
|
|
||||||
color: rgba(0, 0, 0, 0.54);
|
|
||||||
}
|
|
||||||
|
|
||||||
.clickable, .statCard, .abilityMiniCard {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skillRow {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resourceCards {
|
|
||||||
padding: 4px 4px 0 4px;
|
|
||||||
margin-bottom: -4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resourceCards .card {
|
|
||||||
width: 180px;
|
|
||||||
margin: 4px;
|
|
||||||
flex-grow: 1;
|
|
||||||
flex-shrink: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.grey-background, body {
|
|
||||||
background-color: #E0E0E0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.screen-center {
|
|
||||||
position: fixed;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
-webkit-transform: translate(-50%, -50%);
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.scroll-y {
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fab-buffer {
|
|
||||||
height: 88px;
|
|
||||||
width: 100%;
|
|
||||||
order: 999;
|
|
||||||
}
|
|
||||||
|
|
||||||
*[hidden] {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hidden{
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 640px) {
|
|
||||||
html /deep/ paper-action-dialog[global-dialog] {
|
|
||||||
top: 0 !important;
|
|
||||||
left: 0 !important;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
margin: 0;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.floatyButton {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 24px;
|
|
||||||
right: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wideTable td {
|
|
||||||
padding: 4px 8px 4px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wideTable table {
|
|
||||||
padding: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
paper-fab-menu /deep/ .container {
|
|
||||||
padding: 24px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
paper-slider {
|
|
||||||
margin-left: -8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-subhead {
|
|
||||||
color: rgba(0,0,0,0.54);
|
|
||||||
font-size: 14px;
|
|
||||||
height: 40px;
|
|
||||||
padding-left: 16px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.whiteTop {
|
|
||||||
cursor: initial;
|
|
||||||
border-bottom: black solid 0.5px;
|
|
||||||
border-bottom: rgba(0,0,0,0.12) solid 1px;
|
|
||||||
background: white;
|
|
||||||
padding: 16px;
|
|
||||||
position: relative;
|
|
||||||
border-radius: 2px 2px 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.whiteTop paper-icon-button {
|
|
||||||
margin: -8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fullwidth {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.padded {
|
|
||||||
padding: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.listPadded {
|
|
||||||
padding: 0 0 16px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rightPadded {
|
|
||||||
padding-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottomPadded {
|
|
||||||
padding-bottom: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sideMargin {
|
|
||||||
margin-left: 16px;
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vertMargin {
|
|
||||||
margin-top: 16px;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spaceAfter {
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.s {
|
|
||||||
padding: 0 0 16px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leftRound{
|
|
||||||
border-radius: 2px 0 0 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.preline {
|
|
||||||
white-space: pre-line;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prewrap{
|
|
||||||
white-space: pre-wrap;
|
|
||||||
}
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
letter-spacing: 0;
|
letter-spacing: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.white-text .display1{
|
.white-text .display1, .white-text.display1{
|
||||||
color: rgba(255,255,255,0.54);
|
color: rgba(255,255,255,0.54);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template name="features">
|
<template name="features">
|
||||||
<div fit>
|
<div fit>
|
||||||
<div class="scroll-y" fit>
|
<div class="scroll-y" fit>
|
||||||
<div class="containers">
|
<div class="column-container">
|
||||||
<!--expertiseDice-->
|
<!--expertiseDice-->
|
||||||
{{>resource name="expertiseDice" title="Expertise Dice" color="teal" char=this}}
|
{{>resource name="expertiseDice" title="Expertise Dice" color="teal" char=this}}
|
||||||
<!--ki-->
|
<!--ki-->
|
||||||
@@ -14,22 +14,22 @@
|
|||||||
{{>resource name="superiorityDice" title="Superiority Dice" color="teal" char=this}}
|
{{>resource name="superiorityDice" title="Superiority Dice" color="teal" char=this}}
|
||||||
|
|
||||||
<!--Attacks-->
|
<!--Attacks-->
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero}}>
|
<paper-shadow class="card">
|
||||||
<div class="whiteTop" hero-id="toolbar" layout horizontal center {{detailHero}}>
|
<div class="top white">
|
||||||
<div flex>
|
Attacks
|
||||||
<div class="containerName subhead">Attacks</div>
|
|
||||||
</div>
|
|
||||||
<!--<paper-icon-button class="black54" id="addAttackButton" icon="add"></paper-icon-button>-->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="containerMain listPadded">
|
<div class="bottom list">
|
||||||
{{#each attacks}}
|
{{#each attacks}}
|
||||||
<div class="itemSlot">
|
<div class="item-slot">
|
||||||
<paper-item class="white attack" hero-id="main" {{detailHero}}>
|
<div class="flexible attack item"
|
||||||
<div layout horizontal class="fullwidth">
|
hero-id="main" {{detailHero}}>
|
||||||
<div class="headline rightPadded" layout horizontal center>
|
<div layout horizontal>
|
||||||
|
<div class="headline"
|
||||||
|
style="margin-right: 16px;"
|
||||||
|
layout horizontal center>
|
||||||
{{evaluateSigned ../_id attackBonus}}
|
{{evaluateSigned ../_id attackBonus}}
|
||||||
</div>
|
</div>
|
||||||
<div layout vertical flex>
|
<div flex layout vertical>
|
||||||
<div class="body2">
|
<div class="body2">
|
||||||
{{name}}
|
{{name}}
|
||||||
</div>
|
</div>
|
||||||
@@ -43,34 +43,32 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</paper-item>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
|
|
||||||
<!--Proficiencies-->
|
<!--Proficiencies-->
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero "proficiencies"}}>
|
<paper-shadow class="card">
|
||||||
<div id="proficiencies"
|
<div class="white top">
|
||||||
class="whiteTop"
|
Proficiencies
|
||||||
layout horizontal center>
|
|
||||||
<div class="containerName subhead">Proficiencies</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div flex class="containerMain listPadded">
|
<div flex class="bottom list">
|
||||||
{{#if weaponProfs.count}}
|
{{#if weaponProfs.count}}
|
||||||
<div class="list-subhead" layout horizontal center>Weapons</div>
|
<div class="subhead">Weapons</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#each weaponProfs}}
|
{{#each weaponProfs}}
|
||||||
{{> proficiencyListItem}}
|
{{> proficiencyListItem}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{#if armorProfs.count}}
|
{{#if armorProfs.count}}
|
||||||
<div class="list-subhead" layout horizontal center>Armor</div>
|
<div class="subhead">Armor</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#each armorProfs}}
|
{{#each armorProfs}}
|
||||||
{{> proficiencyListItem}}
|
{{> proficiencyListItem}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{#if toolProfs.count}}
|
{{#if toolProfs.count}}
|
||||||
<div class="list-subhead" layout horizontal center>Tools</div>
|
<div class="subhead">Tools</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#each toolProfs}}
|
{{#each toolProfs}}
|
||||||
{{> proficiencyListItem}}
|
{{> proficiencyListItem}}
|
||||||
@@ -80,23 +78,42 @@
|
|||||||
|
|
||||||
<!--features-->
|
<!--features-->
|
||||||
{{#each features}}
|
{{#each features}}
|
||||||
<paper-shadow class="card container featureCard" hero-id="main" {{detailHero}}>
|
<paper-shadow class="card featureCard"
|
||||||
<div class="containerTop {{colorClass}}" hero-id="toolbar" layout horizontal center {{detailHero}}>
|
hero-id="main" {{detailHero}}>
|
||||||
<paper-ripple fit></paper-ripple>
|
<div class="top {{colorClass}} subhead"
|
||||||
<div class="containerName subhead" hero-id="title" flex {{detailHero}}>{{name}}</div>
|
layout horizontal
|
||||||
{{#if hasUses}}<div class="subhead" style="margin-right: 8px">{{usesLeft}}/{{usesValue}}</div>{{/if}}
|
hero-id="toolbar" {{detailHero}}>
|
||||||
<paper-ripple fit></paper-ripple>
|
<div flex hero-id="title" {{detailHero}}>
|
||||||
|
{{name}}
|
||||||
|
</div>
|
||||||
|
{{#if hasUses}}
|
||||||
|
<div style="margin-right: 8px">
|
||||||
|
{{usesLeft}}/{{usesValue}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
{{#if canEnable}}
|
{{#if canEnable}}
|
||||||
<core-tooltip label="Feature enabled" position="left">
|
<core-tooltip label="Feature enabled"
|
||||||
<paper-checkbox class="enabledCheckbox" checked={{enabled}}></paper-checkbox>
|
position="left">
|
||||||
|
<paper-checkbox class="enabledCheckbox"
|
||||||
|
checked={{enabled}}>
|
||||||
|
</paper-checkbox>
|
||||||
</core-tooltip>
|
</core-tooltip>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{#if description}}<div flex class="containerMain body1 featureDescription">{{description}}</div>{{/if}}
|
{{#if description}}
|
||||||
|
<div flex class="bottom text"
|
||||||
|
>{{description}}</div>
|
||||||
|
{{/if}}
|
||||||
{{#if hasUses}}
|
{{#if hasUses}}
|
||||||
<div class="containerFoot" layout horizontal center end-justified>
|
<div layout horizontal center end-justified>
|
||||||
<paper-button class="useFeature" disabled={{noUsesLeft}}>Use</paper-button>
|
<paper-button class="useFeature"
|
||||||
<paper-button class="resetFeature" disabled={{usesFull}}>Reset</paper-button>
|
disabled={{noUsesLeft}}>
|
||||||
|
Use
|
||||||
|
</paper-button>
|
||||||
|
<paper-button class="resetFeature"
|
||||||
|
disabled={{usesFull}}>
|
||||||
|
Reset
|
||||||
|
</paper-button>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
@@ -119,18 +136,28 @@
|
|||||||
|
|
||||||
<template name="resource">
|
<template name="resource">
|
||||||
{{#if char.attributeBase name}}
|
{{#if char.attributeBase name}}
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero name char._id}} layout horizontal>
|
<paper-shadow class="card"
|
||||||
<div class="containerLeft {{getColor}}" hero-id="toolbar" {{detailHero name char._id}} >
|
hero-id="main" {{detailHero name char._id}}
|
||||||
<div class="resourceButtons">
|
layout horizontal>
|
||||||
<paper-icon-button class="resourceUp" icon="arrow-drop-up" disabled={{cantIncrement}}></paper-icon-button>
|
<div class="left {{getColor}} display1 white-text"
|
||||||
<paper-icon-button class="resourceDown" icon="arrow-drop-down" disabled={{cantDecrement}}></paper-icon-button>
|
hero-id="toolbar" {{detailHero name char._id}}
|
||||||
|
layout horizontal center>
|
||||||
|
<div style="margin-right: 8px;">
|
||||||
|
<paper-icon-button class="resourceUp"
|
||||||
|
icon="arrow-drop-up"
|
||||||
|
disabled={{cantIncrement}}>
|
||||||
|
</paper-icon-button>
|
||||||
|
<paper-icon-button class="resourceDown"
|
||||||
|
icon="arrow-drop-down"
|
||||||
|
disabled={{cantDecrement}}>
|
||||||
|
</paper-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="resourceValue">{{char.attributeValue name}}</div>
|
<div>{{char.attributeValue name}}</div>
|
||||||
<!--<div class="resourceMax">{{char.attributeBase name}}</div>-->
|
<!--<div>/{{char.attributeBase name}}</div>-->
|
||||||
</div>
|
</div>
|
||||||
<div class="containerRight clickable" flex relative horizontal layout center>
|
<div class="right clickable"
|
||||||
|
flex layout horizontal center>
|
||||||
{{title}}
|
{{title}}
|
||||||
<paper-ripple fit></paper-ripple>
|
|
||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ Template.features.events({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
"tap .featureCard .containerTop": function(event){
|
"tap .featureCard .top": function(event){
|
||||||
var featureId = this._id;
|
var featureId = this._id;
|
||||||
var charId = Template.parentData()._id;
|
var charId = Template.parentData()._id;
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
@@ -128,7 +128,7 @@ Template.resource.events({
|
|||||||
Characters.update(this.char._id, modifier, {validate: false});
|
Characters.update(this.char._id, modifier, {validate: false});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tap .containerRight": function(event, instance) {
|
"tap .right": function(event, instance) {
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
template: "attributeDialog",
|
template: "attributeDialog",
|
||||||
data: {name: this.title, statName: this.name, charId: this.char._id},
|
data: {name: this.title, statName: this.name, charId: this.char._id},
|
||||||
|
|||||||
@@ -1,152 +0,0 @@
|
|||||||
div#stats {
|
|
||||||
-webkit-column-width: 200px;
|
|
||||||
-moz-column-width: 200px;
|
|
||||||
column-width: 200px;
|
|
||||||
-webkit-column-count: 4;
|
|
||||||
-moz-column-count: 4;
|
|
||||||
column-count: 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.containers {
|
|
||||||
-webkit-column-width: 300px;
|
|
||||||
-moz-column-width: 300px;
|
|
||||||
column-width: 300px;
|
|
||||||
-webkit-column-gap: 8px;
|
|
||||||
-moz-column-gap: 8px;
|
|
||||||
column-gap: 8px;
|
|
||||||
-moz-column-fill: balance;
|
|
||||||
column-fill: balance;
|
|
||||||
padding: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.containerLeft {
|
|
||||||
padding: 16px 16px 16px 24px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
flex-direction: row;
|
|
||||||
border-radius: 2px 0 0 2px;
|
|
||||||
|
|
||||||
/* same style as display-1 */
|
|
||||||
font-size: 34px;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
color: rgba(255,255,255,0.54);
|
|
||||||
letter-spacing: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.statCard .containerLeft {
|
|
||||||
padding: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.containerRight {
|
|
||||||
padding: 16px;
|
|
||||||
|
|
||||||
/* same style as subhead */
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 400;
|
|
||||||
margin: 0;
|
|
||||||
color: #000;
|
|
||||||
color: rgba(0,0,0,0.87);
|
|
||||||
letter-spacing: 0.010em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resourceValue {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resourceMax {
|
|
||||||
display: inline-block;
|
|
||||||
align-self: flex-end;
|
|
||||||
|
|
||||||
/* same style as subhead */
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 400;
|
|
||||||
margin: 0;
|
|
||||||
color: #fff;
|
|
||||||
color: rgba(255,255,255,0.54);
|
|
||||||
letter-spacing: 0.010em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resourceMax:before {
|
|
||||||
content: "/";
|
|
||||||
}
|
|
||||||
|
|
||||||
.resourceButtons {
|
|
||||||
margin: -16px 8px -16px -16px;
|
|
||||||
align-self: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resourceButtons paper-icon-button{
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
padding: 0;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resourceButtons paper-icon-button[disabled]{
|
|
||||||
color: rgba(255, 255, 255, 0.26);
|
|
||||||
}
|
|
||||||
|
|
||||||
.resourceButtons /deep/ core-icon {
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.containerTop {
|
|
||||||
cursor: pointer;
|
|
||||||
padding: 16px;
|
|
||||||
position: relative;
|
|
||||||
border-radius: 2px 2px 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.equipmentTop {
|
|
||||||
padding: 16px;
|
|
||||||
border-bottom: rgba(0,0,0,0.12) solid 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.containerMain {
|
|
||||||
padding: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.equipmentMain {
|
|
||||||
padding-bottom: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inventoryItem {
|
|
||||||
background: white;
|
|
||||||
transition: box-shadow 0.3s ease,
|
|
||||||
opacity 0.5s ease-in-out;
|
|
||||||
height: 40px;
|
|
||||||
margin: 1px 0 1px 0;
|
|
||||||
font-size: 16px;
|
|
||||||
color: rgba(0,0,0,0.87);
|
|
||||||
letter-spacing: 0.010em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inventoryItem core-icon, .inventoryItem paper-icon-button {
|
|
||||||
color: rgba(0,0,0,0.54);
|
|
||||||
}
|
|
||||||
|
|
||||||
.inventoryItem core-icon {
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inventoryItem /deep/ .button-content {
|
|
||||||
-webkit-flex: 1;
|
|
||||||
flex: 1;
|
|
||||||
-webkit-flex-basis: 0.000000001px;
|
|
||||||
flex-basis: 0.000000001px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inventoryItem[hero] {
|
|
||||||
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.37);
|
|
||||||
}
|
|
||||||
|
|
||||||
.itemSlot {
|
|
||||||
background-color: rgb(232, 232, 232);
|
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#inventory .containerMain {
|
|
||||||
padding: 0 0 16px 0;
|
|
||||||
}
|
|
||||||
@@ -1,73 +1,95 @@
|
|||||||
<template name="inventory">
|
<template name="inventory">
|
||||||
<div fit>
|
<div fit>
|
||||||
<div id="inventory" class="scroll-y" fit>
|
<div id="inventory" class="scroll-y" fit>
|
||||||
<div class="containers">
|
<div class="column-container">
|
||||||
<!--Net Worth-->
|
<!--Net Worth-->
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero}} layout horizontal>
|
<paper-shadow class="card" layout horizontal>
|
||||||
<div class="indigo white-text subhead padded leftRound" layout horizontal center>
|
<div class="indigo white-text subhead left">
|
||||||
Net Worth
|
Net Worth
|
||||||
</div>
|
</div>
|
||||||
<div class="padded" layout horizontal center>
|
<div class="right" flex>
|
||||||
{{valueString netWorth}}
|
{{valueString netWorth}}
|
||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
<!--Weight Carried-->
|
<!--Weight Carried-->
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero}} layout horizontal>
|
<paper-shadow class="card" layout horizontal>
|
||||||
<div class="green white-text subhead padded leftRound" layout horizontal center>
|
<div class="green white-text subhead left">
|
||||||
Weight Carried
|
Weight Carried
|
||||||
</div>
|
</div>
|
||||||
<div class="padded" layout horizontal center>
|
<div class="right" flex>
|
||||||
{{round weightCarried}}lbs
|
{{round weightCarried}}lbs
|
||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
<!--Equipment-->
|
<!--Equipment-->
|
||||||
<paper-shadow class="card container equipmentContainer">
|
<paper-shadow class="card equipmentContainer">
|
||||||
<div class="equipmentTop" layout horizontal center>
|
<div class="white top" layout horizontal center>
|
||||||
<div class="containerName subhead" flex>
|
<div class="subhead" flex>
|
||||||
Equipment
|
Equipment
|
||||||
</div>
|
</div>
|
||||||
<div class="caption" style="margin-right: 8px">{{valueString equipmentValue}}</div>
|
<div class="caption" style="margin-right: 8px">
|
||||||
<div class="caption">{{round equipmentWeight}}lbs</div>
|
{{valueString equipmentValue}}
|
||||||
|
</div>
|
||||||
|
<div class="caption">
|
||||||
|
{{round equipmentWeight}}lbs
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div flex class="equipmentMain">
|
<div flex class="bottom list">
|
||||||
{{#if attuned.count}}
|
{{#if attuned.count}}
|
||||||
<div class="list-subhead" layout horizontal center>Attuned</div>
|
<div class="subhead">Attuned</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#each attuned}}
|
{{#each attuned}}
|
||||||
{{>inventoryItem}}
|
{{>inventoryItem}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{#if attuned.count}}<div class="list-subhead" layout horizontal center>Equipment</div>{{/if}}
|
{{#if attuned.count}}
|
||||||
|
<div class="subhead">Equipment</div>
|
||||||
|
{{/if}}
|
||||||
{{#each equipment}}
|
{{#each equipment}}
|
||||||
{{>inventoryItem}}
|
{{>inventoryItem}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
<!--Carried Items-->
|
<!--Carried Items-->
|
||||||
<paper-shadow class="card container carriedContainer">
|
<paper-shadow class="card carriedContainer">
|
||||||
<div class="equipmentTop" layout horizontal center>
|
<div class="white top" layout horizontal center>
|
||||||
<div class="containerName subhead" flex>
|
<div class="subhead">
|
||||||
Carried
|
Carried
|
||||||
</div>
|
</div>
|
||||||
<div class="caption" style="margin-right: 8px">{{valueString carriedValue}}</div>
|
<div class="caption" style="margin-right: 8px">
|
||||||
<div class="caption">{{round carriedWeight}}lbs</div>
|
{{valueString carriedValue}}
|
||||||
|
</div>
|
||||||
|
<div class="caption">
|
||||||
|
{{round carriedWeight}}lbs
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div flex class="containerMain">
|
<div flex class="bottom list">
|
||||||
{{#each carriedItems}}
|
{{#each carriedItems}}
|
||||||
{{>inventoryItem}}
|
{{>inventoryItem}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
{{#each containers}}
|
{{#each containers}}
|
||||||
<paper-shadow class="card container itemContainer" hero-id="main" {{detailHero}} style="order: {{containerOrder}};">
|
<paper-shadow class="card itemContainer"
|
||||||
<div class="containerTop {{colorClass}}" hero-id="toolbar" layout horizontal center {{detailHero}}>
|
hero-id="main" {{detailHero}}>
|
||||||
<div class="containerName subhead" hero-id="title" flex {{detailHero}}>{{name}}</div>
|
<div class="top {{colorClass}}"
|
||||||
<div class="caption" style="margin-right: 8px">{{valueString totalValue}}</div>
|
hero-id="toolbar" {{detailHero}}
|
||||||
<div class="caption" style="margin-right: 8px">{{round totalWeight}}lbs</div>
|
layout horizontal center>
|
||||||
|
<div class="subhead" flex
|
||||||
|
hero-id="title" {{detailHero}}>
|
||||||
|
{{name}}
|
||||||
|
</div>
|
||||||
|
<div class="caption" style="margin-right: 8px">
|
||||||
|
{{valueString totalValue}}
|
||||||
|
</div>
|
||||||
|
<div class="caption" style="margin-right: 8px">
|
||||||
|
{{round totalWeight}}lbs
|
||||||
|
</div>
|
||||||
<core-tooltip label="Container carried" position="left">
|
<core-tooltip label="Container carried" position="left">
|
||||||
<paper-checkbox class="carriedCheckbox" checked={{isCarried}}></paper-checkbox>
|
<paper-checkbox class="carriedCheckbox"
|
||||||
|
checked={{isCarried}}>
|
||||||
|
</paper-checkbox>
|
||||||
</core-tooltip>
|
</core-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div flex class="containerMain">
|
<div class="bottom list">
|
||||||
{{#each items ../_id _id}}
|
{{#each items ../_id _id}}
|
||||||
{{>inventoryItem}}
|
{{>inventoryItem}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@@ -78,17 +100,30 @@
|
|||||||
<div class="fab-buffer"></div>
|
<div class="fab-buffer"></div>
|
||||||
</div>
|
</div>
|
||||||
{{#if canEditCharacter _id}}
|
{{#if canEditCharacter _id}}
|
||||||
<paper-fab-menu id="inventoryAddMenu" icon="add" closeIcon="close" duration="0.3">
|
{{#fabMenu}}
|
||||||
<paper-fab-menu-item id="addItem" icon="note-add" color="#d23f31" tooltip="Item"></paper-fab-menu-item>
|
<core-tooltip label="New container" position="left">
|
||||||
<paper-fab-menu-item id="addContainer" icon="work" color="#d23f31" tooltip="Container"></paper-fab-menu-item>
|
<paper-fab icon="work"
|
||||||
</paper-fab-menu>
|
class="addContainer"
|
||||||
|
mini>
|
||||||
|
</paper-fab>
|
||||||
|
</core-tooltip>
|
||||||
|
<core-tooltip label="New item" position="left">
|
||||||
|
<paper-fab icon="note-add"
|
||||||
|
class="addItem"
|
||||||
|
mini>
|
||||||
|
</paper-fab>
|
||||||
|
</core-tooltip>
|
||||||
|
{{/fabMenu}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="inventoryItem">
|
<template name="inventoryItem">
|
||||||
<div class="itemSlot">
|
<div class="item-slot">
|
||||||
<paper-item class="inventoryItem {{hidden}}" hero-id="main" noink {{detailHero}} layout horizontal draggable="true">
|
<paper-item class="item inventoryItem {{hidden}}" noink
|
||||||
|
hero-id="main" {{detailHero}}
|
||||||
|
layout horizontal
|
||||||
|
draggable="true">
|
||||||
{{#if ne1 quantity}}{{quantity}} {{/if}}{{pluralName}}
|
{{#if ne1 quantity}}{{quantity}} {{/if}}{{pluralName}}
|
||||||
</paper-item>
|
</paper-item>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ Template.inventory.helpers({
|
|||||||
});
|
});
|
||||||
|
|
||||||
Template.inventory.events({
|
Template.inventory.events({
|
||||||
"tap #addItem": function(event){
|
"tap .addItem": function(event){
|
||||||
var charId = this._id;
|
var charId = this._id;
|
||||||
Items.insert({
|
Items.insert({
|
||||||
charId: charId,
|
charId: charId,
|
||||||
@@ -120,7 +120,7 @@ Template.inventory.events({
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
"tap #addContainer": function(event){
|
"tap .addContainer": function(event){
|
||||||
var containerId = Containers.insert({
|
var containerId = Containers.insert({
|
||||||
name: "New Container",
|
name: "New Container",
|
||||||
isCarried: true,
|
isCarried: true,
|
||||||
@@ -145,7 +145,7 @@ Template.inventory.events({
|
|||||||
heroId: itemId,
|
heroId: itemId,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
"tap .containerTop": function(event){
|
"tap .itemContainer .top": function(event){
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
template: "containerDialog",
|
template: "containerDialog",
|
||||||
data: {containerId: this._id, charId: this.charId},
|
data: {containerId: this._id, charId: this.charId},
|
||||||
|
|||||||
@@ -1,67 +1,91 @@
|
|||||||
<template name="journal">
|
<template name="journal">
|
||||||
<div fit>
|
<div fit>
|
||||||
<div id="journal" class="scroll-y" fit>
|
<div id="journal" class="scroll-y" fit>
|
||||||
<div class="containers">
|
<div class="column-container">
|
||||||
<!--Experience Table-->
|
<!--Experience Table-->
|
||||||
<paper-shadow class="card container experiencesCard" hero-id="main" {{detailHero}}>
|
<paper-shadow class="card experiencesCard"
|
||||||
<div class="whiteTop" hero-id="toolbar" layout horizontal center {{detailHero}}>
|
hero-id="main" {{detailHero}}>
|
||||||
<div class="containerName subhead" flex>Experience</div>
|
<div class="top white subhead"
|
||||||
<div class="subhead">{{experience}} XP</div>
|
hero-id="toolbar" {{detailHero}}
|
||||||
|
layout horizontal center>
|
||||||
|
<div flex>Experience</div>
|
||||||
|
<div >{{experience}} XP</div>
|
||||||
<paper-icon-button class="black54" id="addXP" icon="add"></paper-icon-button>
|
<paper-icon-button class="black54" id="addXP" icon="add"></paper-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="containerMain experiences">
|
<div class="bottom list">
|
||||||
{{#each experiences}}
|
{{#each experiences}}
|
||||||
<div class="itemSlot">
|
<div class="item-slot">
|
||||||
<paper-item class="inventoryItem experience" hero-id="main" {{detailHero}} layout horizontal>
|
<div class="item experience"
|
||||||
<div flex>{{name}}</div><div class="xpValue">{{value}}</div>
|
hero-id="main" {{detailHero}}
|
||||||
</paper-item>
|
layout horizontal center>
|
||||||
|
<div flex>{{name}}</div>
|
||||||
|
<div class="xpValue">{{value}}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{#if moreExperiencesOrCollapse}}
|
{{#if moreExperiencesOrCollapse}}
|
||||||
<div class="containerFoot" layout="" horizontal="" center="" end-justified="">
|
<div layout horizontal center end-justified>
|
||||||
<paper-button id="moreExperiences" disabled={{notMoreExperiences}}>Load More</paper-button>
|
<paper-button id="moreExperiences"
|
||||||
<paper-button id="lessExperiences" disabled={{cantCollapse}}>Collapse</paper-button>
|
disabled={{notMoreExperiences}}>
|
||||||
|
Load More
|
||||||
|
</paper-button>
|
||||||
|
<paper-button id="lessExperiences"
|
||||||
|
disabled={{cantCollapse}}>
|
||||||
|
Collapse
|
||||||
|
</paper-button>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
<!--Class Table-->
|
<!--Class Table-->
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero}}>
|
<paper-shadow class="card"
|
||||||
<div class="whiteTop" hero-id="toolbar" layout horizontal center {{detailHero}}>
|
hero-id="main" {{detailHero}}>
|
||||||
|
<div class="white top"
|
||||||
|
hero-id="toolbar" {{detailHero}}
|
||||||
|
layout horizontal center>
|
||||||
<div flex>
|
<div flex>
|
||||||
<div class="containerName subhead">Level {{level}}</div>
|
<div class="containerName subhead">
|
||||||
|
Level {{level}}
|
||||||
|
</div>
|
||||||
{{#if nextLevelXP}}
|
{{#if nextLevelXP}}
|
||||||
<div class="caption">
|
<div class="caption">
|
||||||
Next Level: {{nextLevelXP}}XP
|
Next Level: {{nextLevelXP}}XP
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<paper-icon-button class="black54" id="addClassButton" icon="add"></paper-icon-button>
|
<paper-icon-button class="black54"
|
||||||
|
id="addClassButton"
|
||||||
|
icon="add">
|
||||||
|
</paper-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="containerMain experiences">
|
<div class="bottom list">
|
||||||
<div class="itemSlot">
|
<div class="item-slot">
|
||||||
<paper-item class="inventoryItem race" hero-id="main" {{detailHero "race" _id}} layout horizontal>
|
<div class="item race"
|
||||||
|
hero-id="main" {{detailHero "race" _id}}
|
||||||
|
layout horizontal center>
|
||||||
{{race}}
|
{{race}}
|
||||||
</paper-item>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#each classes}}
|
{{#each classes}}
|
||||||
<div class="itemSlot">
|
<div class="item-slot">
|
||||||
<paper-item class="inventoryItem class" hero-id="main" {{detailHero}} layout horizontal>
|
<div class="item class"
|
||||||
|
hero-id="main" {{detailHero}}
|
||||||
|
layout horizontal center>
|
||||||
{{name}} {{level}}
|
{{name}} {{level}}
|
||||||
</paper-item>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
<!--Notes-->
|
<!--Notes-->
|
||||||
{{#each notes}}
|
{{#each notes}}
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero}}>
|
<paper-shadow class="card" hero-id="main" {{detailHero}}>
|
||||||
<div class="containerTop {{colorClass}} noteTop" hero-id="toolbar" layout horizontal center {{detailHero}}>
|
<div class="top {{colorClass}} noteTop subhead"
|
||||||
<div flex>
|
hero-id="toolbar" {{detailHero}}
|
||||||
<div class="containerName subhead">{{name}}</div>
|
layout horizontal center>
|
||||||
</div>
|
{{name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="containerMain preline">{{description}}</div>
|
<div class="bottom text">{{description}}</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,16 +3,28 @@
|
|||||||
{{#baseDialog title=name class=colorClass startEditing=../startEditing}}
|
{{#baseDialog title=name class=colorClass startEditing=../startEditing}}
|
||||||
<div class="prewrap">{{description}}</div>
|
<div class="prewrap">{{description}}</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<!--Name-->
|
{{> noteDialogEdit}}
|
||||||
<div horizontal layout>
|
|
||||||
<paper-input id="noteNameInput" label="Name" floatinglabel value={{name}} flex></paper-input>
|
|
||||||
</div>
|
|
||||||
<!--Description-->
|
|
||||||
<paper-input-decorator label="Description" floatinglabel layout vertical>
|
|
||||||
<paper-autogrow-textarea>
|
|
||||||
<textarea id="noteDescriptionInput" value={{description}}></textarea>
|
|
||||||
</paper-autogrow-textarea>
|
|
||||||
</paper-input-decorator>
|
|
||||||
{{/baseDialog}}
|
{{/baseDialog}}
|
||||||
{{/with}}
|
{{/with}}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="noteDialogEdit">
|
||||||
|
<!--Name-->
|
||||||
|
<div horizontal layout>
|
||||||
|
<paper-input id="noteNameInput"
|
||||||
|
label="Name"
|
||||||
|
floatinglabel
|
||||||
|
value={{name}}
|
||||||
|
flex>
|
||||||
|
</paper-input>
|
||||||
|
</div>
|
||||||
|
<!--Description, formatting this nicely breaks it, leave it as is-->
|
||||||
|
<paper-input-decorator label="Description"
|
||||||
|
floatinglabel
|
||||||
|
layout vertical>
|
||||||
|
<paper-autogrow-textarea>
|
||||||
|
<textarea id="noteDescriptionInput"
|
||||||
|
value={{description}}></textarea>
|
||||||
|
</paper-autogrow-textarea>
|
||||||
|
</paper-input-decorator>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
Template.noteDialog.onRendered(function(){
|
Template.noteDialog.helpers({
|
||||||
updatePolymerInputs(this);
|
note: function(){
|
||||||
|
return Notes.findOne(this.noteId);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Template.noteDialog.events({
|
Template.noteDialog.events({
|
||||||
@@ -11,6 +13,13 @@ Template.noteDialog.events({
|
|||||||
GlobalUI.deletedToast(instance.data.noteId, "Notes", "Note");
|
GlobalUI.deletedToast(instance.data.noteId, "Notes", "Note");
|
||||||
GlobalUI.closeDetail();
|
GlobalUI.closeDetail();
|
||||||
},
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.noteDialogEdit.onRendered(function(){
|
||||||
|
updatePolymerInputs(this);
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.noteDialogEdit.events({
|
||||||
"change #noteNameInput, input #noteNameInput": function(event){
|
"change #noteNameInput, input #noteNameInput": function(event){
|
||||||
var value = event.currentTarget.value;
|
var value = event.currentTarget.value;
|
||||||
Notes.update(this._id, {$set: {name: value}});
|
Notes.update(this._id, {$set: {name: value}});
|
||||||
@@ -20,9 +29,3 @@ Template.noteDialog.events({
|
|||||||
Notes.update(this._id, {$set: {description: value}});
|
Notes.update(this._id, {$set: {description: value}});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
Template.noteDialog.helpers({
|
|
||||||
note: function(){
|
|
||||||
return Notes.findOne(this.noteId);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template name="persona">
|
<template name="persona">
|
||||||
<div fit>
|
<div fit>
|
||||||
<div id="persona" class="scroll-y" fit>
|
<div id="persona" class="scroll-y" fit>
|
||||||
<div class="containers">
|
<div class="column-container">
|
||||||
{{#with characterDetails}}
|
{{#with characterDetails}}
|
||||||
{{#containerCardHelper this}}{{alignment}} {{gender}} {{race}}{{/containerCardHelper}}
|
{{#containerCardHelper this}}{{alignment}} {{gender}} {{race}}{{/containerCardHelper}}
|
||||||
{{/with}}
|
{{/with}}
|
||||||
@@ -11,11 +11,11 @@
|
|||||||
{{> containerCard characterField "bonds" "Bonds"}}
|
{{> containerCard characterField "bonds" "Bonds"}}
|
||||||
{{> containerCard characterField "flaws" "Flaws"}}
|
{{> containerCard characterField "flaws" "Flaws"}}
|
||||||
{{> containerCard characterField "backstory" "Background"}}
|
{{> containerCard characterField "backstory" "Background"}}
|
||||||
<paper-shadow class="card container">
|
<paper-shadow class="card">
|
||||||
<div class="containerTop whiteTop" layout horizontal center>
|
<div class="white top subhead">
|
||||||
<div class="containerName subhead" flex>Languages</div>
|
Languages
|
||||||
</div>
|
</div>
|
||||||
<div flex class="containerMain listPadded">
|
<div class="bottom list">
|
||||||
{{#each languages}}
|
{{#each languages}}
|
||||||
{{> proficiencyListItem}}
|
{{> proficiencyListItem}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@@ -31,10 +31,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="containerCardHelper">
|
<template name="containerCardHelper">
|
||||||
<paper-shadow class="card container {{class}}" hero-id="main" {{detailHero field ../_id}}>
|
<paper-shadow class="card {{class}}"
|
||||||
<div class="containerTop {{colorClass}} {{topClass}}" hero-id="toolbar" layout horizontal center {{detailHero field ../_id}}>
|
hero-id="main" {{detailHero field ../_id}}>
|
||||||
<div class="containerName subhead" hero-id="title" flex {{detailHero field ../_id}}>{{title}}</div>
|
<div class="top subhead {{colorClass}} {{topClass}}"
|
||||||
|
hero-id="toolbar" {{detailHero field ../_id}}>
|
||||||
|
<div class="subhead" flex
|
||||||
|
hero-id="title" {{detailHero field ../_id}}>
|
||||||
|
{{title}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div flex class="containerMain prewrap">{{> UI.contentBlock}}</div>
|
<div class="bottom text">{{> UI.contentBlock}}</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,8 +1,11 @@
|
|||||||
<template name="proficiencyListItem">
|
<template name="proficiencyListItem">
|
||||||
<div class="itemSlot">
|
<div class="item-slot">
|
||||||
<paper-item noink class="white proficiencyItem" hero-id="main" {{detailHero}}>
|
<div class="proficiency item small"
|
||||||
<core-icon icon="{{profIcon}}" class="black54"></core-icon>
|
hero-id="main" {{detailHero}}
|
||||||
<div class="sideMargin">{{getName}}</div>
|
layout horizontal center>
|
||||||
</paper-item>
|
<core-icon icon="{{profIcon}}"
|
||||||
|
style="margin-right: 16px;"></core-icon>
|
||||||
|
<div flex>{{getName}}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -14,7 +14,7 @@ Template.proficiencyListItem.helpers({
|
|||||||
});
|
});
|
||||||
|
|
||||||
Template.proficiencyListItem.events({
|
Template.proficiencyListItem.events({
|
||||||
"tap .proficiencyItem": function(event, instance){
|
"tap .proficiency": function(event, instance){
|
||||||
openParentDialog(this.parent, this.charId, this._id);
|
openParentDialog(this.parent, this.charId, this._id);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,84 +1,120 @@
|
|||||||
<template name="spells">
|
<template name="spells">
|
||||||
<div fit>
|
<div fit>
|
||||||
<div id="spells" class="scroll-y" fit>
|
<div id="spells" class="scroll-y" fit>
|
||||||
<div class="spellsContainer" layout horizontal start wrap>
|
<div style="padding: 4px;"
|
||||||
|
layout horizontal start wrap>
|
||||||
{{#if hasSlots}}
|
{{#if hasSlots}}
|
||||||
<paper-shadow class="card container spellSlotContainer" hero-id="main" {{detailHero}}>
|
<paper-shadow class="card"
|
||||||
<div class="containerTop whiteTop" layout horizontal center>
|
style="margin: 4px;"
|
||||||
<div class="containerName subhead" hero-id="title" flex>Spell Slots</div>
|
hero-id="main" {{detailHero}}>
|
||||||
|
<div class="white top subhead"
|
||||||
|
layout horizontal center>
|
||||||
|
Spell Slots
|
||||||
</div>
|
</div>
|
||||||
<div flex class="containerMain">
|
<div class="bottom list">
|
||||||
{{#each levels}}{{#if showSlots ..}}
|
{{#each levels}}{{#if showSlots ..}}
|
||||||
<div class="itemSlot">
|
<div class="item-slot">
|
||||||
<paper-item class="inventoryItem spellSlot" hero-id="main" {{detailHero slotStatName ../_id}} layout horizontal>
|
<div class="item spellSlot"
|
||||||
<div class="slotName">
|
hero-id="main" {{detailHero slotStatName ../_id}}
|
||||||
|
layout horizontal center>
|
||||||
|
<div style="margin-right: 16px">
|
||||||
{{name}}
|
{{name}}
|
||||||
</div>
|
</div>
|
||||||
<div flex layout horizontal center>
|
<div flex layout horizontal center>
|
||||||
{{#each slotBubbles ..}}
|
{{#each slotBubbles ..}}
|
||||||
<paper-icon-button class="slotBubble" icon={{icon}} disabled={{disabled}}></paper-icon-button>
|
<paper-icon-button class="slotBubble"
|
||||||
|
icon={{icon}}
|
||||||
|
disabled={{disabled}}>
|
||||||
|
</paper-icon-button>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</paper-item>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}{{/each}}
|
{{/if}}{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#each spellLists}}
|
{{#each spellLists}}
|
||||||
<paper-shadow class="card container spellList" hero-id="main" {{detailHero}} flex>
|
<paper-shadow class="card spellList" flex
|
||||||
<div class="containerTop {{colorClass}}" hero-id="toolbar" layout horizontal center {{detailHero}}>
|
hero-id="main" {{detailHero}}
|
||||||
|
style="margin: 4px;">
|
||||||
|
<div class="top {{colorClass}}"
|
||||||
|
hero-id="toolbar" {{detailHero}}
|
||||||
|
layout horizontal center>
|
||||||
<div flex>
|
<div flex>
|
||||||
<div class="containerName subhead">{{name}}</div>
|
<div class="subhead">{{name}}</div>
|
||||||
<div class="caption">
|
<div class="caption">
|
||||||
{{#if saveDC}}
|
{{#if saveDC}}
|
||||||
Save DC: {{evaluate charId saveDC}}
|
<span style="margin-right: 16px;">
|
||||||
<div style="width: 16px; display: inline-block;"></div>
|
Save DC: {{evaluate charId saveDC}}
|
||||||
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if attackBonus}}
|
{{#if attackBonus}}
|
||||||
Attack Bonus: {{evaluateSigned charId attackBonus}}
|
<span>
|
||||||
|
Attack Bonus: {{evaluateSigned charId attackBonus}}
|
||||||
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#if settings.showUnprepared}}
|
{{#if settings.showUnprepared}}
|
||||||
{{#if maxPrepared}}<div class="subhead">{{numPrepared}} / {{evaluate charId maxPrepared}}</div>{{/if}}
|
{{#if maxPrepared}}
|
||||||
<core-tooltip label="Done" position="left">
|
<div class="subhead">
|
||||||
<paper-icon-button class="finishPrep" icon="done"></paper-icon-button>
|
{{numPrepared}} / {{evaluate charId maxPrepared}}
|
||||||
</core-tooltip>
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
<core-tooltip label="Done"
|
||||||
|
position="left">
|
||||||
|
<paper-icon-button class="finishPrep"
|
||||||
|
icon="done">
|
||||||
|
</paper-icon-button>
|
||||||
|
</core-tooltip>
|
||||||
{{else}}
|
{{else}}
|
||||||
<core-tooltip label="Change prepared spells" position="left">
|
<core-tooltip label="Change prepared spells"
|
||||||
<paper-icon-button class="prepSpells" icon="book"></paper-icon-button>
|
position="left">
|
||||||
|
<paper-icon-button class="prepSpells"
|
||||||
|
icon="book">
|
||||||
|
</paper-icon-button>
|
||||||
</core-tooltip>
|
</core-tooltip>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class="containerMain">
|
<div class="bottom list column-container">
|
||||||
{{#each levels}}
|
{{#each levels}}
|
||||||
<div class="spellLevel">
|
<div class="spellLevel">
|
||||||
{{#if spellCount .. ../../_id}}
|
{{#if spellCount .. ../../_id}}
|
||||||
<div class="list-subhead" layout horizontal center>
|
<div class="subhead">
|
||||||
{{name}}
|
{{name}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#each spells ../_id ../../_id}}
|
{{#each spells ../_id ../../_id}}
|
||||||
{{#if showSpell ../../settings.showUnprepared}}
|
{{#if showSpell ../../settings.showUnprepared}}
|
||||||
<div class="itemSlot">
|
<div class="item-slot">
|
||||||
<paper-item class="inventoryItem spell" hero-id="main" {{detailHero}}
|
<div class="tall spell item"
|
||||||
layout horizontal center>
|
hero-id="main" {{detailHero}}
|
||||||
<!--disabled={{cantCast ../level ../../..}} to grey out spells above highest usable slot-->
|
layout horizontal center>
|
||||||
<core-icon icon="social:whatshot"
|
<core-icon icon="social:whatshot"
|
||||||
style="color: {{hexColor color}};"
|
style="color: {{hexColor color}};
|
||||||
|
margin-right: 16px;"
|
||||||
></core-icon>
|
></core-icon>
|
||||||
<div flex layout vertical>
|
<div flex layout vertical>
|
||||||
<div>{{name}}</div>
|
<div>{{name}}</div>
|
||||||
<div class="caption">
|
<div class="caption">
|
||||||
{{school}} {{castingTime}}
|
{{school}}
|
||||||
{{#if ritual}}(ritual){{/if}}{{#if spellComponents}} - {{spellComponents}}{{/if}}
|
{{castingTime}}
|
||||||
|
{{#if ritual}}
|
||||||
|
(ritual)
|
||||||
|
{{/if}}
|
||||||
|
{{#if spellComponents}}
|
||||||
|
- {{spellComponents}}
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#if ../../settings.showUnprepared}}
|
{{#if ../../settings.showUnprepared}}
|
||||||
<paper-checkbox class="preparedCheckbox" checked={{isPrepared}} disabled={{cantUnprepare}}></paper-checkbox>
|
<paper-checkbox class="preparedCheckbox"
|
||||||
|
checked={{isPrepared}}
|
||||||
|
disabled={{cantUnprepare}}>
|
||||||
|
</paper-checkbox>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</paper-item>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@@ -92,9 +128,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#if canEditCharacter _id}}
|
{{#if canEditCharacter _id}}
|
||||||
<paper-fab-menu id="inventoryAddMenu" icon="add" closeIcon="close" duration="0.3">
|
{{#fabMenu}}
|
||||||
<paper-fab-menu-item id="addSpell" icon="note-add" color="#d23f31" tooltip="Spell"></paper-fab-menu-item>
|
<core-tooltip label="New spell list" position="left">
|
||||||
<paper-fab-menu-item id="addSpellList" icon="work" color="#d23f31" tooltip="Spell List"></paper-fab-menu-item>
|
<paper-fab icon="work"
|
||||||
</paper-fab-menu>
|
class="addSpellList"
|
||||||
|
mini>
|
||||||
|
</paper-fab>
|
||||||
|
</core-tooltip>
|
||||||
|
<core-tooltip label="New spell" position="left">
|
||||||
|
<paper-fab icon="note-add"
|
||||||
|
class="addSpell"
|
||||||
|
mini>
|
||||||
|
</paper-fab>
|
||||||
|
</core-tooltip>
|
||||||
|
{{/fabMenu}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</template>
|
</template>
|
||||||
@@ -170,7 +170,7 @@ Template.spells.events({
|
|||||||
heroId: charId + stat,
|
heroId: charId + stat,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
"tap .containerTop": function(event){
|
"tap .spellList .top": function(event){
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
template: "spellListDialog",
|
template: "spellListDialog",
|
||||||
data: {spellListId: this._id, charId: this.charId},
|
data: {spellListId: this._id, charId: this.charId},
|
||||||
@@ -184,7 +184,7 @@ Template.spells.events({
|
|||||||
heroId: this._id,
|
heroId: this._id,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
"tap #addSpellList": function(event){
|
"tap .addSpellList": function(event){
|
||||||
var charId = this.charId;
|
var charId = this.charId;
|
||||||
SpellLists.insert({
|
SpellLists.insert({
|
||||||
name: "New SpellList",
|
name: "New SpellList",
|
||||||
@@ -201,7 +201,7 @@ Template.spells.events({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
"tap #addSpell": function(event){
|
"tap .addSpell": function(event){
|
||||||
var charId = this.charId;
|
var charId = this.charId;
|
||||||
var listId = SpellLists.findOne({charId: this._id})._id;
|
var listId = SpellLists.findOne({charId: this._id})._id;
|
||||||
Spells.insert({
|
Spells.insert({
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
.card.double {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card.double > div{
|
|
||||||
vertical-align: top;
|
|
||||||
padding: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.abilityScore {
|
|
||||||
width: 70px;
|
|
||||||
text-align: center;
|
|
||||||
background-color: #D50000;
|
|
||||||
padding: 16px;
|
|
||||||
position: relative;
|
|
||||||
border-radius: 2px 0 0 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#stats .card {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.abilityCardRight {
|
|
||||||
flex-grow: 1;
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.abilityCardRight hr{
|
|
||||||
margin: 8px 0 8px -16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.abilityCardRight h1{
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
@@ -1,122 +1,14 @@
|
|||||||
<template name="abilityMiniCard">
|
<template name="abilityMiniCard">
|
||||||
<paper-shadow class="card double abilityMiniCard"
|
<paper-shadow class="card abilityMiniCard clickable"
|
||||||
hero-id="main" {{detailHero ability ../_id}}>
|
hero-id="main" {{detailHero ability ../_id}}
|
||||||
<div class="abilityScore white-text {{color}}"
|
layout horizontal>
|
||||||
|
<div class="left white-text {{color}}"
|
||||||
hero-id="toolbar" {{detailHero ability ../_id}}>
|
hero-id="toolbar" {{detailHero ability ../_id}}>
|
||||||
<h1 class="display1">{{../attributeValue ability}}</h1>
|
<div class="display1">{{../attributeValue ability}}</div>
|
||||||
<h2>{{../abilityMod ability}}</h2>
|
<div class="title">{{../abilityMod ability}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="abilityCardRight subhead" layout horizontal center>
|
<div class="right subhead" layout horizontal center>
|
||||||
{{title}}
|
{{title}}
|
||||||
</div>
|
</div>
|
||||||
<paper-ripple fit></paper-ripple>
|
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="strengthCard">
|
|
||||||
<paper-shadow class="card double">
|
|
||||||
<div class="abilityScore red white-text">
|
|
||||||
{{> ripple color="#eee"}}
|
|
||||||
<h1 class="display1">{{attributeValue "strength"}}</h1>
|
|
||||||
<h2>{{abilityMod "strength"}}</h2>
|
|
||||||
</div>
|
|
||||||
<div class="abilityCardRight">
|
|
||||||
<h1>Strength</h1>
|
|
||||||
{{> skillRow name="Save" skill="strengthSave"}}
|
|
||||||
<hr>
|
|
||||||
{{> skillRow name="Athletics" skill="athletics"}}
|
|
||||||
</div>
|
|
||||||
</paper-shadow>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template name="dexterityCard">
|
|
||||||
<paper-shadow class="card double">
|
|
||||||
<div class="abilityScore green white-text">
|
|
||||||
{{> ripple color="#eee"}}
|
|
||||||
<h1 class="display1">{{attributeValue "dexterity"}}</h1>
|
|
||||||
<h2>{{abilityMod "dexterity"}}</h2>
|
|
||||||
</div>
|
|
||||||
<div class="abilityCardRight">
|
|
||||||
<h1>Dexterity</h1>
|
|
||||||
{{> skillRow name="Save" skill="dexteritySave"}}
|
|
||||||
<hr>
|
|
||||||
{{> skillRow name="Acrobatics" skill="acrobatics"}}
|
|
||||||
{{> skillRow name="Sleight of Hand" skill="sleightOfHand"}}
|
|
||||||
{{> skillRow name="Stealth" skill="stealth"}}
|
|
||||||
</div>
|
|
||||||
</paper-shadow>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template name="constitutionCard">
|
|
||||||
<paper-shadow class="card double">
|
|
||||||
<div class="abilityScore deep-orange white-text">
|
|
||||||
{{> ripple color="#eee"}}
|
|
||||||
<h1 class="display1">{{attributeValue "constitution"}}</h1>
|
|
||||||
<h2>{{abilityMod "constitution"}}</h2>
|
|
||||||
</div>
|
|
||||||
<div class="abilityCardRight">
|
|
||||||
<h1>Constitution</h1>
|
|
||||||
{{> skillRow name="Save" skill="constitutionSave"}}
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
</paper-shadow>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template name="intelligenceCard">
|
|
||||||
<paper-shadow class="card double">
|
|
||||||
<div class="abilityScore indigo white-text">
|
|
||||||
{{> ripple color="#eee"}}
|
|
||||||
<h1 class="display1">{{attributeValue "intelligence"}}</h1>
|
|
||||||
<h2>{{abilityMod "intelligence"}}</h2>
|
|
||||||
</div>
|
|
||||||
<div class="abilityCardRight">
|
|
||||||
<h1>Intelligence</h1>
|
|
||||||
{{> skillRow name="Save" skill="intelligenceSave"}}
|
|
||||||
<hr>
|
|
||||||
{{> skillRow name="Arcana" skill="arcana"}}
|
|
||||||
{{> skillRow name="History" skill="history"}}
|
|
||||||
{{> skillRow name="Investigation" skill="investigation"}}
|
|
||||||
{{> skillRow name="Nature" skill="nature"}}
|
|
||||||
{{> skillRow name="Religion" skill="religion"}}
|
|
||||||
</div>
|
|
||||||
</paper-shadow>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template name="wisdomCard">
|
|
||||||
<paper-shadow class="card double">
|
|
||||||
<div class="abilityScore purple white-text">
|
|
||||||
{{> ripple color="#eee"}}
|
|
||||||
<h1 class="display1">{{attributeValue "wisdom"}}</h1>
|
|
||||||
<h2>{{abilityMod "wisdom"}}</h2>
|
|
||||||
</div>
|
|
||||||
<div class="abilityCardRight">
|
|
||||||
<h1>Wisdom</h1>
|
|
||||||
{{> skillRow name="Save" skill="wisdomSave"}}
|
|
||||||
<hr>
|
|
||||||
{{> skillRow name="Animal Handling" skill="animalHandling"}}
|
|
||||||
{{> skillRow name="Insight" skill="insight"}}
|
|
||||||
{{> skillRow name="Medicine" skill="medicine"}}
|
|
||||||
{{> skillRow name="Perception" skill="perception" showPassive="true"}}
|
|
||||||
{{> skillRow name="Survival" skill="survival"}}
|
|
||||||
</div>
|
|
||||||
</paper-shadow>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template name="charismaCard">
|
|
||||||
<paper-shadow class="card double">
|
|
||||||
<div class="abilityScore pink white-text">
|
|
||||||
{{> ripple color="#eee"}}
|
|
||||||
<h1 class="display1">{{attributeValue "charisma"}}</h1>
|
|
||||||
<h2>{{abilityMod "charisma"}}</h2>
|
|
||||||
</div>
|
|
||||||
<div class="abilityCardRight">
|
|
||||||
<h1>Charisma</h1>
|
|
||||||
{{> skillRow name="Save" skill="charismaSave"}}
|
|
||||||
<hr>
|
|
||||||
{{> skillRow name="Deception" skill="deception"}}
|
|
||||||
{{> skillRow name="Intimidation" skill="intimidation"}}
|
|
||||||
{{> skillRow name="Performance" skill="performance"}}
|
|
||||||
{{> skillRow name="Persuasion" skill="persuasion"}}
|
|
||||||
</div>
|
|
||||||
</paper-shadow>
|
|
||||||
</template>
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<!-- needs name, char, and statName -->
|
<!-- needs name, char, and statName -->
|
||||||
<template name="attributeDialog">
|
<template name="attributeDialog">
|
||||||
{{#baseDialog title=name class=colorClass hideEdit=true}}
|
{{#baseDialog title=name class=color hideEdit=true}}
|
||||||
{{> attributeDialogView}}
|
{{> attributeDialogView}}
|
||||||
{{/baseDialog}}
|
{{/baseDialog}}
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -93,6 +93,14 @@ var abilities = {
|
|||||||
charisma: {name: "Charisma"},
|
charisma: {name: "Charisma"},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Template.attributeDialog.helpers({
|
||||||
|
color: function(){
|
||||||
|
if (this.color) return this.color + " white-text";
|
||||||
|
var char = Characters.findOne(this.charId, {fields: {color: 1}});
|
||||||
|
if (char) return getColorClass(char.color);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
Template.attributeDialogView.helpers({
|
Template.attributeDialogView.helpers({
|
||||||
or: function(a, b, c){
|
or: function(a, b, c){
|
||||||
return a || b || c;
|
return a || b || c;
|
||||||
@@ -106,27 +114,27 @@ Template.attributeDialogView.helpers({
|
|||||||
},
|
},
|
||||||
baseEffects: function(){
|
baseEffects: function(){
|
||||||
return Effects.find(
|
return Effects.find(
|
||||||
{charId: this.charId, stat: this.statName, operation: "base"}
|
{charId: this.charId, stat: this.statName, operation: "base", enabled: true}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
addEffects: function(){
|
addEffects: function(){
|
||||||
return Effects.find(
|
return Effects.find(
|
||||||
{charId: this.charId, stat: this.statName, operation: "add"}
|
{charId: this.charId, stat: this.statName, operation: "add", enabled: true}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
mulEffects: function(){
|
mulEffects: function(){
|
||||||
return Effects.find(
|
return Effects.find(
|
||||||
{charId: this.charId, stat: this.statName, operation: "mul"}
|
{charId: this.charId, stat: this.statName, operation: "mul", enabled: true}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
minEffects: function(){
|
minEffects: function(){
|
||||||
return Effects.find(
|
return Effects.find(
|
||||||
{charId: this.charId, stat: this.statName, operation: "min"}
|
{charId: this.charId, stat: this.statName, operation: "min", enabled: true}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
maxEffects: function(){
|
maxEffects: function(){
|
||||||
return Effects.find(
|
return Effects.find(
|
||||||
{charId: this.charId, stat: this.statName, operation: "max"}
|
{charId: this.charId, stat: this.statName, operation: "max", enabled: true}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
attributeBase: function(){
|
attributeBase: function(){
|
||||||
|
|||||||
@@ -2,19 +2,21 @@
|
|||||||
<paper-shadow class="card container healthCard"
|
<paper-shadow class="card container healthCard"
|
||||||
hero-id="main" {{detailHero "hitPoints" _id}}
|
hero-id="main" {{detailHero "hitPoints" _id}}
|
||||||
layout horizontal wrap>
|
layout horizontal wrap>
|
||||||
<div class="green white-text subhead padded leftRound"
|
<div class="green white-text subhead left"
|
||||||
hero-id="toolbar" {{detailHero "hitPoints" _id}}
|
hero-id="toolbar" {{detailHero "hitPoints" _id}}
|
||||||
layout vertical center>
|
layout vertical center center-justified>
|
||||||
<div class="hitPointTitle clickable">Hit Points</div>
|
<div class="hitPointTitle clickable">Hit Points</div>
|
||||||
<paper-icon-button class="white54" id="addTempHP" icon="add"></paper-icon-button>
|
<paper-icon-button class="white54" id="addTempHP" icon="add"></paper-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="padded" flex layout vertical center-justified style="min-width: 180px;">
|
<div class="right" flex layout vertical center-justified style="min-width: 180px;">
|
||||||
<paper-slider id="hitPointSlider"
|
<div layout horizontal>
|
||||||
value={{attributeValue "hitPoints"}}
|
<paper-slider id="hitPointSlider"
|
||||||
max={{attributeBase "hitPoints"}}
|
value={{attributeValue "hitPoints"}}
|
||||||
editable pin
|
max={{attributeBase "hitPoints"}}
|
||||||
role="slider"
|
editable pin
|
||||||
></paper-slider>
|
role="slider"
|
||||||
|
></paper-slider>
|
||||||
|
</div>
|
||||||
{{#each tempHitPoints}}
|
{{#each tempHitPoints}}
|
||||||
<div>
|
<div>
|
||||||
{{name}}
|
{{name}}
|
||||||
|
|||||||
@@ -1,10 +1,20 @@
|
|||||||
<template name="hitDice">
|
<template name="hitDice">
|
||||||
{{#if ../attributeBase name}}
|
{{#if ../attributeBase name}}
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero name ../_id}} layout horizontal>
|
<paper-shadow class="card hit-dice" hero-id="main"
|
||||||
<div class="containerLeft green" layout horizontal hero-id="toolbar" {{detailHero name ../_id}}>
|
{{detailHero name ../_id}}
|
||||||
<div class="resourceButtons">
|
layout horizontal>
|
||||||
<paper-icon-button class="resourceUp" icon="arrow-drop-up" disabled={{cantIncrement}}></paper-icon-button>
|
<div class="left green display1 white-text"
|
||||||
<paper-icon-button class="resourceDown" icon="arrow-drop-down" disabled={{cantDecrement}}></paper-icon-button>
|
hero-id="toolbar" {{detailHero name ../_id}}
|
||||||
|
layout horizontal>
|
||||||
|
<div>
|
||||||
|
<paper-icon-button class="resourceUp"
|
||||||
|
icon="arrow-drop-up"
|
||||||
|
disabled={{cantIncrement}}>
|
||||||
|
</paper-icon-button>
|
||||||
|
<paper-icon-button class="resourceDown"
|
||||||
|
icon="arrow-drop-down"
|
||||||
|
disabled={{cantDecrement}}>
|
||||||
|
</paper-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="resourceValue" layout vertical center>
|
<div class="resourceValue" layout vertical center>
|
||||||
<div>
|
<div>
|
||||||
@@ -15,9 +25,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="containerRight clickable" flex relative horizontal layout center>
|
<div class="right clickable" flex relative horizontal layout center>
|
||||||
Hit Dice
|
Hit Dice
|
||||||
<paper-ripple fit></paper-ripple>
|
|
||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -25,12 +25,17 @@ Template.hitDice.events({
|
|||||||
Characters.update(this.char._id, modifier, {validate: false});
|
Characters.update(this.char._id, modifier, {validate: false});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tap .containerRight": function() {
|
"tap .right": function() {
|
||||||
var charId = Template.parentData()._id;
|
var charId = Template.parentData()._id;
|
||||||
var title = "d" + this.diceNum + " Hit Dice";
|
var title = "d" + this.diceNum + " Hit Dice";
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
template: "attributeDialog",
|
template: "attributeDialog",
|
||||||
data: {name: title, statName: this.name, charId: charId},
|
data: {
|
||||||
|
name: title,
|
||||||
|
statName: this.name,
|
||||||
|
charId: charId,
|
||||||
|
color: "green",
|
||||||
|
},
|
||||||
heroId: charId + this.name,
|
heroId: charId + this.name,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!-- needs name, char, and skillName -->
|
<!-- needs name, char, and skillName -->
|
||||||
<template name="skillDialog">
|
<template name="skillDialog">
|
||||||
{{#baseDialog title=name class=colorClass hideEdit=true}}
|
{{#baseDialog title=name class=color hideEdit=true}}
|
||||||
{{> skillDialogView}}
|
{{> skillDialogView}}
|
||||||
{{/baseDialog}}
|
{{/baseDialog}}
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -93,6 +93,14 @@ var abilities = {
|
|||||||
charisma: {name: "Charisma"},
|
charisma: {name: "Charisma"},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Template.skillDialog.helpers({
|
||||||
|
color: function(){
|
||||||
|
if (this.color) return this.color + " white-text";
|
||||||
|
var char = Characters.findOne(this.charId, {fields: {color: 1}});
|
||||||
|
if (char) return getColorClass(char.color);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
Template.skillDialogView.helpers({
|
Template.skillDialogView.helpers({
|
||||||
or: function(a, b, c){
|
or: function(a, b, c){
|
||||||
return a || b || c;
|
return a || b || c;
|
||||||
@@ -132,6 +140,7 @@ Template.skillDialogView.helpers({
|
|||||||
charId: this.charId,
|
charId: this.charId,
|
||||||
stat: this.skillName,
|
stat: this.skillName,
|
||||||
operation: "add",
|
operation: "add",
|
||||||
|
enabled: true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
mulEffects: function(){
|
mulEffects: function(){
|
||||||
@@ -139,6 +148,7 @@ Template.skillDialogView.helpers({
|
|||||||
charId: this.charId,
|
charId: this.charId,
|
||||||
stat: this.skillName,
|
stat: this.skillName,
|
||||||
operation: "mul",
|
operation: "mul",
|
||||||
|
enabled: true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
minEffects: function(){
|
minEffects: function(){
|
||||||
@@ -146,6 +156,7 @@ Template.skillDialogView.helpers({
|
|||||||
charId: this.charId,
|
charId: this.charId,
|
||||||
stat: this.skillName,
|
stat: this.skillName,
|
||||||
operation: "min",
|
operation: "min",
|
||||||
|
enabled: true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
maxEffects: function(){
|
maxEffects: function(){
|
||||||
@@ -153,6 +164,7 @@ Template.skillDialogView.helpers({
|
|||||||
charId: this.charId,
|
charId: this.charId,
|
||||||
stat: this.skillName,
|
stat: this.skillName,
|
||||||
operation: "max",
|
operation: "max",
|
||||||
|
enabled: true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
advEffects: function(){
|
advEffects: function(){
|
||||||
@@ -160,6 +172,7 @@ Template.skillDialogView.helpers({
|
|||||||
charId: this.charId,
|
charId: this.charId,
|
||||||
stat: this.skillName,
|
stat: this.skillName,
|
||||||
operation: "advantage",
|
operation: "advantage",
|
||||||
|
enabled: true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
dadvEffects: function(){
|
dadvEffects: function(){
|
||||||
@@ -167,6 +180,7 @@ Template.skillDialogView.helpers({
|
|||||||
charId: this.charId,
|
charId: this.charId,
|
||||||
stat: this.skillName,
|
stat: this.skillName,
|
||||||
operation: "disadvantage",
|
operation: "disadvantage",
|
||||||
|
enabled: true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
conditionalEffects: function(){
|
conditionalEffects: function(){
|
||||||
@@ -174,6 +188,7 @@ Template.skillDialogView.helpers({
|
|||||||
charId: this.charId,
|
charId: this.charId,
|
||||||
stat: this.skillName,
|
stat: this.skillName,
|
||||||
operation: "conditional",
|
operation: "conditional",
|
||||||
|
enabled: true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
ability: function(){
|
ability: function(){
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
.skillRow {
|
|
||||||
height: 32px;
|
|
||||||
margin: 0 -16px 0 -16px;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skillRow core-icon {
|
|
||||||
color: rgba(0,0,0,0.54);
|
|
||||||
}
|
|
||||||
|
|
||||||
.skillMod {
|
|
||||||
width: 42px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skillName, .skillMod{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.fail.skillMod {
|
|
||||||
color: #D50000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.advantage{
|
|
||||||
background-image: url(/png/advantage/greenUp.png);
|
|
||||||
background-size: contain;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disadvantage{
|
|
||||||
background-image: url(/png/advantage/redDown.png);
|
|
||||||
background-size: contain;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hasConditionals::after{
|
|
||||||
content: "*";
|
|
||||||
}
|
|
||||||
@@ -1,16 +1,24 @@
|
|||||||
<template name="skillRow">
|
<template name="skillRow">
|
||||||
<paper-item class="skillRow" layout horizontal hero-id="main" {{detailHero skill ../_id}}>
|
<div class="item-slot">
|
||||||
<core-icon icon="{{profIcon}}"></core-icon>
|
<div class="skill-row item small"
|
||||||
{{#if failSkill}}
|
hero-id="main"
|
||||||
<div class="fail skillMod">fail</div>
|
{{detailHero skill ../_id}}
|
||||||
{{else}}
|
layout horizontal center>
|
||||||
<div class="{{advantage}} skillMod">{{../skillMod skill}}</div>
|
<core-icon icon="{{profIcon}}"></core-icon>
|
||||||
{{/if}}
|
{{#if failSkill}}
|
||||||
<div class="{{#if conditionalCount}}hasConditionals{{/if}} skillName">
|
<div class="fail skill-mod">fail</div>
|
||||||
{{name}}
|
{{else}}
|
||||||
{{#if showPassive}}
|
<div class="{{advantage}} skill-mod">{{../skillMod skill}}</div>
|
||||||
({{../passiveSkill skill}})
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
<div flex>
|
||||||
|
{{name}}
|
||||||
|
{{#if conditionalCount}}
|
||||||
|
*
|
||||||
|
{{/if}}
|
||||||
|
{{#if showPassive}}
|
||||||
|
({{../passiveSkill skill}})
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</paper-item>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
21
rpg-docs/client/views/character/stats/skillRow/skillRow.scss
Normal file
21
rpg-docs/client/views/character/stats/skillRow/skillRow.scss
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
.skill-row {
|
||||||
|
.skill-mod{
|
||||||
|
width: 45px;
|
||||||
|
text-align: center;
|
||||||
|
&.fail {
|
||||||
|
color: #D50000;
|
||||||
|
}
|
||||||
|
&.advantage{
|
||||||
|
background-image: url(/png/advantage/greenUp.png);
|
||||||
|
background-size: contain;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
&.disadvantage{
|
||||||
|
background-image: url(/png/advantage/redDown.png);
|
||||||
|
background-size: contain;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<template name="stats">
|
<template name="stats">
|
||||||
<div class="scroll-y" fit>
|
<div class="scroll-y" fit>
|
||||||
<div class="resourceCards" layout horizontal wrap>
|
<div style="padding: 8px 8px 0 8px">
|
||||||
{{> healthCard}}
|
{{> healthCard}}
|
||||||
</div>
|
</div>
|
||||||
<div id="stats" class="containers" >
|
<div class="column-container thin-columns" >
|
||||||
<!--Ability Scores-->
|
<!--Ability Scores-->
|
||||||
{{> abilityMiniCard ability="strength" title="Strength" color="red"}}
|
{{> abilityMiniCard ability="strength" title="Strength" color="red"}}
|
||||||
{{> abilityMiniCard ability="dexterity" title="Dexterity" color="indigo"}}
|
{{> abilityMiniCard ability="dexterity" title="Dexterity" color="indigo"}}
|
||||||
@@ -27,11 +27,11 @@
|
|||||||
{{>hitDice name="d10HitDice" diceNum="10" char=this}}
|
{{>hitDice name="d10HitDice" diceNum="10" char=this}}
|
||||||
{{>hitDice name="d12HitDice" diceNum="12" char=this}}
|
{{>hitDice name="d12HitDice" diceNum="12" char=this}}
|
||||||
<!--Saving Throws-->
|
<!--Saving Throws-->
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero}}>
|
<paper-shadow class="card">
|
||||||
<div class="containerTop whiteTop" layout horizontal center>
|
<div class="top white subhead">
|
||||||
<div class="containerName subhead" hero-id="title" flex>Saving Throws</div>
|
Saving Throws
|
||||||
</div>
|
</div>
|
||||||
<div flex class="containerMain">
|
<div flex class="bottom list">
|
||||||
{{> skillRow name="Strength" skill="strengthSave"}}
|
{{> skillRow name="Strength" skill="strengthSave"}}
|
||||||
{{> skillRow name="Dexterity" skill="dexteritySave"}}
|
{{> skillRow name="Dexterity" skill="dexteritySave"}}
|
||||||
{{> skillRow name="Constitution" skill="constitutionSave"}}
|
{{> skillRow name="Constitution" skill="constitutionSave"}}
|
||||||
@@ -41,11 +41,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
<!--Skills-->
|
<!--Skills-->
|
||||||
<paper-shadow class="card container" hero-id="main" {{detailHero}}>
|
<paper-shadow class="card">
|
||||||
<div class="containerTop whiteTop" layout horizontal center>
|
<div class="top white subhead">
|
||||||
<div class="containerName subhead" hero-id="title" flex>Skills</div>
|
Skills
|
||||||
</div>
|
</div>
|
||||||
<div flex class="containerMain">
|
<div flex class="bottom list">
|
||||||
{{> skillRow name="Acrobatics" skill="acrobatics"}}
|
{{> skillRow name="Acrobatics" skill="acrobatics"}}
|
||||||
{{> skillRow name="Animal Handling" skill="animalHandling"}}
|
{{> skillRow name="Animal Handling" skill="animalHandling"}}
|
||||||
{{> skillRow name="Arcana" skill="arcana"}}
|
{{> skillRow name="Arcana" skill="arcana"}}
|
||||||
@@ -71,8 +71,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="statCard">
|
<template name="statCard">
|
||||||
<paper-shadow class="card container statCard" hero-id="main" {{detailHero stat ../_id}} layout horizontal>
|
<paper-shadow class="card statCard clickable" hero-id="main" {{detailHero stat ../_id}} layout horizontal>
|
||||||
<div class="containerLeft {{color}}"
|
<div class="left display1 white-text {{color}}"
|
||||||
hero-id="toolbar" {{detailHero stat ../_id}}>
|
hero-id="toolbar" {{detailHero stat ../_id}}>
|
||||||
{{#if isSkill}}
|
{{#if isSkill}}
|
||||||
{{../skillMod stat}}
|
{{../skillMod stat}}
|
||||||
@@ -80,9 +80,8 @@
|
|||||||
{{prefix}}{{../attributeValue stat}}
|
{{prefix}}{{../attributeValue stat}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class="containerRight" flex horizontal layout center>
|
<div class="right subhead" flex horizontal layout center>
|
||||||
{{name}}
|
{{name}}
|
||||||
</div>
|
</div>
|
||||||
<paper-ripple fit></paper-ripple>
|
|
||||||
</paper-shadow>
|
</paper-shadow>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -4,13 +4,23 @@ Template.stats.events({
|
|||||||
if (this.isSkill){
|
if (this.isSkill){
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
template: "skillDialog",
|
template: "skillDialog",
|
||||||
data: {name: this.name, skillName: this.stat, charId: charId},
|
data: {
|
||||||
|
name: this.name,
|
||||||
|
skillName: this.stat,
|
||||||
|
charId: charId,
|
||||||
|
color: this.color,
|
||||||
|
},
|
||||||
heroId: charId + this.stat,
|
heroId: charId + this.stat,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
template: "attributeDialog",
|
template: "attributeDialog",
|
||||||
data: {name: this.name, statName: this.stat, charId: charId},
|
data: {
|
||||||
|
name: this.name,
|
||||||
|
statName: this.stat,
|
||||||
|
charId: charId,
|
||||||
|
color: this.color,
|
||||||
|
},
|
||||||
heroId: charId + this.stat,
|
heroId: charId + this.stat,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -19,23 +29,37 @@ Template.stats.events({
|
|||||||
var charId = Template.parentData()._id;
|
var charId = Template.parentData()._id;
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
template: "attributeDialog",
|
template: "attributeDialog",
|
||||||
data: {name: this.title, statName: this.ability, charId: charId},
|
data: {
|
||||||
|
name: this.title,
|
||||||
|
statName: this.ability,
|
||||||
|
charId: charId,
|
||||||
|
color: this.color,
|
||||||
|
},
|
||||||
heroId: charId + this.ability,
|
heroId: charId + this.ability,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
"tap .skillRow": function(event, instance){
|
"tap .skill-row": function(event, instance){
|
||||||
var skill = this.skill;
|
var skill = this.skill;
|
||||||
var charId = instance.data._id;
|
var charId = instance.data._id;
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
template: "skillDialog",
|
template: "skillDialog",
|
||||||
data: {name: this.name, skillName: skill, charId: charId},
|
data: {
|
||||||
heroId: charId + skill,
|
name: this.name,
|
||||||
});
|
skillName: skill,
|
||||||
|
charId: charId,
|
||||||
|
},
|
||||||
|
heroId: charId + skill,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
"tap .hitPointTitle": function(event, instance) {
|
"tap .hitPointTitle": function(event, instance) {
|
||||||
GlobalUI.setDetail({
|
GlobalUI.setDetail({
|
||||||
template: "attributeDialog",
|
template: "attributeDialog",
|
||||||
data: {name: "Hit Points", statName: "hitPoints", charId: this._id},
|
data: {
|
||||||
|
name: "Hit Points",
|
||||||
|
statName: "hitPoints",
|
||||||
|
charId: this._id,
|
||||||
|
color: "green",
|
||||||
|
},
|
||||||
heroId: this._id + "hitPoints",
|
heroId: this._id + "hitPoints",
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -12,4 +12,11 @@
|
|||||||
height: 8px;
|
height: 8px;
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
width: 8px;
|
width: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.singleLineItem div {
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
/* Required for text-overflow to do anything */
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
@@ -21,8 +21,10 @@ Template.characterSideList.helpers({
|
|||||||
Template.characterSideList.events({
|
Template.characterSideList.events({
|
||||||
"tap .singleLineItem": function(event, instance) {
|
"tap .singleLineItem": function(event, instance) {
|
||||||
Router.go("characterSheet", {_id: this._id});
|
Router.go("characterSheet", {_id: this._id});
|
||||||
|
$("core-drawer-panel").get(0).closeDrawer();
|
||||||
},
|
},
|
||||||
"tap core-item": function() {
|
"tap core-item": function() {
|
||||||
Router.go("characterList");
|
Router.go("characterList");
|
||||||
|
$("core-drawer-panel").get(0).closeDrawer();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,92 +1,94 @@
|
|||||||
<template name="guide">
|
<template name="guide">
|
||||||
<div class="wallOfText">
|
<div layout vertical center>
|
||||||
<h1>Dicecloud Beta</h1>
|
<paper-shadow class="wallOfText card" style="padding: 32px; max-width: 800px;">
|
||||||
<p>Welcome to the Dicecloud beta. Please don't share the link with people you don't actively play with, since the beta is intended to be small, and your experience will probably get laggy if it gets more traffic than I'm expecting.</p>
|
<h1>Dicecloud Beta</h1>
|
||||||
<p>The beta is going to start with just the character sheet. You can play D&D without minis and maps, without a pre-written adventure, you can play without a lot of things, but the character sheet is necessary. So I'm starting here and working my way outwards.</p>
|
<p>Welcome to the Dicecloud beta. Please don't share the link with people you don't actively play with, since the beta is intended to be small, and your experience will probably get laggy if it gets more traffic than I'm expecting.</p>
|
||||||
<p>I will eventually have public bug tracking and feature requests going, but for now I'm going to track comments, feedback and suggestions on <a href="http://reddit.com/r/dicecloud">this subreddit</a>. If you've never used reddit before, all you need is a username and password to sign up. So it should be pretty accessible.</p>
|
<p>The beta is going to start with just the character sheet. You can play D&D without minis and maps, without a pre-written adventure, you can play without a lot of things, but the character sheet is necessary. So I'm starting here and working my way outwards.</p>
|
||||||
<h2>Character Sheet Philosophy</h2>
|
<p>I will eventually have public bug tracking and feature requests going, but for now I'm going to track comments, feedback and suggestions on <a href="http://reddit.com/r/dicecloud">this subreddit</a>. If you've never used reddit before, all you need is a username and password to sign up. So it should be pretty accessible.</p>
|
||||||
<p>Setting up your character on Dicecloud is going to take you a little longer than just filling it in on a paper character sheet would have. The goal of using an online sheet is to make actually playing the game more streamlined, and ultimately more fun. So putting a little extra effort into setting up your character now will pay off over and over again once you're playing.</p>
|
<h2>Character Sheet Philosophy</h2>
|
||||||
<p>The idea is to track where each number comes from, and allow you to easily make changes on the fly.</p>
|
<p>Setting up your character on Dicecloud is going to take you a little longer than just filling it in on a paper character sheet would have. The goal of using an online sheet is to make actually playing the game more streamlined, and ultimately more fun. So putting a little extra effort into setting up your character now will pay off over and over again once you're playing.</p>
|
||||||
<p>Lets look at a hypothetical example.</p>
|
<p>The idea is to track where each number comes from, and allow you to easily make changes on the fly.</p>
|
||||||
<p>You need to swim through a sunken section of dungeon to fetch the quest's Thing.<br>You'll need to take off your magical Plate Armor of +1 Constitution to swim without sinking, of course. Taking it off will change your armor class, your speed and your constitution, which in turn changes your hitpoints and your constitution saving throw. Working out all those changes in the middle of a game will drag the game to a hault. <br> Fortunately you have a digital character sheet, so it's a matter of dragging your Plate Armor +1 Con from your "equipment" box to your "backpack" box and you're done. Your hitpoints change correctly, your saving throws are up to date, your armor class goes back to reflecting the fact that you have natural armor from being a dragonborn. Your character sheet keeps up and you ultimately get more time to play the game. Huzzah!</p>
|
<p>Lets look at a hypothetical example.</p>
|
||||||
<h2>Creating a Character</h2>
|
<p>You need to swim through a sunken section of dungeon to fetch the quest's Thing.<br>You'll need to take off your magical Plate Armor of +1 Constitution to swim without sinking, of course. Taking it off will change your armor class, your speed and your constitution, which in turn changes your hitpoints and your constitution saving throw. Working out all those changes in the middle of a game will drag the game to a hault. <br> Fortunately you have a digital character sheet, so it's a matter of dragging your Plate Armor +1 Con from your "equipment" box to your "backpack" box and you're done. Your hitpoints change correctly, your saving throws are up to date, your armor class goes back to reflecting the fact that you have natural armor from being a dragonborn. Your character sheet keeps up and you ultimately get more time to play the game. Huzzah!</p>
|
||||||
<ul>
|
<h2>Creating a Character</h2>
|
||||||
<li>In the <a href={{pathFor route="characterList"}}>character list</a>, click the plus button, floating in the bottom right corner.</li>
|
<ul>
|
||||||
<li>Give your character a name, gender and race, these can be changed later if you change your mind. Then click the Add button</li>
|
<li>In the <a href={{pathFor route="characterList"}}>character list</a>, click the plus button, floating in the bottom right corner.</li>
|
||||||
<li>Your new character should open, with most of its attributes and abilities at zero.</li>
|
<li>Give your character a name, gender and race, these can be changed later if you change your mind. Then click the Add button</li>
|
||||||
</ul>
|
<li>Your new character should open, with most of its attributes and abilities at zero.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h2>Adding Racial Effects</h2>
|
<h2>Adding Racial Effects</h2>
|
||||||
<p>You have already given your character a race, but you haven't yet specified what that race does for your character, so lets do that.</p>
|
<p>You have already given your character a race, but you haven't yet specified what that race does for your character, so lets do that.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Click the Journal tab</li>
|
<li>Click the Journal tab</li>
|
||||||
<li>In the card that displays your level, click on your race to open the racial dialog box</li>
|
<li>In the card that displays your level, click on your race to open the racial dialog box</li>
|
||||||
<li>Click the edit button in the top corner of the racial dialog</li>
|
<li>Click the edit button in the top corner of the racial dialog</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>In the edit mode of the racial dialog you can change your race's name and add effects and proficiencies your race gives you. We will only be adding the base traits our race gives us, specific features can go in the features tab so we can more easily reference them later.</p>
|
<p>In the edit mode of the racial dialog you can change your race's name and add effects and proficiencies your race gives you. We will only be adding the base traits our race gives us, specific features can go in the features tab so we can more easily reference them later.</p>
|
||||||
<p>Lets add some of the effects all races will give.</p>
|
<p>Lets add some of the effects all races will give.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Click the Add Effect button, a new effect should appear</li>
|
<li>Click the Add Effect button, a new effect should appear</li>
|
||||||
<li>In the Stat Group dropdown box, choose "Stats"</li>
|
<li>In the Stat Group dropdown box, choose "Stats"</li>
|
||||||
<li>The second dropdown lets us choose which stat to effect, choose "Speed"</li>
|
<li>The second dropdown lets us choose which stat to effect, choose "Speed"</li>
|
||||||
<li>The third dropdown lets us choose how to effect that stat, choose "Base Value", since our character's base speed comes from their race</li>
|
<li>The third dropdown lets us choose how to effect that stat, choose "Base Value", since our character's base speed comes from their race</li>
|
||||||
<li>Finally, input the value for our characters speed, it'll probably be 30 unless you chose a slower race, such as a dwarf</li>
|
<li>Finally, input the value for our characters speed, it'll probably be 30 unless you chose a slower race, such as a dwarf</li>
|
||||||
<li>Close the Race dialog and navigate to the Stats tab</li>
|
<li>Close the Race dialog and navigate to the Stats tab</li>
|
||||||
<li>The speed card should now correctly display the character's speed</li>
|
<li>The speed card should now correctly display the character's speed</li>
|
||||||
<li>Click the speed card to see how that value was calculated</li>
|
<li>Click the speed card to see how that value was calculated</li>
|
||||||
<li>Currently there is only one number effecting the total, the speed from our race, but as more effects from different sources start impacting our character's speed, they will show up here.</li>
|
<li>Currently there is only one number effecting the total, the speed from our race, but as more effects from different sources start impacting our character's speed, they will show up here.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>Adding your ability scores</h2>
|
<h2>Adding your ability scores</h2>
|
||||||
<p>Your character currently doesn't have any ability scores, so lets fix that. Whether you roll your abilities or point-buy them, lets add a feature to represent where they came from</p>
|
<p>Your character currently doesn't have any ability scores, so lets fix that. Whether you roll your abilities or point-buy them, lets add a feature to represent where they came from</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Navigate to the <emd>Features</emd> tab</li>
|
<li>Navigate to the <emd>Features</emd> tab</li>
|
||||||
<li>Click the plus button in the bottom right to add a new feature</li>
|
<li>Click the plus button in the bottom right to add a new feature</li>
|
||||||
<li>Give the Feature a name, like <em>Point Buy</em></li>
|
<li>Give the Feature a name, like <em>Point Buy</em></li>
|
||||||
<li>Leave the feature as always enabled, don't limit its uses, and leave the description blank</li>
|
<li>Leave the feature as always enabled, don't limit its uses, and leave the description blank</li>
|
||||||
<li>Click the <em>Add Effect</em> button</li>
|
<li>Click the <em>Add Effect</em> button</li>
|
||||||
<li>For <em>Stat Group</em> choose <em>Ability Scores</em></li>
|
<li>For <em>Stat Group</em> choose <em>Ability Scores</em></li>
|
||||||
<li>For <em>Stat</em> choose <em>Strength</em></li>
|
<li>For <em>Stat</em> choose <em>Strength</em></li>
|
||||||
<li>For the operation choose <em>Base Value</em></li>
|
<li>For the operation choose <em>Base Value</em></li>
|
||||||
<li>Input your character's rolled or point-bought strength, without the racial modfier</li>
|
<li>Input your character's rolled or point-bought strength, without the racial modfier</li>
|
||||||
<li>Repeat for the rest of your ability scores</li>
|
<li>Repeat for the rest of your ability scores</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>You can now check that your ability scores appear on your <em>Stats</em> page and that your skills that use them have their values calculated accordingly.</p>
|
<p>You can now check that your ability scores appear on your <em>Stats</em> page and that your skills that use them have their values calculated accordingly.</p>
|
||||||
<p>We didn't include your character's racial ability modifiers in the feature, so you should go back to your character's racial dialog and add them in there as effects. Remember to use the add operation, rather than base value, since your race adds to your ability scores.</p>
|
<p>We didn't include your character's racial ability modifiers in the feature, so you should go back to your character's racial dialog and add them in there as effects. Remember to use the add operation, rather than base value, since your race adds to your ability scores.</p>
|
||||||
<p>By separating the source of your character's stats you can easily check how your character got their ability scores and stats, even after 20 levels, without getting confused or making mistakes.</p>
|
<p>By separating the source of your character's stats you can easily check how your character got their ability scores and stats, even after 20 levels, without getting confused or making mistakes.</p>
|
||||||
|
|
||||||
<h2>Adding a Class</h2>
|
<h2>Adding a Class</h2>
|
||||||
<p>Currently your character is at level 0, because they don't have any class levels. Let's fix that.</p>
|
<p>Currently your character is at level 0, because they don't have any class levels. Let's fix that.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Click the plus button in the card that currently says "Level 0"</li>
|
<li>Click the plus button in the card that currently says "Level 0"</li>
|
||||||
<li>A new class has now been added, name the class in the Class Name input and leave the level as 1</li>
|
<li>A new class has now been added, name the class in the Class Name input and leave the level as 1</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>We now have a class, lets add the saving throw proficiencies it gives us.</p>
|
<p>We now have a class, lets add the saving throw proficiencies it gives us.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Click the Add Proficiency button</li>
|
<li>Click the Add Proficiency button</li>
|
||||||
<li>Click the dropdown box that currently has "Skill" selected, and choose "Saving Throw" instead</li>
|
<li>Click the dropdown box that currently has "Skill" selected, and choose "Saving Throw" instead</li>
|
||||||
<li>In the second dropdown choose the first saving throw your class gives you</li>
|
<li>In the second dropdown choose the first saving throw your class gives you</li>
|
||||||
<li>The third dropdown lets us specify if we have half or double our proficiency bonus for this proficiency, leave it at the default "proficient" for now</li>
|
<li>The third dropdown lets us specify if we have half or double our proficiency bonus for this proficiency, leave it at the default "proficient" for now</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>If you navigate back to the stat page, you will see that you now have a proficiency bonus, based on your class level, and the saving throw you are proficienct in will take your proficiency bonus into account.</p>
|
<p>If you navigate back to the stat page, you will see that you now have a proficiency bonus, based on your class level, and the saving throw you are proficienct in will take your proficiency bonus into account.</p>
|
||||||
<p>One of the most important things your class gives you is your hitpoints, so lets go add those now.</p>
|
<p>One of the most important things your class gives you is your hitpoints, so lets go add those now.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Navigate to the class dialog box by clicking on your class name in the journal tab and hitting the edit button</li>
|
<li>Navigate to the class dialog box by clicking on your class name in the journal tab and hitting the edit button</li>
|
||||||
<li>Click the Add Effect button</li>
|
<li>Click the Add Effect button</li>
|
||||||
<li>Choose the <em>Stats</em> stat group, and choose the <em>Hitpoints</em> stat</li>
|
<li>Choose the <em>Stats</em> stat group, and choose the <em>Hitpoints</em> stat</li>
|
||||||
<li>Choose the <em>Base Value</em> operation</li>
|
<li>Choose the <em>Base Value</em> operation</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Now we need to decide how many hitpoints our class gives us. We will assume that we take the constant hitpoints per level, since it's both the rule used for league play and it's statistically advantageous over rolling for hitpoints every level.</p>
|
<p>Now we need to decide how many hitpoints our class gives us. We will assume that we take the constant hitpoints per level, since it's both the rule used for league play and it's statistically advantageous over rolling for hitpoints every level.</p>
|
||||||
<p>We could work out our hit points every level and change the effect each time, but we can do one better, we can input the calculation directly into the value field and have the character sheet figure it out for us</p>
|
<p>We could work out our hit points every level and change the effect each time, but we can do one better, we can input the calculation directly into the value field and have the character sheet figure it out for us</p>
|
||||||
<p>Let's assume we are rolling a fighter, so in the class name you typed in "Fighter" (with the capital F, but without the quote marks). A fighter gets 10 hp at first level and 6 hitpoints every level after that.</p>
|
<p>Let's assume we are rolling a fighter, so in the class name you typed in "Fighter" (with the capital F, but without the quote marks). A fighter gets 10 hp at first level and 6 hitpoints every level after that.</p>
|
||||||
<p>Lets rather split that into 4 bonus hitpoints at first level, and 6 hitpoints for every fighter level your character has. We can the write this as <em>4 + 6*FighterLevel</em> where the * represents multiplication.</p>
|
<p>Lets rather split that into 4 bonus hitpoints at first level, and 6 hitpoints for every fighter level your character has. We can the write this as <em>4 + 6*FighterLevel</em> where the * represents multiplication.</p>
|
||||||
<p><em>Note, we don't add the constitution modifier here, that's already taken care of by default, since all characters add their constitution modifier to their hit points</em></p>
|
<p><em>Note, we don't add the constitution modifier here, that's already taken care of by default, since all characters add their constitution modifier to their hit points</em></p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>In the value field input <em>4 + 6 * FighterLevel</em>, the spaces aren't needed, but you must spell your class name exactly as it is spelt in the class name input box, capital letters and all, in our case "Fighter"</li>
|
<li>In the value field input <em>4 + 6 * FighterLevel</em>, the spaces aren't needed, but you must spell your class name exactly as it is spelt in the class name input box, capital letters and all, in our case "Fighter"</li>
|
||||||
<li>Create a new effect that effects the base value of <em>d10 Hit Dice</em> with the value of <em>FighterLevel</em>, since we also get our fighters level worth of hit dice</li>
|
<li>Create a new effect that effects the base value of <em>d10 Hit Dice</em> with the value of <em>FighterLevel</em>, since we also get our fighters level worth of hit dice</li>
|
||||||
<li>Check how your changes are reflected in the <em>Stats</em> tab</li>
|
<li>Check how your changes are reflected in the <em>Stats</em> tab</li>
|
||||||
<li>Change your level and check that the <em>Stats</em> tab gets updated accordingly</li>
|
<li>Change your level and check that the <em>Stats</em> tab gets updated accordingly</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>You can try all sorts of calculations in your effects and in certain other places too. For example if you had some feature that is used a number of times equal to your wisdom modifier or 1, whichever is lower, you could limit its uses to <em>min(1, wisdomMod)</em> and the character sheet will figure it out for you, and update itself if you wisdom modifier happens to change later.</p>
|
<p>You can try all sorts of calculations in your effects and in certain other places too. For example if you had some feature that is used a number of times equal to your wisdom modifier or 1, whichever is lower, you could limit its uses to <em>min(1, wisdomMod)</em> and the character sheet will figure it out for you, and update itself if you wisdom modifier happens to change later.</p>
|
||||||
|
</paper-shadow>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
DiceCloud
|
DiceCloud
|
||||||
</div>
|
</div>
|
||||||
</core-toolbar>
|
</core-toolbar>
|
||||||
<div class="padded scroll-y white" fit>
|
<div class="scroll-y" style="padding: 16px" fit>
|
||||||
{{> guide}}
|
{{> guide}}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<template name="layout">
|
<template name="layout">
|
||||||
<core-drawer-panel>
|
<core-drawer-panel responsiveWidth="905px">
|
||||||
<core-header-panel drawer navigation flex mode="seamed" class="white">
|
<core-header-panel drawer navigation flex mode="seamed" class="white">
|
||||||
<div id="accountSummary">
|
<div id="accountSummary">
|
||||||
{{#if currentUser}}
|
{{#if currentUser}}
|
||||||
@@ -33,7 +33,9 @@
|
|||||||
<section id="detailSection">
|
<section id="detailSection">
|
||||||
<div id="detailScreenFiller">
|
<div id="detailScreenFiller">
|
||||||
<div id="screenDim" cross-fade></div>
|
<div id="screenDim" cross-fade></div>
|
||||||
<paper-shadow id="globalDetail" z="5" animated hero hero-id="main">
|
<paper-shadow id="globalDetail" class="card" z="5"
|
||||||
|
animated hero hero-id="main"
|
||||||
|
layout vertical>
|
||||||
{{#if globalDetailTemplate}}
|
{{#if globalDetailTemplate}}
|
||||||
{{> UI.dynamic template=globalDetailTemplate data=globalDetailData}}
|
{{> UI.dynamic template=globalDetailTemplate data=globalDetailData}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -23,9 +23,11 @@ Template.layout.helpers({
|
|||||||
Template.layout.events({
|
Template.layout.events({
|
||||||
"tap #homeNav": function(event, instance){
|
"tap #homeNav": function(event, instance){
|
||||||
Router.go("/");
|
Router.go("/");
|
||||||
|
instance.find("core-drawer-panel").closeDrawer();
|
||||||
},
|
},
|
||||||
"tap #profileLink": function(event, instance){
|
"tap #profileLink": function(event, instance){
|
||||||
Router.go("profile");
|
Router.go("profile");
|
||||||
|
instance.find("core-drawer-panel").closeDrawer();
|
||||||
},
|
},
|
||||||
"tap #feedback": function(event, instance) {
|
"tap #feedback": function(event, instance) {
|
||||||
GlobalUI.showDialog({
|
GlobalUI.showDialog({
|
||||||
@@ -33,8 +35,10 @@ Template.layout.events({
|
|||||||
template: "feedback",
|
template: "feedback",
|
||||||
fullOnMobile: true,
|
fullOnMobile: true,
|
||||||
});
|
});
|
||||||
|
instance.find("core-drawer-panel").closeDrawer();
|
||||||
},
|
},
|
||||||
"tap #changeLog": function(event, instance) {
|
"tap #changeLog": function(event, instance) {
|
||||||
Router.go("changeLog");
|
Router.go("changeLog");
|
||||||
|
instance.find("core-drawer-panel").closeDrawer();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,15 +6,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</core-toolbar>
|
</core-toolbar>
|
||||||
<div class="changeLog scroll-y" fit>
|
<div class="changeLog scroll-y" fit>
|
||||||
{{#each changeLogs}}
|
<div layout vertical center>
|
||||||
<paper-shadow class="white padded" style="margin: 8px;">
|
<div layout vertical style="max-width: 800px; padding: 4px;">
|
||||||
<h2>{{version}}</h2>
|
{{#each changeLogs}}
|
||||||
<ul>
|
<paper-shadow class="card"
|
||||||
{{#each changes}}
|
style="margin: 4px;
|
||||||
<li>{{this}}</li>
|
padding: 16px;"
|
||||||
|
layout vertical>
|
||||||
|
<h2>{{version}}</h2>
|
||||||
|
<ul>
|
||||||
|
{{#each changes}}
|
||||||
|
<li>{{this}}</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
</paper-shadow>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</div>
|
||||||
</paper-shadow>
|
</div>
|
||||||
{{/each}}
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,39 +1,44 @@
|
|||||||
<template name="baseDialog">
|
<template name="baseDialog">
|
||||||
<core-header-panel fit>
|
<div class="{{class}} top subhead"
|
||||||
<core-toolbar class={{class}} hero-id="toolbar" hero>
|
style="height: 72px;"
|
||||||
<paper-icon-button id="backButton" role="button" tabindex="0" icon="arrow-back" aria-label="close"></paper-icon-button>
|
hero-id="toolbar" hero
|
||||||
<div flex>{{title}}</div>
|
layout horizontal center>
|
||||||
{{#if editing}}
|
<paper-icon-button id="backButton"
|
||||||
{{#unless hideDelete}}
|
icon="arrow-back">
|
||||||
<paper-icon-button id="deleteButton"
|
</paper-icon-button>
|
||||||
role="button"
|
<div flex>{{title}}</div>
|
||||||
tabindex="0"
|
{{#if editing}}
|
||||||
icon="delete"
|
{{#unless hideDelete}}
|
||||||
aria-label="Delete Feature"
|
<paper-icon-button id="deleteButton"
|
||||||
noink></paper-icon-button>
|
role="button"
|
||||||
{{/unless}}
|
tabindex="0"
|
||||||
{{#unless hideColor}}
|
icon="delete"
|
||||||
{{> colorDropdown}}
|
aria-label="Delete Feature"
|
||||||
{{/unless}}
|
noink></paper-icon-button>
|
||||||
<paper-icon-button id="doneEditingButton"
|
|
||||||
icon="done"
|
|
||||||
aria-label="Delete Feature"
|
|
||||||
noink></paper-icon-button>
|
|
||||||
{{else}}
|
|
||||||
{{#if showEdit}}
|
|
||||||
<paper-icon-button id="editButton"
|
|
||||||
icon="create"
|
|
||||||
aria-label="Delete Feature"
|
|
||||||
noink></paper-icon-button>
|
|
||||||
{{/if}}
|
|
||||||
{{/if}}
|
|
||||||
</core-toolbar>
|
|
||||||
<div class="detailContent">
|
|
||||||
{{#unless editing}}
|
|
||||||
{{> UI.contentBlock}}
|
|
||||||
{{else}}
|
|
||||||
{{> UI.elseBlock}}
|
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
</div>
|
{{#unless hideColor}}
|
||||||
</core-header-panel>
|
{{> colorDropdown}}
|
||||||
|
{{/unless}}
|
||||||
|
<paper-icon-button id="doneEditingButton"
|
||||||
|
icon="done"
|
||||||
|
aria-label="Delete Feature"
|
||||||
|
noink></paper-icon-button>
|
||||||
|
{{else}}
|
||||||
|
{{#if showEdit}}
|
||||||
|
<paper-icon-button id="editButton"
|
||||||
|
icon="create"
|
||||||
|
aria-label="Delete Feature"
|
||||||
|
noink></paper-icon-button>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="bottom scroll-y"
|
||||||
|
style="padding: 24px"
|
||||||
|
flex>
|
||||||
|
{{#unless editing}}
|
||||||
|
{{> UI.contentBlock}}
|
||||||
|
{{else}}
|
||||||
|
{{> UI.elseBlock}}
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<template name="fabMenu">
|
||||||
|
<paper-fab class="floatyButton expand-menu {{#if active}}active{{/if}}"
|
||||||
|
icon="add"></paper-fab>
|
||||||
|
<div class="{{#if active}}active{{/if}} mini-holder"
|
||||||
|
layout vertical center>
|
||||||
|
{{> UI.contentBlock}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
15
rpg-docs/client/views/paperTemplates/fabMenu/fabMenu.js
Normal file
15
rpg-docs/client/views/paperTemplates/fabMenu/fabMenu.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Template.fabMenu.onCreated(function() {
|
||||||
|
this.active = new ReactiveVar(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.fabMenu.helpers({
|
||||||
|
active: function() {
|
||||||
|
return Template.instance().active.get();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.fabMenu.events({
|
||||||
|
"tap .expand-menu": function(event, instance) {
|
||||||
|
instance.active.set(!instance.active.get());
|
||||||
|
},
|
||||||
|
});
|
||||||
46
rpg-docs/client/views/paperTemplates/fabMenu/fabMenu.scss
Normal file
46
rpg-docs/client/views/paperTemplates/fabMenu/fabMenu.scss
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
@import "bourbon/bourbon";
|
||||||
|
|
||||||
|
.mini-holder {
|
||||||
|
position: absolute;
|
||||||
|
padding: 4px;
|
||||||
|
bottom: 80px;
|
||||||
|
right: 24px;
|
||||||
|
width: 56px;
|
||||||
|
pointer-events: none;
|
||||||
|
flex-direction: column-reverse !important;
|
||||||
|
core-tooltip{
|
||||||
|
@include transform(scale(0));
|
||||||
|
@include transition-property(transform);
|
||||||
|
@include transition-duration(0.3s);
|
||||||
|
@include transition-timing-function(ease-in-out);
|
||||||
|
margin: 4px;
|
||||||
|
}
|
||||||
|
&.active {
|
||||||
|
pointer-events: auto;
|
||||||
|
core-tooltip{
|
||||||
|
@include transform(scale(1));
|
||||||
|
}
|
||||||
|
core-tooltip:nth-child(2){
|
||||||
|
@include transition-delay(0.1s);
|
||||||
|
}
|
||||||
|
core-tooltip:nth-child(3){
|
||||||
|
@include transition-delay(0.2s);
|
||||||
|
}
|
||||||
|
core-tooltip:nth-child(4){
|
||||||
|
@include transition-delay(0.3s);
|
||||||
|
}
|
||||||
|
core-tooltip:nth-child(5){
|
||||||
|
@include transition-delay(0.4s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.expand-menu {
|
||||||
|
&::shadow core-icon {
|
||||||
|
@include transition(transform 0.3s ease-in-out);
|
||||||
|
}
|
||||||
|
&.active::shadow core-icon{
|
||||||
|
@include transform(rotate(405deg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -9,6 +9,10 @@ Template.undoToast.events({
|
|||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
collection.restoreNode(this.id);
|
if (collection.restoreNode){
|
||||||
|
collection.restoreNode(this.id);
|
||||||
|
} else {
|
||||||
|
collection.restore(this.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -85,7 +85,6 @@ makeChild = function(collection, inheritedKeys){
|
|||||||
collection.after.update(function(userId, doc, fieldNames, modifier, options) {
|
collection.after.update(function(userId, doc, fieldNames, modifier, options) {
|
||||||
if (modifier && modifier.$set && modifier.$set["parent.id"]){
|
if (modifier && modifier.$set && modifier.$set["parent.id"]){
|
||||||
//when we change parents, inherit its properties
|
//when we change parents, inherit its properties
|
||||||
console.log("re-inheriting")
|
|
||||||
inheritParentProperties(doc, collection);
|
inheritParentProperties(doc, collection);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
78
rpg-docs/private/changeLogs/changeLogs.js
Normal file
78
rpg-docs/private/changeLogs/changeLogs.js
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
ChangeLogs.insert({
|
||||||
|
version: "0.2.0 - First public release",
|
||||||
|
changes: [
|
||||||
|
"Implemented basic sharing",
|
||||||
|
"Detail boxes separated into view and edit modes",
|
||||||
|
"Spell lists now expand horizontally to make better use of wide screens",
|
||||||
|
"Proficiencies separated from effects and text boxes to be their own assets",
|
||||||
|
"Added favicons and icons for Android/iOS shortcuts",
|
||||||
|
"Changed menu icon from hamburger to dots",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
ChangeLogs.insert({
|
||||||
|
version: "0.2.1",
|
||||||
|
changes: [
|
||||||
|
"Improved sharing functionality",
|
||||||
|
"Sliders no longer jump to a point, they need to be dragged",
|
||||||
|
"Added a list of characters to the side bar",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
ChangeLogs.insert({
|
||||||
|
version: "0.2.2",
|
||||||
|
changes: [
|
||||||
|
"Removed a security vulnerability that allowed users to pretend to be other users",
|
||||||
|
"The character list menu item in the side bar now shows up whether you have characters yet or not",
|
||||||
|
"Stopped the old proficiency text dialog showing up long after it got depreciated",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
ChangeLogs.insert({
|
||||||
|
version: "0.2.3",
|
||||||
|
changes: [
|
||||||
|
"Changed spacing and formatting of the intro text on the front page",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
ChangeLogs.insert({
|
||||||
|
version: "0.2.4",
|
||||||
|
changes: [
|
||||||
|
"Fixed typos in the front page",
|
||||||
|
"Fixed character sheet loading indefinitely if the character does not exist",
|
||||||
|
"Prevented character sheet crashing and loading forever when a incorectly typed ability modifier variable was used in calculations",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
ChangeLogs.insert({
|
||||||
|
version: "0.2.5",
|
||||||
|
changes: [
|
||||||
|
"Moved log-in to its own page and added functionality for forgot passwords, verifying email addresses and general user accounts improvements",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
ChangeLogs.insert({
|
||||||
|
version: "0.2.6",
|
||||||
|
changes: [
|
||||||
|
"Re-wrote how item dragging and dropping works to allow items to be dragged to characters in the side bar, and to containers on characters in other tabs and even other windows.",
|
||||||
|
"Fixed how splitting stacks works. Stacks should now split and merge properly when ctrl-dragged around",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
ChangeLogs.insert({
|
||||||
|
version: "0.2.7",
|
||||||
|
changes: [
|
||||||
|
"Added a quick feedback form",
|
||||||
|
"Improved the formatting of the side-bar's list of characters",
|
||||||
|
"Added a change log",
|
||||||
|
"Fixed the styling and rounding of some of the detail boxes",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
ChangeLogs.insert({
|
||||||
|
version: "0.3.0",
|
||||||
|
changes: [
|
||||||
|
"Refactored character sheet user interface.",
|
||||||
|
"Removed a lot of unneeded effects and webcomponents, should result in significantly improved performance on low-powered devices.",
|
||||||
|
],
|
||||||
|
});
|
||||||
5
rpg-docs/scss.json
Normal file
5
rpg-docs/scss.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"includePaths": [
|
||||||
|
".meteor/local/build/programs/server/assets/packages/wolves_bourbon"
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user