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 { playerData } from "../Classes/playerData";
import { userData } from "../Classes/userData";
import { loginResponse } from "../Classes/loginResponse.js";
import { playerData } from "../Classes/playerData.js";
import { userData } from "../Classes/userData.js";
export function emitLogin(socket, user : userData | null, player:playerData, registered:boolean = false){
if(user != null){

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
import { levelState } from "./levelState"
import { playerData } from "./playerData"
import { levelState } from "./levelState.js"
import { playerData } from "./playerData.js"
export class roomChangeResponse{
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 { itemData } from "../Classes/itemData";
import { playerData } from "../Classes/playerData";
import { inventoryChange } from "../Classes/Incoming/inventoryChange.js";
import { itemData } from "../Classes/itemData.js";
import { playerData } from "../Classes/playerData.js";
export function updateInventory(socket, data){
if(!socket.hasOwnProperty("player")) return;

View File

@ -1,5 +1,5 @@
import { itemData, persistentItemData } from "../Classes/itemData";
import {game} from "../game";
import { itemData, persistentItemData } from "../Classes/itemData.js";
import {game} from "../game.js";
function getRandom(arr){
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){
socket.on('item/updateInventory', (data) => {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

14
game.ts
View File

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

View File

@ -1,26 +1,29 @@
import { game } from "./game";
import { users } from "./Account/users";
import { players } from "./Player/players";
import { registerItemCallbacks } from "./Items/itemSocket";
import { registerLobbyCallbacks } from "./Lobby/lobbySocket";
import { registerAccountCallbacks } from "./Account/accountSocket";
import { registerLevelCallbacks } from "./Level/levelSocket";
import { registerQuestCallbacks } from "./Quest/questSocket";
import fs from 'fs';
import express from 'express';
import { createServer } from 'http';
import { Server as SocketIOServer } from 'socket.io';
import { game } from "./game.js";
import { users } from "./Account/users.js";
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 port = 3000;
const server = require('http').Server(app);
const fs = require('fs');
const server = createServer(app);
server.listen(port, () => {
console.log(`Server listening at port ${port}`);
});
const io = require("socket.io")(server, {
const io = new SocketIOServer(server, {
path: "/webmmo/",
cors: {
origin: '*',
cors: {
origin: '\*',
methods: ["GET", "POST"]
}
});
@ -28,7 +31,7 @@ const io = require("socket.io")(server, {
users.loadUsers(fs);
players.loadPlayers(fs);
io.on('connection', (socket) => {
io.on('connection', (socket : any) => {
console.log("Got connection!");
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",
"description": "",
"main": "index.ts",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
@ -12,10 +13,13 @@
"@types/express": "^4.17.13",
"@types/node": "^17.0.25",
"@types/socket.io": "^3.0.2",
"better-sqlite3": "^12.2.0",
"cors": "^2.8.5",
"express": "^4.17.3",
"socket.io": "^4.4.1",
"ts-node": "^10.7.0",
"typescript": "^4.6.3"
"sqlite": "^5.1.1",
"sqlite3": "^5.1.7",
"ts-node": "^10.9.2",
"typescript": "^5.8.3"
}
}

View File

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