bitburner-src/src/Locations/Location.ts

89 lines
2.2 KiB
TypeScript
Raw Normal View History

import { CityName } from "./data/CityNames";
import { LocationName } from "./data/LocationNames";
import { LocationType } from "./LocationTypeEnum";
interface IInfiltrationMetadata {
2021-09-05 01:09:30 +02:00
maxClearanceLevel: number;
startingSecurityLevel: number;
}
export interface IConstructorParams {
2021-09-05 01:09:30 +02:00
city?: CityName | null;
costMult?: number;
expMult?: number;
infiltrationData?: IInfiltrationMetadata;
name?: LocationName;
types?: LocationType[];
techVendorMaxRam?: number;
techVendorMinRam?: number;
}
/** Class representing a visitable location in the world */
export class Location {
2021-09-05 01:09:30 +02:00
/**
* Name of city this location is in. If this property is null, it means this i
* is a generic location that is available in all cities
*/
city: CityName | null = null;
/** Cost multiplier that influences how expensive a gym/university is */
2021-09-05 01:09:30 +02:00
costMult = 0;
/** Exp multiplier that influences how effective a gym/university is */
2021-09-05 01:09:30 +02:00
expMult = 0;
2021-09-05 01:09:30 +02:00
/**
* Companies can be infiltrated. This contains the data required for that
* infiltration event
*/
infiltrationData?: IInfiltrationMetadata;
/** Identifier for location */
2021-09-05 01:09:30 +02:00
name: LocationName = LocationName.Void;
2021-09-05 01:09:30 +02:00
/**
* List of what type(s) this location is. A location can be multiple types
* (e.g. company and tech vendor)
*/
types: LocationType[] = [];
2021-09-05 01:09:30 +02:00
/**
* Tech vendors allow you to purchase servers.
* This property defines the max RAM server you can purchase from this vendor
*/
techVendorMaxRam = 0;
2021-09-05 01:09:30 +02:00
/**
* Tech vendors allow you to purchase servers.
* This property defines the max RAM server you can purchase from this vendor
*/
techVendorMinRam = 0;
2021-09-05 01:09:30 +02:00
constructor(p: IConstructorParams) {
if (p.city) {
this.city = p.city;
}
2021-09-05 01:09:30 +02:00
if (p.costMult) {
this.costMult = p.costMult;
}
if (p.expMult) {
this.expMult = p.expMult;
}
if (p.infiltrationData) {
this.infiltrationData = p.infiltrationData;
}
if (p.name) {
this.name = p.name;
}
if (p.types) {
this.types = p.types;
}
if (p.techVendorMaxRam) {
this.techVendorMaxRam = p.techVendorMaxRam;
}
if (p.techVendorMinRam) {
this.techVendorMinRam = p.techVendorMinRam;
}
}
}