import { RoleType } from "../../db/Role"; import { GVGLeagueType } from "../../db/GVGLeague"; import { GVGLeaguePrepareType } from "../../db/GVGLeaguePrepare"; import { GVGUserDataType } from "../../db/GVGUserData"; import { GuildType } from "../../db/Guild"; class LeagueLeaderInfo { name: string; // 盟主名 serverId: number; // 盟主所处小区 serverName: number; // 盟主所处小区名 constructor(leader: RoleType, serverNames: any) { this.name = leader.roleName; this.serverId = leader.serverId; this.serverName = serverNames[this.serverId]; } } class GVGItem { id: number; count: number; expireTime: number; // 过期时间 } class LeaguePlayerData { auth: number = 3; // 我的权限 1-盟主 2-副盟主 3-平民 job: number = 0; // 我的职能,1-贤臣 2-猛将 0-未选择 canPrepare: boolean = false; // 是否可以使用整备期模块,组建期过后加入的玩家,当天的整备模块不可参与 canChooseJob: boolean = true; // 是否可以选择职能,团内选择职业的人数达到最大人数了,已经不可再选职位了 items: GVGItem[] = []; // 持有的道具,包括两种令、战功和种子 // 奖励相关 receivedLv: number = 0; // 奖励领到几级 tasks: GVGTask[] = []; // 如果没有达成的任务就不放在这个数组里面 } class LeagueResource { food: number = 0; // 粮食 mineral: number = 0; // 矿物 wood: number = 0; // 木堆 } class GVGTask { id: number; // 任务id count: number; status: number; // 状态 0-未领取 1-已领取 } export class GVGMainData { configId: number = 0; // 赛期 period: number = 1; // 当前是什么期 1-组建期 2-备战期 3-激战期 countdownTime: number = 0; // 这个周期结束时间,10位时间戳单位秒 type: number = 1; // 1-单服 2-跨服 hasLeague: boolean = false; // 是否拥有联军 // 左侧联军信息 leagueCode: string; // 联军唯一code leader: LeagueLeaderInfo; name: string; // 联军名 icon: number; // 图标 lv: number; // 联军等级 notice: string; // 公告 guildCnt: number; // 军团数量 memberCnt: number; // 玩家人数 teamCnt: number; // 里面的玩家的队伍数 TODO leagueCe: number; // 联军内所有人总战力 // 个人信息 myInfo: LeaguePlayerData = new LeaguePlayerData(); // 激战期相关,城池背景 cities: number[] = []; // 占领的城池id // 内政相关 resources: LeagueResource = new LeagueResource(); // 联盟的物资 activeTech: number[] = []; // 已激活了的科技树的id sumTime: number = 0; // 今日贡献结算时间 10位时间戳 constructor(configId: number, period: number, countdownTime: number, type: number) { this.configId = configId; this.period = period; this.countdownTime = countdownTime; this.type = type; } setLeague(league: GVGLeagueType, serverNames: any) { if(!league) return; this.hasLeague = true; let leader = league.leader; this.leader = new LeagueLeaderInfo(leader, serverNames); this.name = league.name; this.icon = league.icon; this.notice = league.notice; this.guildCnt = league.guildCnt; this.memberCnt = league.memberCnt; this.leagueCe = league.leagueCe; } setLeagueParpare(leaguePrepare: GVGLeaguePrepareType) { if(!leaguePrepare) return; this.lv = leaguePrepare.lv; this.resources = leaguePrepare.resources; this.activeTech = leaguePrepare.tech.filter(cur => cur.status == 1).map(cur => cur.id); } setPlayerInfo(userData: GVGUserDataType, auth: number, canPrepare: boolean, canChooseJob: boolean, items: GVGItem[], tasks: GVGTask[]) { this.myInfo.auth = auth; this.myInfo.canPrepare = canPrepare; this.myInfo.canChooseJob = canChooseJob; this.myInfo.items = items; if(userData) { this.myInfo.job = userData?.job||0; this.myInfo.receivedLv = userData?.receivedLv||0; } this.myInfo.tasks = tasks; } } export class LeagueListInfo { leagueCode: string; // 联军唯一id name: string; // 联军名 icon: number; // icon memberCnt: number; // 玩家人数 guildCnt: number; // 组成军团名 leaderName: string; // 大将军的姓名 leaderServerName: string; // 大将军所处小区名 leagueCe: number; // 联军战力 hasApply: boolean = false; // 是否申请过了 constructor(league: GVGLeagueType, serverNames: any) { if(!league) return; this.leagueCode = league.leagueCode; this.name = league.name; this.icon = league.icon; this.memberCnt = league.memberCnt; this.guildCnt = league.guildCnt; this.leaderName = (league.leader).roleName; this.leaderServerName = serverNames[(league.leader).serverId]; this.leagueCe = league.leagueCe; } setHasApply(hasApply: boolean) { this.hasApply = hasApply; } } export class LeagueSimpleInfo extends LeagueListInfo { notice: string; // 公共 cities: number[] = []; // 占领的城池 constructor(league: GVGLeagueType, serverNames: any) { super(league, serverNames); if(!league) return; this.notice = league.notice; } setCities(cities: number[]) { this.cities = cities; } } export class LeagueGuildInfo { guildCode: string; // 军团唯一id name: string; // 军团名 serverName: string; // 区服名 lv: number; // 军团等级 memberCnt: number; // 人数 leaderName: string; // 大将军的姓名 guildCe: number; // 军团战力 hasInvited: boolean; // 是否邀请过了 constructor(guild: GuildType, serverNames: any) { if(!guild) return; this.guildCode = guild.code; this.name = guild.name; this.serverName = serverNames[guild.serverId]; this.lv = guild.lv; this.memberCnt = guild.memberCnt; let leader = guild.leader; this.leaderName = leader.roleName; this.guildCe = guild.guildCe; } setHasInvited(hasInvited: boolean) { this.hasInvited = hasInvited; } } export class LeagueMemberListInfo { roleId: string; // 玩家id roleName: string; // 玩家名 lv: number; // 玩家等级 head: number; // 玩家头像 frame: number; // 玩家相框 guildName: string; // 所处军团名 serverName: string; // 所处小区名 job: number = 0; // 官职 1-贤臣 2-猛将 auth: number = 0; // 官职 active: number = 0; // 活跃 ce: number; // 玩家战力 isOnline: boolean; // 是否在线 quitTime: number; // 离线时间 constructor(role: RoleType, serverNames: any) { if(!role) return; this.roleId = role.roleId; this.roleName = role.roleName; this.lv = role.lv; this.head = role.head; this.frame = role.frame; this.guildName = role.guildName; this.serverName = serverNames[role.serverId]; this.ce = role.ce; this.quitTime = role.quitTime; this.isOnline = role.quitTime == role.loginTime; } setByUserData(data: GVGUserDataType) { if(!data) return; this.active = data.active; this.job = data.job; } setAuth(auth: number) { this.auth = auth; } }