67 lines
3.2 KiB
TypeScript
67 lines
3.2 KiB
TypeScript
|
|
// 动态
|
|
import { GVG_REC_ID, GVG_REC_TYPE, GVG_RESOURCE_TYPE } from "../../consts";
|
|
import { GVGRecModel } from "../../db/GVGRec";
|
|
import { GVGVestigeRecType } from "../../db/GVGVestigeRec";
|
|
import { gameData } from "../../pubUtils/data";
|
|
import { nowSeconds } from "../../pubUtils/timeUtil";
|
|
import { getGVGConfig } from "./gvgService";
|
|
|
|
// 加入军团
|
|
export async function guildJoinLeagueRecord(leagueCode: string, guildName: string) {
|
|
await leagueJoinOrQuitGuild(leagueCode, guildName, GVG_REC_ID.LEAGUE_JOIN_GUILD);
|
|
}
|
|
|
|
// 退出军团
|
|
export async function guildQuitLeagueRecord(leagueCode: string, guildName: string) {
|
|
await leagueJoinOrQuitGuild(leagueCode, guildName, GVG_REC_ID.LEAGUE_QUIT_GUILD);
|
|
}
|
|
|
|
async function leagueJoinOrQuitGuild(leagueCode: string, guildName: string, recId: GVG_REC_ID.LEAGUE_JOIN_GUILD|GVG_REC_ID.LEAGUE_QUIT_GUILD) {
|
|
let { configId } = getGVGConfig();
|
|
let params = [guildName];
|
|
await GVGRecModel.addRec({ leagueCode, configId, type: GVG_REC_TYPE.PREPARE, recId, createTime: nowSeconds(), params })
|
|
}
|
|
|
|
// 获得资源
|
|
export async function addResourceRecord(roleId: string, roleName: string, leagueCode: string, resourceType: GVG_RESOURCE_TYPE, output: number) {
|
|
let { configId } = getGVGConfig();
|
|
let params = [roleName, getResourceNameByType(resourceType), `${output}`];
|
|
await GVGRecModel.addRec({ roleId, leagueCode, configId, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.ADD_RESOURCE, createTime: nowSeconds(), params })
|
|
}
|
|
|
|
function getResourceNameByType(resourceType: GVG_RESOURCE_TYPE) {
|
|
switch(resourceType) {
|
|
case GVG_RESOURCE_TYPE.FOOD: return '粮食';
|
|
case GVG_RESOURCE_TYPE.MINERAL: return '矿物';
|
|
case GVG_RESOURCE_TYPE.WOOD: return '木堆';
|
|
}
|
|
}
|
|
|
|
export async function addVestigeBattleEndRec(rec: GVGVestigeRecType) {
|
|
if(!rec) return;
|
|
let { configId, vestigeId } = rec;
|
|
let vestigeName = gameData.gvgVestigeName.get(vestigeId);
|
|
if(rec.defenseInfo && rec.defenseInfo.isRobot) { // 对手是机器人,驻扎动态
|
|
let { roleId, roleName, leagueCode, newRank, isSuccess } = rec.attackInfo;
|
|
if(isSuccess) {
|
|
let params = [ roleName, vestigeName, `第${newRank}名`];
|
|
await GVGRecModel.addRec({ roleId, leagueCode, configId, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.SETTLE_POINT, createTime: nowSeconds(), params });
|
|
}
|
|
}
|
|
if(rec.defenseInfo && !rec.defenseInfo.isRobot && rec.attackInfo.leagueCode != rec.defenseInfo.leagueCode) {
|
|
let { leagueName, newRank, isSuccess } = rec.attackInfo;
|
|
let { roleId, leagueCode, roleName } = rec.defenseInfo;
|
|
if(isSuccess) {
|
|
let params = [ roleName, vestigeName, `第${newRank}名`, leagueName];
|
|
await GVGRecModel.addRec({ roleId, leagueCode, configId, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.POINT_BE_GRAB, createTime: nowSeconds(), params });
|
|
}
|
|
}
|
|
}
|
|
|
|
export async function addVestigeLeagueRankRec(configId: number, ranks: { rank: number, field: string }[]) {
|
|
await GVGRecModel.addRecs(ranks.map(({ rank, field: leagueCode }) => {
|
|
let params = [ `第${rank}名`];
|
|
return { leagueCode, configId, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.VESTIGE_RANK, createTime: nowSeconds(), params };
|
|
}));
|
|
} |