Fixed parsing issue and added spawners and ship parsing

This commit is contained in:
Tom Bloor 2019-08-31 00:37:51 +01:00
parent 2946e5f366
commit 89c3d26127
Signed by: TBSliver
GPG key ID: 4657C7EBE42CC5CC
4 changed files with 182 additions and 2 deletions

View file

@ -28,6 +28,9 @@
<a id="nav-shared-log" class="nav-item nav-link" data-toggle="tab" href="#tab-shared-log">Shared Log</a> <a id="nav-shared-log" class="nav-item nav-link" data-toggle="tab" href="#tab-shared-log">Shared Log</a>
<a id="nav-databases" class="nav-item nav-link" data-toggle="tab" href="#tab-databases">Databases</a> <a id="nav-databases" class="nav-item nav-link" data-toggle="tab" href="#tab-databases">Databases</a>
<a id="nav-servers" class="nav-item nav-link" data-toggle="tab" href="#tab-servers">Servers</a> <a id="nav-servers" class="nav-item nav-link" data-toggle="tab" href="#tab-servers">Servers</a>
<a id="nav-spawners" class="nav-item nav-link" data-toggle="tab" href="#tab-spawners">Spawners</a>
<a id="nav-ships" class="nav-item nav-link" data-toggle="tab" href="#tab-ships">Ships</a>
</div> </div>
<div class="tab-content" id="tab-content"> <div class="tab-content" id="tab-content">
<div class="tab-pane fade show active" id="tab-config"> <div class="tab-pane fade show active" id="tab-config">
@ -1089,6 +1092,138 @@
</div> </div>
<!-- /ko --> <!-- /ko -->
</div> </div>
<div class="tab-pane fade" id="tab-spawners">
<button class="btn btn-primary" data-bind="click: addSpawner">Add Spawner</button>
<!-- ko foreach: spawnerOverrideTemplates -->
<hr>
<form>
<fieldset>
<legend><span data-bind="text: $data.Name"></span>
<button class="btn btn-primary" data-bind="click: removeSpawner">Delete Spawner</button>
</legend>
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Spawner-Name-' + $index(),
value: $data.Name,
key: 'Name',
label: 'Name'
} } --><!-- /ko -->
<!-- ko template: { name: 'deparseInputTemplate', data: {
id: 'Spawner-NPCSpawnEntries-' + $index(),
value: $data.NPCSpawnEntries,
key: 'NPCSpawnEntries',
label: 'Spawn Entries'
} } --><!-- /ko -->
<!-- ko template: { name: 'deparseInputTemplate', data: {
id: 'Spawner-NPCSpawnLimits-' + $index(),
value: $data.NPCSpawnLimits,
key: 'NPCSpawnLimits',
label: 'Spawn Limits'
} } --><!-- /ko -->
<div class="form-group row">
<label data-bind="attr: { for: 'Server-MaxDesiredNumEnemiesMultiplier-' + $index() }"
class="col-sm-2 col-form-label">Multiplier</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Server-MaxDesiredNumEnemiesMultiplier-' + $index() }, numericValue: $data.MaxDesiredNumEnemiesMultiplier"
type="number" step="0.1"
class="form-control">
<small class="form-text text-muted">MaxDesiredNumEnemiesMultiplier</small>
</div>
</div>
</fieldset>
</form>
<!-- /ko -->
</div>
<div class="tab-pane fade" id="tab-ships">
<button class="btn btn-primary" data-bind="click: addShip">Add Ship</button>
<!-- ko foreach: shipPaths -->
<hr>
<form>
<fieldset>
<legend>
<span data-bind="text: $data.PathName"></span>
<button class="btn btn-warning" data-bind="click: removeShip">Delete Ship</button>
</legend>
<!-- ko template: { name: 'textInputTemplate', data: {
id: 'Ship-PathName-' + $index(),
value: $data.PathName,
key: 'PathName',
label: 'Name'
} } --><!-- /ko -->
<div class="form-group row">
<label data-bind="attr: { for: 'Ship-PathId-' + $index() }"
class="col-sm-2 col-form-label">ID</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Ship-PathId-' + $index() }, numericValue: $data.PathId"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">PathId</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Ship-AutoSpawnEveryUTCInterval-' + $index() }"
class="col-sm-2 col-form-label">Spawn Interval</label>
<div class="col-sm-10">
<input data-bind="attr: { id: 'Ship-AutoSpawnEveryUTCInterval-' + $index() }, numericValue: $data.AutoSpawnEveryUTCInterval"
type="number" step="1"
class="form-control">
<small class="form-text text-muted">AutoSpawnEveryUTCInterval</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Ship-autoSpawn-' + $index() }"
class="col-sm-2 col-form-label">Auto Spawn</label>
<div class="col-sm-2">
<input data-bind="attr: { id: 'Ship-autoSpawn-' + $index() }, checked: $data.autoSpawn"
type="checkbox"
class="form-control">
</div>
<div class="col-sm-8">
<small class="form-text text-muted">autoSpawn</small>
</div>
</div>
<div class="form-group row">
<label data-bind="attr: { for: 'Ship-isLooping-' + $index() }"
class="col-sm-2 col-form-label">Loop</label>
<div class="col-sm-2">
<input data-bind="attr: { id: 'Ship-isLooping-' + $index() }, checked: $data.isLooping"
type="checkbox"
class="form-control">
</div>
<div class="col-sm-8">
<small class="form-text text-muted">isLooping</small>
</div>
</div>
<!-- ko template: { name: 'deparseInputTemplate', data: {
id: 'Ship-AutoSpawnShipClass-' + $index(),
value: $data.AutoSpawnShipClass,
key: 'AutoSpawnShipClass',
label: 'Ship Class'
} } --><!-- /ko -->
<table class="table table-striped">
<thead>
<tr>
<th>Distance</th>
<th>X</th>
<th>Y</th>
<th>Rotation</th>
<th><button class="btn btn-primary" data-bind="click: addShipNode">&plus;</button></th>
</tr>
</thead>
<tbody data-bind="foreach: $data.Nodes">
<tr>
<td><input class="form-control" type="number" step="0.1" data-bind="numericValue: $data.controlPointsDistance"></td>
<td><input class="form-control" type="number" step="0.01" data-bind="numericValue: $data.worldX"></td>
<td><input class="form-control" type="number" step="0.01" data-bind="numericValue: $data.worldY"></td>
<td><input class="form-control" type="number" step="0.00000001" data-bind="numericValue: $data.rotation"></td>
<td><button class="btn btn-warning" data-bind="click: removeShipNode">&minus;</button></td>
</tr>
</tbody>
</table>
</fieldset>
</form>
<!-- /ko -->
</div>
</div> </div>
</div> </div>

