File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- // swift-tools-version: 6.2
1+ // swift-tools-version: 5.9
22// The swift-tools-version declares the minimum version of Swift required to build this package.
33
44import PackageDescription
5- // swift-tools-version: 5.9
65
76let package = Package (
87 name: " TaskKit " ,
@@ -18,7 +17,7 @@ let package = Package(
1817 name: " TaskKit " ,
1918 dependencies: [ ] ,
2019 swiftSettings: [
21- . enableExperimentalFeature ( " SwiftData " )
20+ . enableUpcomingFeature ( " StrictConcurrency " )
2221 ]
2322 )
2423 ]
Original file line number Diff line number Diff line change 1- // The Swift Programming Language
2- // https://docs.swift.org/swift-book
31//
42// TaskKit.swift
53// TaskKit
64//
5+ // Swift Package: TaskKit
6+ //
77
88import Foundation
99
10+ /// TaskKit 是应用中管理任务与奖励的入口
11+ ///
12+ /// 使用方法:
13+ /// 1. 调用 `TaskKit.configure(tasks:rewards:)` 初始化任务和奖励
14+ /// 2. 通过 `TaskKit.tasks` 和 `TaskKit.rewards` 获取当前状态
15+ /// 3. TaskEngine 和 RewardEngine 会自动处理任务完成与奖励解锁逻辑
1016@MainActor
1117public enum TaskKit {
12- public static var tasks : [ AppTask ] = [ ]
13- public static var rewards : [ AppReward ] = [ ]
14- /// 初始化 TaskKit:设置可用任务
15- public static func configure( tasks: [ AppTask ] , rewards: [ AppReward ] ) {
18+
19+ /// 当前应用可用任务列表(只读)
20+ public private( set) static var tasks : [ AppTask ] = [ ]
21+
22+ /// 当前应用可用奖励列表(只读)
23+ public private( set) static var rewards : [ AppReward ] = [ ]
24+
25+ /// 初始化 TaskKit,设置可用任务和奖励
26+ /// - Parameters:
27+ /// - tasks: 当前 app 可用任务列表
28+ /// - rewards: 当前 app 可用奖励列表
29+ public static func configure( tasks: [ AppTask ] , rewards: [ AppReward ] ) {
30+
31+ // 检查任务 ID 是否唯一
32+ let taskIDs = tasks. map { $0. id }
33+ guard Set ( taskIDs) . count == tasks. count else {
34+ print ( " ⚠️ TaskKit Warning: Duplicate task IDs found. " )
35+ return
36+ }
37+
38+ // 检查奖励 ID 是否唯一
39+ let rewardIDs = rewards. map { $0. id }
40+ guard Set ( rewardIDs) . count == rewards. count else {
41+ print ( " ⚠️ TaskKit Warning: Duplicate reward IDs found. " )
42+ return
43+ }
44+
45+ // 配置状态
1646 self . tasks = tasks
1747 self . rewards = rewards
48+
49+ // 加载到引擎
1850 TaskEngine . shared. loadTasks ( tasks)
1951 RewardEngine . shared. loadRewards ( rewards)
2052 }
You can’t perform that action at this time.
0 commit comments