const std = @import("std"); const Store = @import("../store.zig"); const json_utils = @import("../json_utils.zig"); const json = std.json; const Allocator = std.mem.Allocator; const Cooldown = @import("./cooldown.zig"); const Character = @import("./character.zig"); const ItemQuantity = @import("./item_quantity.zig"); const TaskRewardData = @This(); cooldown: Cooldown, character: Character, reward: ItemQuantity, pub fn parse(store: *Store, obj: json.ObjectMap, allocator: Allocator) !TaskRewardData { const cooldown = json_utils.getObject(obj, "cooldown") orelse return error.MissingProperty; const character = json_utils.getObject(obj, "character") orelse return error.MissingProperty; const task = json_utils.getObject(obj, "task") orelse return error.MissingProperty; return TaskRewardData{ .cooldown = try Cooldown.parse(cooldown), .character = try Character.parse(store, character, allocator), .reward = (try ItemQuantity.parse(store, task)) orelse return error.MissinReward }; }