group header

This commit is contained in:
François-Xavier Guillois
2023-09-01 09:49:46 +02:00
parent 8d0c8d1774
commit 39c984156b
8 changed files with 86 additions and 50 deletions
+2
View File
@@ -72,6 +72,8 @@
"prohibits": "Interdits",
"objectives": "Objectifs",
"relations": "Relations",
"morale":"Moral",
"morale_level": "Niveau de moral",
"notes": "Notes"
},
"VERMINE": {
+1 -1
View File
@@ -263,7 +263,7 @@ export class VermineCharacterSheet extends VermineActorSheet {
}
/**
* Handle clickable rolls.
* Handle totem pick
* @param {Event} event The originating click event
* @private
*/
+19 -1
View File
@@ -1,5 +1,6 @@
import {onManageActiveEffect, prepareActiveEffectCategories} from "../system/effects.mjs";
import { VermineActorSheet } from "./actor-sheet.mjs";
import { TotemPicker } from "../system/applications.mjs";
/**
* Extend the basic ActorSheet with some very simple modifications
@@ -129,7 +130,7 @@ export class VermineGroupSheet extends VermineActorSheet {
/** @override */
activateListeners(html) {
super.activateListeners(html);
console.log('evenement de groupe');
// Render the item sheet for viewing/editing prior to the editable check.
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item");
@@ -152,6 +153,9 @@ export class VermineGroupSheet extends VermineActorSheet {
li.slideUp(200, () => this.render(false));
});
// Choose Totem
html.find('.chooseTotem').click(this._onTotemButton.bind(this));
// Active Effect management
html.find(".effect-control").click(ev => onManageActiveEffect(ev, this.actor));
@@ -228,4 +232,18 @@ export class VermineGroupSheet extends VermineActorSheet {
}
}
/**
* Handle totem pick
* @param {Event} event The originating click event
* @private
*/
_onTotemButton(event) {
event.preventDefault();
const el = event.currentTarget;
// const dataset = el.dataset;
const totemPicker = new TotemPicker(el, this.actor);
totemPicker.render(true);
}
}
+1
View File
@@ -22,6 +22,7 @@
"systems/vermine2047/templates/actor/parts/actor-effects.html",
// Group partials
"systems/vermine2047/templates/actor/parts/group-header.hbs",
"systems/vermine2047/templates/actor/parts/group-vehicles.hbs",
"systems/vermine2047/templates/actor/parts/group-info.hbs",
"systems/vermine2047/templates/actor/parts/group-items.hbs",
+18 -3
View File
@@ -364,9 +364,20 @@
"description": ""
},
"level": {
"value": 1,
"min": 1,
"value": 0,
"min": 0,
"max": 3
},
"reputation": {
"value": 10,
"min": 2,
"max": 10
},
"morale": {
"level": "high",
"value": 7,
"min": 1,
"max": 7
},
"members": []
},
@@ -391,7 +402,7 @@
}
},
"Item": {
"types": ["item", "weapon", "defense", "vehicle", "ability", "specialty", "trait", "background", "trauma", "evolution", "rumor"],
"types": ["item", "weapon", "defense", "vehicle", "ability", "specialty", "trait", "background", "trauma", "evolution", "rumor", "target"],
"templates": {
"base": {
"description": "",
@@ -451,6 +462,10 @@
},
"rumor": {
"templates": ["list"]
},
"target": {
"templates": ["list"],
"level":"minor"
}
}
}
+2 -43
View File
@@ -1,49 +1,8 @@
<form class="{{cssClass}} {{actor.type}} flexcol" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name"/></h1>
{{!-- The grid classes are defined in scss/global/_grid.scss. To use,
use both the "grid" and "grid-Ncol" class where "N" can be any number
from 1 to 12 and will create that number of columns. --}}
<div class="resources grid grid-3col">
{{!-- "flex-group-center" is also defined in the _grid.scss file
and it will add a small amount of padding, a border, and will
center all of its child elements content and text. --}}
<div class="resource flex-group-center">
<label for="system.health.value" class="resource-label">Health</label>
<div class="resource-content flexrow flex-center flex-between">
<input type="text" name="system.health.value" value="{{system.health.value}}" data-dtype="Number"/>
<span> / </span>
<input type="text" name="system.health.max" value="{{system.health.max}}" data-dtype="Number"/>
</div>
</div>
<div class="resource flex-group-center">
<label for="system.power.value" class="resource-label">Power</label>
<div class="resource-content flexrow flex-center flex-between">
<input type="text" name="system.power.value" value="{{system.power.value}}" data-dtype="Number"/>
<span> / </span>
<input type="text" name="system.power.max" value="{{system.power.max}}" data-dtype="Number"/>
</div>
</div>
<div class="resource flex-group-center">
<label for="system.cr" class="resource-label">CR / XP</label>
<div class="resource-content flexrow flex-center flex-between">
<input type="text" name="system.cr" value="{{system.cr}}" data-dtype="Number"/>
<span> / </span>
<input type="text" disabled="true" name="system.xp" value="{{system.xp}}" data-dtype="Number"/>
</div>
</div>
</div>
</div>
</header>
{{> "systems/vermine2047/templates/actor/parts/group-header.hbs"}}
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
{{!-- Default tab is specified in actor-sheet.mjs --}}
+2 -2
View File
@@ -21,9 +21,9 @@
<h1 class="char-vermine2047 flexrow flex-group-left w-full">
<label for="system.identity.totem">{{ localize 'IDENTITY.totem' }}</label>
{{#if (eq system.identity.totem "")}}
<a name="chooseTotem" class="chooseTotem">Choisissez votre totem</button>
<a name="chooseTotem" class="chooseTotem">Choisissez votre totem</a>
{{ else }}
<a name="chooseTotem" class="chooseTotem">{{ smarttl "TOTEMS" system.identity.totem }}</button>
<a name="chooseTotem" class="chooseTotem">{{ smarttl "TOTEMS" system.identity.totem }}</a>
{{/if}}
</h1>
<div class="reputation flexrow flex-group-center">
+41
View File
@@ -0,0 +1,41 @@
<!-- HEADER -->
<header class="char-header grid grid-12col w-full" style="max-height: 110px;">
<div class="grid-span-2">
<img class="profile-img" src="{{actor.img}}" data-edit="img" width="100" height="100" title="{{actor.name}}" />
</div>
<section class="char-details grid-span-5">
<h1 class="char-name flexrow flex-group-left w-full">
<label>{{ localize 'IDENTITY.name' }}</label>
<input name="name" type="text" value="{{actor.name}}" placeholder="{{localize "VERMINE.GroupNamePlaceholder"}}" />
</h1>
<div class="profile flexrow flex-group-center">
<label>{{ localize 'IDENTITY.profile' }}</label>
<input name="system.identity.profile" type="text" value="{{system.identity.profile }}" data-dtype="String" />
</div>
<div class="flexrow flex-group-center w-full">
<label for="system.identity.age">{{ localize 'IDENTITY.morale' }}</label>
<div class="flexrow row">
<input type="number" name="system.identity.age" value="{{ system.morale.value }}" data-dtype="Number" max="7" min="1" />
<span id="moraleLevel">({{ system.morale.level }})</span>
</div>
</div>
</section>
<section class="char-level grid-span-5">
<h1 class="char-vermine2047 flexrow flex-group-left w-full">
<label for="system.identity.totem">{{ localize 'IDENTITY.totem' }}</label>
{{#if (eq system.identity.totem "")}}
<a name="chooseTotem" class="chooseTotem">Choisissez&hellip;</a>
{{ else }}
<a name="chooseTotem" class="chooseTotem">{{ smarttl "TOTEMS" system.identity.totem }}</a>
{{/if}}
</h1>
<div class="reputation flexrow flex-group-center">
<label>{{ localize 'VERMINE.reputation' }}</label>
<input name="system.reputation.value" type="text" value="{{system.reputation.value }}" data-dtype="Number" min="2" max="10" />
</div>
<div class="experience flexrow flex-group-center">
<label>{{ localize 'VERMINE.level' }}</label>
<input name="system.level.value" type="text" value="{{system.level.value }}" data-dtype="Number" min="0" max="3" />
</div>
</section>
</header>