mirror of
https://github.com/open-goal/jak-project
synced 2026-07-30 16:04:33 -04:00
write a function that outputs a dot graph of the jak 2 tasks (#1932)
This commit is contained in:
@@ -244,4 +244,84 @@
|
||||
)
|
||||
)
|
||||
proc)
|
||||
)
|
||||
)
|
||||
|
||||
(defun levelname->x11-color ((name symbol))
|
||||
(case name
|
||||
(('city) "khaki")
|
||||
(('fortress) "salmon")
|
||||
(('stadium) "yellow")
|
||||
(('palace) "hotpink")
|
||||
(('castle) "gray")
|
||||
(('ruins) "darkkhaki")
|
||||
(('atoll) "gold")
|
||||
(('sewer) "turquoise")
|
||||
(('strip) "white")
|
||||
(('mountain) "tan")
|
||||
(('forest) "limegreen")
|
||||
(('drill) "seagreen")
|
||||
(('tomb) "chartreuse")
|
||||
(('dig) "orange")
|
||||
(('canyon) "#008B8B")
|
||||
(('consite) "#90EE90")
|
||||
(('under) "dodgerblue")
|
||||
(('nest) "violet")
|
||||
(('default) "white")
|
||||
(('test) "purple")
|
||||
(else "magenta")
|
||||
)
|
||||
)
|
||||
|
||||
(defun print-task-node-tree-graphviz ()
|
||||
|
||||
(format #t "digraph G {~%")
|
||||
(format #t " node [style=filled shape=ellipse]~%~%")
|
||||
(let ((game-tasks (-> *game-info* play-list)))
|
||||
(dotimes (t (-> game-tasks length))
|
||||
(let ((task (-> game-tasks t)))
|
||||
(format #t " subgraph cluster_task_~D {~%" t)
|
||||
(format #t " label = ~A;~%" (-> task name))
|
||||
(format #t " style = filled;~%")
|
||||
(format #t " fontsize = \"25pt\";~%")
|
||||
(cond
|
||||
((and (>= t (game-task fortress-escape))
|
||||
(<= t (game-task nest-boss))
|
||||
(!= t (game-task city-blue-gun-training))
|
||||
(!= t (game-task city-dark-gun-training)))
|
||||
(format #t " fillcolor = lightgray;~%")
|
||||
)
|
||||
((and (>= t (game-task city-burning-bush-ring-1))
|
||||
(<= t (game-task stadium-burning-bush-race-class1-r)))
|
||||
(format #t " fillcolor = pink;~%")
|
||||
)
|
||||
(else
|
||||
(format #t " fillcolor = lightyellow;~%")
|
||||
)
|
||||
)
|
||||
(let ((game-nodes (-> *game-info* sub-task-list)))
|
||||
(dotimes (i (-> game-nodes length))
|
||||
(let ((node (-> game-nodes i)))
|
||||
(when (= t (-> node task))
|
||||
;; iterate through parents
|
||||
(dotimes (ii 4)
|
||||
(when (!= (game-task-node none) (-> node parent-node ii))
|
||||
(format #t " ~A -> ~A;~%" (game-task-node->string (-> node parent-node ii)) (-> node name))
|
||||
)
|
||||
)
|
||||
(format #t " ~A [fillcolor=~A shape=~S];~%" (-> node name) (levelname->x11-color (-> node level))
|
||||
(cond
|
||||
((logtest? (-> node flags) (game-task-node-flag close-task))
|
||||
"oval")
|
||||
(else
|
||||
"box")))
|
||||
)
|
||||
)
|
||||
)
|
||||
(format #t " }~%")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(format #t "}~%")
|
||||
0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user