commit 61b94cb63ed4c2e8a3fff586d27e4d6cf2dec0a0 Author: mincomk Date: Sat Jun 7 13:15:42 2025 +0900 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e4b80bc --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +dist/**/* +node_modules +pnpm-lock.yaml diff --git a/package.json b/package.json new file mode 100644 index 0000000..3c527ee --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "computercraft-vs", + "version": "1.0.0", + "description": "", + "license": "ISC", + "author": "", + "type": "commonjs", + "types": "./types/index.d.ts", + "main": "./dist/main", + "files": [ + "dist/**/*.lua", + "dist/**/*.d.ts" + ], + "scripts": { + "build": "tstl" + }, + "devDependencies": { + "@eslint/js": "^9.27.0", + "@typescript-to-lua/language-extensions": "^1.19.0", + "computercraft-ts": "latest", + "eslint": "^9.27.0", + "globals": "^16.2.0", + "luamin": "^1.0.4", + "typescript": "^5.8.3", + "typescript-eslint": "^8.33.0", + "typescript-to-lua": "^1.31.1", + "typescript-tstl-plugin": "^0.3.2" + }, + "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0c6d21c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://raw.githubusercontent.com/TypeScriptToLua/TypeScriptToLua/master/tsconfig-schema.json", + "compilerOptions": { + "target": "ESNext", + "lib": ["ESNext"], + "moduleResolution": "Node", + "types": ["computercraft-ts", "@typescript-to-lua/language-extensions"], + "strict": true, + "declaration": true, + "outDir": "dist/", + "rootDir": "src/", + "noImplicitAny": false + }, + "tstl": { + "luaTarget": "JIT", + "buildMode": "library", + "noImplicitSelf": true + }, + "include": ["src/**/*"] +} diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 0000000..ca3ee2f --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,62 @@ +export {}; + +declare global { + type ShipVec3 = { x: number; y: number; z: number }; + type ShipQuaternion = { x: number; y: number; z: number; w: number }; + + namespace ship { + function getMass(): number; + function getWorldspacePosition(): ShipVec3; + function getShipyardPosition(): ShipVec3; + function getScale(): ShipVec3; + function getQuaternion(): ShipQuaternion; + function getRoll(): number; + function getPitch(): number; + function getYaw(): number; + function getVelocity(): ShipVec3; + function getId(): number; + function getOmega(): ShipVec3; + function isStatic(): boolean; + function getSize(): ShipVec3; + function getName(): string; + function setName(name: string): void; + function applyInvariantForce( + xForce: number, + yForce: number, + zForce: number, + ): void; + function applyInvariantForceAtPos( + xForce: number, + yForce: number, + zForce: number, + xPos: number, + yPos: number, + zPos: number, + ): void; + function applyInvariantTorque( + xTorque: number, + yTorque: number, + zTorque: number, + ): void; + function applyRotDependentForce( + xForce: number, + yForce: number, + zForce: number, + ): void; + function applyRotDependentForceAtPos( + xForce: number, + yForce: number, + zForce: number, + xPos: number, + yPos: number, + zPos: number, + ): void; + function applyRotDependentTorque( + xTorque: number, + yTorque: number, + zForce: number, + ): void; + function setStatic(isStatic: boolean): void; + function setScale(scale: number): void; + } +}