Commit 5855be9b authored by Peter Xin's avatar Peter Xin

Add server differ.

parent 95789df3
{
"servers": {
"entertain": {
"address": "127.0.0.1",
"port": "9999"
},
"athletic": {
"address": "127.0.0.1",
"port": "9998"
}
},
"arena": {
"address": "http://path/to/query?username="
},
"match": {
"timeInterval": 10000,
"athleticTrueSkillGate": 0.4,
"entertainExpGate": 100,
"atheleticPtGate": 50
}
}
\ No newline at end of file
...@@ -93,7 +93,7 @@ let updateAthleticMatch = function() { ...@@ -93,7 +93,7 @@ let updateAthleticMatch = function() {
break; break;
if (masks[value.i] || masks[value.j]) if (masks[value.i] || masks[value.j])
continue; continue;
pair(athleticUserPool[value.i].client, athleticUserPool[value.j].client); pair(athleticUserPool[value.i].client, athleticUserPool[value.j].client, 'athletic');
masks[value.i] = true; masks[value.i] = true;
masks[value.j] = true; masks[value.j] = true;
} }
...@@ -126,7 +126,7 @@ updateAthleticMatch = function () { ...@@ -126,7 +126,7 @@ updateAthleticMatch = function () {
// 若 exp 之差小于门限,则匹配房间 // 若 exp 之差小于门限,则匹配房间
if (userA.data.pt - userB.data.pt < config.match.atheleticPtGate) if (userA.data.pt - userB.data.pt < config.match.atheleticPtGate)
{ {
pair(userA.client, userB.client); pair(userA.client, userB.client, 'athletic');
i += 1; i += 1;
} }
// 否则留存 // 否则留存
...@@ -160,7 +160,7 @@ let updateEntertainMatch = function () { ...@@ -160,7 +160,7 @@ let updateEntertainMatch = function () {
// 若 exp 之差小于门限,则匹配房间 // 若 exp 之差小于门限,则匹配房间
if (userA.data.exp - userB.data.exp < config.match.entertainExpGate) if (userA.data.exp - userB.data.exp < config.match.entertainExpGate)
{ {
pair(userA.client, userB.client); pair(userA.client, userB.client, 'entertain');
i += 1; i += 1;
} }
// 否则留存 // 否则留存
...@@ -176,9 +176,11 @@ let update = function () { ...@@ -176,9 +176,11 @@ let update = function () {
}; };
// 为两名玩家匹配房间 // 为两名玩家匹配房间
let pair = function (userARes, userBRes) { let pair = function (userARes, userBRes, serverName) {
let servers = config.servers; let servers = config.servers;
let server = servers[Math.floor(Math.random() * servers.length)]; let server = servers[serverName];
if (Object.prototype.toString.call(server) === '[object Array]')
server = server[Math.random() * server.length]
let room_id = crypto.randomBytes(9).toString('base64').slice(0, 11).replace('+', '-').replace('/', '_'); let room_id = crypto.randomBytes(9).toString('base64').slice(0, 11).replace('+', '-').replace('/', '_');
let options_buffer = new Buffer(6); let options_buffer = new Buffer(6);
options_buffer.writeUInt8(4 << 4, 1); options_buffer.writeUInt8(4 << 4, 1);
......
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