diff --git a/Classes/Incoming/inventoryChange.ts b/Classes/Incoming/inventoryChange.ts
new file mode 100644
index 0000000..660016d
--- /dev/null
+++ b/Classes/Incoming/inventoryChange.ts
@@ -0,0 +1,12 @@
+import { Stat } from "../itemData"
+
+export class inventoryChange{
+ id : number
+ name : string
+ rarity : number
+ change : number
+ templateId: number
+ operation : number
+ equipment : number[]
+ stats : Stat[] = []
+}
\ No newline at end of file
diff --git a/Classes/itemData.ts b/Classes/itemData.ts
index 0c79ad0..a5cce6d 100644
--- a/Classes/itemData.ts
+++ b/Classes/itemData.ts
@@ -1,4 +1,5 @@
import { game } from "../game"
+import { inventoryChange } from "./Incoming/inventoryChange"
export class itemData{
name : string
@@ -20,6 +21,24 @@ export class itemData{
return item
}
+ static fromChange(change : inventoryChange){
+ let item = new itemData()
+
+ item.id = change.id
+ item.name = change.name
+ if(change.hasOwnProperty("stats")){
+ item.stats = change.stats
+ }
+ else{
+ item.stats = []
+ }
+ item.count = change.change
+ item.rarity = change.rarity
+ item.templateId = change.templateId
+
+ return item
+ }
+
static copy(data : itemData){
let item = new itemData()
diff --git a/Classes/playerData.ts b/Classes/playerData.ts
index d0f0c3d..03eece2 100644
--- a/Classes/playerData.ts
+++ b/Classes/playerData.ts
@@ -43,20 +43,8 @@ export class playerData{
}
validateEquipment(){
- if(this.inventory.weapon != -1){
- if(this.getItemById(this.inventory.weapon) == null){
- this.inventory.weapon == -1;
- }
- }
- if(this.inventory.equipment[0] != -1){
- if(this.getItemById(this.inventory.equipment[0]) == null){
- this.inventory.equipment[0] == -1;
- }
- }
- if(this.inventory.equipment[1] != -1){
- if(this.getItemById(this.inventory.equipment[1]) == null){
- this.inventory.equipment[1] == -1;
- }
+ if(this.inventory.equipment.length < 3){
+ this.inventory.equipment = [-1, -1, -1]
}
}
diff --git a/Classes/playerInventory.ts b/Classes/playerInventory.ts
index 839a909..0951a2d 100644
--- a/Classes/playerInventory.ts
+++ b/Classes/playerInventory.ts
@@ -2,6 +2,6 @@ import { itemData } from "./itemData";
export class playerInventory{
weapon : number = -1
- equipment : number[] = [-1,-1]
+ equipment : number[] = [-1,-1,-1]
items : itemData[] = []
}
\ No newline at end of file
diff --git a/Items/_delete1.ts b/Items/_delete1.ts
deleted file mode 100644
index 6cbabb8..0000000
--- a/Items/_delete1.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-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
deleted file mode 100644
index 91ce378..0000000
--- a/Items/_deleteMany.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-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
deleted file mode 100644
index 2b0fe3e..0000000
--- a/Items/_pickup.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-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
deleted file mode 100644
index 615b4a0..0000000
--- a/Items/_request.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-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/_updateInventory.ts b/Items/_updateInventory.ts
new file mode 100644
index 0000000..c4db6ce
--- /dev/null
+++ b/Items/_updateInventory.ts
@@ -0,0 +1,49 @@
+import { inventoryChange } from "../Classes/Incoming/inventoryChange";
+import { itemData } from "../Classes/itemData";
+import { playerData } from "../Classes/playerData";
+
+export function updateInventory(socket, data){
+ if(!socket.hasOwnProperty("player")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ let data1 : inventoryChange[] = JSON.parse(buff.toString('utf-8'));
+
+ let player : playerData = socket.player
+ let inventory = player.inventory
+
+ data1.forEach(change=>{
+ switch(change.operation){
+ case 0: //None
+ break;
+ case 1: //ItemAdd
+ {
+ let item = itemData.fromChange(change)
+ inventory.items.push(item)
+ break;
+ }
+ case 2: //ItemAddToStack
+ {
+ let itemStack = inventory.items.find(i=>i.id == change.id)
+ itemStack.count += change.change
+ break;
+ }
+ case 3: //ItemRemove
+ {
+ let itemStack = inventory.items.findIndex(i=>i.id == change.id)
+ inventory.items.splice(itemStack, 1)
+ break;
+ }
+ case 4: //ItemRemoveFromStack
+ {
+ let itemStack = inventory.items.find(i=>i.id == change.id)
+ itemStack.count -= change.change
+ break;
+ }
+ case 5: //EquipmentChange
+ {
+ inventory.equipment = change.equipment
+ break;
+ }
+ }
+ })
+}
\ No newline at end of file
diff --git a/Items/itemSocket.ts b/Items/itemSocket.ts
index 056d48e..a8e6613 100644
--- a/Items/itemSocket.ts
+++ b/Items/itemSocket.ts
@@ -1,22 +1,7 @@
-import { delete1 } from "./_delete1";
-import { deleteMany } from "./_deleteMany";
-import { pickup } from "./_pickup";
-import { request } from "./_request";
+import { updateInventory } from "./_updateInventory";
export function registerItemCallbacks(socket){
- socket.on('item/pickup', (data) => {
- pickup(socket, data)
- });
-
- socket.on('item/delete', (data) => {
- delete1(socket, data)
- });
-
- socket.on('item/deleteMany', (data) => {
- deleteMany(socket, data)
- });
-
- socket.on('item/request', (data) => {
- request(socket, data)
+ socket.on('item/updateInventory', (data) => {
+ updateInventory(socket, data)
});
}
\ No newline at end of file
diff --git a/Quest/_update.ts b/Quest/_update.ts
new file mode 100644
index 0000000..5e1a127
--- /dev/null
+++ b/Quest/_update.ts
@@ -0,0 +1,7 @@
+export function update(socket, data){
+ if(!socket.hasOwnProperty("player")) return;
+
+ let buff = Buffer.from(data, 'base64');
+ //let data1 : levelUpdateHost = JSON.parse(buff.toString('utf-8'));
+ //let player : playerData = socket.player
+}
\ No newline at end of file
diff --git a/Quest/questSocket.ts b/Quest/questSocket.ts
new file mode 100644
index 0000000..d21c6cf
--- /dev/null
+++ b/Quest/questSocket.ts
@@ -0,0 +1,7 @@
+import { update } from "./_update";
+
+export function registerQuestCallbacks(socket){
+ socket.on('quest/update', (data) => {
+ update(socket, data)
+ });
+}
\ No newline at end of file
diff --git a/index.ts b/index.ts
index cc918f2..e482dee 100644
--- a/index.ts
+++ b/index.ts
@@ -1,13 +1,10 @@
import { game } from "./game";
import { users } from "./Account/users";
-import { loadItems } from "./Items/items";
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 { physicsObject } from "./Classes/physicsObject";
-import { enemyData } from "./Classes/enemyData";
const express = require("express");
const app = express();
@@ -27,7 +24,6 @@ const io = require("socket.io")(server, {
users.loadUsers();
players.loadPlayers();
-loadItems()
io.on('connection', (socket) => {
console.log("Got connection!");