refactored into a node module

This commit is contained in:
katboi01 2025-07-08 20:19:22 +02:00
parent a2ec6f700b
commit 05e254cfcd
46 changed files with 3390 additions and 477 deletions

View File

@ -1,6 +1,6 @@
import { loginResponse } from "../Classes/loginResponse"; import { loginResponse } from "../Classes/loginResponse.js";
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
import { userData } from "../Classes/userData"; import { userData } from "../Classes/userData.js";
export function emitLogin(socket, user : userData | null, player:playerData, registered:boolean = false){ export function emitLogin(socket, user : userData | null, player:playerData, registered:boolean = false){
if(user != null){ if(user != null){

View File

@ -1,7 +1,7 @@
import { userData } from "../Classes/userData"; import { userData } from "../Classes/userData.js";
import { players } from "../Player/players"; import { players } from "../Player/players.js";
import { emitLogin } from "./_emitLogin"; import { emitLogin } from "./_emitLogin.js";
import { users } from "./users"; import { users } from "./users.js";
export function login(socket, data){ export function login(socket, data){
let buff = Buffer.from(data, 'base64'); let buff = Buffer.from(data, 'base64');

View File

@ -1,7 +1,7 @@
import { userData } from "../Classes/userData"; import { userData } from "../Classes/userData.js";
import { players } from "../Player/players"; import { players } from "../Player/players.js";
import { emitLogin } from "./_emitLogin"; import { emitLogin } from "./_emitLogin.js";
import { users } from "./users"; import { users } from "./users.js";
export function register(socket, data){ export function register(socket, data){
let buff = Buffer.from(data, 'base64'); let buff = Buffer.from(data, 'base64');

View File

@ -1,5 +1,5 @@
import { register } from "./_register"; import { register } from "./_register.js";
import { login } from "./_login"; import { login } from "./_login.js";
export function registerAccountCallbacks(socket){ export function registerAccountCallbacks(socket){
socket.on('account/register', (data) => { socket.on('account/register', (data) => {

View File

@ -1,5 +1,5 @@
import { game } from "../game"; import { game } from "../game.js";
import { userData } from "../Classes/userData"; import { userData } from "../Classes/userData.js";
export class users{ export class users{
static createUser(login, password){ static createUser(login, password){

View File

@ -1,4 +1,4 @@
import { itemData } from "../itemData" import { itemData } from "../itemData.js"
export class inventoryChange{ export class inventoryChange{
operation : number operation : number

View File

@ -1,4 +1,4 @@
import { levelState } from "../levelState" import { levelState } from "../levelState.js"
export class levelEnter{ export class levelEnter{
previousRoom : levelState previousRoom : levelState

View File

@ -1,4 +1,4 @@
import { playerData } from "../playerData"; import { playerData } from "../playerData.js";
export class levelUpdateClient{ export class levelUpdateClient{
player : playerData player : playerData

View File

@ -1,5 +1,5 @@
import { levelState } from "../levelState"; import { levelState } from "../levelState.js";
import { playerData } from "../playerData"; import { playerData } from "../playerData.js";
export class levelUpdateHost{ export class levelUpdateHost{
player : playerData player : playerData

View File

@ -1,4 +1,4 @@
import { playerData } from "../playerData"; import { playerData } from "../playerData.js";
export class lobbyJoin{ export class lobbyJoin{
player : playerData player : playerData

View File

@ -1,5 +1,5 @@
import { game } from "../game" import { game } from "../game.js"
import { levelState } from "./levelState" import { levelState } from "./levelState.js"
export class dungeonData{ export class dungeonData{
entranceId : string entranceId : string

View File

@ -1,5 +1,5 @@
import { Stat } from "./itemData" import { Stat } from "./itemData.js"
import { physicsObject } from "./physicsObject" import { physicsObject } from "./physicsObject.js"
export class enemyData{ export class enemyData{
id : number id : number

View File

@ -1,5 +1,5 @@
import { game } from "../game" import { game } from "../game.js"
import { inventoryChange } from "./Incoming/inventoryChange" import { inventoryChange } from "./Incoming/inventoryChange.js"
export class itemData{ export class itemData{
name : string name : string

View File

@ -1,4 +1,4 @@
import { itemData } from "./itemData" import { itemData } from "./itemData.js"
export class itemGenerated{ export class itemGenerated{
instanceId: number instanceId: number

View File

@ -1,4 +1,4 @@
import { itemData } from "./itemData" import { itemData } from "./itemData.js"
export class itemPickup{ export class itemPickup{
instanceId: number instanceId: number

View File

@ -1,6 +1,6 @@
import { enemyData } from "./enemyData"; import { enemyData } from "./enemyData.js";
import { playerData } from "./playerData"; import { playerData } from "./playerData.js";
import { propData } from "./propData"; import { propData } from "./propData.js";
export class levelState{ export class levelState{
id : string id : string

View File

@ -1,7 +1,7 @@
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
import { dungeonData } from "./dungeonData"; import { dungeonData } from "./dungeonData.js";
import { levelState } from "./levelState"; import { levelState } from "./levelState.js";
import { userData } from "./userData"; import { userData } from "./userData.js";
export class lobbyState{ export class lobbyState{
users : userData[] = []; users : userData[] = [];

View File

@ -1,5 +1,5 @@
import { playerData } from "./playerData" import { playerData } from "./playerData.js"
import { userData } from "./userData" import { userData } from "./userData.js"
export class loginResponse{ export class loginResponse{
result : boolean result : boolean

View File

@ -1,7 +1,7 @@
import { enemyDamageInfo } from "./enemyDamageInfo"; import { enemyDamageInfo } from "./enemyDamageInfo.js";
import { physicsObject } from "./physicsObject"; import { physicsObject } from "./physicsObject.js";
import { playerInventory } from "./playerInventory"; import { playerInventory } from "./playerInventory.js";
import { questBook } from "./questBook"; import { questBook } from "./questBook.js";
export class playerData{ export class playerData{
id : number id : number

View File

@ -1,4 +1,4 @@
import { itemData } from "./itemData"; import { itemData } from "./itemData.js";
export class playerInventory{ export class playerInventory{
weapon : number = -1 weapon : number = -1

View File

@ -1,4 +1,4 @@
import { physicsObject } from "./physicsObject" import { physicsObject } from "./physicsObject.js"
export class propData{ export class propData{
id : number id : number

View File

@ -1,4 +1,4 @@
import { questProgressData } from "./questProgressData"; import { questProgressData } from "./questProgressData.js";
export class questBook{ export class questBook{
quests = {} quests = {}

View File

@ -1,5 +1,5 @@
import { levelState } from "./levelState" import { levelState } from "./levelState.js"
import { playerData } from "./playerData" import { playerData } from "./playerData.js"
export class roomChangeResponse{ export class roomChangeResponse{
player : playerData player : playerData

11
Database/dbcontroller.ts Normal file
View File

@ -0,0 +1,11 @@
import Database from 'better-sqlite3';
import { open } from 'sqlite'
// this is a top-level await
(async () => {
// open the database
const db = await open({
filename: '/tmp/database.db',
driver: Database
})
})()

View File

@ -1,6 +1,6 @@
import { inventoryChange } from "../Classes/Incoming/inventoryChange"; import { inventoryChange } from "../Classes/Incoming/inventoryChange.js";
import { itemData } from "../Classes/itemData"; import { itemData } from "../Classes/itemData.js";
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
export function updateInventory(socket, data){ export function updateInventory(socket, data){
if(!socket.hasOwnProperty("player")) return; if(!socket.hasOwnProperty("player")) return;

View File

@ -1,5 +1,5 @@
import { itemData, persistentItemData } from "../Classes/itemData"; import { itemData, persistentItemData } from "../Classes/itemData.js";
import {game} from "../game"; import {game} from "../game.js";
function getRandom(arr){ function getRandom(arr){
return arr[Math.floor(Math.random()*arr.length)] return arr[Math.floor(Math.random()*arr.length)]

View File

@ -1,4 +1,4 @@
import { updateInventory } from "./_updateInventory"; import { updateInventory } from "./_updateInventory.js";
export function registerItemCallbacks(socket){ export function registerItemCallbacks(socket){
socket.on('item/updateInventory', (data) => { socket.on('item/updateInventory', (data) => {

View File

@ -1,5 +1,5 @@
import { persistentItemData } from "../Classes/itemData"; import { persistentItemData } from "../Classes/itemData.js";
import { game } from "../game"; import { game } from "../game.js";
const fs = require('fs'); const fs = require('fs');

View File

@ -1,4 +1,4 @@
import { game } from "../game"; import { game } from "../game.js";
export function clear(socket, data){ export function clear(socket, data){
if(!socket.hasOwnProperty("player")) return; if(!socket.hasOwnProperty("player")) return;

View File

@ -1,7 +1,7 @@
import { game } from "../game"; import { game } from "../game.js";
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
import { roomChangeResponse } from "../Classes/roomChangeResponse"; import { roomChangeResponse } from "../Classes/roomChangeResponse.js";
import { levelEnter } from "../Classes/Incoming/levelEnter"; import { levelEnter } from "../Classes/Incoming/levelEnter.js";
export function enter(socket, data){ export function enter(socket, data){
if(!socket.hasOwnProperty("player")) return; if(!socket.hasOwnProperty("player")) return;

View File

@ -1,5 +1,5 @@
import { levelUpdateClient } from "../Classes/Incoming/levelUpdateClient"; import { levelUpdateClient } from "../Classes/Incoming/levelUpdateClient.js";
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
export function playerUpdate(socket, data){ export function playerUpdate(socket, data){
if(!socket.hasOwnProperty("user")) return; if(!socket.hasOwnProperty("user")) return;

View File

@ -1,4 +1,4 @@
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
export function projectile(socket, data){ export function projectile(socket, data){
if(!socket.hasOwnProperty("user")) return; if(!socket.hasOwnProperty("user")) return;

View File

@ -1,6 +1,6 @@
import { levelUpdateHost } from "../Classes/Incoming/levelUpdateHost"; import { levelUpdateHost } from "../Classes/Incoming/levelUpdateHost.js";
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
import { game } from "../game"; import { game } from "../game.js";
export function update(socket, data){ export function update(socket, data){
if(!socket.hasOwnProperty("player")) return; if(!socket.hasOwnProperty("player")) return;

View File

@ -1,8 +1,8 @@
import { clear } from "./_clear"; import { clear } from "./_clear.js";
import { enter } from "./_enter"; import { enter } from "./_enter.js";
import { playerUpdate } from "./_playerUpdate"; import { playerUpdate } from "./_playerUpdate.js";
import { projectile } from "./_projectile"; import { projectile } from "./_projectile.js";
import { update } from "./_update"; import { update } from "./_update.js";
export function registerLevelCallbacks(socket){ export function registerLevelCallbacks(socket){
socket.on('level/enter', (data) => { socket.on('level/enter', (data) => {

View File

@ -1,5 +1,5 @@
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
import { game } from "../game"; import { game } from "../game.js";
export function loadoutChanged(socket, data){ export function loadoutChanged(socket, data){
if(!socket.hasOwnProperty("player")) return; if(!socket.hasOwnProperty("player")) return;

View File

@ -1,5 +1,5 @@
import { lobbyMessage } from "../Classes/lobbyMessage"; import { lobbyMessage } from "../Classes/lobbyMessage.js";
import { game } from "../game"; import { game } from "../game.js";
export function message(socket, data){ export function message(socket, data){
if(!socket.hasOwnProperty("user")) return; if(!socket.hasOwnProperty("user")) return;

View File

@ -1,9 +1,9 @@
import { lobbyJoin } from "../Classes/Incoming/lobbyJoin"; import { lobbyJoin } from "../Classes/Incoming/lobbyJoin.js";
import { levelState } from "../Classes/levelState"; import { levelState } from "../Classes/levelState.js";
import { lobbyMessage } from "../Classes/lobbyMessage"; import { lobbyMessage } from "../Classes/lobbyMessage.js";
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
import { userData } from "../Classes/userData"; import { userData } from "../Classes/userData.js";
import { game } from "../game"; import { game } from "../game.js";
export function playerJoin(socket, data){ export function playerJoin(socket, data){
if(!socket.hasOwnProperty("player")) return; if(!socket.hasOwnProperty("player")) return;

View File

@ -1,6 +1,6 @@
import { loadoutChanged } from "./_loadoutChanged"; import { loadoutChanged } from "./_loadoutChanged.js";
import { message } from "./_message"; import { message } from "./_message.js";
import { playerJoin } from "./_playerJoin"; import { playerJoin } from "./_playerJoin.js";
export function registerLobbyCallbacks(socket){ export function registerLobbyCallbacks(socket){
socket.on('lobby/playerJoin', (data) => { socket.on('lobby/playerJoin', (data) => {

View File

@ -1,5 +1,5 @@
import { game } from "../game"; import { game } from "../game.js";
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
export class players{ export class players{
static createPlayer(id){ static createPlayer(id){

View File

@ -1,5 +1,5 @@
import { playerData } from "../Classes/playerData"; import { playerData } from "../Classes/playerData.js";
import { questProgressData } from "../Classes/questProgressData"; import { questProgressData } from "../Classes/questProgressData.js";
export function update(socket, data){ export function update(socket, data){
if(!socket.hasOwnProperty("player")) return; if(!socket.hasOwnProperty("player")) return;

View File

@ -1,4 +1,4 @@
import { update } from "./_update"; import { update } from "./_update.js";
export function registerQuestCallbacks(socket){ export function registerQuestCallbacks(socket){
socket.on('quest/update', (data) => { socket.on('quest/update', (data) => {

14
game.ts
View File

@ -1,10 +1,10 @@
import { userData } from "./Classes/userData"; import fs from 'fs';
import { lobbyMessage } from "./Classes/lobbyMessage"; import { userData } from "./Classes/userData.js";
import { lobbyState } from "./Classes/lobbyState"; import { lobbyMessage } from "./Classes/lobbyMessage.js";
import { playerData } from "./Classes/playerData"; import { lobbyState } from "./Classes/lobbyState.js";
import { persistentItemData } from "./Classes/itemData"; import { playerData } from "./Classes/playerData.js";
import { levelState } from "./Classes/levelState"; import { persistentItemData } from "./Classes/itemData.js";
const fs = require('fs'); import { levelState } from "./Classes/levelState.js";
export class game{ export class game{
static socketIO : any static socketIO : any

View File

@ -1,26 +1,29 @@
import { game } from "./game"; import fs from 'fs';
import { users } from "./Account/users"; import express from 'express';
import { players } from "./Player/players"; import { createServer } from 'http';
import { registerItemCallbacks } from "./Items/itemSocket"; import { Server as SocketIOServer } from 'socket.io';
import { registerLobbyCallbacks } from "./Lobby/lobbySocket";
import { registerAccountCallbacks } from "./Account/accountSocket"; import { game } from "./game.js";
import { registerLevelCallbacks } from "./Level/levelSocket"; import { users } from "./Account/users.js";
import { registerQuestCallbacks } from "./Quest/questSocket"; import { players } from "./Player/players.js";
import { registerItemCallbacks } from "./Items/itemSocket.js";
import { registerLobbyCallbacks } from "./Lobby/lobbySocket.js";
import { registerAccountCallbacks } from "./Account/accountSocket.js";
import { registerLevelCallbacks } from "./Level/levelSocket.js";
import { registerQuestCallbacks } from "./Quest/questSocket.js";
const express = require("express");
const app = express(); const app = express();
const port = 3000; const port = 3000;
const server = require('http').Server(app); const server = createServer(app);
const fs = require('fs');
server.listen(port, () => { server.listen(port, () => {
console.log(`Server listening at port ${port}`); console.log(`Server listening at port ${port}`);
}); });
const io = require("socket.io")(server, { const io = new SocketIOServer(server, {
path: "/webmmo/", path: "/webmmo/",
cors: { cors: {
origin: '*', origin: '\*',
methods: ["GET", "POST"] methods: ["GET", "POST"]
} }
}); });
@ -28,7 +31,7 @@ const io = require("socket.io")(server, {
users.loadUsers(fs); users.loadUsers(fs);
players.loadPlayers(fs); players.loadPlayers(fs);
io.on('connection', (socket) => { io.on('connection', (socket : any) => {
console.log("Got connection!"); console.log("Got connection!");
socket.emit("connectSuccess", ""); socket.emit("connectSuccess", "");

3616
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,7 @@
"version": "1.0.0", "version": "1.0.0",
"description": "", "description": "",
"main": "index.ts", "main": "index.ts",
"type": "module",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
@ -12,10 +13,13 @@
"@types/express": "^4.17.13", "@types/express": "^4.17.13",
"@types/node": "^17.0.25", "@types/node": "^17.0.25",
"@types/socket.io": "^3.0.2", "@types/socket.io": "^3.0.2",
"better-sqlite3": "^12.2.0",
"cors": "^2.8.5", "cors": "^2.8.5",
"express": "^4.17.3", "express": "^4.17.3",
"socket.io": "^4.4.1", "socket.io": "^4.4.1",
"ts-node": "^10.7.0", "sqlite": "^5.1.1",
"typescript": "^4.6.3" "sqlite3": "^5.1.7",
"ts-node": "^10.9.2",
"typescript": "^5.8.3"
} }
} }

View File

@ -1,7 +1,10 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "es5", "module": "NodeNext",
"module": "commonjs", "moduleResolution": "NodeNext",
"target": "ES2020",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true, "sourceMap": true,
"noImplicitAny": false "noImplicitAny": false
} }