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

new room

parent c0ea1aa8
...@@ -4,10 +4,10 @@ class Server extends Spine.Model ...@@ -4,10 +4,10 @@ class Server extends Spine.Model
@url: "/servers.json" @url: "/servers.json"
class Room extends Spine.Model class Room extends Spine.Model
@configure "Room", "name", "status", "private" @configure "Room", "name", "status", "private", "rule", "mode", "start_lp"
@belongsTo 'server', Server @belongsTo 'server', Server
class Rooms extends Spine.Controller
class Rooms extends Spine.Controller
events: events:
'click .room': 'clicked' 'click .room': 'clicked'
constructor: -> constructor: ->
...@@ -27,7 +27,8 @@ class Rooms extends Spine.Controller ...@@ -27,7 +27,8 @@ class Rooms extends Spine.Controller
$('#join_private_room').data('room_id', room.id) $('#join_private_room').data('room_id', room.id)
$('#join_private_room_dialog').dialog('open') $('#join_private_room_dialog').dialog('open')
else 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 -> $(document).ready ->
...@@ -56,53 +57,27 @@ $(document).ready -> ...@@ -56,53 +57,27 @@ $(document).ready ->
title:"加入私密房间" title:"加入私密房间"
new_room = $('#new_room')[0] 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 = -> new_room.pvp.onchange = ->
if @checked if @checked
new_room.tag.checked = false new_room.mode.value = 1 if new_room.mode.value == '2'
new_room.tcg.checked = false new_room.rule.value = 0
new_room.ocg.checked = true new_room.start_lp.value = 8000
new_room.lp.value = 8000 new_room.mode.onchange = ->
new_room.ocg.onchange = -> if @value == '2'
if !@checked new_room.pvp.checked = false
new_room.tcg.checked = true new_room.rule.onchange = ->
new_room.tcg.onchange = -> if @value != '0'
if @checked new_room.pvp.checked = false
new_room.start_lp.onchange = ->
if @value != '8000'
new_room.pvp.checked = false new_room.pvp.checked = false
else
new_room.ocg.checked = true
new_room.onsubmit = (ev)-> new_room.onsubmit = (ev)->
ev.preventDefault() ev.preventDefault()
$('#new_room_dialog').dialog('close') $('#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() servers = Server.all()
server = servers[Math.floor Math.random() * servers.length] 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)-> $('#join_private_room').submit (ev)->
ev.preventDefault() ev.preventDefault()
...@@ -112,8 +87,7 @@ $(document).ready -> ...@@ -112,8 +87,7 @@ $(document).ready ->
room_id = $(this).data('room_id') room_id = $(this).data('room_id')
if Room.exists room_id if Room.exists room_id
room = Room.find(room_id) room = Room.find(room_id)
server = room.server() mycard.join(room.server().ip, room.server().port, mycard.room_name(room.name, null, room.pvp, room.rule, room.mode, room.start_lp))
mycard.join(server.ip, server.port, "#{room.name}$#{@password.value}")
else else
alert '房间已经关闭' alert '房间已经关闭'
...@@ -122,7 +96,6 @@ $(document).ready -> ...@@ -122,7 +96,6 @@ $(document).ready ->
new_room.name.value = Math.floor Math.random() * 1000 new_room.name.value = Math.floor Math.random() * 1000
$('#new_room_dialog').dialog('open') $('#new_room_dialog').dialog('open')
rooms = new Rooms(el: $('#rooms')) rooms = new Rooms(el: $('#rooms'))
Server.one "refresh", -> Server.one "refresh", ->
...@@ -139,7 +112,6 @@ $(document).ready -> ...@@ -139,7 +112,6 @@ $(document).ready ->
if room._deleted if room._deleted
Room.find(room.id).destroy() if Room.exists(room.id) Room.find(room.id).destroy() if Room.exists(room.id)
Room.refresh (room for room in rooms when !room._deleted) Room.refresh (room for room in rooms when !room._deleted)
websocket.onerror = (evt)-> websocket.onerror = (evt)->
console.log('Error occured: ' + evt.data); console.log('Error occured: ' + evt.data);
Server.fetch() Server.fetch()
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
return Room.__super__.constructor.apply(this, arguments); 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); Room.belongsTo('server', Server);
...@@ -69,7 +69,8 @@ ...@@ -69,7 +69,8 @@
$('#join_private_room').data('room_id', room.id); $('#join_private_room').data('room_id', room.id);
return $('#join_private_room_dialog').dialog('open'); return $('#join_private_room_dialog').dialog('open');
} else { } 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 @@ ...@@ -106,72 +107,47 @@
title: "加入私密房间" title: "加入私密房间"
}); });
new_room = $('#new_room')[0]; 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;
}
};
new_room.match.onchange = function() {
if (this.checked) { if (this.checked) {
return new_room.tag.checked = false; if (new_room.mode.value === '2') {
new_room.mode.value = 1;
}
new_room.rule.value = 0;
return new_room.start_lp.value = 8000;
} }
}; };
new_room.pvp.onchange = function() { new_room.mode.onchange = function() {
if (this.checked) { if (this.value === '2') {
new_room.tag.checked = false; return new_room.pvp.checked = false;
new_room.tcg.checked = false;
new_room.ocg.checked = true;
return new_room.lp.value = 8000;
} }
}; };
new_room.ocg.onchange = function() { new_room.rule.onchange = function() {
if (!this.checked) { if (this.value !== '0') {
return new_room.tcg.checked = true; return new_room.pvp.checked = false;
} }
}; };
new_room.tcg.onchange = function() { new_room.start_lp.onchange = function() {
if (this.checked) { if (this.value !== '8000') {
return new_room.pvp.checked = false; return new_room.pvp.checked = false;
} else {
return new_room.ocg.checked = true;
} }
}; };
new_room.onsubmit = function(ev) { new_room.onsubmit = function(ev) {
var mode, result, rule, server, servers; var server, servers;
ev.preventDefault(); ev.preventDefault();
$('#new_room_dialog').dialog('close'); $('#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(); servers = Server.all();
server = servers[Math.floor(Math.random() * servers.length)]; 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) { $('#join_private_room').submit(function(ev) {
var room, room_id, server; var room, room_id;
ev.preventDefault(); ev.preventDefault();
$('#join_private_room_dialog').dialog('close'); $('#join_private_room_dialog').dialog('close');
if (this.password.value) { if (this.password.value) {
room_id = $(this).data('room_id'); room_id = $(this).data('room_id');
if (Room.exists(room_id)) { if (Room.exists(room_id)) {
room = Room.find(room_id); room = Room.find(room_id);
server = room.server(); return mycard.join(room.server().ip, room.server().port, mycard.room_name(room.name, null, room.pvp, room.rule, room.mode, room.start_lp));
return mycard.join(server.ip, server.port, "" + room.name + "$" + this.password.value);
} else { } else {
return alert('房间已经关闭'); return alert('房间已经关闭');
} }
......
...@@ -142,15 +142,27 @@ ...@@ -142,15 +142,27 @@
<input type="text" id="name"/><br/> <input type="text" id="name"/><br/>
<label>房间密码</label> <label>房间密码</label>
<input type="password" name="password" id="password" value=""/><br/> <input type="password" name="password" id="password" value=""/><br/>
<input type="checkbox" name="pvp" id="pvp" value="pvp"/><label>竞技场</label> <input type="checkbox" name="pvp" id="pvp" value="pvp"/><label for="pvp">竞技场</label>
<input type="checkbox" name="match" id="match" value="match" checked="checked"/><label>比赛模式</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/> <hr/>
<h3>自定义模式</h3> <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> <label for="start_lp">初始LP</label>
<input type="checkbox" name="tcg" id="tcg" value="tcg"/><label>TCG</label><br/> <input type="number" name="start_lp" id="start_lp" min="0" max="99999" value="8000"/><br/>
<label>初始LP</label>
<input type="number" name="lp" id="lp" min="0" max="99999" value="8000" step="1000"/><br/>
<input type="submit" value="确定"/> <input type="submit" value="确定"/>
</form> </form>
</div> </div>
......
@mycard = {} @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)-> @mycard.join = (ip,port,room,username,password)->
result = 'mycard://' result = 'mycard://'
if username if username
......
...@@ -3,6 +3,40 @@ ...@@ -3,6 +3,40 @@
this.mycard = {}; 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) { this.mycard.join = function(ip, port, room, username, password) {
var result; var result;
result = 'mycard://'; 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