62 lines
1.1 KiB
Ruby
62 lines
1.1 KiB
Ruby
module GameServer
|
|
module Server
|
|
class MessageRouter
|
|
def initialize(world)
|
|
@world = world
|
|
end
|
|
|
|
def handle(data)
|
|
case data["type"]
|
|
when "hello"
|
|
hello
|
|
when "query"
|
|
query(data)
|
|
when "command"
|
|
command(data)
|
|
else
|
|
error("UNKNOWN_TYPE")
|
|
end
|
|
end
|
|
|
|
def hello
|
|
{
|
|
type: "update",
|
|
domain: "world",
|
|
payload: {
|
|
time: @world.time,
|
|
game_speed: Settings::GAME_SPEED
|
|
}
|
|
}
|
|
end
|
|
|
|
def query(data)
|
|
if data["domain"] == "player"
|
|
{
|
|
type: "update",
|
|
domain: "player",
|
|
payload: { money: 1000 }
|
|
}
|
|
else
|
|
error("UNKNOWN_DOMAIN")
|
|
end
|
|
end
|
|
|
|
def command(data)
|
|
{
|
|
type: "update",
|
|
domain: "command",
|
|
payload: { status: "accepted" }
|
|
}
|
|
end
|
|
|
|
def error(code)
|
|
{
|
|
type: "error",
|
|
domain: "system",
|
|
payload: { code: code }
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|