252 lines
10 KiB
TypeScript
252 lines
10 KiB
TypeScript
import { Client } from './Client';
|
|
import 'mocha';
|
|
import { PinusWSClient } from 'pinus-robot-plugin';
|
|
import { expect } from 'chai';
|
|
import { checkBattleGoods, checkDisplayItems, checkSuccessResponse, checkTimeStamp, checkWarJson } from './CheckPatten';
|
|
import { DEBUG_MAGIC_WORD } from '../app/consts';
|
|
import { getRandSingleEelm } from './pureUtil';
|
|
import * as util from 'util';
|
|
|
|
|
|
const NORMAIL_BATTLEID = 101;
|
|
const DUNGEON_BATTLEID = 5001;
|
|
|
|
describe('稷下学宫测试', function () {
|
|
let pinusClient: PinusWSClient;
|
|
let roleInfo;
|
|
|
|
before(function (done) {
|
|
const c = new Client();
|
|
const timer = setInterval(() => {
|
|
if (c.client) {
|
|
pinusClient = c.client;
|
|
roleInfo = c.roleInfo;
|
|
clearInterval(timer);
|
|
done();
|
|
}
|
|
}, 500);
|
|
});
|
|
|
|
after(function (done) {
|
|
pinusClient.disconnect();
|
|
// disconnect 后等待 500ms,供服务器清理环境、退出频道等
|
|
setTimeout(() => {
|
|
done();
|
|
}, 500);
|
|
});
|
|
|
|
|
|
|
|
it('获取大界面', function (done) {
|
|
pinusClient.request('battle.rougeHandler.getData', {}, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('获取一场进行中游戏数据', function (done) {
|
|
pinusClient.request('battle.rougeHandler.getGame', {}, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('初始随机角色卡,开始游戏', function (done) {
|
|
pinusClient.request('battle.rougeHandler.getInitCharaCard', { type: 1, grade: 1 }, (res) => {
|
|
pinusClient.request('battle.rougeHandler.startGame', { gameCode: res.data.gameCode, authorType: 1 }, (res) => {
|
|
done();
|
|
});
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
});
|
|
|
|
});
|
|
|
|
|
|
async function someAsyncOperation(route: string, param: any) {
|
|
let ret: any = new Promise((resolve, reject) => {
|
|
pinusClient.request(route, param, (result) => {
|
|
resolve({ ...result });
|
|
});
|
|
});
|
|
return ret;
|
|
}
|
|
|
|
it('开始游戏', async function () {
|
|
const result1: any = await someAsyncOperation('battle.rougeHandler.getGame', {});
|
|
console.log('获取游戏数据battle.rougeHandler.getGame', result1.msg);
|
|
|
|
const gameCode: string = result1.data.gameCode;
|
|
const nodes = result1.data.nodes;
|
|
const charas = result1.data.charas;
|
|
const charaCodes: string[] = [charas[0].charaCode];
|
|
|
|
for (let { layer, layerNodes } of nodes) {
|
|
let detailCode = layerNodes[0].detailCode;
|
|
let nodeType = layerNodes[0].type;
|
|
const result2: any = await someAsyncOperation('battle.rougeHandler.chooseNode', { gameCode, layer, detailCode });
|
|
console.log('选择节点battle.rougeHandler.chooseNode', result2.msg);
|
|
|
|
let chooseNodeData = result2.data;
|
|
const rewards = chooseNodeData.curNode?.reward?.rewards;
|
|
const warId = chooseNodeData.curNode?.warId;
|
|
const shops = chooseNodeData.curNode?.shops;
|
|
|
|
if (warId) {
|
|
const result3: any = await someAsyncOperation('battle.rougeHandler.checkBattle', { gameCode, detailCode, warId, charaCodes })
|
|
console.log('检测挑战battle.rougeHandler.checkBattle', result3.msg);
|
|
|
|
const battleCode: string = result2.data.battleCode;
|
|
const status: number = 1;
|
|
const round: number = 10;
|
|
const rougeDamage = [{
|
|
charaCode: charas[0].charaCode, hp: charas[0].hp / 2,
|
|
shield: charas[0].shield, other: '', damage: 100,
|
|
heal: 1, unserDamage: 100, isAp: true, isRound: true,
|
|
}]
|
|
const result4: any = await someAsyncOperation('battle.rougeHandler.battleEnd', { gameCode, detailCode, battleCode, warId, status, round, rougeDamage })
|
|
console.log('挑战结算battle.rougeHandler.battleEnd', result4.msg);
|
|
|
|
for (let { groupIndex, groupStatus, chooseNum, options } of rewards) {
|
|
let optionIndexs: number[] = [];
|
|
let alreadyNum = 0;
|
|
for (let { optionIndex, optionGroup } of options) {
|
|
if (optionGroup == 1) alreadyNum += 1;
|
|
if (optionIndexs.length == chooseNum) continue;
|
|
optionIndexs.push(optionIndex);
|
|
}
|
|
if (alreadyNum < chooseNum) {
|
|
const result5: any = await someAsyncOperation('battle.rougeHandler.chooseReward', { gameCode, detailCode, groupIndex, optionIndexs })
|
|
console.log('领取奖励battle.rougeHandler.chooseReward', result5.msg);
|
|
}
|
|
}
|
|
}
|
|
|
|
// 商店
|
|
if (shops && shops.length > 0) {
|
|
const result6: any = await someAsyncOperation('battle.rougeHandler.shopBuy', { gameCode, detailCode, optionIndex: shops[0].optionIndex })
|
|
console.log('商店购买battle.rougeHandler.shopBuy', result6.msg);
|
|
}
|
|
|
|
//休整点
|
|
if (nodeType == 5) {
|
|
//恢复
|
|
const result7: any = await someAsyncOperation('battle.rougeHandler.recovery', { gameCode, detailCode })
|
|
console.log('休整点battle.rougeHandler.recovery', result7.msg);
|
|
//招募
|
|
|
|
//强化
|
|
}
|
|
//TODO
|
|
}
|
|
const result: any = await someAsyncOperation('battle.rougeHandler.gameEnd', { gameCode })
|
|
console.log('游戏结算battle.rougeHandler.gameEnd', result.msg);
|
|
|
|
})
|
|
|
|
|
|
|
|
// it('chooseNode', function (done) {
|
|
|
|
// pinusClient.request('battle.rougeHandler.chooseNode', { gameCode: '4EPoEyML', layer: 2, detailCode: 'gREeb6Ku' }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
// it('gameEnd', function (done) {
|
|
|
|
// pinusClient.request('battle.rougeHandler.gameEnd', { gameCode: 'ZgaiZuom' }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
// it('shopBuy', function (done) {
|
|
|
|
// pinusClient.request('battle.rougeHandler.shopBuy', { gameCode: '5b8ioYN3', detailCode: '6ZhZYDXk', optionIndex: 1 }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
|
|
// it('chooseReward', function (done) {
|
|
|
|
// pinusClient.request('battle.rougeHandler.chooseReward', { gameCode: '5b8ioYN3', detailCode: 'Jv5JEneT', groupIndex: 1, optionIndexs: [0] }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
|
|
// it('checkBattle', function (done) {
|
|
|
|
// pinusClient.request('battle.rougeHandler.checkBattle', { gameCode: '4EPoEyML', detailCode: 'gREeb6Ku' ,warId:107, charaCodes:['D41jpqe6']}, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
|
|
// it('battleEnd', function (done) {
|
|
// pinusClient.request('battle.rougeHandler.battleEnd', { gameCode: '5b8ioYN3', detailCode: 'pEu6Wetd', warId: 102, battleCode: 'R3FobvR2', status: 1, round: 5, rougeDamage: [{ charaCode: 'WaAhKQu6',hp:1, ap:1, shield:1 }] }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
|
|
// it('nodeEnd', function (done) {
|
|
// pinusClient.request('battle.rougeHandler.nodeEnd', { gameCode: 'MkSLT1HY', detailCode: 'fve9s7ej' }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();``
|
|
// });
|
|
// });
|
|
|
|
|
|
// it('chooseOption', function (done) {
|
|
// pinusClient.request('battle.rougeHandler.chooseOption', { gameCode: '4EPoEyML', detailCode: 'gREeb6Ku', eventOptions:[1,4,10, 13] }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
|
|
// it('trainCard', function (done) {
|
|
// pinusClient.request('battle.rougeHandler.trainCard', { gameCode: '4EPoEyML', detailCode: 'gREeb6Ku', cardCode:'GB4AtwlA' }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
// it('recovery', function (done) {
|
|
// pinusClient.request('battle.rougeHandler.recovery', { gameCode: '4EPoEyML', detailCode: 'gREeb6Ku' }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
// index: NumberInt("0"),
|
|
// cardCode: "ShNTcBGa",
|
|
// cardId: NumberInt("10003")
|
|
|
|
// it('putOnOrOffCard', function (done) {
|
|
// pinusClient.request('battle.rougeHandler.putOnOrOffCard', { gameCode: '4EPoEyML', charaCode: 'GLYk8Q1C', cards: [{ index: 0, cardCode: "", }] }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
|
|
|
|
|
|
// for (let id = 20001; id <= 20034; id++) {
|
|
// it('debugAddCard', function (done) {
|
|
// pinusClient.request('battle.rougeHandler.debugAddCard', { tye: 3, id }, (res) => {
|
|
// console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null }));
|
|
// done();
|
|
// });
|
|
// });
|
|
// }
|
|
|
|
|
|
}); |