Skip to main content

manabrew_protocol/prompts/
choose_board_targets.rs

1use serde::{Deserialize, Serialize};
2use ts_rs::TS;
3
4use crate::game::TargetingIntent;
5use crate::prompts::common::TargetRef;
6
7#[derive(Debug, Clone, Serialize, Deserialize, TS)]
8#[serde(rename_all = "camelCase")]
9#[ts(export, export_to = "prompts/chooseBoardTargets.ts")]
10pub struct ChooseBoardTargetsInput {
11    pub candidates: Vec<TargetRef>,
12    #[serde(default)]
13    pub hostile: bool,
14    pub intent: TargetingIntent,
15    pub min_targets: i32,
16    pub max_targets: i32,
17    pub chosen_targets: i32,
18    pub label: String,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize, TS)]
22#[serde(
23    tag = "type",
24    rename_all = "camelCase",
25    rename_all_fields = "camelCase"
26)]
27#[ts(export, export_to = "prompts/chooseBoardTargets.ts")]
28pub enum ChooseBoardTargetsOutput {
29    BoardTargets { chosen: Vec<TargetRef> },
30}