修改关卡记录逻辑
This commit is contained in:
1
game-server/app/resource
Symbolic link
1
game-server/app/resource
Symbolic link
@@ -0,0 +1 @@
|
||||
../../shared/resource
|
||||
@@ -1,9 +1,10 @@
|
||||
import { Application, BackendSession } from 'pinus';
|
||||
import { BattleRecordModel } from '../../../../../shared/db/BattleRecord';
|
||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||
import { getWarById, getGoodById } from '../../../util/gamedata';
|
||||
import { CounterModel } from '../../../../../shared/db/Counter';
|
||||
import { HeroModel } from '../../../../../shared/db/Hero';
|
||||
import { EquipModel } from '../../../../../shared/db/Equip';
|
||||
import { CounterModel } from '../../../db/Counter';
|
||||
import { HeroModel } from '../../../db/Hero';
|
||||
import { EquipModel } from '../../../db/Equip';
|
||||
import { genCode } from '../../../util/util';
|
||||
|
||||
export default function(app: Application) {
|
||||
return new NormalBattleHandler(app);
|
||||
@@ -13,9 +14,9 @@ export class NormalBattleHandler {
|
||||
constructor(private app: Application) {
|
||||
}
|
||||
|
||||
// 进入关卡前,设置status=0
|
||||
async checkBattle(msg: {battleId: number}, session: BackendSession) {
|
||||
const { battleId } = msg;
|
||||
// 进入关卡前,记录信息,生成唯一标识
|
||||
async checkBattle(msg: {battleId: number, heroes: Array<any> }, session: BackendSession) {
|
||||
const { battleId, heroes } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let warInfo = getWarById(battleId);
|
||||
@@ -26,40 +27,54 @@ export class NormalBattleHandler {
|
||||
}
|
||||
}
|
||||
|
||||
const BattleRecord = await BattleRecordModel.updateBattleRecordByRole(roleId, battleId, {
|
||||
const battleCode = genCode(8);
|
||||
const BattleRecord = await BattleRecordModel.updateBattleRecordByCode(battleCode, {
|
||||
$set: {
|
||||
roleId,
|
||||
roleName,
|
||||
battleId,
|
||||
status: 0,
|
||||
warName: warInfo.gk_name,
|
||||
warType: warInfo.war_type
|
||||
},
|
||||
$inc: {
|
||||
count: 1
|
||||
warType: warInfo.war_type,
|
||||
record: { heroes }
|
||||
}
|
||||
});
|
||||
}, true);
|
||||
|
||||
let {status} = BattleRecord;
|
||||
|
||||
let { count, status} = BattleRecord;
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
battleId, count, status
|
||||
battleId, battleCode, status
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 关卡结算,记录使用的武将,获得奖励
|
||||
async battleEnd(msg: {battleId: number, isSuccess: boolean, heroes: Array<any>, }, session: BackendSession) {
|
||||
async battleEnd(msg: {battleCode: string, battleId: number, isSuccess: boolean, heroes: Array<any>, }, session: BackendSession) {
|
||||
|
||||
const { battleId, isSuccess, heroes } = msg;
|
||||
const { battleCode, battleId, isSuccess, heroes } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let warInfo = getWarById(battleId);
|
||||
|
||||
const BattleRecord = await BattleRecordModel.getBattleRecordByRole(roleId, battleId);
|
||||
const BattleRecord = await BattleRecordModel.getBattleRecordByCode(battleCode, true);
|
||||
if(!BattleRecord || BattleRecord.status != 0) {
|
||||
return {
|
||||
code: 202,
|
||||
data: '关卡状态错误,未开启挑战'
|
||||
data: '关卡状态错误'
|
||||
}
|
||||
}
|
||||
|
||||
let flag = 1; // 对比hero信息
|
||||
let { record: { heroes: dbHeroes } } = BattleRecord;
|
||||
for(let hid of heroes) {
|
||||
if(dbHeroes.indexOf(hid) == -1) flag = 0;
|
||||
}
|
||||
if(!flag) {
|
||||
return {
|
||||
code: 202,
|
||||
data: '关卡信息不同'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,9 +84,6 @@ export class NormalBattleHandler {
|
||||
$set: {
|
||||
status: 1,
|
||||
record: { heroes }
|
||||
},
|
||||
$inc: {
|
||||
successCount: 1
|
||||
}
|
||||
}
|
||||
reward = await this.handleReward(roleId, roleName, warInfo.reward);
|
||||
@@ -80,21 +92,18 @@ export class NormalBattleHandler {
|
||||
$set: {
|
||||
status: 2,
|
||||
record: { heroes }
|
||||
},
|
||||
$inc: {
|
||||
failCount: 1
|
||||
}
|
||||
}
|
||||
reward = [];
|
||||
}
|
||||
|
||||
const result = await BattleRecordModel.updateBattleRecordByRole(roleId, battleId, params);
|
||||
let {count, status} = result;
|
||||
const updateResult = await BattleRecordModel.updateBattleRecordByCode(battleCode, params, true);
|
||||
let { status } = updateResult;
|
||||
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
battleId, count, status,
|
||||
battleCode, battleId, status,
|
||||
goods: reward
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ const path = require('path');
|
||||
var gamedata = {};
|
||||
|
||||
function initData () {
|
||||
fs.readdirSync(__dirname + '/../../config/resource')
|
||||
fs.readdirSync(__dirname + '/../resource')
|
||||
.filter(function(file) {
|
||||
return (file.indexOf(".") !== 0) && (file !== "index.js");
|
||||
})
|
||||
@@ -13,7 +13,7 @@ function initData () {
|
||||
var name = file.split('.')[0];
|
||||
try {
|
||||
gamedata[name] = JSON.parse(
|
||||
fs.readFileSync(path.resolve(__dirname, "../../config/resource/" + file))
|
||||
fs.readFileSync(path.resolve(__dirname, "../resource/" + file))
|
||||
);
|
||||
} catch(e) {
|
||||
console.error('【文件缺少】:' + file);
|
||||
|
||||
10
game-server/app/util/util.ts
Normal file
10
game-server/app/util/util.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
export function genCode(len) {
|
||||
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
|
||||
const charArr = chars.split('');
|
||||
let code = '';
|
||||
for (let i = 0; i < len; i++) {
|
||||
code += charArr[Math.floor(Math.random() * charArr.length)];
|
||||
}
|
||||
return code;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -7,6 +7,7 @@
|
||||
],
|
||||
"module": "commonjs", //指定生成哪个模块系统代码
|
||||
"target": "es2017",
|
||||
"resolveJsonModule": true,
|
||||
"lib": [
|
||||
"es2015",
|
||||
"es2016",
|
||||
@@ -24,6 +25,7 @@
|
||||
"watch":false //在监视模式下运行编译器。会监视输出文件,在它们改变时重新编译。
|
||||
},
|
||||
"include":[
|
||||
"./app/**/*.json",
|
||||
"./app/**/*.ts",
|
||||
"./config/**/*.ts",
|
||||
"./app.ts",
|
||||
|
||||
Reference in New Issue
Block a user