Started work on Server pages
This commit is contained in:
parent
6307780b9c
commit
dfc702992b
8 changed files with 136 additions and 8 deletions
|
|
@ -5,6 +5,8 @@ import { ConfigComponent } from "./pages/config/config.component";
|
|||
import { QuestsComponent } from "./pages/config/quests/quests.component";
|
||||
import { GridComponent } from "./pages/config/grid/grid.component";
|
||||
import { DbsComponent } from "./pages/config/dbs/dbs.component";
|
||||
import { ServersComponent } from "./pages/config/servers/servers.component";
|
||||
import { ServerComponent } from "./pages/config/servers/server/server.component";
|
||||
|
||||
|
||||
const routes: Routes = [
|
||||
|
|
@ -16,6 +18,8 @@ const routes: Routes = [
|
|||
{path: 'grid', component: GridComponent},
|
||||
{path: 'dbs', component: DbsComponent},
|
||||
{path: 'quests', component: QuestsComponent},
|
||||
{path: 'servers', component: ServersComponent},
|
||||
{path: 'server/:index', component: ServerComponent}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ import { TextComponent } from './components/form/text/text.component';
|
|||
import { PasswordComponent } from './components/form/password/password.component';
|
||||
import { DbsComponent } from './pages/config/dbs/dbs.component';
|
||||
import { CheckboxComponent } from './components/form/checkbox/checkbox.component';
|
||||
import { ServersComponent } from './pages/config/servers/servers.component';
|
||||
import { ServerComponent } from './pages/config/servers/server/server.component';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
|
|
@ -30,7 +32,9 @@ import { CheckboxComponent } from './components/form/checkbox/checkbox.component
|
|||
TextComponent,
|
||||
PasswordComponent,
|
||||
DbsComponent,
|
||||
CheckboxComponent
|
||||
CheckboxComponent,
|
||||
ServersComponent,
|
||||
ServerComponent
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
|
|
|
|||
|
|
@ -2,16 +2,18 @@ import { Deserialize } from "../util/deserialize.model";
|
|||
import { ServerSublevelModel } from "./serverSublevel.model";
|
||||
|
||||
export class ServerModel implements Deserialize {
|
||||
// General Settings
|
||||
name: string;
|
||||
gridX: number;
|
||||
gridY: number;
|
||||
MachineIdTag: string;
|
||||
isHomeServer: boolean;
|
||||
|
||||
// Connection Settings
|
||||
ip: string;
|
||||
name: string;
|
||||
port: number;
|
||||
gamePort: number;
|
||||
seamlessDataPort: number;
|
||||
isHomeServer: boolean;
|
||||
AdditionalCmdLineParams: string;
|
||||
|
||||
OverrideShooterGameModeDefaultGameIni: object;
|
||||
floorZDist: number;
|
||||
utcOffset: number;
|
||||
|
|
@ -31,9 +33,7 @@ export class ServerModel implements Deserialize {
|
|||
serverIslandPointsMultiplier: number;
|
||||
lastModified: string;
|
||||
lastImageOverride: string;
|
||||
islandLocked: boolean;
|
||||
discoLocked: boolean;
|
||||
pathsLocked: boolean;
|
||||
|
||||
extraSublevels: string[];
|
||||
totalExtraSublevels: string[];
|
||||
islandInstances;
|
||||
|
|
@ -43,6 +43,17 @@ export class ServerModel implements Deserialize {
|
|||
|
||||
sublevels: ServerSublevelModel[];
|
||||
|
||||
// Irrelevant, used internally by Grapeshot
|
||||
//MachineIdTag: string;
|
||||
// Probably also irrelevant
|
||||
//AdditionalCmdLineParams: string;
|
||||
|
||||
// Used by ServerGridEditor
|
||||
//islandLocked: boolean;
|
||||
//discoLocked: boolean;
|
||||
//pathsLocked: boolean;
|
||||
|
||||
|
||||
deserialize(input: any): this {
|
||||
Object.assign(this, input);
|
||||
this.sublevels = this.sublevels.map(i => new ServerSublevelModel().deserialize(i));
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
<button class="btn btn-primary btn-block" [routerLink]="['grid']">Grid Settings</button>
|
||||
<button class="btn btn-primary btn-block" [routerLink]="['dbs']">DB Settings</button>
|
||||
<button class="btn btn-primary btn-block" [routerLink]="['quests']">Quest Settings</button>
|
||||
<button class="btn btn-primary btn-block" [routerLink]="['servers']">Server Settings</button>
|
||||
</div>
|
||||
<div class="col-10"><router-outlet></router-outlet></div>
|
||||
</div>
|
||||
30
src/app/pages/config/servers/server/server.component.html
Normal file
30
src/app/pages/config/servers/server/server.component.html
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<div class="mt-3">
|
||||
<h2>{{ cell.name }}<em *ngIf="cell.name === '' || cell.name === undefined">No Name Set</em> - ({{ cell.gridX }}
|
||||
, {{ cell.gridY }})</h2>
|
||||
<ngb-accordion>
|
||||
<ngb-panel title="General Settings">
|
||||
<ng-template ngbPanelContent>
|
||||
<app-text id="name" label="Name" [(text)]="cell.name"
|
||||
help="Friendly name for this server. Can be blank"></app-text>
|
||||
<app-number id="gridX" label="Grid X" [(number)]="cell.gridX"
|
||||
help="X position in the Grid. 0 Indexed"></app-number>
|
||||
<app-number id="gridY" label="Grid Y" [(number)]="cell.gridY"
|
||||
help="Y position in the Grid. 0 Indexed"></app-number>
|
||||
<app-checkbox id="isHomeServer" label="Home Server" [(checkbox)]="cell.isHomeServer"
|
||||
help="Whether this cell can be used for players with no beds"></app-checkbox>
|
||||
</ng-template>
|
||||
</ngb-panel>
|
||||
<ngb-panel title="Connection Settings">
|
||||
<ng-template ngbPanelContent>
|
||||
<app-text id="ip" label="IP" [(text)]="cell.ip" help="IP address of host this cell is on"></app-text>
|
||||
<app-number id="port" label="Port" [(number)]="cell.port"
|
||||
help="Port used for inter cell communication"></app-number>
|
||||
<app-number id="gamePort" label="Game Port" [(number)]="cell.gamePort"
|
||||
help="Port used for external UE4 traffic"></app-number>
|
||||
<app-number id="seamlessDataPort" label="Seamless Port" [(number)]="cell.seamlessDataPort"
|
||||
help="Used for transferring map images when no MetaWorldURL set"></app-number>
|
||||
</ng-template>
|
||||
</ngb-panel>
|
||||
</ngb-accordion>
|
||||
<p>{{ cell | json }}</p>
|
||||
</div>
|
||||
22
src/app/pages/config/servers/server/server.component.ts
Normal file
22
src/app/pages/config/servers/server/server.component.ts
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
import { ActivatedRoute, ParamMap } from "@angular/router";
|
||||
import { switchMap } from "rxjs/operators";
|
||||
import { Server } from "../../../../server";
|
||||
import { ServerModel } from "../../../../models/atlasData/server.model";
|
||||
|
||||
@Component({
|
||||
selector: 'app-server',
|
||||
templateUrl: './server.component.html'
|
||||
})
|
||||
export class ServerComponent implements OnInit {
|
||||
private cell: ServerModel;
|
||||
|
||||
constructor(private server: Server, private route: ActivatedRoute) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
let index = this.route.snapshot.paramMap.get('index');
|
||||
this.cell = this.server.serverGrid.servers[index];
|
||||
}
|
||||
|
||||
}
|
||||
19
src/app/pages/config/servers/servers.component.html
Normal file
19
src/app/pages/config/servers/servers.component.html
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<div class="mt-3 mb-3">
|
||||
<h2>Cell Grid</h2>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th *ngFor="let x of xArray">{{ x }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody *ngFor="let y of xArray">
|
||||
<tr>
|
||||
<th>{{ y }}</th>
|
||||
<td *ngFor="let x of xArray"><a [routerLink]="['/config','server', serverLookup[x][y]]">{{ serverLookup[x][y] }}</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 *ngIf="unknownServers.length > 0">Cells Outside Grid</h2>
|
||||
<button class="btn btn-warning" *ngFor="let u of unknownServers">{{ u }}</button>
|
||||
</div>
|
||||
37
src/app/pages/config/servers/servers.component.ts
Normal file
37
src/app/pages/config/servers/servers.component.ts
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
import { Server } from "../../../server";
|
||||
import { ServerGridModel } from "../../../models/serverGrid.model";
|
||||
|
||||
@Component({
|
||||
selector: 'app-servers',
|
||||
templateUrl: './servers.component.html'
|
||||
})
|
||||
export class ServersComponent implements OnInit {
|
||||
private grid: ServerGridModel;
|
||||
|
||||
private xArray: number[];
|
||||
private yArray: number[];
|
||||
|
||||
private serverLookup: number[][] = [];
|
||||
private unknownServers: number[] = [];
|
||||
|
||||
constructor(private server: Server) {
|
||||
this.grid = server.serverGrid;
|
||||
this.xArray = Array.from(Array(this.grid.totalGridsX).keys());
|
||||
this.yArray = Array.from(Array(this.grid.totalGridsY).keys());
|
||||
this.grid.servers.forEach((i, index) => {
|
||||
if (i.gridX < this.grid.totalGridsX && i.gridY < this.grid.totalGridsY) {
|
||||
if (this.serverLookup[i.gridX] === undefined)
|
||||
this.serverLookup[i.gridX] = [];
|
||||
this.serverLookup[i.gridX][i.gridY] = index;
|
||||
} else {
|
||||
this.unknownServers.push(index);
|
||||
}
|
||||
});
|
||||
console.log("Server Lookup", this.serverLookup);
|
||||
console.log("Unknown Servers", this.unknownServers);
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue