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

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