Initial
This commit is contained in:
79
resources/app/templates/scene/ambient-sound-config.hbs
Normal file
79
resources/app/templates/scene/ambient-sound-config.hbs
Normal file
@@ -0,0 +1,79 @@
|
||||
<div class="form-body standard-form scrollable">
|
||||
<fieldset>
|
||||
<legend>{{ localize "AMBIENT_SOUND.SECTIONS.SOURCE" }}</legend>
|
||||
{{formField fields.path value=source.path placeholder=(localize "SOUND.PathPlaceholder")}}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ localize "AMBIENT_SOUND.SECTIONS.PLACEMENT" }}</legend>
|
||||
<div class="form-group slim">
|
||||
<label>{{localize "Coordinates"}} <span class="units">({{localize "Pixels"}})</span></label>
|
||||
<div class="form-fields">
|
||||
<label>{{fields.x.label}}</label>
|
||||
{{formInput fields.x value=source.x}}
|
||||
<label>{{fields.y.label}}</label>
|
||||
{{formInput fields.y value=source.y}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group slim">
|
||||
<label>{{fields.radius.label}} <span class="units">({{gridUnits}})</span></label>
|
||||
<div class="form-fields">
|
||||
{{formInput fields.radius value=source.radius}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group slim">
|
||||
<label>{{fields.elevation.label}} <span class="units">({{gridUnits}})</span></label>
|
||||
<div class="form-fields">
|
||||
{{formInput fields.elevation value=source.elevation placeholder=gridUnits}}
|
||||
</div>
|
||||
</div>
|
||||
<p class="hint">{{localize "AMBIENT_SOUND.SECTIONS.PLACEMENT_HINT"}}</p>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ localize "AMBIENT_SOUND.SECTIONS.VOLUME" }}</legend>
|
||||
{{formField fields.volume value=source.volume}}
|
||||
{{formField fields.easing value=source.easing}}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ localize "AMBIENT_SOUND.SECTIONS.ACTIVATION" }}</legend>
|
||||
{{formField fields.hidden value=source.hidden}}
|
||||
{{formField fields.walls value=source.walls}}
|
||||
<div class="form-group slim">
|
||||
<label>{{fields.darkness.label}}</label>
|
||||
<div class="form-fields">
|
||||
<label>{{fields.darkness.fields.min.label}}</label>
|
||||
{{ numberInput source.darkness.min name="darkness.min" min=0 max=1 placeholder="0" }}
|
||||
<label>{{fields.darkness.fields.max.label}}</label>
|
||||
{{ numberInput source.darkness.max name="darkness.max" min=0 max=1 placeholder="1" }}
|
||||
</div>
|
||||
<p class="hint">{{fields.darkness.hint}}</p>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ localize "AMBIENT_SOUND.SECTIONS.EFFECTS" }}</legend>
|
||||
<div class="form-group">
|
||||
<label>{{fields.effects.fields.base.fields.type.label}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="effects.base.type">
|
||||
{{selectOptions soundEffects selected=source.effects.base.type labelAttr="label" blank="" localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{formField fields.effects.fields.base.fields.intensity value=source.effects.base.intensity}}
|
||||
<p class="hint">{{fields.effects.fields.base.hint}}</p>
|
||||
<div class="form-group">
|
||||
<label>{{fields.effects.fields.muffled.fields.type.label}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="effects.muffled.type">
|
||||
{{selectOptions soundEffects selected=source.effects.muffled.type labelAttr="label" blank="" localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{formField fields.effects.fields.muffled.fields.intensity value=source.effects.muffled.intensity}}
|
||||
<p class="hint">{{fields.effects.fields.muffled.hint}}</p>
|
||||
</fieldset>
|
||||
</div>
|
||||
270
resources/app/templates/scene/config.html
Normal file
270
resources/app/templates/scene/config.html
Normal file
@@ -0,0 +1,270 @@
|
||||
<form class="flexcol {{cssClasses}}" autocomplete="off">
|
||||
|
||||
<!-- Configuration Tabs -->
|
||||
<nav class="sheet-tabs tabs" data-group="main" aria-role="{{localize 'SHEETS.FormNavLabel'}}">
|
||||
<a class="item" data-tab="basic"><i class="fas fa-image"></i> {{localize "SCENES.HeaderDetails"}}</a>
|
||||
<a class="item" data-tab="grid"><i class="fas fa-ruler"></i> {{localize "SCENES.HeaderGrid"}}</a>
|
||||
<a class="item" data-tab="lighting"><i class="fas fas fa-lightbulb"></i> {{localize "SCENES.HeaderVision"}}</a>
|
||||
<a class="item" data-tab="ambience"><i class="fas fa-cloud-sun"></i> {{localize "SCENES.HeaderAmbience"}}</a>
|
||||
</nav>
|
||||
|
||||
<!-- Basic Tab -->
|
||||
<div class="tab" data-group="main" data-tab="basic">
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.SceneName"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="text" name="name" placeholder="{{localize 'Name'}}" value="{{data.name}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.Accessibility"}}</label>
|
||||
<div class="form-fields">
|
||||
<label class="checkbox">
|
||||
{{localize "SCENES.ShowNav"}}
|
||||
<input type="checkbox" name="navigation" {{checked data.navigation}}>
|
||||
</label>
|
||||
<select name="ownership.default" data-dtype="Number">
|
||||
{{selectOptions ownerships selected=data.ownership.default localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.NavName"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="text" name="navName" value="{{data.navName}}"/>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.NavNameHint"}}</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.BackgroundImage"}}</label>
|
||||
<div class="form-fields">
|
||||
<file-picker name="background.src" type="imagevideo" value="{{data.background.src}}"></file-picker>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.BackgroundImageHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.ForegroundImage"}}</label>
|
||||
<div class="form-fields">
|
||||
<file-picker name="foreground" type="imagevideo" value="{{data.foreground}}"></file-picker>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.ForegroundImageHint"}}</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.BackgroundColor"}}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="backgroundColor" value="{{data.backgroundColor}}" placeholder="#999999"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.ForegroundElevation"}}</label>
|
||||
<div class="form-fields">
|
||||
{{numberInput foregroundElevation name="foregroundElevation" min=1 step=1}}
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.ForegroundElevationHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group initial-position">
|
||||
<label>{{localize "SCENES.InitialView"}}</label>
|
||||
<div class="form-fields">
|
||||
<button class="capture-position" type="button" data-tooltip="{{ localize "SCENES.InitialViewButton" }}">
|
||||
<i class="fas fa-crop-alt fa-fw"></i>
|
||||
</button>
|
||||
<label>X</label>
|
||||
<input type="number" name="initial.x" placeholder="0" value="{{data.initial.x}}" step="1"/>
|
||||
<label>Y</label>
|
||||
<input type="number" name="initial.y" placeholder="0" value="{{data.initial.y}}" step="1"/>
|
||||
<label>{{localize "SCENES.ZoomLower"}}</label>
|
||||
<input type="number" name="initial.scale" placeholder="1" value="{{data.initial.scale}}" step="any"/>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.InitialViewHint"}}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Grid Tab -->
|
||||
<div class="tab" data-group="main" data-tab="grid">
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GridType"}}</label>
|
||||
<div class="form-fields">
|
||||
<button type="button" class="grid-config" data-tooltip="{{ localize "SCENES.GridConfigTool" }}">
|
||||
<i class="fas fa-ruler-combined"></i>
|
||||
</button>
|
||||
<select name="grid.type" data-dtype="Number">
|
||||
{{ selectOptions gridTypes selected=data.grid.type localize=true }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GridSize"}} <span class="units">({{localize "SCENES.Pixels"}})</span></label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.grid.size name="grid.size" placeholder=(localize "SCENES.Pixels") min=minGrid step=1}}
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.GridSizeHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.Dimensions"}} <span class="units">({{localize "SCENES.Pixels"}})</span></label>
|
||||
<div class="form-fields">
|
||||
<label>{{localize "Width"}}</label>
|
||||
{{numberInput data.width name="width"}}
|
||||
<button type="button" class="dimension-link" data-tooltip="{{ localize 'SCENES.DimensionLinked' }}">
|
||||
<i class="fas fa-link-simple"></i>
|
||||
</button>
|
||||
<label>{{localize "Height"}}</label>
|
||||
{{numberInput data.height name="height"}}
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.DimensionsHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.Padding"}}</label>
|
||||
<div class="form-fields">
|
||||
<range-picker name="padding" value="{{data.padding}}" min="0" max="0.5" step="0.05"></range-picker>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.PaddingHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.ShiftBG"}} <span class="units">({{localize "SCENES.Pixels"}})</span></label>
|
||||
<div class="form-fields">
|
||||
<label class="grid-label">{{localize "SCENES.ShiftHorizontal"}}</label>
|
||||
{{numberInput data.background.offsetX name="background.offsetX" placeholder=(localize "SCENES.Pixels")}}
|
||||
<label class="grid-label">{{localize "SCENES.ShiftVertical"}}</label>
|
||||
{{numberInput data.background.offsetY name="background.offsetY" placeholder=(localize "SCENES.Pixels")}}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GridScale"}}</label>
|
||||
<div class="form-fields">
|
||||
<label class="grid-label">{{localize "SCENES.GridDistance"}}</label>
|
||||
{{numberInput data.grid.distance name="grid.distance" placeholder=1}}
|
||||
<label class="grid-label">{{localize "SCENES.GridUnits"}}</label>
|
||||
<input type="text" name="grid.units" placeholder="{{localize "None"}}" value="{{data.grid.units}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GridStyle"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="grid.style">
|
||||
{{ selectOptions gridStyles selected=data.grid.style labelAttr="label" localize=true }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GridThickness"}}</label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.grid.thickness name="grid.thickness" placeholder=1}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GridColor"}}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="grid.color" value="{{data.grid.color}}" placeholder="#000000"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GridOpacity"}}</label>
|
||||
<div class="form-fields">
|
||||
<range-picker name="grid.alpha" value="{{data.grid.alpha}}" min="0" max="1" step="0.05"></range-picker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Lighting and Vision -->
|
||||
<div class="tab" data-group="main" data-tab="lighting">
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.TokenVision"}}</label>
|
||||
<input type="checkbox" name="tokenVision" {{checked data.tokenVision}}/>
|
||||
<p class="notes">{{localize "SCENES.TokenVisionHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.FogExplore"}}</label>
|
||||
<input type="checkbox" name="fog.exploration" {{checked data.fog.exploration}}/>
|
||||
<p class="notes">{{localize "SCENES.FogExploreHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.FogOverlay"}}</label>
|
||||
<div class="form-fields">
|
||||
<file-picker name="fog.overlay" type="imagevideo" value="{{data.fog.overlay}}"></file-picker>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.FogOverlayHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.FogUnexploredColor"}}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="fog.colors.unexplored" value="{{data.fog.colors.unexplored}}"></color-picker>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.FogUnexploredColorHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.FogExploredColor"}}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="fog.colors.explored" value="{{data.fog.colors.explored}}"></color-picker>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.FogExploredColorHint"}}</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GlobalIllum"}}</label>
|
||||
<input type="checkbox" name="environment.globalLight.enabled" {{checked data.environment.globalLight.enabled}}/>
|
||||
<p class="notes">{{localize "SCENES.GlobalIllumHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GlobalLightThreshold"}}</label>
|
||||
<div class="form-fields">
|
||||
<range-picker name="environment.globalLight.darkness.max"
|
||||
value="{{data.environment.globalLight.darkness.max}}"
|
||||
min="0" max="1" step="0.05"></range-picker>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.GlobalLightThresholdHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.Darkness"}}</label>
|
||||
<div class="form-fields">
|
||||
<range-picker name="environment.darknessLevel" value="{{data.environment.darknessLevel}}"
|
||||
min="0" max="1" step="0.05" {{disabled data.environment.darknessLock}}></range-picker>
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.DarknessHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.ENVIRONMENT.DarknessLock"}}</label>
|
||||
<input type="checkbox" name="environment.darknessLock" {{checked data.environment.darknessLock}}/>
|
||||
<p class="notes">{{localize "SCENES.ENVIRONMENT.DarknessLockHint"}}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Ambience and Atmosphere -->
|
||||
{{> "templates/scene/parts/scene-ambience.html"}}
|
||||
|
||||
<!-- Form Submission -->
|
||||
<footer class="sheet-footer">
|
||||
<button type="reset" {{#unless isEnvironment}}class="hidden"{{/unless}}>
|
||||
<i class="fas fa-undo"></i> {{ localize "SCENES.ENVIRONMENT.ResetEnvironment" }}
|
||||
</button>
|
||||
<button type="submit">
|
||||
<i class="far fa-save"></i> {{ localize "SETTINGS.Save" }}
|
||||
</button>
|
||||
</footer>
|
||||
</form>
|
||||
64
resources/app/templates/scene/default-token-config.html
Normal file
64
resources/app/templates/scene/default-token-config.html
Normal file
@@ -0,0 +1,64 @@
|
||||
<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="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.CharShowNameplate"}}</label>
|
||||
<select name="displayName" data-dtype="Number">
|
||||
{{selectOptions displayModes selected=object.displayName }}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TOKEN.Disposition"}}</label>
|
||||
<select name="disposition" data-dtype="Number">
|
||||
{{selectOptions dispositions selected=object.disposition }}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TOKEN.LockRotation"}}</label>
|
||||
<input type="checkbox" name="lockRotation" {{checked object.lockRotation}}/>
|
||||
</div>
|
||||
|
||||
<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="Kobold"}}</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="Kobold"}}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Vision -->
|
||||
{{> "templates/scene/parts/token-vision.html"}}
|
||||
|
||||
<!-- Light -->
|
||||
{{> "templates/scene/parts/token-lighting.hbs"}}
|
||||
|
||||
<!-- Resource Bars -->
|
||||
{{> "templates/scene/parts/token-resources.html"}}
|
||||
|
||||
<footer class="sheet-footer flexrow">
|
||||
<button type="submit">
|
||||
<i class="far fa-save"></i> {{localize "SETTINGS.Save"}}
|
||||
</button>
|
||||
<button type="button" data-action="reset">
|
||||
<i class="fas fa-undo"></i> {{localize "SETTINGS.Reset"}}
|
||||
</button>
|
||||
</footer>
|
||||
</form>
|
||||
176
resources/app/templates/scene/drawing-config.html
Normal file
176
resources/app/templates/scene/drawing-config.html
Normal file
@@ -0,0 +1,176 @@
|
||||
<form class="flexcol" autocomplete="off">
|
||||
|
||||
<!-- Sheet Navigation Tabs -->
|
||||
<nav class="sheet-tabs tabs" aria-role="{{localize 'SHEETS.FormNavLabel'}}">
|
||||
{{#unless isDefault}}
|
||||
<a class="item" data-tab="position"><i class="fas fa-map-marker-alt"></i> {{ localize "DRAWING.TabPosition" }}</a>
|
||||
{{/unless}}
|
||||
<a class="item" data-tab="lines"><i class="fas fa-paint-brush"></i> {{ localize "DRAWING.TabLines" }}</a>
|
||||
<a class="item" data-tab="fill"><i class="fas fa-fill-drip"></i> {{ localize "DRAWING.TabFill" }}</a>
|
||||
<a class="item" data-tab="text"><i class="fas fa-font"></i> {{ localize "DRAWING.TabText" }}</a>
|
||||
</nav>
|
||||
|
||||
<!-- Position Tab -->
|
||||
{{#unless isDefault}}
|
||||
<div class="tab" data-tab="position">
|
||||
<p class="notes">{{ localize "DRAWING.NotePosition" }}</p>
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.Author" }}</label>
|
||||
<input type="text" name="author" value="{{author}}" disabled/>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "XCoord" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
{{numberInput object.x name="x" step=1}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "YCoord" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
{{numberInput object.y name="y" step=1}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.Width" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
{{numberInput object.shape.width name="shape.width" step="1"}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.Height" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
{{numberInput object.shape.height name="shape.height" step="1"}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.Rotation" }} <span class="units">({{ localize "Degrees" }})</span></label>
|
||||
{{numberInput object.rotation name="rotation" step=1}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "Elevation"}} <span class="units">({{gridUnits}})</span></label>
|
||||
{{numberInput object.elevation name="elevation" placeholder=gridUnits}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "Sort" }}</label>
|
||||
{{numberInput object.sort name="sort" step=1}}
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.Role" }}</label>
|
||||
<select name="drawingRole">
|
||||
{{selectOptions drawingRoles selected=currentRole localize=true}}
|
||||
</select>
|
||||
<p class="hint">{{ localize "DRAWING.RoleHint" }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<!-- Lines Tab -->
|
||||
<div class="tab" data-tab="lines">
|
||||
<p class="notes">{{ localize "DRAWING.NoteLines" }}</p>
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.LineWidth" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
{{numberInput object.strokeWidth name="strokeWidth" step=1}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.StrokeColor" }}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="strokeColor" value="{{object.strokeColor}}" placeholder="{{userColor}}"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.LineOpacity" }}</label>
|
||||
<div class="form-fields">
|
||||
{{rangePicker name="strokeAlpha" value=object.strokeAlpha min="0" max="1" step="0.1"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.SmoothingFactor" }}</label>
|
||||
<div class="form-fields">
|
||||
{{rangePicker name="bezierFactor" value=scaledBezierFactor min="0" max="1" step="0.1"}}
|
||||
</div>
|
||||
<p class="notes">{{ localize "DRAWING.SmoothingFactorHint" }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Fill Tab -->
|
||||
<div class="tab" data-tab="fill">
|
||||
<p class="notes">{{ localize "DRAWING.NoteFill" }}</p>
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.FillTypes" }}</label>
|
||||
<select name="fillType" data-dtype="Number">
|
||||
{{selectOptions fillTypes selected=object.fillType localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.FillColor" }}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="fillColor" value="{{object.fillColor}}" placeholder="{{userColor}}"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.FillOpacity" }}</label>
|
||||
<div class="form-fields">
|
||||
{{rangePicker name="fillAlpha" value=object.fillAlpha min="0" max="1" step="0.1"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.FillTexture" }}</label>
|
||||
<div class="form-fields">
|
||||
<file-picker name="texture" type="image" value="{{object.texture}}"></file-picker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Text Tab -->
|
||||
<div class="tab" data-tab="text">
|
||||
<p class="notes">{{ localize "DRAWING.NoteText" }}</p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.TextLabel" }}</label>
|
||||
<input type="text" name="text" value="{{object.text}}"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.FontFamily" }}</label>
|
||||
<select name="fontFamily">
|
||||
{{selectOptions fontFamilies selected=object.fontFamily}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.FontSize" }}</label>
|
||||
{{numberInput object.fontSize name="fontSize" step=1}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.TextColor" }}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="textColor" value="{{object.textColor}}" placeholder="#ffffff"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DRAWING.TextOpacity" }}</label>
|
||||
<div class="form-fields">
|
||||
{{rangePicker name="textAlpha" value=object.textAlpha min="0" max="1" step="0.1"}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Sheet Footer -->
|
||||
<footer class="sheet-footer flexrow">
|
||||
{{#if options.configureDefault}}
|
||||
<button type="reset" name="reset">
|
||||
<i class="fas fa-undo"></i> {{ localize "DRAWING.SubmitReset" }}
|
||||
</button>
|
||||
{{/if}}
|
||||
<button type="submit"><i class="far fa-save"></i> {{localize submitText}}</button>
|
||||
</footer>
|
||||
</form>
|
||||
48
resources/app/templates/scene/grid-config.html
Normal file
48
resources/app/templates/scene/grid-config.html
Normal file
@@ -0,0 +1,48 @@
|
||||
<form autocomplete="off">
|
||||
<p class="notes">{{localize "SCENES.GridConfigToolHint"}}</p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.GridType"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="grid.type" data-dtype="Number">
|
||||
{{selectOptions gridTypes selected=scene.grid.type localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.BackgroundScale" }}</label>
|
||||
<div class="form-fields">
|
||||
{{numberInput scale name="scale"}}
|
||||
</div>
|
||||
<p class="notes">{{localize "SCENES.BackgroundScaleHint"}}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.GridSize" }}</label>
|
||||
<div class="form-fields">
|
||||
{{numberInput scene.grid.size name="grid.size" min=50 step=1}}
|
||||
</div>
|
||||
<p class="notes">{{ localize "SCENES.GridResizeHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.GridPosition" }}</label>
|
||||
<div class="form-fields">
|
||||
<label>x</label>
|
||||
{{numberInput scene.background.offsetX name="background.offsetX"}}
|
||||
<label>y</label>
|
||||
{{numberInput scene.background.offsetY name="background.offsetY"}}
|
||||
</div>
|
||||
<p class="notes">{{ localize "SCENES.GridPositionHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="reset" name="reset">
|
||||
<i class="fas fa-sync"></i> {{ localize "SCENES.GridReset" }}
|
||||
</button>
|
||||
<button type="submit">
|
||||
<i class="fas fa-save"></i> {{ localize "SETTINGS.Save" }}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
124
resources/app/templates/scene/note-config.html
Normal file
124
resources/app/templates/scene/note-config.html
Normal file
@@ -0,0 +1,124 @@
|
||||
<form autocomplete="off">
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DOCUMENT.JournalEntry" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="entryId">
|
||||
{{selectOptions entries selected=data.entryId valueAttr="id" labelAttr="name" blank=""}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "JOURNALENTRYPAGE.Page"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="pageId">
|
||||
{{selectOptions pages selected=data.pageId valueAttr="id" labelAttr="name" blank=""}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "NOTE.TextLabel" }}</label>
|
||||
<div class="form-fields">
|
||||
<input type="text" name="text" value="{{data.text}}" placeholder="{{label}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "XCoord" }}</label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.x name="x"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "YCoord" }}</label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.y name="y"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "Elevation"}} <span class="units">({{gridUnits}})</span></label>
|
||||
{{numberInput data.elevation name="elevation" placeholder=gridUnits}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "Sort" }}</label>
|
||||
{{numberInput data.sort name="sort" step=1}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "NOTE.Global" }}</label>
|
||||
<div class="form-fields">
|
||||
<input type="checkbox" name="global" {{checked data.global}}>
|
||||
</div>
|
||||
<p class="notes">{{ localize "NOTE.GlobalHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "NOTE.EntryIcon" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="icon.selected">
|
||||
{{selectOptions icons selected=icon.selected valueAttr="src" labelAttr="label"}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "NOTE.CustomIcon" }}</label>
|
||||
<div class="form-fields">
|
||||
<file-picker name="icon.custom" type="image" value="{{icon.custom}}"></file-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "NOTE.IconSize" }} <span class="units">({{localize "Pixels"}})</span></label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.iconSize name="iconSize"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "NOTE.IconTint" }}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="texture.tint" value="{{data.texture.tint}}" placeholder="#ffffff"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="fontFamily">{{ localize "NOTE.FontFamily" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="fontFamily">
|
||||
{{selectOptions fontFamilies selected=data.fontFamily}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "NOTE.FontSize" }}</label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.fontSize name="fontSize"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="textColor">{{ localize "NOTE.TextColor" }}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="textColor" value="{{data.textColor}}" placeholder="#ffffff"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "NOTE.AnchorPoint" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="textAnchor" data-dtype="Number">
|
||||
{{selectOptions textAnchors selected=data.textAnchor}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit">
|
||||
<i class="far fa-save"></i> {{ submitText }}
|
||||
</button>
|
||||
</form>
|
||||
20
resources/app/templates/scene/parts/light-advanced.hbs
Normal file
20
resources/app/templates/scene/parts/light-advanced.hbs
Normal file
@@ -0,0 +1,20 @@
|
||||
<section class="tab standard-form scrollable {{tabs.advanced.cssClass}}"
|
||||
data-tab="advanced" data-group="{{tabs.advanced.group}}">
|
||||
{{#if isDarkness}}
|
||||
<p class="hint">
|
||||
<i class="fa-solid fa-exclamation-triangle"></i>
|
||||
{{localize "AMBIENT_LIGHT.LABELS.darknessAdvancedWarning"}}
|
||||
</p>
|
||||
{{/if}}
|
||||
<fieldset {{disabled isDarkness}}>
|
||||
<legend>{{ localize "AMBIENT_LIGHT.SECTIONS.ADVANCED" }}</legend>
|
||||
{{formGroup fields.vision value=source.vision}}
|
||||
{{formGroup fields.config.fields.coloration value=source.config.coloration
|
||||
choices=colorationTechniques valueAttr="id" labelAttr="label" localize=true}}
|
||||
{{formGroup fields.config.fields.luminosity value=source.config.luminosity step=0.05}}
|
||||
{{formGroup fields.config.fields.attenuation value=source.config.attenuation step=0.05}}
|
||||
{{formGroup fields.config.fields.saturation value=source.config.saturation step=0.05}}
|
||||
{{formGroup fields.config.fields.contrast value=source.config.contrast step=0.05}}
|
||||
{{formGroup fields.config.fields.shadows value=source.config.shadows step=0.05}}
|
||||
</fieldset>
|
||||
</section>
|
||||
12
resources/app/templates/scene/parts/light-animation.hbs
Normal file
12
resources/app/templates/scene/parts/light-animation.hbs
Normal file
@@ -0,0 +1,12 @@
|
||||
<section class="tab standard-form scrollable {{tabs.animation.cssClass}}"
|
||||
data-tab="animation" data-group="{{tabs.animation.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ localize "AMBIENT_LIGHT.SECTIONS.ANIMATION" }}</legend>
|
||||
{{formGroup fields.config.fields.animation.fields.type value=source.config.animation.type
|
||||
choices=lightAnimations labelAttr="label" blank="None" sort=true localize=true}}
|
||||
{{formGroup fields.config.fields.animation.fields.speed value=source.config.animation.speed}}
|
||||
{{formGroup fields.config.fields.animation.fields.reverse value=source.config.animation.reverse}}
|
||||
{{formGroup fields.config.fields.animation.fields.intensity value=source.config.animation.intensity}}
|
||||
</fieldset>
|
||||
</section>
|
||||
50
resources/app/templates/scene/parts/light-basic.hbs
Normal file
50
resources/app/templates/scene/parts/light-basic.hbs
Normal file
@@ -0,0 +1,50 @@
|
||||
<section class="tab standard-form scrollable {{tabs.basic.cssClass}}"
|
||||
data-tab="basic" data-group="{{tabs.basic.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ localize "AMBIENT_LIGHT.SECTIONS.PLACEMENT" }}</legend>
|
||||
<div class="form-group slim">
|
||||
<label>{{localize "Coordinates"}} <span class="units">({{localize "Pixels"}})</span></label>
|
||||
<div class="form-fields">
|
||||
<label>{{fields.x.label}}</label>
|
||||
{{formInput fields.x value=source.x}}
|
||||
<label>{{fields.y.label}}</label>
|
||||
{{formInput fields.y value=source.y}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{formGroup fields.elevation value=source.elevation classes="slim" units=gridUnits}}
|
||||
|
||||
<div class="form-group slim">
|
||||
<label>{{localize "AMBIENT_LIGHT.LABELS.radius"}} <span class="units">({{gridUnits}})</span></label>
|
||||
<div class="form-fields">
|
||||
<label>{{fields.config.fields.dim.label}}</label>
|
||||
{{formInput fields.config.fields.dim value=source.config.dim}}
|
||||
<label>{{fields.config.fields.bright.label}}</label>
|
||||
{{formInput fields.config.fields.bright value=source.config.bright}}
|
||||
</div>
|
||||
<p class="hint">{{ localize 'AMBIENT_LIGHT.LABELS.radiusHint' }}</p>
|
||||
</div>
|
||||
|
||||
{{formGroup fields.walls value=source.walls}}
|
||||
{{formGroup fields.config.fields.angle value=source.config.angle step=1 units="Degrees"}}
|
||||
{{formGroup fields.rotation value=source.rotation step=1 units="Degrees"}}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ localize "AMBIENT_LIGHT.SECTIONS.APPEARANCE" }}</legend>
|
||||
{{formGroup fields.config.fields.negative value=source.config.negative}}
|
||||
{{formGroup fields.config.fields.color value=source.config.color}}
|
||||
{{formGroup fields.config.fields.alpha value=source.config.alpha step=0.05}}
|
||||
<div class="form-group slim">
|
||||
<label>{{fields.config.fields.darkness.label}}</label>
|
||||
<div class="form-fields">
|
||||
<label>{{fields.config.fields.darkness.fields.min.label}}</label>
|
||||
{{formInput fields.config.fields.darkness.fields.min value=source.config.darkness.min placeholder="0"}}
|
||||
<label>{{fields.config.fields.darkness.fields.max.label}}</label>
|
||||
{{formInput fields.config.fields.darkness.fields.max value=source.config.darkness.max placeholder="1"}}
|
||||
</div>
|
||||
<p class="hint">{{fields.config.fields.darkness.hint}}</p>
|
||||
</div>
|
||||
</fieldset>
|
||||
</section>
|
||||
37
resources/app/templates/scene/parts/region-behaviors.hbs
Normal file
37
resources/app/templates/scene/parts/region-behaviors.hbs
Normal file
@@ -0,0 +1,37 @@
|
||||
<section class="tab region-{{tab.id}} flexcol {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
<header class="region-element region-behavior flexrow">
|
||||
<div class="region-element-name">{{localize "REGION.Behavior"}}</div>
|
||||
<div class="region-element-controls">
|
||||
<a class="region-control" data-action="behaviorCreate"
|
||||
data-tooltip="REGION.ACTIONS.behaviorCreate" aria-label="{{localize "REGION.ACTIONS.behaviorCreate"}}">
|
||||
<i class="fa-solid fa-plus fa-fw"></i>
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="standard-form scrollable">
|
||||
{{#each behaviors as |behavior|}}
|
||||
<fieldset class="region-element region-behavior flexrow {{#if behavior.disabled}}inactive{{/if}}"
|
||||
data-behavior-id="{{behavior.id}}" aria-label="{{behavior.name}}">
|
||||
<a class="region-element-name" data-action="behaviorEdit">
|
||||
<i class="{{behavior.typeIcon}} fa-fw" data-tooltip="{{behavior.typeLabel}}"></i>
|
||||
{{behavior.name}}
|
||||
</a>
|
||||
<div class="region-element-controls">
|
||||
<a class="control fa-solid {{#if behavior.disabled}}fa-toggle-off{{else}}fa-toggle-on{{/if}} fa-fw"
|
||||
data-action="behaviorToggle"
|
||||
{{#if behavior.disabled}}
|
||||
data-tooltip="REGION.ACTIONS.behaviorEnable" aria-label="{{localize "REGION.ACTIONS.behaviorEnable"}}"
|
||||
{{else}}
|
||||
data-tooltip="REGION.ACTIONS.behaviorDisable" aria-label="{{localize "REGION.ACTIONS.behaviorDisable"}}"
|
||||
{{/if}}
|
||||
></a>
|
||||
<a class="control fa-solid fa-edit fa-fw" data-action="behaviorEdit"
|
||||
data-tooltip="REGION.ACTIONS.behaviorEdit" aria-label="{{localize "REGION.ACTIONS.behaviorEdit"}}"></a>
|
||||
<a class="control fa-solid fa-trash fa-fw" data-action="behaviorDelete"
|
||||
data-tooltip="REGION.ACTIONS.behaviorDelete" aria-label="{{localize "REGION.ACTIONS.behaviorDelete"}}"></a>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{/each}}
|
||||
</div>
|
||||
</section>
|
||||
23
resources/app/templates/scene/parts/region-identity.hbs
Normal file
23
resources/app/templates/scene/parts/region-identity.hbs
Normal file
@@ -0,0 +1,23 @@
|
||||
<section class="tab region-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
{{formField fields.name value=source.name placeholder=source.name localize=true}}
|
||||
{{formField fields.color value=source.color localize=true}}
|
||||
|
||||
<div class="form-group slim">
|
||||
<label>{{localize "REGION.FIELDS.elevation.label"}}</label>
|
||||
<div class="form-fields">
|
||||
<label>{{localize "REGION.FIELDS.elevation.FIELDS.bottom.label"}}</label>
|
||||
<input name="elevation.bottom" type="number" value="{{source.elevation.bottom}}"
|
||||
class="placeholder-fa-solid" placeholder=" " step="any"
|
||||
data-tooltip="{{localize "REGION.FIELDS.elevation.FIELDS.bottom.hint"}}"
|
||||
aria-label="{{localize "REGION.FIELDS.elevation.FIELDS.bottom.hint"}}">
|
||||
<label>{{localize "REGION.FIELDS.elevation.FIELDS.top.label"}}</label>
|
||||
<input name="elevation.top" type="number" value="{{source.elevation.top}}"
|
||||
class="placeholder-fa-solid" placeholder="+ " step="any"
|
||||
data-tooltip="{{localize "REGION.FIELDS.elevation.FIELDS.top.hint"}}"
|
||||
aria-label="{{localize "REGION.FIELDS.elevation.FIELDS.top.hint"}}">
|
||||
</div>
|
||||
<p class="hint">{{localize "REGION.FIELDS.elevation.hint"}}</p>
|
||||
</div>
|
||||
|
||||
{{formField fields.visibility value=source.visibility localize=true}}
|
||||
</section>
|
||||
34
resources/app/templates/scene/parts/region-shapes.hbs
Normal file
34
resources/app/templates/scene/parts/region-shapes.hbs
Normal file
@@ -0,0 +1,34 @@
|
||||
<section class="tab region-{{tab.id}} flexcol {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
<header class="region-element region-shape flexrow">
|
||||
<div class="region-element-name">{{localize "REGION.Shape"}}</div>
|
||||
<div class="region-element-controls">
|
||||
<a class="control" data-action="shapeCreateFromWalls"
|
||||
data-tooltip="REGION.ACTIONS.shapeCreateFromWalls" aria-label="{{localize "REGION.ACTIONS.shapeCreateFromWalls"}}">
|
||||
<i class="fa-solid fa-plus"></i><i class="fa-solid fa-block-brick fa-fw"></i>
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="standard-form scrollable">
|
||||
{{#each source.shapes as |shape i|}}
|
||||
<fieldset class="region-element region-shape flexrow" data-shape-index="{{i}}" aria-label="{{localize "REGION.Shape"}} {{i}}">
|
||||
<span class="region-element-name">{{localize (concat "REGION.SHAPES." shape.type)}}</span>
|
||||
<div class="region-element-controls">
|
||||
<a class="control {{#if shape.hole}}fa-regular{{else}}fa-solid{{/if}} fa-circle fa-fw" data-action="shapeToggleHole"
|
||||
{{#if shape.hole}}
|
||||
data-tooltip="REGION.ACTIONS.shapeFillHole" aria-label="{{localize "REGION.ACTIONS.shapeFillHole"}}"
|
||||
{{else}}
|
||||
data-tooltip="REGION.ACTIONS.shapeMakeHole" aria-label="{{localize "REGION.ACTIONS.shapeMakeHole"}}"
|
||||
{{/if}}
|
||||
></a>
|
||||
<a class="control fa-solid fa-arrow-up fa-fw" data-action="shapeMoveUp"
|
||||
data-tooltip="REGION.ACTIONS.shapeMoveUp" aria-label="{{localize "REGION.ACTIONS.shapeMoveUp"}}"></a>
|
||||
<a class="control fa-solid fa-arrow-down fa-fw" data-action="shapeMoveDown"
|
||||
data-tooltip="REGION.ACTIONS.shapeMoveDown" aria-label="{{localize "REGION.ACTIONS.shapeMoveDown"}}"></a>
|
||||
<a class="control fa-solid fa-trash fa-fw" data-action="shapeRemove"
|
||||
data-tooltip="REGION.ACTIONS.shapeRemove" aria-label="{{localize "REGION.ACTIONS.shapeRemove"}}"></a>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{/each}}
|
||||
</div>
|
||||
</section>
|
||||
145
resources/app/templates/scene/parts/scene-ambience.html
Normal file
145
resources/app/templates/scene/parts/scene-ambience.html
Normal file
@@ -0,0 +1,145 @@
|
||||
<div class="tab" data-group="main" data-tab="ambience">
|
||||
<nav class="tabs sheet-tabs secondary-tabs" data-group="ambience" aria-role="{{localize 'LIGHT.NavLabel'}}">
|
||||
<a class="item" data-tab="basic" data-group="ambience"><i class="fas fa-chart-simple"></i> {{ localize "SCENES.HeaderAmbienceBasic" }}</a>
|
||||
<a class="item" data-tab="environment" data-group="ambience"><i class="fa-regular fa-face-clouds"></i> {{ localize "SCENES.ENVIRONMENT.HeaderLabel" }}</a>
|
||||
</nav>
|
||||
|
||||
<div class="tab" data-group="ambience" data-tab="basic">
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.JournalEntry"}}</label>
|
||||
<select name="journal">
|
||||
{{ selectOptions journals selected=data.journal blank="" valueAttr="id" labelAttr="name"}}
|
||||
</select>
|
||||
<p class="notes">{{ localize "SCENES.JournalEntryHint" }}</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ localize "JOURNALENTRYPAGE.Page" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="journalEntryPage">
|
||||
{{ selectOptions pages selected=data.journalEntryPage valueAttr="id" labelAttr="name" blank="" }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.AudioPlaylist"}}</label>
|
||||
<select name="playlist">
|
||||
{{ selectOptions playlists selected=data.playlist blank="" valueAttr="id" labelAttr="name"}}
|
||||
</select>
|
||||
<p class="notes">{{ localize "SCENES.AudioPlaylistHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.PlaylistSound"}}</label>
|
||||
<select name="playlistSound">
|
||||
{{ selectOptions sounds selected=playlistSound blank="" valueAttr="id" labelAttr="name"}}
|
||||
</select>
|
||||
<p class="notes">{{ localize "SCENES.PlaylistSoundHint" }}</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.WeatherEffect" }}</label>
|
||||
<select name="weather">
|
||||
{{ selectOptions weatherTypes selected=data.weather blank="" }}
|
||||
</select>
|
||||
<p class="notes">{{ localize "SCENES.WeatherEffectHint" }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab" data-group="ambience" data-tab="environment">
|
||||
|
||||
<h3>{{localize "SCENES.ENVIRONMENT.BaseAmbience"}}</h3>
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Luminosity" }}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="environment.base.luminosity" value=data.environment.base.luminosity min="-1" max="1" step="0.05" }}
|
||||
</div>
|
||||
<p class="hint">{{ localize "SCENES.ENVIRONMENT.LuminosityHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Saturation" }}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="environment.base.saturation" value=data.environment.base.saturation min="-1" max="1" step="0.05" }}
|
||||
</div>
|
||||
<p class="hint">{{ localize "SCENES.ENVIRONMENT.SaturationHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Shadows" }}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="environment.base.shadows" value=data.environment.base.shadows min="0" max="1" step="0.05" }}
|
||||
</div>
|
||||
<p class="hint">{{ localize "SCENES.ENVIRONMENT.ShadowsHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Hue" }}</label>
|
||||
<div class="form-fields">
|
||||
<hue-slider name="environment.base.hue" value="{{data.environment.base.hue}}" {{ disabled baseHueSliderDisabled }}></hue-slider>
|
||||
</div>
|
||||
<p class="hint">{{ localize "SCENES.ENVIRONMENT.HueHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Intensity" }}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="environment.base.intensity" value=data.environment.base.intensity min="0" max="1" step="0.05" }}
|
||||
</div>
|
||||
<p class="hint">{{ localize "SCENES.ENVIRONMENT.IntensityHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "SCENES.ENVIRONMENT.BlendAmbience"}}</label>
|
||||
<input type="checkbox" name="environment.cycle" {{checked data.environment.cycle}}/>
|
||||
<p class="notes">{{localize "SCENES.ENVIRONMENT.BlendAmbienceHint"}}</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<h3>{{localize "SCENES.ENVIRONMENT.DarkAmbience"}}</h3>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Luminosity" }}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="environment.dark.luminosity" value=data.environment.dark.luminosity min="-1" max="1" step="0.05" }}
|
||||
</div>
|
||||
<!-- <p class="hint">{{ localize "SCENES.ENVIRONMENT.LuminosityHint" }}</p> -->
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Saturation" }}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="environment.dark.saturation" value=data.environment.dark.saturation min="-1" max="1" step="0.05" }}
|
||||
</div>
|
||||
<!-- <p class="hint">{{ localize "SCENES.ENVIRONMENT.SaturationHint" }}</p> -->
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Shadows" }}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="environment.dark.shadows" value=data.environment.dark.shadows min="0" max="1" step="0.05" }}
|
||||
</div>
|
||||
<!-- <p class="hint">{{ localize "SCENES.ENVIRONMENT.ShadowsHint" }}</p> -->
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Hue" }}</label>
|
||||
<div class="form-fields">
|
||||
<hue-slider name="environment.dark.hue" value="{{data.environment.dark.hue}}" {{ disabled darknessHueSliderDisabled }}></hue-slider>
|
||||
</div>
|
||||
<!-- <p class="hint">{{ localize "SCENES.ENVIRONMENT.HueHint" }}</p> -->
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "SCENES.ENVIRONMENT.Intensity" }}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="environment.dark.intensity" value=data.environment.dark.intensity min="0" max="1" step="0.05" }}
|
||||
</div>
|
||||
<!-- <p class="hint">{{ localize "SCENES.ENVIRONMENT.IntensityHint" }}</p> -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
42
resources/app/templates/scene/parts/token-lighting.hbs
Normal file
42
resources/app/templates/scene/parts/token-lighting.hbs
Normal file
@@ -0,0 +1,42 @@
|
||||
<div class="tab" data-group="main" data-tab="light">
|
||||
<nav class="tabs sheet-tabs secondary-tabs" data-group="light" aria-role="{{localize 'LIGHT.NavLabel'}}">
|
||||
<a class="item" data-tab="basic" data-group="light"><i class="fas fa-lightbulb"></i> {{localize "AMBIENT_LIGHT.SECTIONS.BASIC"}}</a>
|
||||
<a class="item" data-tab="animation" data-group="light"><i class="fas fa-play"></i> {{localize "AMBIENT_LIGHT.SECTIONS.ANIMATION"}}</a>
|
||||
<a class="item" data-tab="advanced" data-group="light"><i class="fas fa-cogs"></i> {{localize "AMBIENT_LIGHT.SECTIONS.ADVANCED"}}</a>
|
||||
</nav>
|
||||
|
||||
<div class="tab" data-group="light" data-tab="basic">
|
||||
<div class="form-group slim">
|
||||
<label>{{localize "AMBIENT_LIGHT.LABELS.radius"}} <span class="units">({{gridUnits}})</span></label>
|
||||
<div class="form-fields">
|
||||
<label>{{lightFields.dim.label}}</label>
|
||||
{{formInput lightFields.dim value=object.light.dim}}
|
||||
<label>{{lightFields.bright.label}}</label>
|
||||
{{formInput lightFields.bright value=object.light.bright}}
|
||||
</div>
|
||||
<p class="hint">{{ localize 'AMBIENT_LIGHT.LABELS.radiusHint' }}</p>
|
||||
</div>
|
||||
|
||||
{{formGroup lightFields.angle value=object.light.angle step=1 units="Degrees"}}
|
||||
{{formGroup lightFields.color value=object.light.color}}
|
||||
{{formGroup lightFields.alpha value=object.light.alpha step=0.05}}
|
||||
</div>
|
||||
|
||||
<div class="tab" data-group="light" data-tab="animation">
|
||||
{{formGroup lightFields.animation.fields.type value=object.light.animation.type
|
||||
choices=lightAnimations labelAttr="label" blank="None" sort=true localize=true}}
|
||||
{{formGroup lightFields.animation.fields.speed value=object.light.animation.speed}}
|
||||
{{formGroup lightFields.animation.fields.reverse value=object.light.animation.reverse}}
|
||||
{{formGroup lightFields.animation.fields.intensity value=object.light.animation.intensity}}
|
||||
</div>
|
||||
|
||||
<div class="tab" data-group="light" data-tab="advanced">
|
||||
{{formGroup lightFields.coloration value=object.light.coloration
|
||||
choices=colorationTechniques valueAttr="id" labelAttr="label" localize=true}}
|
||||
{{formGroup lightFields.luminosity value=object.light.luminosity step=0.05}}
|
||||
{{formGroup lightFields.attenuation value=object.light.attenuation step=0.05}}
|
||||
{{formGroup lightFields.saturation value=object.light.saturation step=0.05}}
|
||||
{{formGroup lightFields.contrast value=object.light.contrast step=0.05}}
|
||||
{{formGroup lightFields.shadows value=object.light.shadows step=0.05}}
|
||||
</div>
|
||||
</div>
|
||||
50
resources/app/templates/scene/parts/token-resources.html
Normal file
50
resources/app/templates/scene/parts/token-resources.html
Normal file
@@ -0,0 +1,50 @@
|
||||
<div class="tab" data-group="main" data-tab="resources">
|
||||
<div class="form-group">
|
||||
<label>{{localize "TOKEN.ResourceDisplay"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="displayBars" data-dtype="Number">
|
||||
{{selectOptions displayModes selected=object.displayBars}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TOKEN.ResourceBar1A"}}</label>
|
||||
<div class="form-fields">
|
||||
<select class="bar-attribute" name="bar1.attribute">
|
||||
{{selectOptions barAttributes selected=bar1.attribute blank=(localize "None")}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#unless isDefault}}
|
||||
<div class="form-group">
|
||||
<label>{{localize "TOKEN.ResourceBar1D"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="number" class="bar1-value" value="{{bar1.value}}" disabled>
|
||||
<span class="sep">/</span>
|
||||
<input type="number" class="bar1-max" value="{{bar1.max}}" disabled>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TOKEN.ResourceBar2A"}}</label>
|
||||
<div class="form-fields">
|
||||
<select class="bar-attribute" name="bar2.attribute">
|
||||
{{selectOptions barAttributes selected=bar2.attribute blank=(localize "None")}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#unless isDefault}}
|
||||
<div class="form-group">
|
||||
<label>{{localize "TOKEN.ResourceBar2D"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="number" class="bar2-value" value="{{bar2.value}}" disabled>
|
||||
<span class="sep">/</span>
|
||||
<input type="number" class="bar2-max" value="{{bar2.max}}" disabled>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
</div>
|
||||
136
resources/app/templates/scene/parts/token-vision.html
Normal file
136
resources/app/templates/scene/parts/token-vision.html
Normal file
@@ -0,0 +1,136 @@
|
||||
<div class="tab" data-group="main" data-tab="vision">
|
||||
<nav class="tabs sheet-tabs secondary-tabs" data-group="vision" aria-role="{{localize 'TOKEN.SightNavLabel'}}">
|
||||
<a class="item" data-tab="basic" data-group="vision"><i class="fa-solid fa-eye"></i> {{localize "TOKEN.SightHeaderBasic"}}</a>
|
||||
<a class="item" data-tab="detection" data-group="vision"><i class="fa-solid fa-radar"></i> {{localize "TOKEN.SightHeaderDetection"}}</a>
|
||||
<a class="item" data-tab="advanced" data-group="vision"><i class="fa-solid fa-cogs"></i> {{localize "TOKEN.SightHeaderAdvanced"}}</a>
|
||||
</nav>
|
||||
|
||||
<div class="tab" data-group="vision" data-tab="basic">
|
||||
<div class="form-group">
|
||||
<label>{{localize "TOKEN.VisionEnabled"}}</label>
|
||||
<input type="checkbox" name="sight.enabled" {{checked object.sight.enabled}}>
|
||||
<p class="hint">{{ localize 'TOKEN.VisionEnabledHint' }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group slim">
|
||||
<label>{{localize "TOKEN.VisionRange"}} <span class="units">({{gridUnits}})</span></label>
|
||||
<div class="form-fields">
|
||||
<input name="sight.range" type="number" value="{{object.sight.range}}" class="placeholder-fa-solid" class="placeholder-fa-solid" placeholder="" min="0" step="any">
|
||||
</div>
|
||||
<p class="hint">{{ localize 'TOKEN.VisionRangeHint' }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group slim">
|
||||
<label>{{localize "TOKEN.VisionAngle"}} <span class="units">({{localize "Degrees"}})</span></label>
|
||||
<div class="form-fields">
|
||||
{{numberInput object.sight.angle name="sight.angle" placeholder=(localize "Degrees")}}
|
||||
</div>
|
||||
<p class="hint">{{ localize 'TOKEN.VisionAngleHint' }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "TOKEN.VisionMode"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="sight.visionMode">
|
||||
{{selectOptions visionModes selected=object.sight.visionMode valueAttr="id" labelAttr="label"
|
||||
localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
<p class="hint">{{ localize 'TOKEN.VisionModeHint' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab detection-modes" data-group="vision" data-tab="detection">
|
||||
<header class="detection-mode">
|
||||
<div class="detection-mode-id">{{localize "TOKEN.DetectionMode"}}</div>
|
||||
<div class="detection-mode-range">{{localize "TOKEN.DetectionRange"}} <span class="units">({{gridUnits}})</span></div>
|
||||
<div class="detection-mode-enabled">{{localize "TOKEN.DetectionEnabled"}}</div>
|
||||
<div class="detection-mode-controls">
|
||||
<a class="action-button" data-action="addDetectionMode" data-tooltip="TOKEN.DetectionAdd">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{#each preparedDetectionModes as |mode|}}
|
||||
<fieldset class="detection-mode" disabled>
|
||||
<div class="detection-mode-id">
|
||||
<select disabled>
|
||||
{{selectOptions ../detectionModes selected=mode.id blank=""
|
||||
valueAttr="id" labelAttr="label" localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="detection-mode-range">
|
||||
<input type="number" value="{{mode.range}}" class="placeholder-fa-solid" placeholder="" min="0" step="any" disabled>
|
||||
</div>
|
||||
<div class="detection-mode-enabled">
|
||||
<input type="checkbox" {{checked mode.enabled}} disabled>
|
||||
</div>
|
||||
<div class="detection-mode-controls"></div>
|
||||
</fieldset>
|
||||
{{/each}}
|
||||
|
||||
{{#each object.detectionModes as |mode i|}}
|
||||
<fieldset class="detection-mode" data-index="{{i}}">
|
||||
<div class="detection-mode-id">
|
||||
<select name="detectionModes.{{i}}.id">
|
||||
{{selectOptions ../detectionModes selected=mode.id blank=""
|
||||
valueAttr="id" labelAttr="label" localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="detection-mode-range">
|
||||
<input name="detectionModes.{{i}}.range" type="number" value="{{mode.range}}" class="placeholder-fa-solid" placeholder="" min="0" step="any">
|
||||
</div>
|
||||
<div class="detection-mode-enabled">
|
||||
<input name="detectionModes.{{i}}.enabled" type="checkbox" {{checked mode.enabled}}>
|
||||
</div>
|
||||
<div class="detection-mode-controls">
|
||||
<a class="action-button" data-action="removeDetectionMode" data-tooltip="TOKEN.DetectionRemove">
|
||||
<i class="fa-solid fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div class="tab" data-group="vision" data-tab="advanced">
|
||||
<div class="form-group">
|
||||
<label>{{ localize "TOKEN.VisionColor" }}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="sight.color" value="{{object.sight.color}}"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize 'TOKEN.VisionAttenuation' }}</label>
|
||||
<div class="form-fields">
|
||||
{{rangePicker name="sight.attenuation" value=object.sight.attenuation min="0" max="1" step="0.05"}}
|
||||
</div>
|
||||
<p class="hint">{{ localize 'TOKEN.VisionAttenuationHint' }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize 'TOKEN.VisionBrightness' }}</label>
|
||||
<div class="form-fields">
|
||||
{{rangePicker name="sight.brightness" value=object.sight.brightness min="-1" max="1" step="0.05"}}
|
||||
</div>
|
||||
<p class="hint">{{ localize 'TOKEN.VisionBrightnessHint' }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize 'TOKEN.VisionSaturation' }}</label>
|
||||
<div class="form-fields">
|
||||
{{rangePicker name="sight.saturation" value=object.sight.saturation min="-1" max="1" step="0.05"}}
|
||||
</div>
|
||||
<p class="hint">{{ localize 'TOKEN.VisionSaturationHint' }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize 'TOKEN.VisionContrast' }}</label>
|
||||
<div class="form-fields">
|
||||
{{rangePicker name="sight.contrast" value=object.sight.contrast min="-1" max="1" step="0.05"}}
|
||||
</div>
|
||||
<p class="hint">{{ localize 'TOKEN.VisionContrastHint' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
30
resources/app/templates/scene/region-legend.hbs
Normal file
30
resources/app/templates/scene/region-legend.hbs
Normal file
@@ -0,0 +1,30 @@
|
||||
<div class="flexcol">
|
||||
<div class="region-filters flexrow" aria-label="{{localize "REGION.LEGEND.filter"}}">
|
||||
<input type="search" name="search" value="" autocomplete="off" placeholder="{{localize "REGION.LEGEND.filter"}}"
|
||||
data-tooltip="{{localize "Name"}}" aria-label="{{localize "Name"}}">
|
||||
<input name="elevationBottom" type="number" value="{{elevation.bottom}}" class="placeholder-fa-solid" placeholder=" " step="any"
|
||||
data-tooltip="{{localize "REGION.LEGEND.elevationBottom"}}" aria-label="{{localize "REGION.LEGEND.elevationBottom"}}">
|
||||
<input name="elevationTop" type="number" value="{{elevation.top}}" class="placeholder-fa-solid" placeholder="+ " step="any"
|
||||
data-tooltip="{{localize "REGION.LEGEND.elevationTop"}}" aria-label="{{localize "REGION.LEGEND.elevationTop"}}">
|
||||
<button type="button" class="icon fa-solid fa-plus" data-action="create" data-tooltip="REGION.LEGEND.create"></button>
|
||||
</div>
|
||||
<ol class="region-list flexcol scrollable">
|
||||
{{#each regions as |region|}}
|
||||
<li class="region flexrow {{#if region.controlled}}controlled{{/if}} {{#if region.hover}}hover{{/if}}" data-region-id="{{region.id}}"
|
||||
aria-label="{{region.name}}">
|
||||
<i class="region-color" style="background: {{region.color}}"></i>
|
||||
<a class="region-name" data-action="control" aria-label="{{localize "REGION.LEGEND.control"}}">
|
||||
{{region.name}}
|
||||
</a>
|
||||
{{#if region.empty}}<span class="region-meta">({{localize "REGION.LEGEND.empty"}})</span>{{/if}}
|
||||
{{#if region.elevationLabel}}<span class="region-meta">{{{region.elevationLabel}}}</span>{{/if}}
|
||||
{{#each region.buttons as |button|}}
|
||||
<button type="button" class="icon" {{button.disabled}} data-action="{{button.action}}"
|
||||
data-tooltip="{{button.tooltip}}" aria-label="{{button.tooltip}}">
|
||||
<i class="fa-solid {{button.icon}} fa-fw"></i>
|
||||
</button>
|
||||
{{/each}}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
</div>
|
||||
80
resources/app/templates/scene/template-config.html
Normal file
80
resources/app/templates/scene/template-config.html
Normal file
@@ -0,0 +1,80 @@
|
||||
<form autocomplete="off">
|
||||
<p class="notes">{{ localize "CONTROLS.MeasureConfigHint" }}</p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "CONTROLS.MeasureType" }}</label>
|
||||
<select name="t">
|
||||
{{selectOptions templateTypes selected=data.t localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "XCoord" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
{{numberInput data.x name="x" step=1 placeholder="X"}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "YCoord" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
{{numberInput data.y name="y" step=1 placeholder="Y"}}
|
||||
</div>
|
||||
|
||||
<div class="form-group slim">
|
||||
<label>{{localize "Elevation"}} <span class="units">({{gridUnits}})</span></label>
|
||||
{{numberInput data.elevation name="elevation" placeholder=gridUnits}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "Sort" }}</label>
|
||||
{{numberInput data.sort name="sort" step=1 placeholder=(localize "Sort")}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "Direction" }} <span class="units">({{ localize "Degrees" }})</span></label>
|
||||
{{numberInput data.direction name="direction" placeholder=(localize "Direction")}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "Angle" }} <span class="units">({{ localize "Degrees" }})</span></label>
|
||||
{{numberInput data.angle name="angle" placeholder=(localize "Angle")}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "Distance" }} <span class="units">({{gridUnits}})</span></label>
|
||||
{{numberInput data.distance name="distance" placeholder=(localize "Distance") min=0}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "Width" }} <span class="units">({{gridUnits}})</span></label>
|
||||
{{numberInput data.width name="width" placeholder=(localize "Width") min=0}}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "TEMPLATE.BorderColor" }}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="borderColor" value="{{data.borderColor}}" placeholder="#000000"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "TEMPLATE.FillColor" }}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="fillColor" value="{{data.fillColor}}" placeholder="{{userColor}}"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "TEMPLATE.FillTexture" }}</label>
|
||||
<div class="form-fields">
|
||||
<file-picker name="texture" type="image" value="{{data.texture}}"></file-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "Hidden"}}</label>
|
||||
<input type="checkbox" name="hidden" {{checked data.hidden}}/>
|
||||
</div>
|
||||
|
||||
<button type="submit">
|
||||
<i class="far fa-save"></i> {{ localize submitText }}
|
||||
</button>
|
||||
</form>
|
||||
165
resources/app/templates/scene/tile-config.html
Normal file
165
resources/app/templates/scene/tile-config.html
Normal file
@@ -0,0 +1,165 @@
|
||||
<form autocomplete="off">
|
||||
|
||||
<!-- Tile Configuration Tabs -->
|
||||
<nav class="sheet-tabs tabs" aria-role="{{localize 'SHEETS.FormNavLabel'}}">
|
||||
<a class="item" data-tab="basic"><i class="fas fa-cubes"></i> {{localize "TILE.BasicHeader" }}</a>
|
||||
<a class="item" data-tab="overhead"><i class="fas fa-home"></i> {{ localize "TILE.OverheadHeader" }}</a>
|
||||
<a class="item" data-tab="animation"><i class="fas fa-play"></i> {{ localize "TILE.AnimationHeader" }}</a>
|
||||
</nav>
|
||||
|
||||
<!-- Basic Configuration Tab -->
|
||||
<div class="tab" data-tab="basic">
|
||||
<p class="notes">{{ localize "TILE.BasicHint" }}</p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "TILE.Image"}}</label>
|
||||
<div class="form-fields">
|
||||
<file-picker name="texture.src" type="imagevideo" value="{{data.texture.src}}"></file-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="x">{{ localize "XCoord" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.x name="x" step=1}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="y">{{ localize "YCoord" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.y name="y" step=1}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="sort">{{ localize "Sort" }}</label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.sort name="sort" step=1}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="width">{{ localize "Width" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.width name="width" min=0 step=1}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="height">{{ localize "Height" }} <span class="units">({{ localize "Pixels" }})</span></label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.height name="height" min=0 step=1}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group slim">
|
||||
<label>{{ localize "TILE.Scale" }} <span class="units">({{localize "Ratio"}})</span></label>
|
||||
<div class="form-fields">
|
||||
<label>{{ localize "TILE.ScaleX" }}</label>
|
||||
{{numberInput data.texture.scaleX name="texture.scaleX"}}
|
||||
<label>{{ localize "TILE.ScaleY" }}</label>
|
||||
{{numberInput data.texture.scaleY name="texture.scaleY"}}
|
||||
</div>
|
||||
<p class="hint">{{ localize "TILE.ScaleHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="height">{{ localize "Rotation" }} <span class="units">({{ localize "Degrees" }})</span></label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.rotation name="rotation"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "TILE.Opacity" }}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="alpha" value=data.alpha min="0" max="1" step="0.05" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "TILE.Tint" }}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="texture.tint" value="{{data.texture.tint}}" placeholder="#ffffff"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Overhead Tab -->
|
||||
<div class="tab" data-tab="overhead">
|
||||
<p class="notes">{{ localize "TILE.OverheadHint" }}</p>
|
||||
|
||||
<div class="form-group slim">
|
||||
<label>{{localize "Elevation"}} <span class="units">({{gridUnits}})</span></label>
|
||||
<div class="form-fields">
|
||||
{{numberInput data.elevation name="elevation" placeholder=gridUnits}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TILE.OcclusionMode"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="occlusion.mode" data-dtype="Number">
|
||||
{{ selectOptions occlusionModes selected=data.occlusion.mode }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TILE.OcclusionAlpha"}}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="occlusion.alpha" value=data.occlusion.alpha min="0" max="1" step="0.05" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TILE.RestrictsLight"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="checkbox" name="restrictions.light" {{ checked data.restrictions.light }}>
|
||||
</div>
|
||||
<p class="hint">{{ localize "TILE.RestrictsLightHint" }}</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TILE.RestrictsWeather"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="checkbox" name="restrictions.weather" {{ checked data.restrictions.weather }}>
|
||||
</div>
|
||||
<p class="hint">{{ localize "TILE.RestrictsWeatherHint" }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Video Tab -->
|
||||
<div class="tab" data-tab="animation">
|
||||
<p class="notes">{{ localize "TILE.AnimationHint" }}</p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TILE.VideoLoop"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="checkbox" name="video.loop" {{ checked data.video.loop }}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TILE.VideoAutoplay"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="checkbox" name="video.autoplay" {{ checked data.video.autoplay }}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "TILE.VideoVolume"}}</label>
|
||||
<div class="form-fields">
|
||||
{{ rangePicker name="video.volume" value=data.video.volume min="0" max="1" step="0.05" }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Sheet Footer -->
|
||||
<footer class="sheet-footer flexrow">
|
||||
<button type="submit">
|
||||
<i class="far fa-save"></i> {{submitText}}
|
||||
</button>
|
||||
</footer>
|
||||
</form>
|
||||
238
resources/app/templates/scene/token-config.html
Normal file
238
resources/app/templates/scene/token-config.html
Normal file
@@ -0,0 +1,238 @@
|
||||
<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>
|
||||
102
resources/app/templates/scene/wall-config.html
Normal file
102
resources/app/templates/scene/wall-config.html
Normal file
@@ -0,0 +1,102 @@
|
||||
<form autocomplete="off">
|
||||
<p class="notes">{{localize "WALLS.Instructions"}}</p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "WALLS.Coordinates"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="text" value="({{p0.x}}, {{p0.y}}) to ({{p1.x}}, {{p1.y}})" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "WALLS.Movement"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="move" data-dtype="Number">
|
||||
{{selectOptions moveTypes selected=source.move}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "WALLS.Light"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="light" data-dtype="Number">
|
||||
{{selectOptions senseTypes selected=source.light }}
|
||||
</select>
|
||||
<input class="proximity" type="number" name="threshold.light" placeholder="{{gridUnits}}" min="0"
|
||||
value="{{source.threshold.light}}" step="any"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "WALLS.Sight"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="sight" data-dtype="Number">
|
||||
{{selectOptions senseTypes selected=source.sight }}
|
||||
</select>
|
||||
<input class="proximity" type="number" name="threshold.sight" placeholder="{{gridUnits}}" min="0"
|
||||
value="{{source.threshold.sight}}" step="any"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "WALLS.Sound"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="sound" data-dtype="Number">
|
||||
{{selectOptions senseTypes selected=source.sound }}
|
||||
</select>
|
||||
<input class="proximity" type="number" name="threshold.sound" placeholder="{{gridUnits}}" min="0"
|
||||
value="{{source.threshold.sound}}" step="any"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "WALLS.Direction"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="dir" data-dtype="Number">
|
||||
{{selectOptions dirTypes selected=source.dir}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "WALLS.ThresholdAttenuation"}} <i class="tip fas fa-info-circle" data-tooltip="WALLS.ThresholdAttenuationHint"></i></label>
|
||||
<input type="checkbox" name="threshold.attenuation" {{checked source.threshold.attenuation}}/>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "WALLS.Door"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="door" data-dtype="Number">
|
||||
{{selectOptions doorTypes selected=source.door}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<fieldset class="door-options">
|
||||
<legend>{{ localize "WALLS.DoorOptions" }}</legend>
|
||||
<div class="form-group">
|
||||
<label>{{ localize "WALLS.DoorState" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="ds" data-dtype="Number">
|
||||
{{selectOptions doorStates selected=source.ds}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ localize "WALLS.DoorSoundLabel" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="doorSound">
|
||||
{{selectOptions doorSounds selected=source.doorSound labelAttr="label" blank="" localize=true}}
|
||||
</select>
|
||||
<i data-tooltip="{{localize 'Preview'}}" class="fas fa-play audio-preview"></i>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<footer class="form-footer">
|
||||
<button type="submit">
|
||||
<i class="fa-solid fa-save"></i> {{localize "WALLS.Submit"}}
|
||||
</button>
|
||||
</footer>
|
||||
</form>
|
||||
Reference in New Issue
Block a user