BattleSim/server/user.coffee

53 lines
1.1 KiB
CoffeeScript

{_} = require 'underscore'
class @User
constructor: (attributes) ->
if _.isObject(attributes)
{@id, @name, @authority} = attributes
else
@id = attributes
@name ?= @id
@sparks = []
addSpark: (spark) ->
unless @hasSpark(spark)
@sparks.push(spark)
spark.user = this
removeSpark: (spark) ->
index = @sparks.indexOf(spark)
@sparks.splice(index, 1) if index != -1
hasSpark: (spark) ->
spark in @sparks
hasSparks: ->
@sparks.length >= 1
toJSON: (options = {}) ->
displayedName = options.alt ? @name
isAlt = (displayedName != @name)
json = {
'id': displayedName
}
if isAlt
json['isAlt'] = true
else
json['authority'] = @authority if @authority
json
send: ->
spark.send.apply(spark, arguments) for spark in @sparks
error: (args...) ->
@send("errorMessage", args...)
message: (roomId, msg) ->
@send("rawMessage", roomId, msg)
announce: (roomId, klass, msg) ->
@send("announce", roomId, klass, msg)
close: ->
spark.end() for spark in @sparks