View file

@ -52,6 +52,9 @@ function deparseArray(input) {
if (input[0] === "BlueprintGeneratedClass") { if (input[0] === "BlueprintGeneratedClass") {
return "BlueprintGeneratedClass" + "'" + input[1] + "'"; return "BlueprintGeneratedClass" + "'" + input[1] + "'";
} }
if (input[0] === "Blueprint") {
return "Blueprint" + "'" + input[1] + "'";
}
if (input[0] === "SoundWave") { if (input[0] === "SoundWave") {
return "SoundWave" + "'" + input[1] + "'" return "SoundWave" + "'" + input[1] + "'"
} }

View file

@ -454,4 +454,46 @@ function addTotalExtraSubLevels(obj) {
obj.totalExtraSublevels.push(newSubLevel); obj.totalExtraSublevels.push(newSubLevel);
} }
function removeTotalExtraSubLevels(obj, e) { ko.contextFor(e.target).$parent.totalExtraSublevels.remove(obj) } function removeTotalExtraSubLevels(obj, e) { ko.contextFor(e.target).$parent.totalExtraSublevels.remove(obj) }
function addSpawner() {
var newSpawner = {
"Name": ko.observable("New Spawner"),
"NPCSpawnEntries": ko.observable(""),
"NPCSpawnLimits": ko.observable(""),
"MaxDesiredNumEnemiesMultiplier": ko.observable(1)
};
viewmodel.spawnerOverrideTemplates.push(newSpawner);
}
function removeSpawner(obj) {
viewmodel.spawnerOverrideTemplates.remove(obj);
}
function addShip() {
var newShip = {
"PathName": ko.observable("New Ship"),
"PathId": ko.observable(1),
"AutoSpawnShipClass": ko.observable(""),
"AutoSpawnEveryUTCInterval": ko.observable(21600),
"autoSpawn": ko.observable(true),
"Nodes": ko.observableArray([])
};
viewmodel.shipPaths.push(newShip);
}
function removeShip(obj) {
viewmodel.shipPaths.remove(obj);
}
function addShipNode(obj) {
var newNode = {
"controlPointsDistance": ko.observable(0),
"worldX": ko.observable(0),
"worldY": ko.observable(0),
"rotation": ko.observable(0)
}
obj.Nodes.push(newNode);
}
function removeShipNode(obj, e) { ko.contextFor(e.target).$parent.Nodes.remove(obj) }

View file

