wolfrpg_map_parser/db_parser/models/common_event/
argument.rs

1#[cfg(feature = "serde")]
2use serde::{Deserialize, Serialize};
3use crate::db_parser::common_event::argument_type::ArgumentType;
4
5#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
6#[derive(PartialEq, Clone)]
7pub struct Argument {
8    argument_type: ArgumentType,
9    argument_name: String,
10    default_value: Option<u32>,
11    db_options: Vec<String>,
12    db_references: Vec<u32>
13}
14
15impl Argument {
16    pub fn new(
17        argument_type: u8,
18        argument_name: String,
19        default_value: Option<u32>,
20        db_options: Vec<String>,
21        db_references: Vec<u32>
22    ) -> Self {
23        Self {
24            argument_type: ArgumentType::new(argument_type),
25            argument_name,
26            default_value,
27            db_options,
28            db_references
29        }
30    }
31
32    /// Whether this argument receives a number
33    pub fn is_number(&self) -> bool {
34        self.default_value.is_some()
35    }
36
37    /// Whether this argument receives a string
38    pub fn is_string(&self) -> bool {
39        self.default_value.is_none()
40    }
41
42    /// The type of argument that can be passed
43    pub fn argument_type(&self) -> &ArgumentType {
44        &self.argument_type
45    }
46
47    /// The name of the argument variable
48    pub fn argument_name(&self) -> &str {
49        &self.argument_name
50    }
51
52    /// The default value for this argument. This is only set for number arguments and is `None` otherwise.
53    pub fn default_value(&self) -> Option<u32> {
54        self.default_value
55    }
56
57    /// Extra options for `ArgumentType::DBRef` arguments
58    pub fn db_options(&self) -> &Vec<String> {
59        &self.db_options
60    }
61
62    /// The database the argument references
63    pub fn db_references(&self) -> &Vec<u32> {
64        &self.db_references
65    }
66}