WebVNWrite/src/types/flowchart.ts

101 lines
2.1 KiB
TypeScript

// Position type for node coordinates
export type Position = {
x: number;
y: number;
};
// Character type: represents a defined character in the project
export type Character = {
id: string;
name: string;
color: string; // hex color
description?: string;
};
// Variable type: represents a defined variable in the project
export type Variable = {
id: string;
name: string;
type: 'numeric' | 'string' | 'boolean';
initialValue: number | string | boolean;
description?: string;
};
// Condition type for conditional edges and choice options
export type Condition = {
variableName: string;
variableId?: string;
operator: '>' | '<' | '==' | '>=' | '<=' | '!=';
value: number | string | boolean;
};
// DialogueNode type: represents character speech/dialogue
export type DialogueNodeData = {
speaker?: string;
characterId?: string;
text: string;
};
export type DialogueNode = {
id: string;
type: 'dialogue';
position: Position;
data: DialogueNodeData;
};
// Choice option type for ChoiceNode
export type ChoiceOption = {
id: string;
label: string;
condition?: Condition;
};
// ChoiceNode type: represents branching decisions
export type ChoiceNode = {
id: string;
type: 'choice';
position: Position;
data: {
prompt: string;
options: ChoiceOption[];
};
};
// VariableNode type: represents variable operations
export type VariableNodeData = {
variableName: string;
variableId?: string;
operation: 'set' | 'add' | 'subtract';
value: number;
};
export type VariableNode = {
id: string;
type: 'variable';
position: Position;
data: VariableNodeData;
};
// Union type for all node types
export type FlowchartNode = DialogueNode | ChoiceNode | VariableNode;
// FlowchartEdge type: represents connections between nodes
export type FlowchartEdge = {
id: string;
source: string;
sourceHandle?: string;
target: string;
targetHandle?: string;
data?: {
condition?: Condition;
};
};
// FlowchartData type: represents the complete flowchart structure
export type FlowchartData = {
nodes: FlowchartNode[];
edges: FlowchartEdge[];
characters: Character[];
variables: Variable[];
};