Redid server layout to use tabs instead of one sodding large list

This commit is contained in:
Tom Bloor 2019-08-31 00:54:28 +01:00
parent 89c3d26127
commit 120ca8f9c9
Signed by: TBSliver
GPG key ID: 4657C7EBE42CC5CC

View file

@ -599,498 +599,508 @@
</div> </div>
<div class="tab-pane fade" id="tab-servers"> <div class="tab-pane fade" id="tab-servers">
<button class="btn btn-primary" data-bind="click: addServer">Add Server</button> <button class="btn btn-primary" data-bind="click: addServer">Add Server</button>
<div class="row" data-bind="foreach: servers">
<div class="col-3 m-1">
<a class="btn btn-success" data-bind="attr: { href: '#server-tab-' + $index() }">
<span data-bind="text: $data.name "></span> - (<span data-bind="text: $data.gridX "></span>,
<span data-bind="text: $data.gridY "></span>)
</a>
</div>
</div>
<!-- ko foreach: servers -->
<div class="row"> <div class="row">
<div class="col"> <div class="col-2">
<hr> <div class="nav flex-column nav-pills">
<a data-bind="attr: { id: 'server-tab-' + $index() }"><h2><span <!-- ko foreach: servers -->
data-bind="text: $data.name "></span> - (<span data-bind="text: $data.gridX "></span>, <a class="nav-link" data-toggle="pill" data-bind="attr: { href: '#server-tab-' + $index() }">
<span data-bind="text: $data.gridY "></span>)</h2></a> <span data-bind="text: $data.name "></span> - (<span data-bind="text: $data.gridX "></span>,
<button class="btn btn-danger" data-bind="click: removeServer">Remove Server</button> <span data-bind="text: $data.gridY "></span>)
<form> </a>
<div class="row"> <!-- /ko -->
<fieldset class="col-6"> </div>
<legend>Basic Data</legend> </div>
<div class="form-group row"> <div class="col-10">
<label data-bind="attr: { for: 'Server-name-' + $index() }" <div class="tab-content">
class="col-sm-2 col-form-label">Name</label> <!-- ko foreach: servers -->
<div class="col-sm-10"> <div class="tab-pane fade" data-bind="attr: { id: 'server-tab-' + $index() }">
<input data-bind="attr: { id: 'Server-name-' + $index() }, value: $data.name" <div class="row">
type="text" <div class="col">
class="form-control"> <hr>
</div> <a data-bind="attr: { id: 'server-tab-' + $index() }"><h2><span
data-bind="text: $data.name "></span> - (<span data-bind="text: $data.gridX "></span>,
<span data-bind="text: $data.gridY "></span>)</h2></a>
<button class="btn btn-danger" data-bind="click: removeServer">Remove Server</button>
<form>
<div class="row">
<fieldset class="col-6">
<legend>Basic Data</legend>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-name-' + $index() }"
class="col-sm-2 col-form-label">Name</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-name-' + $index() }, value: $data.name"
type="text"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-serverTemplateName-' + $index() }"
class="col-sm-2 col-form-label">Template Name</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-serverTemplateName-' + $index() }, value: $data.serverTemplateName"
type="text"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-ip-' + $index() }"
class="col-sm-2 col-form-label">IP</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-ip-' + $index() }, value: $data.ip"
type="text"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-port-' + $index() }"
class="col-sm-2 col-form-label">Port</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-port-' + $index() }, numericValue: $data.port"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-gamePort-' + $index() }"
class="col-sm-2 col-form-label">Game Port</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-gamePort-' + $index() }, numericValue: $data.gamePort"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-seamlessDataPort-' + $index() }"
class="col-sm-2 col-form-label">Seamless Data Port</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-seamlessDataPort-' + $index() }, numericValue: $data.seamlessDataPort"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-gridX-' + $index() }"
class="col-sm-2 col-form-label">Grid X</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-gridX-' + $index() }, numericValue: $data.gridX"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-gridY-' + $index() }"
class="col-sm-2 col-form-label">Grid Y</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-gridY-' + $index() }, numericValue: $data.gridY"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-MachineIdTag-' + $index() }"
class="col-sm-2 col-form-label">Machine ID Tag</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-MachineIdTag-' + $index() }, value: $data.MachineIdTag"
type="text"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-isHomeServer-' + $index() }"
class="col-sm-2 col-form-label">Is Home Server</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-isHomeServer-' + $index() }, checked: $data.isHomeServer"
type="checkbox"
class="form-control">
</div>
</div>
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-AdditionalCmdLineParams-' + $index(),
value: $data.AdditionalCmdLineParams,
key: 'AdditionalCmdLineParams',
label: 'CLI Params'
} } --><!-- /ko -->
</fieldset>
<div class="col-6">
<fieldset>
<legend>Biome Options</legend>
<!-- ko template: { name: 'deparseInputTemplate', data: {
id: 'Server-GlobalBiomeSeamlessServerGridPreOffsetValues-' + $index(),
value: $data.GlobalBiomeSeamlessServerGridPreOffsetValues,
key: 'GlobalBiomeSeamlessServerGridPreOffsetValues',
label: 'Land Values'
} } --><!-- /ko -->
<!-- ko template: { name: 'deparseInputTemplate', data: {
id: 'Server-GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWater-' + $index(),
value: $data.GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWater,
key: 'GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWater',
label: 'Water Values'
} } --><!-- /ko -->
</fieldset>
<fieldset>
<legend>Override Options</legend>
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-OceanDinoDepthEntriesOverride-' + $index(),
value: $data.OceanDinoDepthEntriesOverride,
key: 'OceanDinoDepthEntriesOverride',
label: 'Dino Depth Entries'
} } --><!-- /ko -->
<!-- ko template: { name: 'deparseInputTemplate', data: {
id: 'Server-OceanEpicSpawnEntriesOverrideValues-' + $index(),
value: $data.OceanEpicSpawnEntriesOverrideValues,
key: 'OceanEpicSpawnEntriesOverrideValues',
label: 'Epic Spawn Values'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-oceanFloatsamCratesOverride-' + $index(),
value: $data.oceanFloatsamCratesOverride,
key: 'oceanFloatsamCratesOverride',
label: 'Floatsam Crates'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-treasureMapLootTablesOverride-' + $index(),
value: $data.treasureMapLootTablesOverride,
key: 'treasureMapLootTablesOverride',
label: 'Map Loot Tables'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-oceanEpicSpawnEntriesOverrideTemplateName-' + $index(),
value: $data.oceanEpicSpawnEntriesOverrideTemplateName,
key: 'oceanEpicSpawnEntriesOverrideTemplateName',
label: 'Epic Spawn Template'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-NPCShipSpawnEntriesOverrideTemplateName-' + $index(),
value: $data.NPCShipSpawnEntriesOverrideTemplateName,
key: 'NPCShipSpawnEntriesOverrideTemplateName',
label: 'Ship Spawn Template'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-RegionOverrides-' + $index(),
value: $data.regionOverrides,
key: 'regionOverrides',
label: 'Region'
} } --><!-- /ko -->
</fieldset>
</div>
<fieldset class="col-6">
<legend>Style Options</legend>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-waterColorR-' + $index() }"
class="col-sm-2 col-form-label">Water Colour Red</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-waterColorR-' + $index() }, numericValue: $data.waterColorR"
type="number" step="0.1"
class="form-control">
<small class="form-text text-muted">waterColorR</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-waterColorG-' + $index() }"
class="col-sm-2 col-form-label">Water Colour Green</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-waterColorG-' + $index() }, numericValue: $data.waterColorG"
type="number" step="0.1"
class="form-control">
<small class="form-text text-muted">waterColorG</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-waterColorB-' + $index() }"
class="col-sm-2 col-form-label">Water Colour Blue</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-waterColorB-' + $index() }, numericValue: $data.waterColorB"
type="number" step="0.1"
class="form-control">
<small class="form-text text-muted">waterColorB</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-skyStyleIndex-' + $index() }"
class="col-sm-2 col-form-label">Sky Style</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-skyStyleIndex-' + $index() }, numericValue: $data.skyStyleIndex"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">skyStyleIndex</small>
</div>
</div>
</fieldset>
<fieldset class="col-6">
<legend>Misc Options</legend>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-floorZDist-' + $index() }"
class="col-sm-2 col-form-label">Floor Z Distance</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-floorZDist-' + $index() }, numericValue: $data.floorZDist"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">floorZDist</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-utcOffset-' + $index() }"
class="col-sm-2 col-form-label">UTC Offset</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-utcOffset-' + $index() }, numericValue: $data.utcOffset"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">utcOffset</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-transitionMinZ-' + $index() }"
class="col-sm-2 col-form-label">Min Z Transition</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-transitionMinZ-' + $index() }, numericValue: $data.transitionMinZ"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">transitionMinZ</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-serverIslandPointsMultiplier-' + $index() }"
class="col-sm-2 col-form-label">Point Multiplier</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-serverIslandPointsMultiplier-' + $index() }, numericValue: $data.serverIslandPointsMultiplier"
type="number" step="0.1"
class="form-control">
<small class="form-text text-muted">serverIslandPointsMultiplier</small>
</div>
</div>
</fieldset>
<fieldset class="col-6">
<legend>Date Options</legend>
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-lastModified-' + $index(),
value: $data.lastModified,
key: 'lastModified',
label: 'Last Modified'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-lastImageOverride-' + $index(),
value: $data.lastImageOverride,
key: 'lastImageOverride',
label: 'Last Image'
} } --><!-- /ko -->
</fieldset>
<fieldset class="col-6">
<legend>Boolean Options</legend>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-islandLocked-' + $index() }"
class="col-sm-2 col-form-label">Island Locked</label>
<div class="col-sm-2">
<input data-bind="attr: { id: 'Server-islandLocked-' + $index() }, checked: $data.islandLocked"
type="checkbox"
class="form-control">
</div>
<div class="col-sm-8">
<small class="form-text text-muted">islandLocked</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-discoLocked-' + $index() }"
class="col-sm-2 col-form-label">Discovery Locked</label>
<div class="col-sm-2">
<input data-bind="attr: { id: 'Server-discoLocked-' + $index() }, checked: $data.discoLocked"
type="checkbox"
class="form-control">
</div>
<div class="col-sm-8">
<small class="form-text text-muted">discoLocked</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-pathsLocked-' + $index() }"
class="col-sm-2 col-form-label">Paths Locked</label>
<div class="col-sm-2">
<input data-bind="attr: { id: 'Server-pathsLocked-' + $index() }, checked: $data.pathsLocked"
type="checkbox"
class="form-control">
</div>
<div class="col-sm-8">
<small class="form-text text-muted">pathsLocked</small>
</div>
</div>
</fieldset>
<fieldset class="col-12">
<legend>Sub Levels</legend>
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>X</th>
<th>Y</th>
<th>Z</th>
<th>Pitch</th>
<th>Yaw</th>
<th>Roll</th>
<th>Override</th>
<th><button class="btn btn-primary" data-bind="click: addServerSubLevel">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: sublevels">
<tr>
<td><input class="form-control" type="number" data-bind="numericValue: $data.id"></td>
<td><input class="form-control" type="text" data-bind="value: $data.name"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalTranslationX"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalTranslationY"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalTranslationZ"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalRotationPitch"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalRotationYaw"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalRotationRoll"></td>
<td><input class="form-control" type="number" data-bind="numericValue: $data.landscapeMaterialOverride"></td>
<td><button class="btn btn-primary" data-bind="click: removeServerSubLevel">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-12">
<legend>Islands</legend>
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Spawner Overrides</th>
<th>Min Treasure Quality</th>
<th>Max Treasure Quality</th>
<th>NPC Volumes for Treasure</th>
<th>Level Bounds for Treasure</th>
<th>Prioritise Volumes for Treasures</th>
<th>Points</th>
<th>Bottle Supply Override</th>
<th>Width</th>
<th>Height</th>
<th>X</th>
<th>Y</th>
<th>Rotation</th>
<th><button class="btn btn-primary" data-bind="click: addServerIslandInstance">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: islandInstances">
<tr>
<td><input class="form-control" type="number" data-bind="numericValue: $data.id"></td>
<td><input class="form-control" type="text" data-bind="value: $data.name"></td>
<td><i>TODO</i></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.minTreasureQuality"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.maxTreasureQuality"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.useNpcVolumesForTreasures"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.useLevelBoundsForTreasures"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.prioritizeVolumesForTreasures"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.islandPoints"></td>
<td><input class="form-control" type="text" data-bind="value: $data.islandTreasureBottleSupplyCrateOverrides"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.islandWidth"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.islandHeight"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.worldX"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.worldY"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.rotation"></td>
<td><button class="btn btn-primary" data-bind="click: removeServerIslandInstance">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-12">
<legend>Discovery Zones</legend>
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Size X</th>
<th>Size Y</th>
<th>Size Z</th>
<th>XP</th>
<th>Manually Placed</th>
<th>Explorer Note Index</th>
<th>Allow Sea</th>
<th>World X</th>
<th>World Y</th>
<th>Rotation</th>
<th><button class="btn btn-primary" data-bind="click: addServerDiscoveryZone">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: discoZones">
<tr>
<td><input class="form-control" type="number" data-bind="numericValue: $data.id"></td>
<td><input class="form-control" type="text" data-bind="value: $data.name"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.sizeX"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.sizeY"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.sizeZ"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.xp"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.bIsManuallyPlaced"></td>
<td><input class="form-control" type="number" data-bind="numericValue: $data.explorerNoteIndex"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.allowSea"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.worldX"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.worldY"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.rotation"></td>
<td><button class="btn btn-primary" data-bind="click: removeServerDiscoveryZone">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-6">
<legend>Spawn Regions</legend>
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th><button class="btn btn-primary" data-bind="click: addServerSpawnRegion">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: spawnRegions">
<tr>
<td><input class="form-control" type="text" data-bind="value: $data.name"></td>
<td><button class="btn btn-primary" data-bind="click: removeServerSpawnRegion">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-6">
<legend>Extra Sublevels</legend>
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th><button class="btn btn-primary" data-bind="click: addExtraSubLevels">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: extraSublevels">
<tr>
<td><input class="form-control" type="text" data-bind="value: $data"></td>
<td><button class="btn btn-primary" data-bind="click: removeExtraSubLevels">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-6">
<legend>Total Extra Sublevels</legend>
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th><button class="btn btn-primary" data-bind="click: addTotalExtraSubLevels">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: totalExtraSublevels">
<tr>
<td><input class="form-control" type="text" data-bind="value: $data"></td>
<td><button class="btn btn-primary" data-bind="click: removeTotalExtraSubLevels">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</form>
</div> </div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-serverTemplateName-' + $index() }"
class="col-sm-2 col-form-label">Template Name</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-serverTemplateName-' + $index() }, value: $data.serverTemplateName"
type="text"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-ip-' + $index() }"
class="col-sm-2 col-form-label">IP</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-ip-' + $index() }, value: $data.ip"
type="text"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-port-' + $index() }"
class="col-sm-2 col-form-label">Port</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-port-' + $index() }, numericValue: $data.port"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-gamePort-' + $index() }"
class="col-sm-2 col-form-label">Game Port</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-gamePort-' + $index() }, numericValue: $data.gamePort"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-seamlessDataPort-' + $index() }"
class="col-sm-2 col-form-label">Seamless Data Port</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-seamlessDataPort-' + $index() }, numericValue: $data.seamlessDataPort"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-gridX-' + $index() }"
class="col-sm-2 col-form-label">Grid X</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-gridX-' + $index() }, numericValue: $data.gridX"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-gridY-' + $index() }"
class="col-sm-2 col-form-label">Grid Y</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-gridY-' + $index() }, numericValue: $data.gridY"
type="number"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-MachineIdTag-' + $index() }"
class="col-sm-2 col-form-label">Machine ID Tag</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-MachineIdTag-' + $index() }, value: $data.MachineIdTag"
type="text"
class="form-control">
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-isHomeServer-' + $index() }"
class="col-sm-2 col-form-label">Is Home Server</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-isHomeServer-' + $index() }, checked: $data.isHomeServer"
type="checkbox"
class="form-control">
</div>
</div>
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-AdditionalCmdLineParams-' + $index(),
value: $data.AdditionalCmdLineParams,
key: 'AdditionalCmdLineParams',
label: 'CLI Params'
} } --><!-- /ko -->
</fieldset>
<div class="col-6">
<fieldset>
<legend>Biome Options</legend>
<!-- ko template: { name: 'deparseInputTemplate', data: {
id: 'Server-GlobalBiomeSeamlessServerGridPreOffsetValues-' + $index(),
value: $data.GlobalBiomeSeamlessServerGridPreOffsetValues,
key: 'GlobalBiomeSeamlessServerGridPreOffsetValues',
label: 'Land Values'
} } --><!-- /ko -->
<!-- ko template: { name: 'deparseInputTemplate', data: {
id: 'Server-GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWater-' + $index(),
value: $data.GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWater,
key: 'GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWater',
label: 'Water Values'
} } --><!-- /ko -->
</fieldset>
<fieldset>
<legend>Override Options</legend>
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-OceanDinoDepthEntriesOverride-' + $index(),
value: $data.OceanDinoDepthEntriesOverride,
key: 'OceanDinoDepthEntriesOverride',
label: 'Dino Depth Entries'
} } --><!-- /ko -->
<!-- ko template: { name: 'deparseInputTemplate', data: {
id: 'Server-OceanEpicSpawnEntriesOverrideValues-' + $index(),
value: $data.OceanEpicSpawnEntriesOverrideValues,
key: 'OceanEpicSpawnEntriesOverrideValues',
label: 'Epic Spawn Values'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-oceanFloatsamCratesOverride-' + $index(),
value: $data.oceanFloatsamCratesOverride,
key: 'oceanFloatsamCratesOverride',
label: 'Floatsam Crates'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-treasureMapLootTablesOverride-' + $index(),
value: $data.treasureMapLootTablesOverride,
key: 'treasureMapLootTablesOverride',
label: 'Map Loot Tables'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-oceanEpicSpawnEntriesOverrideTemplateName-' + $index(),
value: $data.oceanEpicSpawnEntriesOverrideTemplateName,
key: 'oceanEpicSpawnEntriesOverrideTemplateName',
label: 'Epic Spawn Template'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-NPCShipSpawnEntriesOverrideTemplateName-' + $index(),
value: $data.NPCShipSpawnEntriesOverrideTemplateName,
key: 'NPCShipSpawnEntriesOverrideTemplateName',
label: 'Ship Spawn Template'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-RegionOverrides-' + $index(),
value: $data.regionOverrides,
key: 'regionOverrides',
label: 'Region'
} } --><!-- /ko -->
</fieldset>
</div> </div>
<fieldset class="col-6">
<legend>Style Options</legend>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-waterColorR-' + $index() }"
class="col-sm-2 col-form-label">Water Colour Red</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-waterColorR-' + $index() }, numericValue: $data.waterColorR"
type="number" step="0.1"
class="form-control">
<small class="form-text text-muted">waterColorR</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-waterColorG-' + $index() }"
class="col-sm-2 col-form-label">Water Colour Green</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-waterColorG-' + $index() }, numericValue: $data.waterColorG"
type="number" step="0.1"
class="form-control">
<small class="form-text text-muted">waterColorG</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-waterColorB-' + $index() }"
class="col-sm-2 col-form-label">Water Colour Blue</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-waterColorB-' + $index() }, numericValue: $data.waterColorB"
type="number" step="0.1"
class="form-control">
<small class="form-text text-muted">waterColorB</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-skyStyleIndex-' + $index() }"
class="col-sm-2 col-form-label">Sky Style</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-skyStyleIndex-' + $index() }, numericValue: $data.skyStyleIndex"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">skyStyleIndex</small>
</div>
</div>
</fieldset>
<fieldset class="col-6">
<legend>Misc Options</legend>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-floorZDist-' + $index() }"
class="col-sm-2 col-form-label">Floor Z Distance</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-floorZDist-' + $index() }, numericValue: $data.floorZDist"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">floorZDist</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-utcOffset-' + $index() }"
class="col-sm-2 col-form-label">UTC Offset</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-utcOffset-' + $index() }, numericValue: $data.utcOffset"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">utcOffset</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-transitionMinZ-' + $index() }"
class="col-sm-2 col-form-label">Min Z Transition</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-transitionMinZ-' + $index() }, numericValue: $data.transitionMinZ"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">transitionMinZ</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-serverIslandPointsMultiplier-' + $index() }"
class="col-sm-2 col-form-label">Point Multiplier</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-serverIslandPointsMultiplier-' + $index() }, numericValue: $data.serverIslandPointsMultiplier"
type="number" step="0.1"
class="form-control">
<small class="form-text text-muted">serverIslandPointsMultiplier</small>
</div>
</div>
</fieldset>
<fieldset class="col-6">
<legend>Date Options</legend>
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-lastModified-' + $index(),
value: $data.lastModified,
key: 'lastModified',
label: 'Last Modified'
} } --><!-- /ko -->
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Server-lastImageOverride-' + $index(),
value: $data.lastImageOverride,
key: 'lastImageOverride',
label: 'Last Image'
} } --><!-- /ko -->
</fieldset>
<fieldset class="col-6">
<legend>Boolean Options</legend>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-islandLocked-' + $index() }"
class="col-sm-2 col-form-label">Island Locked</label>
<div class="col-sm-2">
<input data-bind="attr: { id: 'Server-islandLocked-' + $index() }, checked: $data.islandLocked"
type="checkbox"
class="form-control">
</div>
<div class="col-sm-8">
<small class="form-text text-muted">islandLocked</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-discoLocked-' + $index() }"
class="col-sm-2 col-form-label">Discovery Locked</label>
<div class="col-sm-2">
<input data-bind="attr: { id: 'Server-discoLocked-' + $index() }, checked: $data.discoLocked"
type="checkbox"
class="form-control">
</div>
<div class="col-sm-8">
<small class="form-text text-muted">discoLocked</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Server-pathsLocked-' + $index() }"
class="col-sm-2 col-form-label">Paths Locked</label>
<div class="col-sm-2">
<input data-bind="attr: { id: 'Server-pathsLocked-' + $index() }, checked: $data.pathsLocked"
type="checkbox"
class="form-control">
</div>
<div class="col-sm-8">
<small class="form-text text-muted">pathsLocked</small>
</div>
</div>
</fieldset>
<fieldset class="col-12">
<legend>Sub Levels</legend>
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>X</th>
<th>Y</th>
<th>Z</th>
<th>Pitch</th>
<th>Yaw</th>
<th>Roll</th>
<th>Override</th>
<th><button class="btn btn-primary" data-bind="click: addServerSubLevel">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: sublevels">
<tr>
<td><input class="form-control" type="number" data-bind="numericValue: $data.id"></td>
<td><input class="form-control" type="text" data-bind="value: $data.name"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalTranslationX"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalTranslationY"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalTranslationZ"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalRotationPitch"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalRotationYaw"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.additionalRotationRoll"></td>
<td><input class="form-control" type="number" data-bind="numericValue: $data.landscapeMaterialOverride"></td>
<td><button class="btn btn-primary" data-bind="click: removeServerSubLevel">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-12">
<legend>Islands</legend>
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Spawner Overrides</th>
<th>Min Treasure Quality</th>
<th>Max Treasure Quality</th>
<th>NPC Volumes for Treasure</th>
<th>Level Bounds for Treasure</th>
<th>Prioritise Volumes for Treasures</th>
<th>Points</th>
<th>Bottle Supply Override</th>
<th>Width</th>
<th>Height</th>
<th>X</th>
<th>Y</th>
<th>Rotation</th>
<th><button class="btn btn-primary" data-bind="click: addServerIslandInstance">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: islandInstances">
<tr>
<td><input class="form-control" type="number" data-bind="numericValue: $data.id"></td>
<td><input class="form-control" type="text" data-bind="value: $data.name"></td>
<td><i>TODO</i></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.minTreasureQuality"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.maxTreasureQuality"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.useNpcVolumesForTreasures"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.useLevelBoundsForTreasures"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.prioritizeVolumesForTreasures"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.islandPoints"></td>
<td><input class="form-control" type="text" data-bind="value: $data.islandTreasureBottleSupplyCrateOverrides"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.islandWidth"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.islandHeight"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.worldX"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.worldY"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.rotation"></td>
<td><button class="btn btn-primary" data-bind="click: removeServerIslandInstance">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-12">
<legend>Discovery Zones</legend>
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Size X</th>
<th>Size Y</th>
<th>Size Z</th>
<th>XP</th>
<th>Manually Placed</th>
<th>Explorer Note Index</th>
<th>Allow Sea</th>
<th>World X</th>
<th>World Y</th>
<th>Rotation</th>
<th><button class="btn btn-primary" data-bind="click: addServerDiscoveryZone">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: discoZones">
<tr>
<td><input class="form-control" type="number" data-bind="numericValue: $data.id"></td>
<td><input class="form-control" type="text" data-bind="value: $data.name"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.sizeX"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.sizeY"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.sizeZ"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.xp"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.bIsManuallyPlaced"></td>
<td><input class="form-control" type="number" data-bind="numericValue: $data.explorerNoteIndex"></td>
<td><input class="form-control" type="checkbox" data-bind="checked: $data.allowSea"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.worldX"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.worldY"></td>
<td><input class="form-control" type="number" step="0.001" data-bind="numericValue: $data.rotation"></td>
<td><button class="btn btn-primary" data-bind="click: removeServerDiscoveryZone">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-6">
<legend>Spawn Regions</legend>
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th><button class="btn btn-primary" data-bind="click: addServerSpawnRegion">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: spawnRegions">
<tr>
<td><input class="form-control" type="text" data-bind="value: $data.name"></td>
<td><button class="btn btn-primary" data-bind="click: removeServerSpawnRegion">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-6">
<legend>Extra Sublevels</legend>
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th><button class="btn btn-primary" data-bind="click: addExtraSubLevels">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: extraSublevels">
<tr>
<td><input class="form-control" type="text" data-bind="value: $data"></td>
<td><button class="btn btn-primary" data-bind="click: removeExtraSubLevels">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset class="col-6">
<legend>Total Extra Sublevels</legend>
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th><button class="btn btn-primary" data-bind="click: addTotalExtraSubLevels">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: totalExtraSublevels">
<tr>
<td><input class="form-control" type="text" data-bind="value: $data"></td>
<td><button class="btn btn-primary" data-bind="click: removeTotalExtraSubLevels">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
</div> </div>
</form> <!-- /ko -->
</div>
</div> </div>
</div> </div>
<!-- /ko -->
</div> </div>
<div class="tab-pane fade" id="tab-spawners"> <div class="tab-pane fade" id="tab-spawners">
<button class="btn btn-primary" data-bind="click: addSpawner">Add Spawner</button> <button class="btn btn-primary" data-bind="click: addSpawner">Add Spawner</button>