Browse Source

可以配置任务的杀怪类型,并且接取任务的时候显示任务的需求

master
秦汉 3 weeks ago
parent
commit
d911d43483
  1. 13
      Build_God_Admin_Frontend/Frontend/src/views/admin/MissionView.vue
  2. 17
      Build_God_Game/src/views/DailyMissionView.vue

13
Build_God_Admin_Frontend/Frontend/src/views/admin/MissionView.vue

@ -11,6 +11,7 @@ import { GetPillList } from '@/api/pill'
import { ICONS } from '@/constants/theme'
import { GetEquipmentTemplateList, type EquipmentTemplate } from '@/api/equipment'
import { GetMissionProgresses, CreateMissionProgress, UpdateMissionProgress, DeleteMissionProgress, GetProgressTargetTypes, type MissionProgress } from '@/api/missionProgress'
import { GetMonsterList, type Monster } from '@/api/monster'
const missions = ref<Mission[]>([])
@ -213,10 +214,12 @@ const progressTargetTypeChange = async (id: number) => {
progressFormData.value.targetItemId = 0
progressFormData.value.targetItemName = '鱼类'
} else if (id === 3) {
// KillMonster - no item selection needed
progressSelectData.value = []
progressFormData.value.targetItemId = 0
progressFormData.value.targetItemName = '怪物'
// KillMonster - load monster list
const monsters = await GetMonsterList()
const monsterList = Array.isArray(monsters) ? monsters : (monsters.items || [])
progressSelectData.value = monsterList.map(m => ({ id: m.id, name: m.name }))
progressFormData.value.targetItemId = progressSelectData.value.length ? progressSelectData.value[0]!.id : null
if (progressFormData.value.targetItemId) onProgressItemChange(progressFormData.value.targetItemId)
} else if (id === 4) {
const pills = await GetPillList()
progressSelectData.value = (Array.isArray(pills) ? pills : []).map(p => ({ id: p.id, name: p.name }))
@ -705,7 +708,7 @@ const fetchEquipments = async (): Promise<EquipmentTemplate[]> => {
</el-option>
</el-select>
</el-form-item>
<el-form-item v-if="progressFormData.targetType === 1 || progressFormData.targetType === 4" label="物品">
<el-form-item v-if="progressFormData.targetType === 1 || progressFormData.targetType === 3 || progressFormData.targetType === 4" label="物品">
<el-select v-model="progressFormData.targetItemId" @change="onProgressItemChange">
<el-option v-for="(value, index) in progressSelectData" :key="index" :value="value.id"
:label="value.name" />

17
Build_God_Game/src/views/DailyMissionView.vue

@ -140,9 +140,18 @@ const getRewardIcon = (type: RewardType) => {
const getProgressText = (mission: DailyMission) => {
if (!mission.progresses || mission.progresses.length === 0) return ''
const progress = mission.progresses[0]
const targetType = progress.targetType === ProgressTargetType.CollectItem ? '收集' : '狩猎'
const targetTypeLabel = progress.targetType === ProgressTargetType.CollectItem ? '收集'
: progress.targetType === ProgressTargetType.KillMonster ? '击杀'
: progress.targetType === ProgressTargetType.Fish ? '钓鱼'
: progress.targetType === ProgressTargetType.ConsumeItem ? '消耗'
: progress.targetType === ProgressTargetType.Custom ? '挂机'
: '完成'
const targetName = progress.targetItemName || (progress.targetType === ProgressTargetType.KillMonster ? '怪物' : '物品')
return `${targetType} ${progress.currentCount}/${progress.targetCount} ${targetName}`
// Pending/
const displayCount = mission.status === DailyMissionStatus.Pending
? `0/${progress.targetCount}`
: `${progress.currentCount}/${progress.targetCount}`
return `${targetTypeLabel} ${displayCount} ${targetName}`
}
const getMissionIcon = (type: MissionType, difficulty: MissionDifficulty) => {
@ -189,9 +198,9 @@ const MissionCardContent = defineComponent({
h('div', { class: 'card-difficulty' }, [
h('span', { class: ['difficulty-badge', getDifficultyClass(props.mission.difficulty)] }, getDifficultyLabel(props.mission.difficulty)),
]),
props.mission.progresses && props.mission.progresses.length > 0 && props.mission.status !== DailyMissionStatus.Pending
props.mission.progresses && props.mission.progresses.length > 0
? h('div', { class: 'card-progress' }, [
h('span', { class: 'progress-label' }, '进度:'),
h('span', { class: 'progress-label' }, '目标:'),
h('span', { class: 'progress-value' }, getProgressText(props.mission)),
])
: null,

Loading…
Cancel
Save