-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
82 lines (60 loc) · 2.15 KB
/
server.js
File metadata and controls
82 lines (60 loc) · 2.15 KB
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
var express = require('express')
var httpModule = require('http')
var ioModule = require('socket.io')
var _ = require('underscore')
var app = express();
var http = httpModule.createServer(app)
var io = ioModule.listen(http, { log: false })
var cards = require('./cards')
var board = require('./board')
var players = {list: []}
var onConnect = function(socket) {
socket.on( 'select-card', onSelectCard )
socket.on( 'select-character', onSelectCharacter )
socket.emit( 'cards', cards.list )
socket.emit( 'characters', board.characters )
socket.emit( 'turn-pulse', turnTimer )
players.list.push(socket.id)
socket.emit( 'players', players )
}
var onDisconnect = function(socket) {
_.each( board.characters, function(character) {
character.releaseBotControl(socket.id)
sockets.broadcast('character-state', character)
})
players.list.splice(players.list.indexOf(socket.id), 1)
}
var sockets = require('./sockets')( io, onConnect, onDisconnect )
var onSelectCard = function(data) {
var character = board.findById( data.characterId )
character.selectCard( data.cardId )
sockets.broadcast( 'character-state', character )
}
var onSelectCharacter = function(data) {
_.each( board.characters, function(character) {
if (character.id == data.characterId) {
character.takeBotControl(data.playerId)
} else {
character.releaseBotControl(data.playerId)
}
sockets.broadcast( 'character-state', character )
})
}
var oneSecond = function(turnTimer) {
sockets.broadcast( 'turn-pulse', turnTimer )
}
var endTurn = function() {
_.each(_.sortBy( board.characters, function(character) { return cards.findById(character.getSelectedCard()).priority }),
function(character) {
cards.findById(character.getSelectedCard()).apply(board, character)
}
)
board.unselectCards()
sockets.broadcast( 'characters', board.characters )
}
var turnTimer = require('./turnTimer')( oneSecond, endTurn )
app.use( express.bodyParser() )
app.use( express.static('pages') )
var port = process.env.PORT || process.env.VCAP_APP_PORT || 8000
http.listen(port)
console.log('Server running on port ' + port)