Implemented basic Plugin handling

This commit is contained in:
Pax1601
2023-09-15 17:05:26 +02:00
parent ad06117b78
commit 588228c050
75 changed files with 1920 additions and 1657 deletions

View File

@@ -1,10 +1,7 @@
import { OlympusApp } from "../olympusapp";
import { Manager } from "./manager";
export abstract class EventsManager extends Manager {
constructor( olympusApp:OlympusApp ) {
super( olympusApp );
constructor() {
super();
}
}

View File

@@ -1,54 +1,33 @@
import { OlympusApp } from "../olympusapp";
export interface IManager {
add:CallableFunction;
}
export abstract class Manager {
#items: {[key:string]: any } = {};
#olympusApp: OlympusApp;
constructor( olympusApp:OlympusApp ) {
this.#olympusApp = olympusApp;
export class Manager {
#items: { [key: string]: any } = {};
constructor() {
}
add( name:string, item:any ) {
const regex = new RegExp( "^[a-z][a-z0-9]{2,}$", "i" );
if ( regex.test( name ) === false ) {
throw new Error( `Item name "${name}" does not match regex: ${regex.toString()}.` );
add(name: string, item: any) {
const regex = new RegExp("^[a-z][a-z0-9]{2,}$", "i");
if (regex.test(name) === false) {
throw new Error(`Item name "${name}" does not match regex: ${regex.toString()}.`);
}
if ( this.#items.hasOwnProperty( name ) ) {
throw new Error( `Item with name "${name}" already exists.` );
if (this.#items.hasOwnProperty(name)) {
throw new Error(`Item with name "${name}" already exists.`);
}
this.#items[ name ] = item;
this.#items[name] = item;
return this;
}
get( name:string ) {
if ( this.#items.hasOwnProperty( name ) ) {
return this.#items[ name ];
get(name: string) {
if (this.#items.hasOwnProperty(name)) {
return this.#items[name];
} else {
return false;
}
}
getAll() {
return this.#items;
}
getOlympusApp() {
return this.#olympusApp;
}
}

View File

@@ -7,7 +7,6 @@ import { groundUnitDatabase } from "../unit/databases/groundunitdatabase";
import { Buffer } from "buffer";
import { ROEs, emissionsCountermeasures, reactionsToThreat, states } from "../constants/constants";
import { Dropdown } from "../controls/dropdown";
import { UnitBlueprint } from "../@types/unitdatabase";
import { navyUnitDatabase } from "../unit/databases/navyunitdatabase";
export function bearing(lat1: number, lon1: number, lat2: number, lon2: number) {