Files
ZYZ/game-server/test/rouge.test.ts
2023-09-21 20:56:15 +08:00

252 lines
10 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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();
// });
// });
// }
});