var mongojs = require("mongojs");
var db = mongojs("localhost:27017/ThePixelWorld", ["account","progress"]);
var express = require("express");
var app = express();
var serv = require("http").Server(app);
app.get('/', function(req,res) {
res.sendFile(__dirname + '/client/index.html');
});
app.use('/client', express.static(__dirname + '/client'));
app.use('/favicon.ico', express.static(__dirname + '/client/favicon.ico'));
serv.listen(2000);
console.log("Server started.");
var SOCKET_LIST = {};
const servermsg = "Server: ";
const Commands = require('./server/Commands')
const Utils = require('./server/Utils')
const Entity = require('./server/Entities/Entity')
const Player = require('./server/Entities/Player')
const Bullet = require('./server/Entities/Bullet')
var isValidPassword = function(data, cb){
db.account.find({username:data.username, password:data.password},function(err,res){
if(res.length > 0)
cb(true);
else
cb(false);
});
}
var isUsernameTaken = function(data, cb){
db.account.find({username:data.username},function(err,res){
if(res.length > 0)
cb(true);
else
cb(false);
});
}
var addUser = function(data, cb){
db.account.insert({username:data.username, password:data.password},function(err){
cb();
});
}
var io = require('socket.io')(serv, {});
io.sockets.on('connection', function(socket){
socket.id = Math.random();
SOCKET_LIST[socket.id] = socket;
socket.on('signIn', function(data){
isValidPassword(data, function(res){
if (res){
Player.Player.onConnect(socket, data.username);
socket.playerName = data.username;
socket.emit('signInResponse', {success:true});
} else {
socket.emit('signInResponse', {success:false});
}
});
});
socket.on('signUp', function(data){
isUsernameTaken(data, function(res){
if (res){
socket.emit('signUpResponse', {success:false});
} else {
addUser(data, function(){
socket.emit('signUpResponse', {success:true});
});
}
});
});
socket.on('disconnect', function(){
delete SOCKET_LIST[socket.id];
Player.Player.onDisconnect(socket);
});
socket.on('sendMsgToServer', function(data){
if (data)
for (var i in SOCKET_LIST){
SOCKET_LIST[i].emit('addToChat', {ctimestamp: Utils.getTimeStamp(0), content: socket.playerName + ': ' + Utils.escapeHTML(Utils.chatEmote(data)), tab: "world"});
}
});
socket.on('command', function(data){
Commands.dispatch(data, socket, SOCKET_LIST, servermsg, db, Player);
});
socket.on('evalServer', function(data){
Utils.hasPermission(db, socket.playerName, 80, function(res){
if (res)
socket.emit('evalAnswer', eval(data));
else
socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "you dont have permission to use this command!", tab: "any"});
});
});
});
// erm... the game loop
setInterval(function(){
var pack = {
player: Player.Player.update(),
bullet: Bullet.Bullet.update()
}
for(var i in SOCKET_LIST){
var socket = SOCKET_LIST[i];
socket.emit('init', Entity.initPack);
socket.emit('update', pack);
socket.emit('remove', Entity.removePack);
}
Entity.initPack.player = [];
Entity.initPack.bullet = [];
Entity.removePack.player = [];
Entity.removePack.bullet = [];
}, 1000/25);