From 14d11dc4fef16dcf6225f12cbb90567fee4b6a20 Mon Sep 17 00:00:00 2001 From: grilme99 Date: Sat, 14 May 2022 00:24:12 +0100 Subject: [PATCH] Type out sever types --- package-lock.json | 27 +++++++++++++++++++++------ package.json | 3 +++ types/Server/PlayerRecord.d.ts | 25 +++++++++++++++++++++++++ types/Server/ServerChickynoid.d.ts | 21 +++++++++++++++++++++ types/Server/index.d.ts | 9 +++++++++ 5 files changed, 79 insertions(+), 6 deletions(-) create mode 100644 types/Server/PlayerRecord.d.ts create mode 100644 types/Server/ServerChickynoid.d.ts diff --git a/package-lock.json b/package-lock.json index bba2e52..1a86e58 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,16 @@ { "name": "@rbxts/chickynoid", - "version": "1.0.1", + "version": "1.0.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@rbxts/chickynoid", - "version": "1.0.1", + "version": "1.0.5", "license": "MT", + "dependencies": { + "@rbxts/signal": "^1.0.3" + }, "devDependencies": { "@rbxts/compiler-types": "^1.3.3-types.1", "@rbxts/types": "^1.0.588", @@ -102,11 +105,18 @@ "integrity": "sha512-iWeioe5WziBTnY+FIT7aQ5bimlw81PYZ5d9WO0h1kX3joEigXPQpn2yHGRxzrqIssqQr47Y6fwknklaaQ6IPMQ==", "dev": true }, + "node_modules/@rbxts/signal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rbxts/signal/-/signal-1.0.3.tgz", + "integrity": "sha512-faFH5kVkQotZ2YzJhQ7Z12T9YkfV1O6y0V0V/I/RknBVAmefuIM8pSWj2AIEecOR6jSCtg0yZS8gNYKwfoopNA==", + "peerDependencies": { + "@rbxts/types": "^1.0.194" + } + }, "node_modules/@rbxts/types": { "version": "1.0.588", "resolved": "https://registry.npmjs.org/@rbxts/types/-/types-1.0.588.tgz", - "integrity": "sha512-4krwnlXLzrbT2Uz7uczYH3RL5IwRyqL+vmGPyQN+gJSvfp3JTrP3KC6yjftqm6sTFIAZR1/XqvA+J0l/DsagZg==", - "dev": true + "integrity": "sha512-4krwnlXLzrbT2Uz7uczYH3RL5IwRyqL+vmGPyQN+gJSvfp3JTrP3KC6yjftqm6sTFIAZR1/XqvA+J0l/DsagZg==" }, "node_modules/@roblox-ts/luau-ast": { "version": "1.0.1", @@ -2146,11 +2156,16 @@ "integrity": "sha512-iWeioe5WziBTnY+FIT7aQ5bimlw81PYZ5d9WO0h1kX3joEigXPQpn2yHGRxzrqIssqQr47Y6fwknklaaQ6IPMQ==", "dev": true }, + "@rbxts/signal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rbxts/signal/-/signal-1.0.3.tgz", + "integrity": "sha512-faFH5kVkQotZ2YzJhQ7Z12T9YkfV1O6y0V0V/I/RknBVAmefuIM8pSWj2AIEecOR6jSCtg0yZS8gNYKwfoopNA==", + "requires": {} + }, "@rbxts/types": { "version": "1.0.588", "resolved": "https://registry.npmjs.org/@rbxts/types/-/types-1.0.588.tgz", - "integrity": "sha512-4krwnlXLzrbT2Uz7uczYH3RL5IwRyqL+vmGPyQN+gJSvfp3JTrP3KC6yjftqm6sTFIAZR1/XqvA+J0l/DsagZg==", - "dev": true + "integrity": "sha512-4krwnlXLzrbT2Uz7uczYH3RL5IwRyqL+vmGPyQN+gJSvfp3JTrP3KC6yjftqm6sTFIAZR1/XqvA+J0l/DsagZg==" }, "@roblox-ts/luau-ast": { "version": "1.0.1", diff --git a/package.json b/package.json index 2d2b3d3..2e72c63 100644 --- a/package.json +++ b/package.json @@ -28,5 +28,8 @@ "eslint-plugin-roblox-ts": "^0.0.32", "prettier": "^2.4.1", "roblox-ts": "^1.3.3" + }, + "dependencies": { + "@rbxts/signal": "^1.0.3" } } diff --git a/types/Server/PlayerRecord.d.ts b/types/Server/PlayerRecord.d.ts new file mode 100644 index 0000000..19c0250 --- /dev/null +++ b/types/Server/PlayerRecord.d.ts @@ -0,0 +1,25 @@ +import Signal from "@rbxts/signal"; +import ServerChickynoid from "./ServerChickynoid"; + +interface PlayerRecord { + userId: number; + player: Player; + + chickynoid: ServerChickynoid; + + OnBeforePlayerSpawn: Signal<() => void>; + + Despawn(): void; + Spawn(): void; +} + +interface PlayerRecordConstructor { + /** + * Constructed internally. Do not use directly. + * @private + */ + new (): PlayerRecord; +} + +declare const PlayerRecord: PlayerRecordConstructor; +export = PlayerRecord; diff --git a/types/Server/ServerChickynoid.d.ts b/types/Server/ServerChickynoid.d.ts new file mode 100644 index 0000000..e949791 --- /dev/null +++ b/types/Server/ServerChickynoid.d.ts @@ -0,0 +1,21 @@ +import { ChickynoidServer } from "."; + +interface ServerChickynoid { + playerRecord: ChickynoidServer.PlayerRecord; + + SetPosition(position: Vector3): void; + GetPosition(): Vector3; + + Destroy(): void; +} + +interface ServerChickynoidConstructor { + /** + * Constructed internally. Do not use directly. + * @private + */ + new (): ServerChickynoid; +} + +declare const ServerChickynoid: ServerChickynoidConstructor; +export = ServerChickynoid; diff --git a/types/Server/index.d.ts b/types/Server/index.d.ts index 670ca12..0e709ab 100644 --- a/types/Server/index.d.ts +++ b/types/Server/index.d.ts @@ -1,3 +1,6 @@ +import Signal from "@rbxts/signal"; +import PlayerRecord from "./PlayerRecord"; + /** @server */ export namespace ChickynoidServer { export interface ServerConfig { @@ -14,6 +17,12 @@ export namespace ChickynoidServer { } export let config: ServerConfig; + export const playerRecords: Map; + + export const OnPlayerSpawn: Signal<(playerRecord: PlayerRecord) => void>; + export const OnPlayerDespawn: Signal<(playerRecord: PlayerRecord) => void>; + export const OnBeforePlayerSpawn: Signal<(playerRecord: PlayerRecord) => void>; + export const OnPlayerConnected: Signal<(server: typeof ChickynoidServer, playerRecord: PlayerRecord) => void>; // FIXME: This type is cursed /** Creates connections so that Chickynoid can run on the server. */ export function Setup(this: typeof ChickynoidServer): void;