123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- import Gamecfg from "../../../common/gameCfg";
- import { gameMethod } from "../../../common/gameMethod";
- import { xlsTaskMain } from "../../../common/xlsConfig";
- import EventMng from "../../../manager/EventMng";
- import { MsgItemChange_s } from "../../../shared/item/server/MsgItemChange_s";
- import { ResTaskInfo } from "../../../shared/task/PtlTaskInfo";
- import { I18n } from "../../../utils/I18nUtil";
- import { TaskMainEvent } from "../../const/EventConst";
- import { TaskKind } from "../../const/TypeConst";
- import GameDataCenter from "../../GameDataCenter";
- import { TaskModelData } from "./TaskModelData";
- export default class TaskModel extends TaskModelData {
- readonly GuanQiaNum = 5;
- readonly TaskPopCloseCd: number = 5;
- readonly TaskPopTime: number = 0.2;
- lastPopTaskId: number = null;
- //引导手指的id
- curHandTaskId = 0;
- //最后一次记录任务id
- private _lastTaskId: number = 0;
- constructor() {
- super("task");
- }
- onRegister(): void {
- GameDataCenter.gameServer.ListenMsg("item/server/ItemChange_s", this.onTaskChange, this);
- }
- onTaskChange(msg: MsgItemChange_s) {
- for (let key in msg) {
- if (Object.prototype.hasOwnProperty.call(msg, key)) {
- this.taskInfo[key] = msg[key];
- }
- }
- EventMng.emit(TaskMainEvent.UP_INFO);
- }
-
- setTaskInfo(res: ResTaskInfo) {
- this.taskInfo = res;
- this._lastTaskId = res.id;
- }
- checkMainTaskCount(conf: xlsTaskMain, ismax: boolean = false) {
- let actTaskMain = GameDataCenter.task.taskInfo;
- let max = this.checkMax(conf.kind, conf.need);
- let num = this.checkNum(conf.kind, actTaskMain?.cons, conf.need);
- let cons = ismax ? max : Math.min(num, max);
- return `${cons}/${max}`;
- }
- /**
- * 任务当前进度值
- * @param kind 任务类型
- * @param val 当前进度值
- * @param need 任务需求值
- * @returns
- */
- checkNum(kind: string, val: number, need: number) {
- let num = 0;
- switch (kind) {
- default:
- num = val;
- break;
- }
- return num;
- }
- /**
- * 任务进度的最大值
- * @param kind 任务类型
- * @param need 任务需求值
- * @returns
- */
- checkMax(kind: string, need: number) {
- let max = 1;
- switch (kind) {
- default:
- max = need;
- break;
- }
- return max;
- }
- /**
- * 获得任务类型的任务进度
- * @param kind 任务类型
- * @param val 当前进度值
- * @param need 任务需求值
- * @returns x/y
- */
- getTaskCount(kind: string, val: number, need: number) {
- let max = this.checkMax(kind, need);
- let num = this.checkNum(kind, val, need);
- let cons = Math.min(num, max);
- return `${cons}/${max}`;
- }
- /**
- * 获得任务类型对应的任务描述
- * @param kind 任务类型
- * @param need 任务需求值
- * @returns 任务描述
- */
- getTaskDesc(kind: string | number, need: number) {
- switch (kind) {
- default:
- return I18n.getTaskDesc(kind, need);
- }
- }
- //当前任务是否完成
- public curTaskIsFinish() {
- let actTaskMain = GameDataCenter.task.taskInfo;
- let conf = Gamecfg.taskMain.getItem(actTaskMain?.id.toString());
- if (actTaskMain.cons >= conf?.need) {
- return true;
- } else {
- return false;
- }
- }
- //指定任务是否完成
- public TaskIdIsFinish(id: string) {
- let actTaskMain = GameDataCenter.task.taskInfo;
- if (actTaskMain?.id.toString() != id) {
- return false;
- }
- let conf = Gamecfg.taskMain.getItem(actTaskMain?.id.toString());
- if (!gameMethod.isEmpty(conf) && actTaskMain?.cons >= conf.need) {
- return true;
- } else {
- return false;
- }
- }
- /**
- * 检测当前是否是最后一个任务
- * 如果是,则返回最后一个任务
- * @returns
- */
- checkIsMax(): xlsTaskMain {
- let id = GameDataCenter.task.taskInfo?.id ?? 0;
- let conf = Gamecfg.taskMain.getItem(id + "");
- if (conf) return null;
- let last = Gamecfg.taskMainByNextid.getItem(id + "");
- return last;
- }
- //发送消息
- async sendTaskInfo() {
- let ret = await GameDataCenter.gameServer.ReqApi("task/TaskInfo", {});
- if (ret?.res) {
- this.setTaskInfo(ret.res);
- EventMng.emit(TaskMainEvent.UP_INFO);
- }
- }
- async sendTaskRwd(callback?: Function) {
- let ret = await GameDataCenter.gameServer.ReqApi("task/TaskRwd", {});
- if (ret?.res) {
- this.setTaskInfo(ret.res);
- callback && callback();
- EventMng.emit(TaskMainEvent.UP_INFO);
- }
- }
- }
|