added examples

This commit is contained in:
2026-09-01 20:13:23 +02:00
parent e8e12cf892
commit 2a7febfa4d
3 changed files with 141 additions and 17 deletions
+58 -2
View File
@@ -99,10 +99,66 @@
</p> </p>
<h3 id="mermaid-log-example">Log Example</h3> <h3 id="mermaid-log-example">Log Example</h3>
<p> TODO: Show log example</p> <code-block>
2026-09-01 17:53:13.213 INFO SCRIPTING (Main): [Spearhead][StageManager] ========== STAGE FLOW DIAGRAM ==========
graph TD
default_8["MAIN-2 (S8)"]
b_5["West Valley (S5)"]
default_1["MAIN-1 (S1)"]
a_5["WEST-2 (S5)"]
default_4["MAIN-2 (S4)"]
default_10["MAIN-1 (S10)"]
default_6["MAIN-2 (S6)"]
a_4["WEST-1 (S4)"]
default_3["MAIN-1 (S3)"]
default_9["MAIN-3 (S9)"]
a_7["WEST-2 (S7)"]
a_3["WEST (S3)"]
default_5["MAIN-3 (S5)"]
b_6["West Valley-1 (S6)"]
default_61["CAP-Maykop (S61)"]
default_7["MAIN-1 (S7)"]
default_0["START (S0)"]
a_6["WEST-3 (S6)"]
default_60["CAP-Nalchik (S60)"]
default_2["MAIN (S2)"]
a_2["WEST-1 (S2)"]
a_2 --> a_3
a_3 --> a_4
a_4 --> a_5
a_5 --> a_6
a_6 --> a_7
default_0 --> default_1
default_1 --> default_2
default_2 --> default_3
default_3 --> default_4
default_4 --> default_5
default_5 --> default_6
default_6 --> default_7
default_7 --> default_8
default_8 --> default_9
default_9 --> default_10
default_10 -->|chapter| default_60
default_60 --> default_61
b_5 --> b_6
default_2 -->|unlock| a_2
default_5 -->|unlock| b_5
a_7 -->|gate| default_60
b_6 -->|gate| default_60
========== END DIAGRAM ==========
</code-block>
<h3 id="mermaid-diagram-example">Diagram Example</h3> <h3 id="mermaid-diagram-example">Diagram Example</h3>
<p> TODO: Show diagram example</p> <p>
If you want to then copy and paste everything between the <br>
<code-inline>========== STAGE FLOW DIAGRAM ==========</code-inline> and <br>
<code-inline>========== END DIAGRAM ==========</code-inline> <br>
you will be able to go to <a href="https://mermaid.live/">https://mermaid.live/</a> and paste the diagram code into the editor. <br>
It would look like this:
</p>
<img src="/img/mermaid-preview.png" alt="Example of mermaid diagram">
<h2 id="lane-limitations">Limitations</h2> <h2 id="lane-limitations">Limitations</h2>
<h3 class="lane-limitations-cap">CAP</h3> <h3 class="lane-limitations-cap">CAP</h3>
+9 -9
View File
@@ -1,7 +1,7 @@
{ {
"type": "excalidraw", "type": "excalidraw",
"version": 2, "version": 2,
"source": "vscode-webview://1h45nhtr1vhnknf2q5n6qdd43citnkfueml5qdvamifv7pfv0our", "source": "vscode-webview://1hn2vaam3v69jt67pr4i27hnkafotvd70l4ao9nlb18pmrffl5dm",
"elements": [ "elements": [
{ {
"id": "kJXWwZE94uUnPMEB7mBNj", "id": "kJXWwZE94uUnPMEB7mBNj",
@@ -629,11 +629,11 @@
"type": 2 "type": 2
}, },
"seed": 2125327475, "seed": 2125327475,
"version": 44, "version": 46,
"versionNonce": 2047370396, "versionNonce": 342494645,
"isDeleted": true, "isDeleted": true,
"boundElements": [], "boundElements": [],
"updated": 1788258273370, "updated": 1788285477032,
"link": null, "link": null,
"locked": false, "locked": false,
"points": [ "points": [
@@ -2426,7 +2426,7 @@
"version": 112, "version": 112,
"versionNonce": 1755199388, "versionNonce": 1755199388,
"isDeleted": false, "isDeleted": false,
"boundElements": null, "boundElements": [],
"updated": 1788258305636, "updated": 1788258305636,
"link": null, "link": null,
"locked": false "locked": false
@@ -2456,7 +2456,7 @@
"version": 28, "version": 28,
"versionNonce": 557293604, "versionNonce": 557293604,
"isDeleted": false, "isDeleted": false,
"boundElements": null, "boundElements": [],
"updated": 1788258305636, "updated": 1788258305636,
"link": null, "link": null,
"locked": false, "locked": false,
@@ -2598,7 +2598,7 @@
"version": 7, "version": 7,
"versionNonce": 969870492, "versionNonce": 969870492,
"isDeleted": true, "isDeleted": true,
"boundElements": null, "boundElements": [],
"updated": 1788258356227, "updated": 1788258356227,
"link": null, "link": null,
"locked": false, "locked": false,
@@ -2637,7 +2637,7 @@
"version": 3, "version": 3,
"versionNonce": 1886913564, "versionNonce": 1886913564,
"isDeleted": true, "isDeleted": true,
"boundElements": null, "boundElements": [],
"updated": 1788258344772, "updated": 1788258344772,
"link": null, "link": null,
"locked": false, "locked": false,
@@ -2713,7 +2713,7 @@
"version": 3, "version": 3,
"versionNonce": 1539555236, "versionNonce": 1539555236,
"isDeleted": true, "isDeleted": true,
"boundElements": null, "boundElements": [],
"updated": 1788258343223, "updated": 1788258343223,
"link": null, "link": null,
"locked": false, "locked": false,
@@ -368,12 +368,51 @@ function GlobalStageManager:PrintMermaidStage()
local stageIndicesByLane = {} -- Track all stage indices per lane local stageIndicesByLane = {} -- Track all stage indices per lane
local mainLaneId = "default" local mainLaneId = "default"
-- Color palette for lanes (26 vibrant colors optimized for dark mode)
local laneColors = {
"#FF6B6B", -- 1: Red
"#4ECDC4", -- 2: Teal
"#45B7D1", -- 3: Blue
"#FFA502", -- 4: Orange
"#95E1D3", -- 5: Mint
"#F38181", -- 6: Coral
"#AA96DA", -- 7: Purple
"#FCBAD3", -- 8: Pink
"#A8E6CF", -- 9: Light green
"#FFD3B6", -- 10: Peach
"#FFAAA5", -- 11: Light red
"#FF8B94", -- 12: Rose
"#FFEAA7", -- 13: Butter
"#DFE6E9", -- 14: Gray
"#00B894", -- 15: Emerald
"#0984E3", -- 16: Cobalt
"#6C5CE7", -- 17: Indigo
"#A29BFE", -- 18: Lavender
"#FD79A8", -- 19: Magenta
"#FDCB6E", -- 20: Gold
"#6C757D", -- 21: Slate
"#20C997", -- 22: Seafoam
"#E74C3C", -- 23: Scarlet
"#3498DB", -- 24: Dodger blue
"#9B59B6", -- 25: Amethyst
"#1ABC9C", -- 26: Turquoise
}
local laneColorMap = {} -- Map lane ID to color
local colorIndex = 1
-- Build nodes and collect all stage indices per lane -- Build nodes and collect all stage indices per lane
for _, lane in ipairs(lanes) do for _, lane in ipairs(lanes) do
local laneId = lane:GetStageLaneIdentifier() or "default" local laneId = lane:GetStageLaneIdentifier() or "default"
local stageIndices = lane:GetAllStageIndices() local stageIndices = lane:GetAllStageIndices()
stageIndicesByLane[laneId] = stageIndices stageIndicesByLane[laneId] = stageIndices
-- Assign color to this lane
laneColorMap[laneId] = laneColors[colorIndex]
colorIndex = colorIndex + 1
if colorIndex > #laneColors then
colorIndex = 1
end
-- Create nodes for each stage index in this lane -- Create nodes for each stage index in this lane
for _, stageIndex in ipairs(stageIndices) do for _, stageIndex in ipairs(stageIndices) do
local stages = lane:GetStagesAtIndex(stageIndex) local stages = lane:GetStagesAtIndex(stageIndex)
@@ -382,7 +421,18 @@ function GlobalStageManager:PrintMermaidStage()
for _, stage in ipairs(stages) do for _, stage in ipairs(stages) do
local nodeId = laneId .. "_" .. stageIndex local nodeId = laneId .. "_" .. stageIndex
local stageType = stage:GetStageType() local stageType = stage:GetStageType()
local label = stage.stageName or stage.zoneName local stageName = stage.stageName or stage.zoneName
-- Generate bracket label: [1], [2] for default, [w1], [e2] for other lanes
local bracketLabel
if laneId == "default" then
bracketLabel = "[" .. stageIndex .. "]"
else
bracketLabel = "[" .. laneId .. stageIndex .. "]"
end
-- Combined label: [bracket] Name
local label = bracketLabel .. " " .. stageName
-- Different node shapes for different stage types -- Different node shapes for different stage types
local nodeShape = "[" local nodeShape = "["
@@ -395,8 +445,8 @@ function GlobalStageManager:PrintMermaidStage()
nodeEnd = "]]" nodeEnd = "]]"
end end
nodes[nodeId] = string.format(' %s%s"%s (S%d)"%s', nodes[nodeId] = string.format(' %s%s"%s"%s',
nodeId, nodeShape, label, stageIndex, nodeEnd) nodeId, nodeShape, label, nodeEnd)
end end
end end
end end
@@ -435,7 +485,7 @@ function GlobalStageManager:PrintMermaidStage()
end end
-- Add dependencies from DEFAULT lane to SIDE lanes at chapter starts -- Add dependencies from DEFAULT lane to SIDE lanes at chapter starts
-- Side lanes activate when main reaches a chapter start index for that side lane -- Side lanes activate when main completes the stage BEFORE the chapter start
if mainStageLane then if mainStageLane then
for _, lane in ipairs(lanes) do for _, lane in ipairs(lanes) do
if lane:IsDefaultStageLane() == false then if lane:IsDefaultStageLane() == false then
@@ -446,9 +496,10 @@ function GlobalStageManager:PrintMermaidStage()
for _, stageIdx in ipairs(sideIndices) do for _, stageIdx in ipairs(sideIndices) do
-- Check if this is a chapter start in the side lane -- Check if this is a chapter start in the side lane
if lane:IsChapterStart(stageIdx) then if lane:IsChapterStart(stageIdx) then
local fromNodeId = mainLaneId .. "_" .. stageIdx -- Main lane must complete (stageIdx - 1) to activate side lane at stageIdx
local fromNodeId = mainLaneId .. "_" .. (stageIdx - 1)
local toNodeId = sideId .. "_" .. stageIdx local toNodeId = sideId .. "_" .. stageIdx
-- Side lane activates when main lane reaches this chapter start -- Side lane activates when main lane completes the prior stage
table.insert(edges, string.format(' %s -->|unlock| %s', fromNodeId, toNodeId)) table.insert(edges, string.format(' %s -->|unlock| %s', fromNodeId, toNodeId))
end end
end end
@@ -502,13 +553,30 @@ function GlobalStageManager:PrintMermaidStage()
-- Build complete Mermaid diagram -- Build complete Mermaid diagram
local diagramLines = {"graph TD"} local diagramLines = {"graph TD"}
-- Add class definitions for each lane with colors and contrasting text
for laneId, color in pairs(laneColorMap) do
table.insert(diagramLines, string.format(' classDef lane_%s fill:%s,stroke:#333,stroke-width:2px,color:#000', laneId, color))
end
-- Add nodes
for _, nodeStr in pairs(nodes) do for _, nodeStr in pairs(nodes) do
table.insert(diagramLines, nodeStr) table.insert(diagramLines, nodeStr)
end end
-- Add edges
for _, edgeStr in pairs(edges) do for _, edgeStr in pairs(edges) do
table.insert(diagramLines, edgeStr) table.insert(diagramLines, edgeStr)
end end
-- Apply classes to nodes
for nodeId in pairs(nodes) do
local laneId = nodeId:match("(.+)_[0-9]+$")
if laneId then
table.insert(diagramLines, string.format(' class %s lane_%s', nodeId, laneId))
end
end
-- Print as single multi-line message -- Print as single multi-line message
local diagram = "========== STAGE FLOW DIAGRAM ==========\n" .. table.concat(diagramLines, "\n") .. "\n========== END DIAGRAM ==========" local diagram = "========== STAGE FLOW DIAGRAM ==========\n" .. table.concat(diagramLines, "\n") .. "\n========== END DIAGRAM =========="
self.logger:info(diagram) self.logger:info(diagram)