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 { QuestsComponent } from "./pages/config/quests/quests.component";
|
||||||
import { GridComponent } from "./pages/config/grid/grid.component";
|
import { GridComponent } from "./pages/config/grid/grid.component";
|
||||||
import { DbsComponent } from "./pages/config/dbs/dbs.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 = [
|
const routes: Routes = [
|
||||||
|
|
@ -16,6 +18,8 @@ const routes: Routes = [
|
||||||
{path: 'grid', component: GridComponent},
|
{path: 'grid', component: GridComponent},
|
||||||
{path: 'dbs', component: DbsComponent},
|
{path: 'dbs', component: DbsComponent},
|
||||||
{path: 'quests', component: QuestsComponent},
|
{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 { PasswordComponent } from './components/form/password/password.component';
|
||||||
import { DbsComponent } from './pages/config/dbs/dbs.component';
|
import { DbsComponent } from './pages/config/dbs/dbs.component';
|
||||||
import { CheckboxComponent } from './components/form/checkbox/checkbox.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({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
|
|
@ -30,7 +32,9 @@ import { CheckboxComponent } from './components/form/checkbox/checkbox.component
|
||||||
TextComponent,
|
TextComponent,
|
||||||
PasswordComponent,
|
PasswordComponent,
|
||||||
DbsComponent,
|
DbsComponent,
|
||||||
CheckboxComponent
|
CheckboxComponent,
|
||||||
|
ServersComponent,
|
||||||
|
ServerComponent
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
|
|
|
||||||
|
|
@ -2,16 +2,18 @@ import { Deserialize } from "../util/deserialize.model";
|
||||||
import { ServerSublevelModel } from "./serverSublevel.model";
|
import { ServerSublevelModel } from "./serverSublevel.model";
|
||||||
|
|
||||||
export class ServerModel implements Deserialize {
|
export class ServerModel implements Deserialize {
|
||||||
|
// General Settings
|
||||||
|
name: string;
|
||||||
gridX: number;
|
gridX: number;
|
||||||
gridY: number;
|
gridY: number;
|
||||||
MachineIdTag: string;
|
isHomeServer: boolean;
|
||||||
|
|
||||||
|
// Connection Settings
|
||||||
ip: string;
|
ip: string;
|
||||||
name: string;
|
|
||||||
port: number;
|
port: number;
|
||||||
gamePort: number;
|
gamePort: number;
|
||||||
seamlessDataPort: number;
|
seamlessDataPort: number;
|
||||||
isHomeServer: boolean;
|
|
||||||
AdditionalCmdLineParams: string;
|
|
||||||
OverrideShooterGameModeDefaultGameIni: object;
|
OverrideShooterGameModeDefaultGameIni: object;
|
||||||
floorZDist: number;
|
floorZDist: number;
|
||||||
utcOffset: number;
|
utcOffset: number;
|
||||||
|
|
@ -31,9 +33,7 @@ export class ServerModel implements Deserialize {
|
||||||
serverIslandPointsMultiplier: number;
|
serverIslandPointsMultiplier: number;
|
||||||
lastModified: string;
|
lastModified: string;
|
||||||
lastImageOverride: string;
|
lastImageOverride: string;
|
||||||
islandLocked: boolean;
|
|
||||||
discoLocked: boolean;
|
|
||||||
pathsLocked: boolean;
|
|
||||||
extraSublevels: string[];
|
extraSublevels: string[];
|
||||||
totalExtraSublevels: string[];
|
totalExtraSublevels: string[];
|
||||||
islandInstances;
|
islandInstances;
|
||||||
|
|
@ -43,6 +43,17 @@ export class ServerModel implements Deserialize {
|
||||||
|
|
||||||
sublevels: ServerSublevelModel[];
|
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 {
|
deserialize(input: any): this {
|
||||||
Object.assign(this, input);
|
Object.assign(this, input);
|
||||||
this.sublevels = this.sublevels.map(i => new ServerSublevelModel().deserialize(i));
|
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]="['grid']">Grid Settings</button>
|
||||||
<button class="btn btn-primary btn-block" [routerLink]="['dbs']">DB 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]="['quests']">Quest Settings</button>
|
||||||
|
<button class="btn btn-primary btn-block" [routerLink]="['servers']">Server Settings</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-10"><router-outlet></router-outlet></div>
|
<div class="col-10"><router-outlet></router-outlet></div>
|
||||||
</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