Skip to main content

workshop_rs/wir/
rule.rs

1//! Canonical Workshop declarations and rules.
2
3use crate::core::source::Span;
4
5use super::{ActionId, Event, ValueId};
6
7/// A workshop variable (global or player) with its assigned index.
8#[derive(Debug, Clone)]
9pub struct WorkshopVariable {
10    pub name: String,
11    /// The workshop variable index assigned during lowering.
12    pub index: u32,
13    pub span: Option<Span>,
14    /// The exact span of the declared identifier token.
15    pub name_span: Option<Span>,
16}
17
18/// A workshop subroutine with its assigned index.
19#[derive(Debug, Clone)]
20pub struct WorkshopSubroutine {
21    pub name: String,
22    pub index: u32,
23    pub span: Option<Span>,
24    /// The exact span of the declared identifier token.
25    pub name_span: Option<Span>,
26}
27
28/// A workshop rule.
29#[derive(Debug, Clone)]
30pub struct Rule {
31    pub name: String,
32    pub span: Option<Span>,
33    /// The exact span of the rule name inside its string literal.
34    pub name_span: Option<Span>,
35    pub disabled: bool,
36    pub event: Event,
37    pub conditions: Vec<ValueId>,
38    pub actions: Vec<ActionId>,
39}