import { defineStore } from 'pinia'
import type { LevelDataItem } from '../../page/subject/learnWord/interface/index'
/* 困难模式 */
export const useHardModeStore = defineStore('hardMode', {
  state: () => {
    return {
      glassNum: 0,
      bombNum: 0,
      score: 0,
      urlQuery: {
        nextLevelId: '',
        levelId: '',
      },
      usedTime: 0,
    }
  },
})
/* 关卡列表 */
export const useLearnWordStore = defineStore('learnWord', {
  state: () => {
    return {
      refreshLevelList: false, // 欢乐学单词获得答题结果后变为true，返回关卡列表时会进行刷新
      refreshTodayTask: false, // 欢乐学单词获得答题结果后变为true，返回今日任务会进行刷新
      refreshTextBookList: false, // 欢乐学单词获得答题结果后变为true，返回单词表教材页时会进行刷新
      showTestButton: false, // 欢乐学单词是否显示答题按钮

      listType: 1, // 列表类型。1.入门模式 2.进阶模式 3.混合模式
      isBook: false,
      stageList: [] as any[], // 阶段列表
      levelList: [] as LevelDataItem[], // 由后端返回的全部关卡列表
      currentTypeList: [] as LevelDataItem[], // 当前选中类型的关卡列表
      currentList: [] as LevelDataItem[], // 显示的列表， 和 currentTypeList 的区别是多一个“未满星”过滤项
      hasFilteredNotFull: false, // 是否过滤未满星关卡
      currentLevelIndex: 0,
    }
  },
  getters: {
    // 当前解锁关卡/角色所在关卡/开始挑战关卡
    lastOpenLevel: state => {
      let firstLockLevelIdx
      let level
      // if (state.listType === 3) {
      //   firstLockLevelIdx = state.currentList.findIndex(item => !item.isOpen)
      // } else {
      firstLockLevelIdx = state.currentList.findIndex(item => !item.isOpen)
      // }
      if (firstLockLevelIdx > 0) {
        // 如果列表中有未解锁关卡
        // if (state.listType === 3) {
        firstLockLevelIdx--
        // }
        level = state.currentList[firstLockLevelIdx]
        level.index = firstLockLevelIdx
      } else if (firstLockLevelIdx === 0) {
        // 如果列表中全是未解锁关卡
        level = state.currentList[0]
        level.index = 0
      } else {
        // 如果列表中全是已解锁关卡
        if (state.currentList.length) {
          level = state.currentList[state.currentList.length - 1]
          level.index = state.currentList.length - 1
        } else {
          // 如果列表中没有任何关卡
          return null
        }
      }

      return level
    },
    nextLevel: state => {
      // 下一关，如果是最后一关则返回空id
      if (state.currentLevelIndex >= state.currentList.length - 1) {
        return {
          levelId: '',
          type: 1,
        }
      } else {
        return state.currentList[state.currentLevelIndex + 1]
      }
    },
  },
})
