Commit a8029d9c authored by 神楽坂玲奈's avatar 神楽坂玲奈

new room

parent c0ea1aa8
......@@ -4,10 +4,10 @@ class Server extends Spine.Model
@url: "/servers.json"
class Room extends Spine.Model
@configure "Room", "name", "status", "private"
@configure "Room", "name", "status", "private", "rule", "mode", "start_lp"
@belongsTo 'server', Server
class Rooms extends Spine.Controller
class Rooms extends Spine.Controller
events:
'click .room': 'clicked'
constructor: ->
......@@ -27,7 +27,8 @@ class Rooms extends Spine.Controller
$('#join_private_room').data('room_id', room.id)
$('#join_private_room_dialog').dialog('open')
else
mycard.join(room.server().ip, room.server().port, room.name)
alert room
mycard.join(room.server().ip, room.server().port, mycard.room_name(room.name, null, room.pvp, room.rule, room.mode, room.start_lp))
$(document).ready ->
......@@ -56,53 +57,27 @@ $(document).ready ->
title:"加入私密房间"
new_room = $('#new_room')[0]
new_room.tag.onchange = ->
if @checked
new_room.pvp.checked = false
new_room.match.checked = false
new_room.match.onchange = ->
if @checked
new_room.tag.checked = false
new_room.pvp.onchange = ->
if @checked
new_room.tag.checked = false
new_room.tcg.checked = false
new_room.ocg.checked = true
new_room.lp.value = 8000
new_room.ocg.onchange = ->
if !@checked
new_room.tcg.checked = true
new_room.tcg.onchange = ->
if @checked
new_room.mode.value = 1 if new_room.mode.value == '2'
new_room.rule.value = 0
new_room.start_lp.value = 8000
new_room.mode.onchange = ->
if @value == '2'
new_room.pvp.checked = false
new_room.rule.onchange = ->
if @value != '0'
new_room.pvp.checked = false
new_room.start_lp.onchange = ->
if @value != '8000'
new_room.pvp.checked = false
else
new_room.ocg.checked = true
new_room.onsubmit = (ev)->
ev.preventDefault()
$('#new_room_dialog').dialog('close')
rule = if @tcg.checked then (if @ocg.checked then 2 else 1) else 0
mode = if @tag.checked then 2 else if @match.checked then 1 else 0
if rule != 0 or @lp.value != '8000'
result = "#{rule}#{mode}FFF#{@lp.value},5,1,"
else if @tag.checked
result = "T#"
else if @pvp.checked and @match.checked
result = "PM#"
else if @pvp.checked
result = "P#"
else if @match.checked
result = "M#"
result += @name.value
if @password.value
result += '$' + @password.value
servers = Server.all()
server = servers[Math.floor Math.random() * servers.length]
mycard.join(server.ip, server.port, result)
mycard.join server.ip, server.port, mycard.room_name(@name.value, @password.value, @pvp.checked, parseInt(@rule.value), parseInt(@mode.value), parseInt(@start_lp.value))
$('#join_private_room').submit (ev)->
ev.preventDefault()
......@@ -112,8 +87,7 @@ $(document).ready ->
room_id = $(this).data('room_id')
if Room.exists room_id
room = Room.find(room_id)
server = room.server()
mycard.join(server.ip, server.port, "#{room.name}$#{@password.value}")
mycard.join(room.server().ip, room.server().port, mycard.room_name(room.name, null, room.pvp, room.rule, room.mode, room.start_lp))
else
alert '房间已经关闭'
......@@ -122,7 +96,6 @@ $(document).ready ->
new_room.name.value = Math.floor Math.random() * 1000
$('#new_room_dialog').dialog('open')
rooms = new Rooms(el: $('#rooms'))
Server.one "refresh", ->
......@@ -139,7 +112,6 @@ $(document).ready ->
if room._deleted
Room.find(room.id).destroy() if Room.exists(room.id)
Room.refresh (room for room in rooms when !room._deleted)
websocket.onerror = (evt)->
console.log('Error occured: ' + evt.data);
Server.fetch()
......
......@@ -31,7 +31,7 @@
return Room.__super__.constructor.apply(this, arguments);
}
Room.configure("Room", "name", "status", "private");
Room.configure("Room", "name", "status", "private", "rule", "mode", "start_lp");
Room.belongsTo('server', Server);
......@@ -69,7 +69,8 @@
$('#join_private_room').data('room_id', room.id);
return $('#join_private_room_dialog').dialog('open');
} else {
return mycard.join(room.server().ip, room.server().port, room.name);
alert(room);
return mycard.join(room.server().ip, room.server().port, mycard.room_name(room.name, null, room.pvp, room.rule, room.mode, room.start_lp));
}
};
......@@ -106,72 +107,47 @@
title: "加入私密房间"
});
new_room = $('#new_room')[0];
new_room.tag.onchange = function() {
new_room.pvp.onchange = function() {
if (this.checked) {
new_room.pvp.checked = false;
return new_room.match.checked = false;
if (new_room.mode.value === '2') {
new_room.mode.value = 1;
}
};
new_room.match.onchange = function() {
if (this.checked) {
return new_room.tag.checked = false;
new_room.rule.value = 0;
return new_room.start_lp.value = 8000;
}
};
new_room.pvp.onchange = function() {
if (this.checked) {
new_room.tag.checked = false;
new_room.tcg.checked = false;
new_room.ocg.checked = true;
return new_room.lp.value = 8000;
new_room.mode.onchange = function() {
if (this.value === '2') {
return new_room.pvp.checked = false;
}
};
new_room.ocg.onchange = function() {
if (!this.checked) {
return new_room.tcg.checked = true;
new_room.rule.onchange = function() {
if (this.value !== '0') {
return new_room.pvp.checked = false;
}
};
new_room.tcg.onchange = function() {
if (this.checked) {
new_room.start_lp.onchange = function() {
if (this.value !== '8000') {
return new_room.pvp.checked = false;
} else {
return new_room.ocg.checked = true;
}
};
new_room.onsubmit = function(ev) {
var mode, result, rule, server, servers;
var server, servers;
ev.preventDefault();
$('#new_room_dialog').dialog('close');
rule = this.tcg.checked ? (this.ocg.checked ? 2 : 1) : 0;
mode = this.tag.checked ? 2 : this.match.checked ? 1 : 0;
if (rule !== 0 || this.lp.value !== '8000') {
result = "" + rule + mode + "FFF" + this.lp.value + ",5,1,";
} else if (this.tag.checked) {
result = "T#";
} else if (this.pvp.checked && this.match.checked) {
result = "PM#";
} else if (this.pvp.checked) {
result = "P#";
} else if (this.match.checked) {
result = "M#";
}
result += this.name.value;
if (this.password.value) {
result += '$' + this.password.value;
}
servers = Server.all();
server = servers[Math.floor(Math.random() * servers.length)];
return mycard.join(server.ip, server.port, result);
return mycard.join(server.ip, server.port, mycard.room_name(this.name.value, this.password.value, this.pvp.checked, parseInt(this.rule.value), parseInt(this.mode.value), parseInt(this.start_lp.value)));
};
$('#join_private_room').submit(function(ev) {
var room, room_id, server;
var room, room_id;
ev.preventDefault();
$('#join_private_room_dialog').dialog('close');
if (this.password.value) {
room_id = $(this).data('room_id');
if (Room.exists(room_id)) {
room = Room.find(room_id);
server = room.server();
return mycard.join(server.ip, server.port, "" + room.name + "$" + this.password.value);
return mycard.join(room.server().ip, room.server().port, mycard.room_name(room.name, null, room.pvp, room.rule, room.mode, room.start_lp));
} else {
return alert('房间已经关闭');
}
......
......@@ -142,15 +142,27 @@
<input type="text" id="name"/><br/>
<label>房间密码</label>
<input type="password" name="password" id="password" value=""/><br/>
<input type="checkbox" name="pvp" id="pvp" value="pvp"/><label>竞技场</label>
<input type="checkbox" name="match" id="match" value="match" checked="checked"/><label>比赛模式</label>
<input type="checkbox" name="pvp" id="pvp" value="pvp"/><label for="pvp">竞技场</label>
<hr/>
<label for="rule">卡片允许</label>
<select id="rule" name="rule">
<option value ="0" selected="selected">OCG</option>
<option value ="1">TCG</option>
<option value="2">OCG&TCG</option>
<option value="3">专有卡禁止</option>
</select><br />
<label for="mode">决斗模式</label>
<select id="mode" name="mode">
<option value ="0">单局模式</option>
<option value ="1" selected="selected">比赛模式</option>
<option value="2">TAG</option>
</select>
<hr/>
<h3>自定义模式</h3>
<input type="checkbox" name="tag" id="tag" value="tag"/><label>TAG双打</label>
<input type="checkbox" name="ocg" id="ocg" value="ocg" checked="checked"/><label>OCG</label>
<input type="checkbox" name="tcg" id="tcg" value="tcg"/><label>TCG</label><br/>
<label>初始LP</label>
<input type="number" name="lp" id="lp" min="0" max="99999" value="8000" step="1000"/><br/>
<h3>额外选项</h3>
<label for="start_lp">初始LP</label>
<input type="number" name="start_lp" id="start_lp" min="0" max="99999" value="8000"/><br/>
<input type="submit" value="确定"/>
</form>
</div>
......
@mycard = {}
@mycard.room_name = (name, password, pvp = false, rule = 0, mode = 0, start_lp = 8000) ->
if rule != 0 or start_lp != 8000
result = "#{rule}#{mode}FFF#{start_lp},5,1,"
else if mode == 2
result = "T#"
else if pvp and mode == 1
result = "PM#"
else if pvp
result = "P#"
else if mode == 1
result = "M#"
else
result = ""
result += name
if password
result += '$' + password
result
@mycard.join = (ip,port,room,username,password)->
result = 'mycard://'
if username
......
......@@ -3,6 +3,40 @@
this.mycard = {};
this.mycard.room_name = function(name, password, pvp, rule, mode, start_lp) {
var result;
if (pvp == null) {
pvp = false;
}
if (rule == null) {
rule = 0;
}
if (mode == null) {
mode = 0;
}
if (start_lp == null) {
start_lp = 8000;
}
if (rule !== 0 || start_lp !== 8000) {
result = "" + rule + mode + "FFF" + start_lp + ",5,1,";
} else if (mode === 2) {
result = "T#";
} else if (pvp && mode === 1) {
result = "PM#";
} else if (pvp) {
result = "P#";
} else if (mode === 1) {
result = "M#";
} else {
result = "";
}
result += name;
if (password) {
result += '$' + password;
}
return result;
};
this.mycard.join = function(ip, port, room, username, password) {
var result;
result = 'mycard://';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment