军团活动:诸侯混战城池状态
This commit is contained in:
@@ -3,7 +3,7 @@ import { RoleModel } from "../db/Role";
|
||||
import { reduceCe } from "../pubUtils/util";
|
||||
import { GUILDACTIVITY } from "../pubUtils/dicParam";
|
||||
import { gameData, getGuildAuctionRewards, getCityActivityRewards } from "../pubUtils/data";
|
||||
import { getCurHourPoint, getCutDay, nowSeconds } from "../pubUtils/timeUtil";
|
||||
import { getCurHourPoint, getCurDay, nowSeconds } from "../pubUtils/timeUtil";
|
||||
import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY, AUCTION_SOURCE, MAIL_TYPE, CITY_STATUS } from "../consts";
|
||||
import { Record, UserGuildActivityRecModel } from "../db/UserGuildActivityRec";
|
||||
import { GateMembersRec, GateActivityObject, CityActivityObject, CityParam, Member, RaceActivityObject, WoodenHorse } from "../domain/battleField/guildActivity";
|
||||
@@ -18,6 +18,8 @@ import { genAuction } from "./auctionService";
|
||||
import { sendMail } from "./mailService";
|
||||
import { getHonourObject } from '../pubUtils/itemUtils';
|
||||
import { GuildActivityCityType, GuildActivityCityModel } from "../db/GuildActivityCity";
|
||||
import { DicCityActivity } from "../pubUtils/dictionary/DicCityActivity";
|
||||
import { open } from "inspector";
|
||||
|
||||
let gateActivityObj: GateActivityObject;
|
||||
let cityActivityObj: CityActivityObject;
|
||||
@@ -89,7 +91,7 @@ export function getGuildActivityStatus(id: number) {
|
||||
}
|
||||
|
||||
export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) {
|
||||
|
||||
console.log('****',dicGuildActivity.startTime, dicGuildActivity.startMinute)
|
||||
let startTime = getCurHourPoint(dicGuildActivity.startTime, dicGuildActivity.startMinute);
|
||||
let countdownTime = getCurHourPoint(dicGuildActivity.countDown);
|
||||
let { duringTime, openDay } = dicGuildActivity;
|
||||
@@ -107,7 +109,7 @@ export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) {
|
||||
status = GUILD_ACTIVITY_STATUS.END;
|
||||
}
|
||||
|
||||
let day = getCutDay();
|
||||
let day = getCurDay();
|
||||
let isOpen = openDay.includes(day);
|
||||
|
||||
return {
|
||||
@@ -302,11 +304,12 @@ export async function sendGuildActEndMsg(aid: number) {
|
||||
gateActivityObj = new GateActivityObject();
|
||||
} else if (aid == GUILD_ACTIVITY_TYPE.CITY_ACTIVITY) {
|
||||
let obj = getCityActivityObj();
|
||||
let { cities, serverlists} = obj.getAllCities();
|
||||
let { cities } = obj.getAllCities();
|
||||
for(let { serverId, cityId } of cities) {
|
||||
await cityActivitySettleReward(cityId, serverId);
|
||||
}
|
||||
// 发完之后再做下周自动宣战
|
||||
let serverlists = await getAllServers();
|
||||
for(let serverId of serverlists) {
|
||||
await autoDeclare(serverId);
|
||||
}
|
||||
@@ -479,6 +482,9 @@ async function autoDeclare(serverId: number) {
|
||||
await GuildActivityCityModel.declare(serverId, dicCity.nextCity, guardGuildCode);
|
||||
}
|
||||
}
|
||||
for(let { cityId } of allCities) {
|
||||
await GuildActivityCityModel.guard(serverId, cityId, "", "");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -512,32 +518,35 @@ export function getCities(guildCode: string, dbCities: GuildActivityCityType[])
|
||||
param.declareCount = curCity.declareCount||0;
|
||||
}
|
||||
|
||||
param.status = getCityStatus(guildCode, cityId, dic.preCity, dbCities);
|
||||
param.status = getCityStatus(guildCode, cityId, dic, dbCities);
|
||||
cities.push(param);
|
||||
}
|
||||
return cities
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 诸侯混战 获取城池状态
|
||||
* @param guildCode
|
||||
* @param cityId
|
||||
* @param preCity
|
||||
* @param dic
|
||||
* @param dbCities
|
||||
*/
|
||||
export function getCityStatus(guildCode: string, cityId: number, preCity: number[], dbCities: GuildActivityCityType[]) {
|
||||
export function getCityStatus(guildCode: string, cityId: number, dic: DicCityActivity, dbCities: GuildActivityCityType[]) {
|
||||
let status = CITY_STATUS.NOT_OPEN;
|
||||
if(preCity && preCity.length) {
|
||||
let hasGuardCity = dbCities.find(cur => {
|
||||
return preCity.includes(cur.cityId) && cur.guardGuildCode == guildCode;
|
||||
});
|
||||
if(!!hasGuardCity) {
|
||||
status = CITY_STATUS.CAN_DECLARE;
|
||||
}
|
||||
} else {
|
||||
status = CITY_STATUS.CAN_DECLARE;
|
||||
let d = getCurDay(true);
|
||||
let { week, preCity } = dic;
|
||||
let activityStatus = getGuildActivityStatus(GUILD_ACTIVITY_TYPE.CITY_ACTIVITY);
|
||||
if(!activityStatus) {
|
||||
return CITY_STATUS.NOT_OPEN
|
||||
}
|
||||
|
||||
let dicGuildActivity = gameData.guildActivity.get(GUILD_ACTIVITY_TYPE.CITY_ACTIVITY);
|
||||
let { openDay } = dicGuildActivity;
|
||||
let curIndex = openDay.indexOf(week[0]);
|
||||
let startDay = openDay[curIndex - 1]||0;
|
||||
let endDay = openDay[openDay.length - 1]||0;
|
||||
if(d >= startDay && d <= endDay) status = CITY_STATUS.CAN_DECLARE;
|
||||
|
||||
let curCity = dbCities.find(cur => cur.cityId == cityId);
|
||||
if(curCity) {
|
||||
if(curCity.guardGuildCode == guildCode) {
|
||||
@@ -546,6 +555,18 @@ export function getCityStatus(guildCode: string, cityId: number, preCity: number
|
||||
status = CITY_STATUS.DECLARED;
|
||||
}
|
||||
}
|
||||
let hasGuard = false, hasDeclared = false;
|
||||
for(let { cityId: _cityId, guardGuildCode, declareGuilds } of dbCities) {
|
||||
let dicCity = gameData.cityActivity.get(_cityId);
|
||||
if(dicCity.type == dic.type) {
|
||||
if(guardGuildCode == guildCode) hasGuard = true;
|
||||
if(declareGuilds.includes(guildCode)) hasDeclared = true;
|
||||
}
|
||||
}
|
||||
if(status == CITY_STATUS.CAN_DECLARE && !hasDeclared && preCity.length > 0) {
|
||||
status = CITY_STATUS.NOT_OPEN;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user