-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
126 lines (96 loc) · 3.03 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// Import routes and give the server access to them.
var sendGridRoutes = require("./routes/api-routes.js");
// logging client request (POST, GET, etc..)
var logger = require("morgan");
// express server
var express = require("express");
// set up http server for socket request
var http = require('http');
// Middle-ware to test client requests
var bodyParser = require('body-parser');
// dependency for mongodb
var mongojs = require("mongojs");
// import slime object
var slime = require("./slime.js");
// path to join files
var path = require('path');
// Database configuration
var databaseUrl = process.env.MONGODB_URI || "localhost:27017/data";
var collections = ["mailData", "userData"];
// Hook mongojs configuration to the db variable
var db = mongojs(databaseUrl, collections);
db.on("error", function(error) {
console.log("Database Error:", error);
});
// Initialize Express
var app = express();
// Serve static content for the app from the "public" directory in the application directory.
app.use(express.static(path.join(__dirname, "public")));
// Use imported routes
app.use(sendGridRoutes);
// parse application/json
app.use(bodyParser.json());
// Use morgan logger for logging requests
app.use(logger("dev"));
// socket io configuration
var server = http.createServer(app);
var io = require('socket.io').listen(server);
// listening for sockets and routes
server.listen(process.env.PORT || 3000, function() {
console.log("App is running on port 3000!");
});
//Create array of sockets
var SOCKET_LIST = [];
var PLAYER_LIST = [];
// Keep track of unique player connections
var PLAYER_ID = 0;
io.on('connection', function (socket) {
// increment player id when new connection to socket is established
PLAYER_ID++;
// create new player
var newPlayer = new slime(PLAYER_ID);
// push player into player list
PLAYER_LIST.push(newPlayer);
console.log(PLAYER_LIST);
// emit news to server on connection
socket.emit('generate slime', newPlayer);
socket.emit('stats', newPlayer);
// when the server recieves a request to feed the slime
socket.on('feed', function() {
newPlayer.feed();
newPlayer.checkLevel();
socket.emit('stats', newPlayer);
});
// players slime attacks other slime
socket.on('attack', function() {
while(true){
ran_player = Math.floor(Math.random() * PLAYER_LIST.length);
if (ran_player != PLAYER_ID){
break;
}
}
newPlayer.attack(PLAYER_LIST[ran_player]);
socket.emit('stats', newPlayer);
});
// heals slime
socket.on('heal', function() {
newPlayer.heal()
socket.emit('stats', newPlayer);
});
// send mail to client
socket.on('send mail', function(data) {
socket.emit('send mail', newPlayer);
});
// slime gets hungry every 3 seconds
setInterval(function(){
newPlayer.starve();
// if(newPlayer.hunger === 50) {
// socket.emit('send mail')
// }
socket.emit('stats', newPlayer);
},1000);
// tells the server when the slime is rendered
socket.on('render', function(data) {
console.log(data)
});
});