DailyTask.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { task } from "../Config/ConfigConst";
  2. import { App } from "../../Manager/App";
  3. import { ETaskID } from "../Const/EnumDefine";
  4. /** 日常任务 */
  5. export class DailyTask {
  6. public taskType = 1;
  7. public finishTaskType = 2;
  8. private _tasks: task[];
  9. public get tasks(): task[] {
  10. return this._tasks;
  11. }
  12. public set tasks(value: task[]) {
  13. this._tasks = value;
  14. this.updateLocalStorate();
  15. }
  16. public constructor() {
  17. this.initData();
  18. }
  19. public initData() {
  20. let dailyTask = App.LocalStorageUtil.getJsonObj(App.LocalStorageUtil.lst_dailytask) as DailyTask;
  21. if (dailyTask)
  22. this.tasks = dailyTask._tasks;
  23. else
  24. this.tasks = App.ConfigMgr.getTaskList();
  25. }
  26. private updateLocalStorate() {
  27. App.LocalStorageUtil.setJsonObj(App.LocalStorageUtil.lst_dailytask, this);
  28. console.log("设置日常任务数据:", this);
  29. }
  30. /** 获取任务在任务数组中的索引 */
  31. private getTask(taskID: ETaskID): number {
  32. let result = -1;
  33. this.tasks.forEach((value, index) => {
  34. if (value.id == taskID) result = index;
  35. });
  36. return result;
  37. }
  38. /** 完成一次 */
  39. public doOneTimes(taskID: ETaskID) {
  40. let taskIndex = this.getTask(taskID);
  41. this.tasks[taskIndex].overNum += 1;
  42. this.isFinishTask(this.tasks[taskIndex]);
  43. this.updateLocalStorate();
  44. }
  45. /** 是否完成某个任务 */
  46. private isFinishTask(task: task): boolean {
  47. let result = false;
  48. if (task.overNum >= task.maxNum) {
  49. task.overNum = task.maxNum;
  50. result = true;
  51. }
  52. return result;
  53. }
  54. /** 是否完成所有任务 */
  55. private isFinishAllTask(): boolean {
  56. let result = true;
  57. this.tasks.forEach((value) => {
  58. if (value.overNum < value.maxNum) result = false;
  59. })
  60. return result;
  61. }
  62. }