@ -24,7 +24,7 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span>Atlas Crazy Config</span> <span>Atlas Crazy Config</span>
<div id="atlas-config-editor">(SoundOverrides=(NavalCombatMusicDay=SoundWave'/Game/Atlas/Music/ATL_SeaCombatArcticDay_v1.ATL_SeaCombatArcticDay_v1',NavalCombatMusicNight=SoundWave'/Game/Atlas/Music/ATL_SeaCombatArcticNight_v1.ATL_SeaCombatArcticNight_v1',CombatMusicDay=SoundWave'/Game/Atlas/Music/ATL_LandCombatArcticDay_v2.ATL_LandCombatArcticDay_v2',CombatMusicNight=SoundWave'/Game/Atlas/Music/ATL_LandCombatArcticNight_v1.ATL_LandCombatArcticNight_v1',CombatMusicDay_Heavy=SoundWave'/Game/Atlas/Music/ATL_LandCombatArcticDay_v2.ATL_LandCombatArcticDay_v2',CombatMusicNight_Heavy=SoundWave'/Game/Atlas/Music/ATL_LandCombatArcticNight_v1.ATL_LandCombatArcticNight_v1',Sound_TransitionToMorning=SoundWave'/Game/Atlas/Stingers/ATL_Sting_ArcticMorning.ATL_Sting_ArcticMorning',Sound_TransitionToMidDay=SoundWave'/Game/Atlas/Stingers/ATL_Sting_ArcticNoon.ATL_Sting_ArcticNoon',Sound_TransitionToNight=SoundWave'/Game/Atlas/Stingers/ATL_Sting_ArcticNight.ATL_Sting_ArcticNight',Sound_SetSail=SoundWave'/Game/Atlas/Stingers/ATL_Sting_ArcticSetSail.ATL_Sting_ArcticSetSail',Sound_Respawn=None,Sound_CreateNewCharacter=None),OceanHarvestEntriesOverrides=((RenderComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/Render_Components/OceanHarvestable_Seaweed_Tall_35.OceanHarvestable_Seaweed_Tall_35_C',HarvestComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/HarvestComponents/00_OceanFloor/HerbHarvestComponent_RedAlgae.HerbHarvestComponent_RedAlgae_C',Weight=0.100000,RandomOffsetPercentageOfPlacementInterval=3.000000),(RenderComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/Render_Components/OceanHarvestable_Seaweed_Tall_36.OceanHarvestable_Seaweed_Tall_36_C',HarvestComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/HarvestComponents/00_OceanFloor/HerbHarvestComponent_RedAlgae.HerbHarvestComponent_RedAlgae_C',Weight=0.010000,RandomOffsetPercentageOfPlacementInterval=5.400000),(RenderComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/Render_Components/OceanHarvestable_Seaweed_Tall_37.OceanHarvestable_Seaweed_Tall_37_C',HarvestComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/HarvestComponents/00_OceanFloor/FiberHarvestComponent_Seaweed.FiberHarvestComponent_Seaweed_C',Weight=0.200000,RandomOffsetPercentageOfPlacementInterval=2.100000),(RenderComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/Render_Components/OceanHarvestable_Seaweed_Short_16.OceanHarvestable_Seaweed_Short_16_C',HarvestComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/HarvestComponents/00_OceanFloor/FiberHarvestComponent_Seaweed.FiberHarvestComponent_Seaweed_C',Weight=0.010000,RandomOffsetPercentageOfPlacementInterval=1.400000),(RenderComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/Render_Components/OceanHarvestable_Seaweed_Short_40.OceanHarvestable_Seaweed_Short_40_C',HarvestComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/HarvestComponents/00_OceanFloor/FiberHarvestComponent_Seaweed.FiberHarvestComponent_Seaweed_C',Weight=0.050000,RandomOffsetPercentageOfPlacementInterval=4.000000),(RenderComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/Render_Components/OceanHarvestable_Seaweed_Short_41.OceanHarvestable_Seaweed_Short_41_C',HarvestComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/HarvestComponents/00_OceanFloor/FiberHarvestComponent_Seaweed.FiberHarvestComponent_Seaweed_C',Weight=0.400000,RandomOffsetPercentageOfPlacementInterval=0.600000),(RenderComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/Render_Components/OceanHarvestable_Seaweed_Short_42.OceanHarvestable_Seaweed_Short_42_C',HarvestComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/HarvestComponents/00_OceanFloor/FiberHarvestComponent_Seaweed.FiberHarvestComponent_Seaweed_C',Weight=0.800000,RandomOffsetPercentageOfPlacementInterval=0.800000),(RenderComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/Render_Components/OceanHarvestable_Seaweed_Short_43.OceanHarvestable_Seaweed_Short_43_C',HarvestComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/HarvestComponents/00_OceanFloor/FiberHarvestComponent_Seaweed.FiberHarvestComponent_Seaweed_C',Weight=0.400000,RandomOffsetPercentageOfPlacementInterval=0.500000),(RenderComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/Render_Components/OceanHarvestable_Coral_Brain.OceanHarvestable_Coral_Brain_C',HarvestComponent=BlueprintGeneratedClass'/Game/Atlas/AtlasCoreBP/HarvestComponents/00_OceanFloor/CoralHarvestComponent_Brain.CoralHarvestComponent_Brain_C',Weight=0.500000,RandomOffsetPercentageOfPlacementInterval=10.000000)),bDisableClaimFlags=False)</div> <div id="atlas-config-editor">Blueprint'/Game/Atlas/ShipPaths/PathFollowingGhostShip_BP.PathFollowingGhostShip_BP'</div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">