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();
|
||
// });
|
||
// });
|
||
// }
|
||
|
||
|
||
}); |