1
0
Fork 0
being-astrid/game/begin.coffee

124 lines
3.5 KiB
CoffeeScript
Raw Normal View History

2017-01-23 19:45:06 +02:00
salet.game_id = "being-astrid-is-hard-enough-but-try-living-as-one"
salet.game_version = "1.0"
2017-01-24 07:18:42 +02:00
client = deepstream('localhost:6020').login()
client.record.listen('presence.*', (match, isSubscribed, response) =>
if (isSubscribed)
response.accept()
else
# stop publishing data, client disconnected
client.record.getRecord(match).discard()
)
2017-01-23 19:45:06 +02:00
$.holdReady( true )
$.getJSON('game/translations/'+i18n.lang+'.json', (data) ->
i18n.push(i18n.lang, data)
$.holdReady( false )
)
$(document).ready(() ->
window.addEventListener('popstate', (event) ->
salet.goBack()
)
$("#night").on("click", () ->
if (window.night)
styles = {
"-webkit-filter": ""
"filter": ""
"background-color": ""
}
$("body").css(styles)
$("#night").removeClass("active")
window.night = false
else
styles = {
"-webkit-filter": "invert(1)hue-rotate(180deg)"
"filter": "invert(1)hue-rotate(180deg)"
"background-color": "#000"
}
$("body").css(styles)
$("#night").addClass("active")
window.night = true
)
salet.beginGame()
)
###
Element helpers. There is no real need to build monsters like a().id("hello")
because you won't use them as is. It does not make sense in context, the
author has Markdown and all utilities to *forget* about the markup.
###
way_to = (content, ref) ->
return "<a href='#{ref}' class='way'>#{content}</a>"
textlink = (content, ref) ->
return "<a href='./_writer_#{ref}' class='once'>#{content}</a>"
actlink = (content, ref) ->
return "<a href='./#{ref}' class='once'>#{content}</a>"
# The first room of the game.
# For accessibility reasons the text is provided in HTML, not here.
room "start",
enter: () ->
2017-01-24 07:18:42 +02:00
if (salet.character.name == undefined)
names = "names".l()
salet.character.name = names[salet.rnd.randomInt(names.length)]
salet.character.id = salet.rnd.randn()
2017-01-23 19:45:06 +02:00
dsc: () -> "intro".l()
choices: "#start"
2017-01-27 14:42:42 +02:00
button = unit "button",
colors: ["red", "blue", "green", "yellow", "orange", "violet"]
color: 0
dsc: () -> "{"+"color_"+@colors[@color].l()+"}"
act: () ->
index = @colors.indexOf(@color)
index = index + 1
if index > @colors.length
index = 0
@color = @colors[index]
salet.rooms["entry"].canChoose = true
room "instance",
dsc: () -> "instance".l()
tags: ["start"]
optionText: () -> "begin_game".l()
enter: () ->
for u in @units
u.color = salet.rnd.randomInt(u.colors.length)
units: [
button "first",
button "second"
]
croom "entry",
canChoose: false
optionText: () -> "entry_option".l()
title: () -> "entry_title".l()
ways: ["corridor"]
desc: () -> "entry_dsc".l()
croom = (name, options) ->
options.enter = () ->
if (salet.interactive)
2017-01-24 07:18:42 +02:00
status = client.record.getRecord('presence.'+@room)
status.set('presence.'+@room+'.'+salet.character.id, salet.character.name)
players = status.get()
if players.length > 1
salet.view.write("room_present".l())
names = []
for player in players
if player == 'presence.'+@room+'.'+salet.character.id
continue
i = client.record.getRecord(player)
names.push(i)
salet.view.write(names.join(', '))
options.exit = () ->
if (salet.interactive)
status = client.record.getRecord('presence')
status.delete('presence.'+@name+'.'+salet.character.id)
2017-01-23 19:45:06 +02:00
options.dsc = () ->
"### #{@title()}\n" + @desc()
return room(name,options)