Files
SANCTUM/SERVER_City/city.js

114 lines
2.6 KiB
JavaScript

// .env Variables
require("dotenv").config({path: "../.env"});
//server tools
let express = require("express");
let socket = require("socket.io");
//express setup
let app = express();
let server = app.listen(process.env.SERVER_PORT, () => {
console.log("Listening to requests on port " + process.env.SERVER_PORT);
});
//shared code
let calcRandom = require('../Shared/calc_random');
//socket.io setup
let io = socket(server);
//TODO: isolate these responses to specific bots
io.on("connection", async (socket) => {
console.log("made socket connection");
//update the playerbase's stamina on command
socket.on("updateStamina", async ({ userID, data }) => {
console.log("updating stamina for all users...");
//TODO: update the stamina
});
//handle checkin
socket.on("checkin", async ({ data }, fn) => {
console.log("received a checkin request...");
//TODO: handle checkins (grant crystal bonus)
//TODO: handle XP (grant 1 XP)
if (fn) {
fn("available", calcRandom.Random(4, 9)); //TODO: ["available", time since last checkin], randomAmount
}
});
//handle account requests
socket.on("account", async ({ data }, fn) => {
console.log("received an account request...");
//data[0] = ID of the person to check
if (fn) {
fn(0); //TODO: accountBalance
}
});
//handle transfering data between accounts
socket.on("transfer", async ({ data }, fn) => {
console.log("received a transfer request...");
//data[0] = ID of the source account
//data[1] = ID of the destination account
//data[2] = amount to send
if (fn) {
fn("failure"); //TODO: ["success", "failure"]
}
});
//handle the user stats
socket.on("userStats", async ({ data }, fn) => {
console.log("received a userStats request...");
//data[0] = user ID
//NOTE: build a temporary structure to pass back
let stats = {
strength: 0,
speed: 0,
stamina: 0,
health: 0,
maxStamina: 0,
maxHealth: 0,
wallet: 0,
experience: 0,
level: 0,
levelPercent: 0,
statPoints: 0
};
if (fn) {
fn(stats);
}
});
//DEBUGGING?
socket.on("addXP", async ({ userID, data }) => {
console.log("received an addXP request...");
//data[0] = amount
//TODO: add an amount of XP to a user account
});
//handle levelling up
socket.on("levelUp", async ({ data }, fn) => {
console.log("received a levelUp request...");
//data[0] = user ID
if (fn) {
fn("none", 0, 0); //["none", "levelUp"], level, statPoints
}
});
socket.on("conversion", async ({ data }, fn) => {
console.log("received a conversion request...");
//data[0] = user ID
if (fn) {
fn("newUser"); //["joined", "conversionLocked", "newUser"]
}
});
});