Files
2025-01-04 00:34:03 +01:00

239 lines
10 KiB
HTML

<form class="flexcol {{cssClasses}}" autocomplete="off">
<!-- Token Configuration Tabs -->
<nav class="sheet-tabs tabs" data-group="main" aria-role="{{localize 'SHEETS.FormNavLabel'}}">
<a class="item" data-tab="character"><i class="fas fa-user"></i> {{localize "TOKEN.HeaderIdentity"}}</a>
<a class="item" data-tab="appearance"><i class="fas fa-expand"></i> {{localize "TOKEN.HeaderAppearance"}}</a>
<a class="item" data-tab="vision"><i class="fas fa-eye"></i> {{localize "TOKEN.HeaderVision"}}</a>
<a class="item" data-tab="light"><i class="fas fa-lightbulb"></i> {{localize "TOKEN.HeaderLight"}}</a>
<a class="item" data-tab="resources"><i class="fas fa-heart"></i> {{localize "TOKEN.HeaderResources"}}</a>
</nav>
<!-- Token Character -->
<div class="tab" data-group="main" data-tab="character">
<div class="form-group">
<label>{{localize "TOKEN.CharNameplate"}}</label>
<input type="text" name="name" placeholder="{{ localize 'Name' }}" value="{{object.name}}"/>
</div>
<div class="form-group">
<label>{{localize "TOKEN.CharShowNameplate"}}</label>
<select name="displayName" data-dtype="Number">
{{selectOptions displayModes selected=object.displayName }}
</select>
</div>
{{#unless isPrototype}}
<div class="form-group">
<label>{{localize "TOKEN.CharActor"}}</label>
<select class="actor-template" name="actorId">
{{selectOptions actors selected=object.actorId valueAttr="_id" labelAttr="name" blank=(localize 'None')}}
</select>
</div>
{{/unless}}
<div class="form-group">
<label>{{localize "TOKEN.CharLink"}}</label>
<input type="checkbox" name="actorLink" {{checked object.actorLink}}/>
</div>
{{#if isPrototype}}
<hr>
<div class="form-group">
<label>{{localize "TOKEN.AppendNumber"}}</label>
<input type="checkbox" name="appendNumber" {{checked object.appendNumber}}/>
<p class="notes">{{localize "TOKEN.AppendNumberHint" name=object.name}}</p>
</div>
<div class="form-group">
<label>{{localize "TOKEN.PrependAdjective"}}</label>
<input type="checkbox" name="prependAdjective" {{checked object.prependAdjective}}/>
<p class="notes">{{localize "TOKEN.PrependAdjectiveHint" name=object.name}}</p>
</div>
<hr>
{{/if}}
{{#unless isPrototype}}
<div class="form-group slim">
<label>{{localize "TOKEN.Coordinates"}} <span class="units">({{localize "Pixels"}})</span></label>
<div class="form-fields">
<label>X</label>
{{numberInput object.x name="x" step=1 disabled=(not isGM) placeholder=(localize "Pixels")}}
<label>Y</label>
{{numberInput object.y name="y" step=1 disabled=(not isGM) placeholder=(localize "Pixels")}}
</div>
</div>
<div class="form-group slim">
<label>{{localize "Elevation"}} <span class="units">({{gridUnits}})</span></label>
<div class="form-fields">
{{numberInput object.elevation name="elevation" placeholder=gridUnits}}
</div>
</div>
<div class="form-group slim">
<label>{{ localize "Sort" }}</label>
<div class="form-fields">
{{numberInput object.sort name="sort" step=1}}
</div>
</div>
{{/unless}}
<div class="form-group slim">
<label>{{localize "Rotation"}} <span class="units">({{localize "Degrees"}})</span></label>
<div class="form-fields">
<label>{{localize "TOKEN.Lock"}}</label>
<input type="checkbox" name="lockRotation" {{checked object.lockRotation}}/>
<label>{{localize "Rotation"}}</label>
{{numberInput object.rotation name="rotation" placeholder=(localize "Degrees")}}
</div>
</div>
<div class="form-group slim">
<label>{{localize "TOKEN.OcclusionRadius"}} <span class="units">({{gridUnits}})</span></label>
<div class="form-fields">
{{numberInput object.occludable.radius name="occludable.radius" placeholder=gridUnits min="0" step="any"}}
</div>
<p class="notes">{{localize "TOKEN.OcclusionRadiusHint" name=object.name}}</p>
</div>
<div class="form-group">
<label>{{localize "TOKEN.Disposition"}}</label>
<select name="disposition" data-dtype="Number">
{{selectOptions dispositions selected=object.disposition }}
</select>
</div>
</div>
<!-- Token Image -->
<div class="tab" data-group="main" data-tab="appearance">
<div class="form-group">
<label>{{localize "TOKEN.ImagePath"}}</label>
<div class="form-fields">
<file-picker name="texture.src" type="imagevideo" value="{{object.texture.src}}"></file-picker>
</div>
</div>
{{#if randomImgEnabled}}
<div class="form-group">
<label>{{localize "TOKEN.RandomImg"}}</label>
<input type="checkbox" name="randomImg" {{checked object.randomImg}}/>
</div>
{{else if hasAlternates}}
<div class="form-group">
<label>{{localize "TOKEN.ImageAlts"}}</label>
<select class="alternate-images" name="alternateImages">
{{selectOptions alternateImages selected=object.texture.src blank=""}}
</select>
</div>
{{/if}}
<div class="form-group slim">
<label>{{localize "TOKEN.Dimensions"}} <span class="units">({{localize "GridSpaces"}})</span></label>
<div class="form-fields">
<label>{{localize "Width"}}</label>
{{numberInput object.width name="width" placeholder=(localize "spaces")}}
<label>{{localize "Height"}}</label>
{{numberInput object.height name="height" placeholder=(localize "spaces")}}
</div>
<p class="hint">{{localize "TOKEN.DimensionsHint"}}</p>
</div>
{{#if showHexagonalShapes}}
<div class="form-group slim">
<label>{{localize "TOKEN.HexagonalShape"}}</label>
<div class="form-fields">
<select name="hexagonalShape">
{{selectOptions hexagonalShapes selected=object.hexagonalShape}}
</select>
</div>
<p class="hint">{{localize "TOKEN.HexagonalShapeHint"}}</p>
</div>
{{/if}}
<div class="form-group slim">
<label>{{localize "TOKEN.ImageFitMode"}}</label>
<div class="form-fields">
<select name="texture.fit">
{{selectOptions textureFitModes selected=object.texture.fit}}
</select>
</div>
<p class="hint">{{localize "TOKEN.ImageFitModeHint"}}</p>
</div>
<div class="form-group slim">
<label>{{localize "Anchor"}}</label>
<div class="form-fields">
<label>X</label>
{{numberInput object.texture.anchorX name="texture.anchorX" placeholder="0.5"}}
<label>Y</label>
{{numberInput object.texture.anchorY name="texture.anchorY" placeholder="0.5"}}
</div>
<p class="hint">{{localize "TOKEN.AnchorHint"}}</p>
</div>
<div class="form-group">
<label>{{localize "Scale"}} <span class="units">({{localize "Ratio"}})</span></label>
<div class="form-fields">
{{ rangePicker name="scale" value=scale min="0.2" max="3.0" step="0.1" }}
</div>
</div>
<div class="form-group slim">
<label>{{localize "TOKEN.Mirror"}}</label>
<div class="form-fields">
<label>{{localize "TOKEN.MirrorX"}}</label>
<input type="checkbox" name="mirrorX" {{checked mirrorX}}/>
<label>{{localize "TOKEN.MirrorY"}}</label>
<input type="checkbox" name="mirrorY" {{checked mirrorY}}/>
</div>
</div>
<div class="form-group">
<label>{{ localize "TOKEN.TintColor" }}</label>
<div class="form-fields">
<color-picker name="texture.tint" value="{{object.texture.tint}}" placeholder="#ffffff"></color-picker>
</div>
</div>
<div class="form-group">
<label>{{localize "TOKEN.Opacity"}}</label>
<div class="form-fields">
{{ rangePicker name="alpha" value=object.alpha min="0" max="1" step="0.05" }}
</div>
</div>
<fieldset>
<legend>{{localize "TOKEN.RING.SHEET.legend"}}</legend>
{{formField fields.ring.fields.enabled value=object.ring.enabled}}
{{formField fields.ring.fields.colors.fields.ring value=object.ring.colors.ring}}
{{formField fields.ring.fields.colors.fields.background value=object.ring.colors.background}}
{{formField fields.ring.fields.subject.fields.texture value=object.ring.subject.texture}}
{{formField fields.ring.fields.subject.fields.scale value=object.ring.subject.scale max=3 min=0.8 step=0.02}}
{{formField fields.ring.fields.effects value=object.ring.effects input=ringEffectsInput stacked=true}}
</fieldset>
</div>
<!-- Vision -->
{{> "templates/scene/parts/token-vision.html"}}
<!-- Light -->
{{> "templates/scene/parts/token-lighting.hbs"}}
<!-- Resource Bars -->
{{> "templates/scene/parts/token-resources.html"}}
<!-- Token Sheet Footer -->
<footer class="sheet-footer flexrow">
{{#if isPrototype}}
<button type="button" class="assign-token"><i class="fas fa-user"></i> {{localize "TOKEN.Assign"}}</button>
{{/if}}
<button type="submit">
<i class="far fa-save"></i> {{localize "TOKEN.Update"}}
</button>
</footer>
</form>