xiandie/addons/project-statistics/nodes/Overview.gd
2024-12-23 09:30:31 +08:00

63 lines
2.2 KiB
GDScript

@tool
extends "./StatisticsView.gd"
const BURNT_SIENNA: Color = Color("#EC6B56")
const CRAYOLA_MAIZE: Color = Color("#FFC154")
const KEPPEL: Color = Color("#47B39C")
var total_scenes: TreeItem
var total_resources: TreeItem
var total_scripts: TreeItem
var other_files: TreeItem
@onready var summary: Tree = $HSplitContainer/SummaryTree
@onready var graph: Control = $HSplitContainer/VBoxContainer/PieGraph
func _ready() -> void:
var root: TreeItem = summary.create_item()
total_scenes = summary.create_item(root)
total_resources = summary.create_item(root)
total_scripts = summary.create_item(root)
other_files = summary.create_item(root)
total_scenes.set_text(0, "Total scenes")
total_resources.set_text(0, "Total resources")
total_scripts.set_text(0, "Total scripts")
other_files.set_text(0, "Other files")
summary.hide_root = true
func display(stats: ProjectStatistics) -> void:
super.display(stats) #.display(stats)
total_scenes.set_text(1, str(stats.scenes.size()))
total_resources.set_text(1, str(stats.resources.size()))
total_scripts.set_text(1, str(stats.scripts.size()))
other_files.set_text(1, str(stats.misc.size()))
var series: Dictionary = {}
series["Scenes"] = _create_chart_data("Scenes", BURNT_SIENNA)
series["Resources"] = _create_chart_data("Resources", CRAYOLA_MAIZE)
series["Scripts"] = _create_chart_data("Scripts", KEPPEL)
series["Other"] = _create_chart_data("Other", Color.LIGHT_GRAY)
for file_stats in stats.scenes:
series["Scenes"].value += file_stats.size
for file_stats in stats.resources:
series["Resources"].value += file_stats.size
for file_stats in stats.scripts:
series["Scripts"].value += file_stats.size
for file_stats in stats.misc:
series["Other"].value += file_stats.size
graph.set_series(series)
func update_icons() -> void:
total_scenes.set_icon(0, get_theme_icon("PackedScene", "EditorIcons"))
total_resources.set_icon(0, get_theme_icon("Object", "EditorIcons"))
total_scripts.set_icon(0, get_theme_icon("Script", "EditorIcons"))
other_files.set_icon(0, get_theme_icon("File", "EditorIcons"))
func _create_chart_data(name: String, color: Color) -> ChartData:
var data = ChartData.new()
data.name = name
data.color = color
return data