forked from mirrors/webxoss-core
test-helper: click button take over input in console
1. disable BGM defaultly 2. get global variable "game" by click "updateBattle" 3. "upgrade" - upgrade your lrig to max level && put all lrig card to lrigZone 4. add "card-name" input box for add card action
This commit is contained in:
parent
c917317b5f
commit
a37636e4b8
2 changed files with 191 additions and 2 deletions
18
test.html
18
test.html
|
@ -191,10 +191,24 @@ function down (content, filename = 'down.txt') {
|
|||
<script src="Client.js"></script>
|
||||
<script src="Room.js"></script>
|
||||
<script src="RoomManager.js"></script>
|
||||
<script src="test.js"></script>
|
||||
<script src="testHelper.js"></script>
|
||||
<!-- <script src="test.js"></script> -->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<button onclick="newClient();">newClient</button>
|
||||
<div>
|
||||
<button onclick="newClient();">newClient</button>
|
||||
<button onclick="updateBattle();">updateBattle</button>
|
||||
</div>
|
||||
<div>
|
||||
<button onclick="upgrade()">upgrade</button>
|
||||
<button onclick="game.turnPlayer.draw(5)">draw</button>
|
||||
<button onclick="game.turnPlayer.enerCharge(10);">enerCharge</button>
|
||||
</div>
|
||||
<div>
|
||||
<input id="card-name" type="text"></div>
|
||||
<button onclick="addToHand()">addCard</button>
|
||||
<button onclick="addToLifeCloth()">addToLifeCloth</button>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
175
testHelper.js
Normal file
175
testHelper.js
Normal file
|
@ -0,0 +1,175 @@
|
|||
'use strict'
|
||||
|
||||
// browser only
|
||||
|
||||
function testHelper() {
|
||||
this.cfg = {
|
||||
disableAudio: true,
|
||||
}
|
||||
}
|
||||
testHelper.prototype.disableAudio = function (doc) {
|
||||
// disable BGM
|
||||
if (!this.cfg.disableAudio) return;
|
||||
var bgm = doc.getElementById('checkbox-bgm');
|
||||
var sound = doc.getElementById('checkbox-sound-effect');
|
||||
if (bgm.checked) bgm.click()
|
||||
if (sound.checked) sound.click()
|
||||
}
|
||||
testHelper.prototype.initClient = function (win) {
|
||||
var doc = win.document;
|
||||
var self = this;
|
||||
var socket = new FakeSocket(win);
|
||||
win.addEventListener('unload',function () {
|
||||
socket._doEmit('disconnect');
|
||||
});
|
||||
win.document.title = 'Client' + socket.id;
|
||||
io._handler(socket);
|
||||
|
||||
this.disableAudio(doc);
|
||||
}
|
||||
testHelper.prototype.closeAllClient = function () {
|
||||
for (var uid in this.clients) {
|
||||
this.clients[uid].close();
|
||||
}
|
||||
}
|
||||
var testHelper = new testHelper();
|
||||
global.window.newClient = function () {
|
||||
var win = window.open('./webxoss-client/?local=true');
|
||||
win.addEventListener('load',function () {
|
||||
testHelper.initClient(win)
|
||||
});
|
||||
}
|
||||
var game;
|
||||
global.window.updateBattle = function () {
|
||||
if (roomManager.rooms.length === 0) {
|
||||
game = false;
|
||||
console.log('no in-play game found')
|
||||
return;
|
||||
}
|
||||
game = roomManager.rooms[0].game;
|
||||
console.log('update game infomation successfully')
|
||||
}
|
||||
global.window.upgrade = function () {
|
||||
var p = game.turnPlayer;
|
||||
var cards = p.lrigDeck.cards.concat(p.lrigTrashZone.cards);
|
||||
var lrigCards = [];
|
||||
cards.forEach(function(card) {
|
||||
if (card.type === 'LRIG') {
|
||||
lrigCards.push(card);
|
||||
}
|
||||
});
|
||||
game.moveCards(lrigCards, p.lrigZone);
|
||||
}
|
||||
global.window.addToHand = function () {
|
||||
var cardName = document.getElementById('card-name').value;
|
||||
if (game.turnPlayer.getCard(cardName))
|
||||
console.log('add ' + cardName + ' to hand');
|
||||
else
|
||||
console.log('no matched card')
|
||||
}
|
||||
global.window.addToLifeCloth = function () {
|
||||
var cardName = document.getElementById('card-name').value;
|
||||
if (game.turnPlayer.putCardToLifeCloth(cardName))
|
||||
console.log('put ' + cardName + ' to life cloth');
|
||||
else
|
||||
console.log('no matched card')
|
||||
}
|
||||
|
||||
// copy from test.js
|
||||
|
||||
var io = {
|
||||
on: function (name,handler) {
|
||||
io._handler = handler;
|
||||
},
|
||||
use: function () {}
|
||||
};;
|
||||
var cfg = {
|
||||
MAX_ROOMS: 100,
|
||||
MAX_CLIENTS: 500,
|
||||
MAX_ROOM_NAME_LENGTH: 15,
|
||||
MAX_NICKNAME_LENGTH: 10,
|
||||
MAX_PASSWORD_LENGTH: 15
|
||||
};
|
||||
var roomManager = new RoomManager(cfg);
|
||||
var MAX_SOCKETS = 500;
|
||||
// var MAX_SOCKETS_PER_IP = 50;
|
||||
// var ipTable = {};
|
||||
function getSocketCount () {
|
||||
if (!io.sockets) return 0;
|
||||
return Object.keys(io.sockets.connected).length;
|
||||
}
|
||||
io.use(function (socket,next) {
|
||||
if (getSocketCount() >= MAX_SOCKETS) {
|
||||
next(new Error('MAX_SOCKETS'));
|
||||
return;
|
||||
}
|
||||
// var handshake = socket.request;
|
||||
// var ip = handshake.connection.remoteAddress;
|
||||
// if (!ip) {
|
||||
// next();
|
||||
// return;
|
||||
// }
|
||||
// if (ip in ipTable) {
|
||||
// if (ipTable[ip] >= MAX_SOCKETS_PER_IP) {
|
||||
// console.log('MAX_SOCKETS_PER_IP: %s',ip);
|
||||
// next(new Error('MAX_SOCKETS_PER_IP'));
|
||||
// return;
|
||||
// } else {
|
||||
// ipTable[ip]++;
|
||||
// }
|
||||
// } else {
|
||||
// ipTable[ip] = 1;
|
||||
// }
|
||||
// socket.on('disconnect',function () {
|
||||
// console.log('disconnect: %s, count: %s',ip,getSocketCount());
|
||||
// if (ip in ipTable) {
|
||||
// if (ipTable[ip] <= 1) {
|
||||
// delete ipTable[ip];
|
||||
// } else {
|
||||
// ipTable[ip]--;
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
next();
|
||||
});
|
||||
io.on('connect',function (socket) {
|
||||
if (global.window) {
|
||||
return roomManager.createClient(socket);
|
||||
}
|
||||
var req = socket.request;
|
||||
if (req.connection.destroyed) {
|
||||
console.log('req.connection.destroyed');
|
||||
return;
|
||||
}
|
||||
var query = require('url').parse(req.url,true).query;
|
||||
// console.log('connect: %s, count: %s',req.connection.remoteAddress,getSocketCount());
|
||||
// console.log(query.clientId);
|
||||
roomManager.createClient(socket,+query.clientId);
|
||||
|
||||
// test
|
||||
// socket.on('force disconnect',function () {
|
||||
// socket.disconnect();
|
||||
// });
|
||||
|
||||
// for debug
|
||||
if (typeof process === 'undefined') return;
|
||||
var password = '';
|
||||
process.argv.slice(2).forEach(function (arg) {
|
||||
var match = arg.match(/^debug_password=(\S+)/)
|
||||
if (match) {
|
||||
password = match[1];
|
||||
}
|
||||
});
|
||||
if (!password) return;
|
||||
socket.on('debug',function (psw) {
|
||||
if (psw !== password) return;
|
||||
try {
|
||||
var path = require('path');
|
||||
var filePath = './debug.js';
|
||||
delete require.cache[path.resolve(filePath)];
|
||||
require(filePath);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue