diff --git a/Account/_emitLogin.ts b/Account/_emitLogin.ts
new file mode 100644
index 0000000..5dd0e26
--- /dev/null
+++ b/Account/_emitLogin.ts
@@ -0,0 +1,21 @@
+import { loginResponse } from "../Classes/loginResponse";
+import { playerData } from "../Classes/playerData";
+import { userData } from "../Classes/userData";
+
+export function emitLogin(socket, user : userData | null, player:playerData, registered:boolean = false){
+ if(user != null){
+ socket.emit("account/login", JSON.stringify(new loginResponse(true, user, player)));
+ socket.user = user
+ socket.player = player
+ if(registered){
+ console.log(`User ${(user as userData).login} registerd and logged in`);
+ }
+ else{
+ console.log(`User ${(user as userData).login} logged in`);
+ }
+ }
+ else{
+ socket.emit("account/login", JSON.stringify(new loginResponse(false, null, null)));
+ console.log("Login Failed");
+ }
+}
\ No newline at end of file
diff --git a/Account/_login.ts b/Account/_login.ts
new file mode 100644
index 0000000..ab5f586
--- /dev/null
+++ b/Account/_login.ts
@@ -0,0 +1,21 @@
+import { userData } from "../Classes/userData";
+import { players } from "../Player/players";
+import { emitLogin } from "./_emitLogin";
+import { users } from "./users";
+
+export function login(socket, data){
+ let buff = Buffer.from(data, 'base64');
+ let json : userData = JSON.parse(buff.toString('utf-8'));
+ if (!json.login || !json.password) return
+
+ let result = users.readUser(json.login, json.password);
+ let player = null
+ if(result != null){
+ player = players.readPlayer(result.id)
+ if(player == null){
+ player = players.createPlayer(result.id)
+ }
+ }
+
+ emitLogin(socket, result, player);
+}
\ No newline at end of file
diff --git a/Account/_register.ts b/Account/_register.ts
new file mode 100644
index 0000000..ae5aaf0
--- /dev/null
+++ b/Account/_register.ts
@@ -0,0 +1,18 @@
+import { userData } from "../Classes/userData";
+import { players } from "../Player/players";
+import { emitLogin } from "./_emitLogin";
+import { users } from "./users";
+
+export function register(socket, data){
+ let buff = Buffer.from(data, 'base64');
+ let json : userData = JSON.parse(buff.toString('utf-8'));
+ if (!json.login || !json.password) return
+
+ let result = users.createUser(json.login, json.password);
+ let player = null
+ if(result != null){
+ player = players.createPlayer(result.id)
+ }
+
+ emitLogin(socket, result, player);
+}
\ No newline at end of file
diff --git a/Account/accountSocket.ts b/Account/accountSocket.ts
index 5bef066..5c60ea6 100644
--- a/Account/accountSocket.ts
+++ b/Account/accountSocket.ts
@@ -1,56 +1,12 @@
-import { loginResponse } from "../Classes/loginResponse";
-import { playerData } from "../Classes/playerData";
-import { userData } from "../Classes/userData";
-import { users } from "./users";
-import { players } from "../Player/players";
+import { register } from "./_register";
+import { login } from "./_login";
export function registerAccountCallbacks(socket){
- function emitLogin(user : userData | null, player:playerData, registered:boolean = false){
- if(user != null){
- socket.emit("account/login", JSON.stringify(new loginResponse(true, user, player)));
- socket.user = user
- socket.player = player
- if(registered){
- console.log(`User ${(user as userData).login} registerd and logged in`);
- }
- else{
- console.log(`User ${(user as userData).login} logged in`);
- }
- }
- else{
- socket.emit("account/login", JSON.stringify(new loginResponse(false, null, null)));
- console.log("Login Failed");
- }
- }
-
socket.on('account/register', (data) => {
- let buff = Buffer.from(data, 'base64');
- let json : userData = JSON.parse(buff.toString('utf-8'));
- if (!json.login || !json.password) return
-
- let result = users.createUser(json.login, json.password);
- let player = null
- if(result != null){
- player = players.createPlayer(result.id)
- }
-
- emitLogin(result, player);
+ register(socket, data)
});
socket.on('account/login', (data) => {
- let buff = Buffer.from(data, 'base64');
- let json : userData = JSON.parse(buff.toString('utf-8'));
- if (!json.login || !json.password) return
-
- let result = users.readUser(json.login, json.password);
- let player = null
- if(result != null){
- player = players.readPlayer(result.id)
- if(player == null){
- player = players.createPlayer(result.id)
- }
- }
-
- emitLogin(result, player);
+ login(socket, data)
});
}
\ No newline at end of file
diff --git a/Items/_delete1.ts b/Items/_delete1.ts
new file mode 100644
index 0000000..6cbabb8
--- /dev/null
+++ b/Items/_delete1.ts
@@ -0,0 +1,15 @@
+import { playerData } from "../Classes/playerData";
+
+export function delete1(socket, data){
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let data1 = Number(buff.toString('utf-8'));
+
+ let player : playerData = socket.player
+ let item = player.inventory.items.findIndex(i=>i.id == data1);
+ if(item == -1){
+ console.log("Error! Item " + item + " not found!")
+ }
+ player.inventory.items.splice(item, 1)
+}
\ No newline at end of file
diff --git a/Items/_deleteMany.ts b/Items/_deleteMany.ts
new file mode 100644
index 0000000..91ce378
--- /dev/null
+++ b/Items/_deleteMany.ts
@@ -0,0 +1,22 @@
+import { inventoryItemTransaction } from "../Classes/inventoryItemTransaction";
+import { playerData } from "../Classes/playerData";
+
+export function deleteMany(socket, data){
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let data1 : inventoryItemTransaction[] = JSON.parse(buff.toString('utf-8'));
+
+ let player : playerData = socket.player
+ data1.forEach(t=>{
+ switch(t.type){
+ case 0:
+ player.inventory.items.find(i=>i.id == t.itemId).count += t.amount;
+ break;
+ case 2:
+ let item = player.inventory.items.findIndex(i=>i.id == t.itemId);
+ player.inventory.items.splice(item, 1)
+ break;
+ }
+ })
+}
\ No newline at end of file
diff --git a/Items/_pickup.ts b/Items/_pickup.ts
new file mode 100644
index 0000000..2b0fe3e
--- /dev/null
+++ b/Items/_pickup.ts
@@ -0,0 +1,70 @@
+import { itemData } from "../Classes/itemData";
+import { lobbyMessage } from "../Classes/lobbyMessage";
+import { playerData } from "../Classes/playerData";
+import { game } from "../game";
+
+export function pickup(socket, data){
+
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let data1 : itemData = JSON.parse(buff.toString('utf-8'));
+
+ let player : playerData = socket.player
+ if(player != null){
+
+ let inventory = player.inventory
+ let template = game.getItemTemplate(data1.templateId)
+ let items = inventory.items.filter(i=>i.templateId == data1.templateId)
+ let totalAdded = 0
+
+ if(data1.count > template.maxCount)
+ {
+ console.log("ERROR ERROR ITEM ERROR")
+ return;
+ }
+
+ items.forEach(item=>{
+ var maxAmount = Math.min(template.maxCount - item.count, data1.count - totalAdded);
+
+ if (maxAmount > 0)
+ {
+ item.count += maxAmount;
+ totalAdded += maxAmount;
+ }
+ })
+
+ if(totalAdded < data1.count)
+ {
+ let maxAmount = data1.count - totalAdded
+ let itemCopy = itemData.copy(data1);
+ itemCopy.count = maxAmount;
+ totalAdded += maxAmount;
+ inventory.items.push(itemCopy);
+ }
+
+ if (totalAdded == data1.count)
+ {
+ if(data1.rarity >= 75){
+ let message = socket.user.login + " picked up "
+ if(data1.rarity >= 95){
+ message += "" + data1.name + " (epic)"
+ }
+ else if(data1.rarity >= 75){
+ message += "" + data1.name + " (rare)"
+ }
+ else if(data1.rarity >= 60){
+ message += "" + data1.name + " (uncommon)"
+ }
+ else
+ message += data1.name;
+
+ game.addMessage(new lobbyMessage(message))
+ }
+ }
+ else
+ {
+ console.log("ERROR ERROR ITEM ERROR")
+ }
+ }
+}
\ No newline at end of file
diff --git a/Items/_request.ts b/Items/_request.ts
new file mode 100644
index 0000000..615b4a0
--- /dev/null
+++ b/Items/_request.ts
@@ -0,0 +1,16 @@
+import { itemGenerated } from "../Classes/itemGenerated";
+import { itemRequest } from "../Classes/itemRequest";
+import { generateItemByType } from "./itemGeneration";
+
+export function request(socket, data){
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let data1 : itemRequest = JSON.parse(buff.toString('utf-8'));
+
+ let response = new itemGenerated()
+ response.instanceId = data1.instanceId
+ response.item = generateItemByType(data1.itemType)
+
+ socket.emit("item/generated", JSON.stringify(response))
+}
\ No newline at end of file
diff --git a/Items/itemSocket.ts b/Items/itemSocket.ts
index b3aa73d..056d48e 100644
--- a/Items/itemSocket.ts
+++ b/Items/itemSocket.ts
@@ -1,122 +1,22 @@
-import { itemData } from "../Classes/itemData";
-import { itemGenerated } from "../Classes/itemGenerated";
-import { generateItemByType } from "./itemGeneration";
-import { itemRequest } from "../Classes/itemRequest";
-import { lobbyMessage } from "../Classes/lobbyMessage";
-import { game } from "../game";
-import { playerData } from "../Classes/playerData";
-import { inventoryItemTransaction } from "../Classes/inventoryItemTransaction";
+import { delete1 } from "./_delete1";
+import { deleteMany } from "./_deleteMany";
+import { pickup } from "./_pickup";
+import { request } from "./_request";
export function registerItemCallbacks(socket){
socket.on('item/pickup', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- let data1 : itemData = JSON.parse(buff.toString('utf-8'));
-
- let player : playerData = socket.player
- if(player != null){
-
- let inventory = player.inventory
- let template = game.getItemTemplate(data1.templateId)
- let items = inventory.items.filter(i=>i.templateId == data1.templateId)
- let totalAdded = 0
-
- if(data1.count > template.maxCount)
- {
- console.log("ERROR ERROR ITEM ERROR")
- return;
- }
-
- items.forEach(item=>{
- var maxAmount = Math.min(template.maxCount - item.count, data1.count - totalAdded);
-
- if (maxAmount > 0)
- {
- item.count += maxAmount;
- totalAdded += maxAmount;
- }
- })
-
- if(totalAdded < data1.count)
- {
- let maxAmount = data1.count - totalAdded
- let itemCopy = itemData.copy(data1);
- itemCopy.count = maxAmount;
- totalAdded += maxAmount;
- inventory.items.push(itemCopy);
- }
-
- if (totalAdded == data1.count)
- {
- if(data1.rarity >= 75){
- let message = socket.user.login + " picked up "
- if(data1.rarity >= 95){
- message += "" + data1.name + " (epic)"
- }
- else if(data1.rarity >= 75){
- message += "" + data1.name + " (rare)"
- }
- else if(data1.rarity >= 60){
- message += "" + data1.name + " (uncommon)"
- }
- else
- message += data1.name;
-
- game.addMessage(new lobbyMessage(message))
- }
- }
- else
- {
- console.log("ERROR ERROR ITEM ERROR")
- }
- }
+ pickup(socket, data)
});
socket.on('item/delete', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- let data1 = Number(buff.toString('utf-8'));
-
- let player : playerData = socket.player
- let item = player.inventory.items.findIndex(i=>i.id == data1);
- if(item == -1){
- console.log("Error! Item " + item + " not found!")
- }
- player.inventory.items.splice(item, 1)
+ delete1(socket, data)
});
socket.on('item/deleteMany', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- let data1 : inventoryItemTransaction[] = JSON.parse(buff.toString('utf-8'));
-
- let player : playerData = socket.player
- data1.forEach(t=>{
- switch(t.type){
- case 0:
- player.inventory.items.find(i=>i.id == t.itemId).count += t.amount;
- break;
- case 2:
- let item = player.inventory.items.findIndex(i=>i.id == t.itemId);
- player.inventory.items.splice(item, 1)
- break;
- }
- })
+ deleteMany(socket, data)
});
socket.on('item/request', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- let data1 : itemRequest = JSON.parse(buff.toString('utf-8'));
-
- let response = new itemGenerated()
- response.instanceId = data1.instanceId
- response.item = generateItemByType(data1.itemType)
-
- socket.emit("item/generated", JSON.stringify(response))
+ request(socket, data)
});
}
\ No newline at end of file
diff --git a/Level/_projectile.ts b/Level/_projectile.ts
new file mode 100644
index 0000000..c00a6f1
--- /dev/null
+++ b/Level/_projectile.ts
@@ -0,0 +1,10 @@
+import { game } from "../game";
+
+export function projectile(socket, data){
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ //let data1 = JSON.parse();
+
+ game.socketIO.emit('level/projectile', buff.toString('utf-8'))
+}
\ No newline at end of file
diff --git a/Level/_update.ts b/Level/_update.ts
new file mode 100644
index 0000000..45e23ab
--- /dev/null
+++ b/Level/_update.ts
@@ -0,0 +1,26 @@
+import { levelState } from "../Classes/levelState";
+import { game } from "../game";
+
+export function update(socket, data){
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let rawJson = JSON.parse(buff.toString('utf-8'));
+ let data1 : levelState = rawJson;
+
+ let room = game.lobbyState.rooms.find(l=>l.id == data1.id)
+ if (room == null){
+ room = new levelState()
+ room.id = data1.id
+ game.lobbyState.rooms.push(room)
+ }
+
+ let player = socket.player
+ player.room = rawJson.player.room
+ player.rigidbody = rawJson.player.rigidbody
+ //only in non-host player
+ //player.damageInfo = rawJson.player.damageInfo
+
+ room.enemies = data1.enemies
+ room.objects = data1.objects
+}
\ No newline at end of file
diff --git a/Level/levelSocket.ts b/Level/levelSocket.ts
index d2e7e64..3745ffe 100644
--- a/Level/levelSocket.ts
+++ b/Level/levelSocket.ts
@@ -1,37 +1,12 @@
-import { levelState } from "../Classes/levelState";
-import { game } from "../game";
+import { projectile } from "./_projectile";
+import { update } from "./_update";
export function registerLevelCallbacks(socket){
socket.on('level/update', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- let rawJson = JSON.parse(buff.toString('utf-8'));
- let data1 : levelState = rawJson;
-
- let room = game.lobbyState.rooms.find(l=>l.id == data1.id)
- if (room == null){
- room = new levelState()
- room.id = data1.id
- game.lobbyState.rooms.push(room)
- }
-
- let player = socket.player
- player.room = rawJson.player.room
- player.rigidbody = rawJson.player.rigidbody
- //only in non-host player
- //player.damageInfo = rawJson.player.damageInfo
-
- room.enemies = data1.enemies
- room.objects = data1.objects
+ update(socket, data)
});
socket.on('level/projectile', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- //let data1 = JSON.parse();
-
- game.socketIO.emit('level/projectile', buff.toString('utf-8'))
+ projectile(socket, data)
});
}
\ No newline at end of file
diff --git a/Lobby/_loadoutChanged.ts b/Lobby/_loadoutChanged.ts
new file mode 100644
index 0000000..dbd81b6
--- /dev/null
+++ b/Lobby/_loadoutChanged.ts
@@ -0,0 +1,16 @@
+import { playerData } from "../Classes/playerData";
+import { game } from "../game";
+
+export function loadoutChanged(socket, data){
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let data1 : playerData = JSON.parse(buff.toString('utf-8'));
+
+ let player : playerData = socket.player
+ player.inventory.weapon = data1.inventory.weapon
+ player.inventory.equipment = data1.inventory.equipment
+ player.validateEquipment()
+
+ game.socketIO.emit("lobby/loadoutChanged", JSON.stringify(player))
+}
\ No newline at end of file
diff --git a/Lobby/_message.ts b/Lobby/_message.ts
new file mode 100644
index 0000000..b9d3aed
--- /dev/null
+++ b/Lobby/_message.ts
@@ -0,0 +1,12 @@
+import { lobbyMessage } from "../Classes/lobbyMessage";
+import { game } from "../game";
+
+export function message(socket, data){
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let data1 : lobbyMessage = JSON.parse(buff.toString('utf-8'));
+ data1.timestamp = new Date().toLocaleString();
+
+ game.addMessage(data1)
+}
\ No newline at end of file
diff --git a/Lobby/_playerJoin.ts b/Lobby/_playerJoin.ts
new file mode 100644
index 0000000..aa0662c
--- /dev/null
+++ b/Lobby/_playerJoin.ts
@@ -0,0 +1,21 @@
+import { lobbyMessage } from "../Classes/lobbyMessage";
+import { lobbyState } from "../Classes/lobbyState";
+import { playerData } from "../Classes/playerData";
+import { userData } from "../Classes/userData";
+import { game } from "../game";
+
+export function playerJoin(socket, data){
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let data1 : playerData = JSON.parse(buff.toString('utf-8'));
+
+ socket.player.characterId = data1.characterId
+ game.lobbyState.addUser(socket.user, socket.player)
+
+ let newLobbyState : lobbyState = Object.assign({}, game.lobbyState);
+ newLobbyState.users = newLobbyState.users.map(u=> userData.makeSafe(u))
+
+ game.socketIO.emit("lobby/playerJoin", JSON.stringify(newLobbyState))
+ game.addMessage(new lobbyMessage(socket.user.login + " joined"))
+}
\ No newline at end of file
diff --git a/Lobby/_playerUpdate.ts b/Lobby/_playerUpdate.ts
new file mode 100644
index 0000000..d392569
--- /dev/null
+++ b/Lobby/_playerUpdate.ts
@@ -0,0 +1,18 @@
+import { playerData } from "../Classes/playerData";
+
+export function playerUpdate(socket, data){
+ if(!socket.hasOwnProperty("user")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let data1 : playerData = JSON.parse(buff.toString('utf-8'));
+
+ let player : playerData = socket.player
+ if(player == null){
+ console.log("Error! Player not spawned!")
+ }
+ else{
+ player.room = data1.room
+ player.rigidbody = data1.rigidbody
+ player.damageInfo = player.damageInfo.concat(data1.damageInfo)
+ }
+}
\ No newline at end of file
diff --git a/Lobby/lobbySocket.ts b/Lobby/lobbySocket.ts
index 7dc5ec0..363134f 100644
--- a/Lobby/lobbySocket.ts
+++ b/Lobby/lobbySocket.ts
@@ -1,65 +1,22 @@
-import { lobbyMessage } from "../Classes/lobbyMessage";
-import { lobbyState } from "../Classes/lobbyState";
-import { playerData } from "../Classes/playerData"
-import { playerInventory } from "../Classes/playerInventory";
-import { userData } from "../Classes/userData";
-import { game } from "../game";
+import { loadoutChanged } from "./_loadoutChanged";
+import { message } from "./_message";
+import { playerJoin } from "./_playerJoin";
+import { playerUpdate } from "./_playerUpdate";
export function registerLobbyCallbacks(socket){
socket.on('lobby/playerJoin', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- let data1 : playerData = JSON.parse(buff.toString('utf-8'));
-
- socket.player.characterId = data1.characterId
- game.lobbyState.addUser(socket.user, socket.player)
-
- let newLobbyState : lobbyState = Object.assign({}, game.lobbyState);
- newLobbyState.users = newLobbyState.users.map(u=> userData.makeSafe(u))
-
- game.socketIO.emit("lobby/playerJoin", JSON.stringify(newLobbyState))
- game.addMessage(new lobbyMessage(socket.user.login + " joined"))
+ playerJoin(socket, data)
});
socket.on('lobby/playerUpdate', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- let data1 : playerData = JSON.parse(buff.toString('utf-8'));
-
- let player : playerData = socket.player
- if(player == null){
- console.log("Error! Player not spawned!")
- }
- else{
- player.room = data1.room
- player.rigidbody = data1.rigidbody
- player.damageInfo = player.damageInfo.concat(data1.damageInfo)
- }
+ playerUpdate(socket, data)
});
socket.on('lobby/loadoutChanged', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- let data1 : playerData = JSON.parse(buff.toString('utf-8'));
-
- let player : playerData = socket.player
- player.inventory.weapon = data1.inventory.weapon
- player.inventory.equipment = data1.inventory.equipment
- player.validateEquipment()
-
- game.socketIO.emit("lobby/loadoutChanged", JSON.stringify(player))
+ loadoutChanged(socket, data)
});
socket.on('lobby/message', (data) => {
- if(!socket.hasOwnProperty("user")) return;
-
- let buff = Buffer.from(data, 'base64');
- let data1 : lobbyMessage = JSON.parse(buff.toString('utf-8'));
- data1.timestamp = new Date().toLocaleString();
-
- game.addMessage(data1)
+ message(socket, data)
});
}
\ No newline at end of file