Adds status bars to character sheet
This commit is contained in:
parent
b3e2771e91
commit
53216fbbb7
|
|
@ -9,6 +9,13 @@ import { M5Item } from "./module/items/M5Item"
|
||||||
Hooks.once("init", async () => {
|
Hooks.once("init", async () => {
|
||||||
Logger.log("M5 | Initialisierung Midgard 5")
|
Logger.log("M5 | Initialisierung Midgard 5")
|
||||||
|
|
||||||
|
Handlebars.registerHelper("times", (n: number, block) => {
|
||||||
|
var accum = ""
|
||||||
|
for(let i = 0; i < n; ++i)
|
||||||
|
accum += block.fn(i)
|
||||||
|
return accum
|
||||||
|
})
|
||||||
|
|
||||||
Handlebars.registerHelper("array", (arr: any[], index: number) => {
|
Handlebars.registerHelper("array", (arr: any[], index: number) => {
|
||||||
return arr[index]
|
return arr[index]
|
||||||
})
|
})
|
||||||
|
|
@ -34,15 +41,11 @@ Hooks.once("init", async () => {
|
||||||
|
|
||||||
Handlebars.registerHelper("skillBonus", (actorId: string, skill: M5Skill) => {
|
Handlebars.registerHelper("skillBonus", (actorId: string, skill: M5Skill) => {
|
||||||
const actor = (game as Game).actors.get(actorId) as M5Character
|
const actor = (game as Game).actors.get(actorId) as M5Character
|
||||||
if (!actor || !skill)
|
|
||||||
console.log("Handlebars.skillBonus", actor, skill)
|
|
||||||
return actor.skillBonus(skill).toString()
|
return actor.skillBonus(skill).toString()
|
||||||
})
|
})
|
||||||
|
|
||||||
Handlebars.registerHelper("skillEw", (actorId: string, skill: M5Skill) => {
|
Handlebars.registerHelper("skillEw", (actorId: string, skill: M5Skill) => {
|
||||||
const actor = (game as Game).actors.get(actorId) as M5Character
|
const actor = (game as Game).actors.get(actorId) as M5Character
|
||||||
if (!actor || !skill)
|
|
||||||
console.log("Handlebars.skillEw", actor, skill)
|
|
||||||
return actor.skillEw(skill).toString()
|
return actor.skillEw(skill).toString()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,30 @@ export default class M5CharacterSheet extends ActorSheet {
|
||||||
override activateListeners(html: JQuery) {
|
override activateListeners(html: JQuery) {
|
||||||
super.activateListeners(html)
|
super.activateListeners(html)
|
||||||
|
|
||||||
|
html.find(".update-lp").on("click", async (event) => {
|
||||||
|
const valueStr = event.target.dataset["value"]
|
||||||
|
const value = parseInt(valueStr)
|
||||||
|
this.actor.update({
|
||||||
|
data: {
|
||||||
|
lp: {
|
||||||
|
value: value + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
html.find(".update-ap").on("click", async (event) => {
|
||||||
|
const valueStr = event.target.dataset["value"]
|
||||||
|
const value = parseInt(valueStr)
|
||||||
|
this.actor.update({
|
||||||
|
data: {
|
||||||
|
ap: {
|
||||||
|
value: value + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
html.find(".roll-attribute-button").on("click", async (event) => {
|
html.find(".roll-attribute-button").on("click", async (event) => {
|
||||||
const attributeStr = event.target.dataset["attribute"]
|
const attributeStr = event.target.dataset["attribute"]
|
||||||
const roll = M5Roll.fromAttribute(this.actor, attributeStr)
|
const roll = M5Roll.fromAttribute(this.actor, attributeStr)
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,47 @@
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.health-bar {
|
||||||
|
height: 2rem;
|
||||||
|
background-color: rgba(0, 0, 0, 0.8);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 1px;
|
||||||
|
padding: 1px;
|
||||||
|
//align-items: stretch;
|
||||||
|
|
||||||
|
input {
|
||||||
|
flex: 0 0 3rem;
|
||||||
|
text-align: center;
|
||||||
|
height: 100%;
|
||||||
|
background-color: rgba(109, 108, 102, 1);
|
||||||
|
color: rgba(255, 255, 255, 1);
|
||||||
|
font-weight: bold;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lp-bar-item-empty,
|
||||||
|
.ap-bar-item-empty {
|
||||||
|
flex-grow: 1;
|
||||||
|
background-color: rgb(201, 201, 201);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lp-bar-item {
|
||||||
|
flex-grow: 1;
|
||||||
|
background-color: rgb(57, 234, 139);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ap-bar-item {
|
||||||
|
flex-grow: 1;
|
||||||
|
background-color: rgb(57, 163, 234);
|
||||||
|
}
|
||||||
|
|
||||||
|
.negative-bar-item {
|
||||||
|
flex-grow: 1;
|
||||||
|
background-color: rgb(234, 57, 57);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.attributes {
|
.attributes {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,34 @@
|
||||||
|
|
||||||
|
<h3>{{localize "midgard5.actor-lp"}}</h3>
|
||||||
|
<div>
|
||||||
|
<div class="health-bar">
|
||||||
|
<input name="data.lp.value" type="text" value="{{data.lp.value}}" data-dtype="Number" />
|
||||||
|
{{#times data.lp.max}}
|
||||||
|
{{#if (lt this ../data.lp.value)}}
|
||||||
|
<div class="lp-bar-item update-lp" data-value="{{this}}"></div>
|
||||||
|
{{else}}
|
||||||
|
<div class="lp-bar-item-empty update-lp" data-value="{{this}}"></div>
|
||||||
|
{{/if}}
|
||||||
|
{{/times}}
|
||||||
|
<input name="data.lp.max" type="text" value="{{data.lp.max}}" data-dtype="Number" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3>{{localize "midgard5.actor-ap"}}</h3>
|
||||||
|
<div>
|
||||||
|
<div class="health-bar">
|
||||||
|
<input name="data.ap.value" type="text" value="{{data.ap.value}}" data-dtype="Number" />
|
||||||
|
{{#times data.ap.max}}
|
||||||
|
{{#if (lt this ../data.ap.value)}}
|
||||||
|
<div class="ap-bar-item update-ap" data-value="{{this}}"></div>
|
||||||
|
{{else}}
|
||||||
|
<div class="ap-bar-item-empty update-ap" data-value="{{this}}"></div>
|
||||||
|
{{/if}}
|
||||||
|
{{/times}}
|
||||||
|
<input name="data.ap.max" type="text" value="{{data.ap.max}}" data-dtype="Number" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3>Eigenschaften</h3>
|
<h3>Eigenschaften</h3>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="flex0">{{localize "midgard5.class"}}</span>
|
<span class="flex0">{{localize "midgard5.class"}}</span>
|
||||||
|
|
@ -10,16 +41,12 @@
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{localize "midgard5.actor-lp"}} {{localize "midgard5.maximum"}}</td>
|
|
||||||
<td><input name="data.lp.max" type="text" value="{{data.lp.max}}" data-dtype="Number" /></td>
|
|
||||||
<td>{{localize "midgard5.grace"}}</td>
|
<td>{{localize "midgard5.grace"}}</td>
|
||||||
<td><input name="data.gg" type="text" value="{{data.gg}}" data-dtype="Number" /></td>
|
<td><input name="data.gg" type="text" value="{{data.gg}}" data-dtype="Number" /></td>
|
||||||
<td>{{localize "midgard5.exp-overall"}}</td>
|
<td>{{localize "midgard5.exp-overall"}}</td>
|
||||||
<td><input name="data.es" type="text" value="{{data.es}}" data-dtype="Number" /></td>
|
<td><input name="data.es" type="text" value="{{data.es}}" data-dtype="Number" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{localize "midgard5.actor-ap"}} {{localize "midgard5.maximum"}}</td>
|
|
||||||
<td><input name="data.ap.max" type="text" value="{{data.ap.max}}" data-dtype="Number" /></td>
|
|
||||||
<td>{{localize "midgard5.destiny"}}</td>
|
<td>{{localize "midgard5.destiny"}}</td>
|
||||||
<td><input name="data.sg" type="text" value="{{data.sg}}" data-dtype="Number" /></td>
|
<td><input name="data.sg" type="text" value="{{data.sg}}" data-dtype="Number" /></td>
|
||||||
<td>{{localize "midgard5.exp-available"}}</td>
|
<td>{{localize "midgard5.exp-available"}}</td>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue