oxygengine_visual_novel/
script.rs

1use crate::{dialogue::Dialogue, Color, Position, Scale};
2use core::{prefab::Prefab, Scalar};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Copy, Clone, Serialize, Deserialize)]
6pub enum LogType {
7    Info,
8    Warning,
9    Error,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub enum Action {
14    None,
15    // (log type, message)
16    Log(LogType, String),
17    Label(String),
18    Wait(Scalar),
19    GoToScene(String),
20    EndScene,
21    ChangeSceneBackground(String),
22    ShowCharacter(String),
23    HideCharacter(String),
24    HideAllCharacters,
25    /// (character name, visibility percentage)
26    ChangeCharacterVisibility(String, Scalar),
27    /// (character name, color)
28    ChangeCharacterNameColor(String, Color),
29    /// (character name, position percentage)
30    ChangeCharacterPosition(String, Position),
31    /// (character name, alignment percentage)
32    ChangeCharacterAlignment(String, Position),
33    /// (character name, rotation percentage)
34    ChangeCharacterRotation(String, Scalar),
35    /// (character name, scale percentage)
36    ChangeCharacterScale(String, Scale),
37    /// (character name, style name)
38    ChangeCharacterStyle(String, String),
39    ChangeCameraPosition(Position),
40    ChangeCameraRotation(Scalar),
41    GoToLabel(String),
42    GoToChapter(String),
43    Parallel(Vec<Action>),
44    ShowDialogue(Dialogue),
45    HideDialogue,
46}
47
48impl Default for Action {
49    fn default() -> Self {
50        Self::None
51    }
52}
53
54impl Prefab for Action {}
55
56#[derive(Debug, Default, Clone, Serialize, Deserialize)]
57pub struct Chapter {
58    pub name: String,
59    pub actions: Vec<Action>,
60}
61
62impl Prefab for Chapter {}