214 lines
4 KiB
TypeScript
214 lines
4 KiB
TypeScript
import type { Company } from "./company.js";
|
|
import type { ConnectorType } from "./connector.js";
|
|
import type { SocketType } from "./cpu.js";
|
|
import type { MemoryType } from "./memory.js";
|
|
import type { DiscType, DiskType, IStorage } from "./storage.js";
|
|
import type { INet } from "./types.js";
|
|
|
|
enum ItemType {
|
|
SCREWDRIVER,
|
|
CPU,
|
|
GRAPHIC_CARD,
|
|
RAM_MODULE,
|
|
DISK,
|
|
DISC,
|
|
TAPE,
|
|
VHS,
|
|
DISKETTE,
|
|
CASE,
|
|
PSU,
|
|
MOTHERBOARD,
|
|
FAN,
|
|
CPU_COOLER,
|
|
GPU_COOLER,
|
|
NETWORK_CARD,
|
|
SOUND_CARD,
|
|
NETWORK_SWITCH,
|
|
WIFI_AP,
|
|
ROUTER,
|
|
MODEM,
|
|
MONITOR,
|
|
KEYBOARD,
|
|
MOUSE,
|
|
JOYSTICK,
|
|
HEADPHONES,
|
|
DAC,
|
|
MICROPHONE,
|
|
CAMERA,
|
|
PHONE,
|
|
LAPTOP,
|
|
COMPUTER,
|
|
SECURITY_KEY,
|
|
}
|
|
|
|
enum FormFactorType {
|
|
M_ATX,
|
|
ATX,
|
|
E_ATX,
|
|
}
|
|
|
|
interface IItem {
|
|
type: ItemType;
|
|
name: string;
|
|
durability: number;
|
|
manufacturer?: Company | "Player";
|
|
availability?: number;
|
|
rarity?: number;
|
|
price?: number;
|
|
canFitInComputerCase?: boolean;
|
|
canFitInLaptopCase?: boolean;
|
|
canFitInMobileCase?: boolean;
|
|
}
|
|
|
|
interface IConnectedDevice extends IItem {
|
|
connector: ConnectorType;
|
|
}
|
|
|
|
interface IScrewdriver extends IItem {
|
|
quality: number;
|
|
}
|
|
|
|
interface ICPUCore {
|
|
originalClockSpeed: number;
|
|
clockSpeed: number;
|
|
threads: number;
|
|
cacheL1?: number;
|
|
cacheL2?: number;
|
|
}
|
|
|
|
interface ICPU extends IItem {
|
|
cores: ICPUCore[];
|
|
cacheL3?: number;
|
|
cacheL4?: number;
|
|
gpu?: IGPU;
|
|
npu?: INPU;
|
|
tdp: number;
|
|
process: number;
|
|
socket: SocketType;
|
|
}
|
|
|
|
interface IGPU extends IItem {
|
|
originalClockSpeed: number;
|
|
clockSpeed: number;
|
|
coreCount: number;
|
|
shadingUnitCount: number;
|
|
tmuCount: number;
|
|
ropCount: number;
|
|
tensorCoreCount: number;
|
|
rtCoreCount: number;
|
|
cacheL0?: number;
|
|
cacheL1?: number;
|
|
cacheL2?: number;
|
|
cacheL3?: number;
|
|
tops: number;
|
|
pixelRate: number;
|
|
textureRate: number;
|
|
fp16flops: number;
|
|
fp32flops: number;
|
|
fp64flops: number;
|
|
features: IGPUFeatures;
|
|
process: number;
|
|
}
|
|
|
|
interface INPU extends IItem {
|
|
tops: number;
|
|
}
|
|
|
|
interface IGPUFeatures {
|
|
directxVersion?: number;
|
|
openglVersion?: number;
|
|
openclVersion?: number;
|
|
vulkanVersion?: number;
|
|
cudaVersion?: number;
|
|
shaderModel?: number;
|
|
}
|
|
|
|
interface IGraphicsCard extends IConnectedDevice {
|
|
gpu: IGPU;
|
|
memory: IGraphicsCardMemory;
|
|
tdp: number;
|
|
}
|
|
|
|
interface IGraphicsCardMemory {
|
|
type: MemoryType;
|
|
originalClockSpeed: number;
|
|
clockSpeed: number;
|
|
busWidth: number;
|
|
bandwidth: number;
|
|
capacity: number;
|
|
}
|
|
|
|
interface IRAMModule extends IItem {
|
|
memoryType: MemoryType;
|
|
originalClockSpeed: number;
|
|
clockSpeed: number;
|
|
capacity: number;
|
|
tdp: number;
|
|
}
|
|
|
|
interface IDisk extends IConnectedDevice {
|
|
diskType: DiskType;
|
|
bandwidth: number;
|
|
capacity: number;
|
|
tdp: number;
|
|
storage: IStorage;
|
|
}
|
|
|
|
interface IDisc extends IItem {
|
|
discType: DiscType;
|
|
bandwidth: number;
|
|
capacity: number;
|
|
storage: IStorage;
|
|
}
|
|
|
|
interface ICase extends IItem {
|
|
formFactor: FormFactorType;
|
|
width: number;
|
|
height: number;
|
|
depth: number;
|
|
installedDevices: IItem[];
|
|
}
|
|
|
|
interface IPSU extends IItem {
|
|
formFactor: FormFactorType;
|
|
width: number;
|
|
height: number;
|
|
depth: number;
|
|
wattage: number;
|
|
connectors: ConnectorType[];
|
|
}
|
|
|
|
interface IMotherboard extends IItem {
|
|
formFactor: FormFactorType;
|
|
connectors: ConnectorType[];
|
|
socket: SocketType;
|
|
socketCount: number;
|
|
memoryType: MemoryType;
|
|
memorySlots: number;
|
|
installedCPUs: ICPU[];
|
|
installedRAMs: IRAMModule[];
|
|
installedDevices: IConnectedDevice[];
|
|
}
|
|
|
|
interface IModem extends IItem {
|
|
bandwidth: number;
|
|
net: INet;
|
|
}
|
|
|
|
export {
|
|
ItemType,
|
|
FormFactorType,
|
|
type IItem,
|
|
type IConnectedDevice,
|
|
type IScrewdriver,
|
|
type ICPU,
|
|
type IGPU,
|
|
type IGraphicsCard,
|
|
type IRAMModule,
|
|
type IDisk,
|
|
type IDisc,
|
|
type ICase,
|
|
type IPSU,
|
|
type IMotherboard,
|
|
type IModem,
|
|
};
|