Initial commit: Text Adventure Game
Features: - Combat system with AP/EP hit calculation and three-layer defense - Auto-combat/farming mode - Item system with stacking support - Skill system with levels, milestones, and parent skill sync - Shop system with dynamic pricing - Inventory management with bulk selling - Event system - Game loop with offline earnings - Save/Load system Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
103
store/game.js
Normal file
103
store/game.js
Normal file
@@ -0,0 +1,103 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref } from 'vue'
|
||||
|
||||
export const useGameStore = defineStore('game', () => {
|
||||
// 当前标签页
|
||||
const currentTab = ref('status')
|
||||
|
||||
// 抽屉状态
|
||||
const drawerState = ref({
|
||||
inventory: false,
|
||||
event: false,
|
||||
shop: false
|
||||
})
|
||||
|
||||
// 日志
|
||||
const logs = ref([])
|
||||
|
||||
// 游戏时间
|
||||
const gameTime = ref({
|
||||
day: 1,
|
||||
hour: 8,
|
||||
minute: 0,
|
||||
totalMinutes: 480
|
||||
})
|
||||
|
||||
// 战斗状态
|
||||
const inCombat = ref(false)
|
||||
const combatState = ref(null)
|
||||
const autoCombat = ref(false) // 自动战斗模式
|
||||
|
||||
// 活动任务
|
||||
const activeTasks = ref([])
|
||||
|
||||
// 负面状态
|
||||
const negativeStatus = ref([])
|
||||
|
||||
// 市场价格
|
||||
const marketPrices = ref({
|
||||
lastRefreshDay: 1,
|
||||
prices: {}
|
||||
})
|
||||
|
||||
// 当前事件
|
||||
const currentEvent = ref(null)
|
||||
|
||||
// 添加日志
|
||||
function addLog(message, type = 'info') {
|
||||
const time = `${String(gameTime.value.hour).padStart(2, '0')}:${String(gameTime.value.minute).padStart(2, '0')}`
|
||||
logs.value.push({
|
||||
id: Date.now(),
|
||||
time,
|
||||
message,
|
||||
type
|
||||
})
|
||||
// 限制日志数量
|
||||
if (logs.value.length > 200) {
|
||||
logs.value.shift()
|
||||
}
|
||||
}
|
||||
|
||||
// 重置游戏状态
|
||||
function resetGame() {
|
||||
currentTab.value = 'status'
|
||||
drawerState.value = {
|
||||
inventory: false,
|
||||
event: false,
|
||||
shop: false
|
||||
}
|
||||
logs.value = []
|
||||
gameTime.value = {
|
||||
day: 1,
|
||||
hour: 8,
|
||||
minute: 0,
|
||||
totalMinutes: 480
|
||||
}
|
||||
inCombat.value = false
|
||||
combatState.value = null
|
||||
autoCombat.value = false
|
||||
activeTasks.value = []
|
||||
negativeStatus.value = []
|
||||
marketPrices.value = {
|
||||
lastRefreshDay: 1,
|
||||
prices: {}
|
||||
}
|
||||
currentEvent.value = null
|
||||
}
|
||||
|
||||
return {
|
||||
currentTab,
|
||||
drawerState,
|
||||
logs,
|
||||
gameTime,
|
||||
inCombat,
|
||||
combatState,
|
||||
autoCombat,
|
||||
activeTasks,
|
||||
negativeStatus,
|
||||
marketPrices,
|
||||
currentEvent,
|
||||
addLog,
|
||||
resetGame
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user