mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-22 21:16:02 +00:00

This is an old project to analyze header inclusions, described in email from Yann Dirson here: https://mail.gna.org/public/wesnoth-dev/2014-07/msg00009.html
117 lines
3.0 KiB
Perl
117 lines
3.0 KiB
Perl
# This file is part of the graph-includes package
|
|
#
|
|
# (c) 2005 Yann Dirson <ydirson@altern.org>
|
|
# Distributed under version 2 of the GNU GPL.
|
|
|
|
package graphincludes::project::wesnoth;
|
|
use strict;
|
|
use warnings;
|
|
|
|
use base qw(graphincludes::project::default);
|
|
|
|
use graphincludes::params;
|
|
|
|
sub filelabel {
|
|
my $self = shift;
|
|
my ($file,$level) = @_;
|
|
$level = $graphincludes::params::minshow unless defined $level;
|
|
|
|
## 0: file
|
|
|
|
$file =~ s/^$self->{PFXSTRIP}// if defined $self->{PFXSTRIP};
|
|
|
|
return $file if $level == 0;
|
|
|
|
|
|
## 1: "module", aka. "compilation unit"
|
|
|
|
$file =~ s/\.[^.]*$//;
|
|
$file='ai' if $file =~ m/^ai_(move|attack)$/;
|
|
|
|
return $file if $level == 1;
|
|
|
|
|
|
## 2: small groups
|
|
|
|
if ($file =~ m!^(variable|server/variable)\.! ) {
|
|
$file='variable';
|
|
} elsif ($file =~ m!^(ai|multiplayer|replay).*!) {
|
|
$file=$1;
|
|
} elsif ($file =~ m!^(mapgen|mapgen_dialog|cavegen|map_create)\..*!) {
|
|
$file='mapcreator';
|
|
} elsif ($file =~ m!^(serialization|widgets)/.*!) {
|
|
$file=$1;
|
|
}
|
|
|
|
return $file if $level == 2;
|
|
|
|
|
|
## 3: subsystems
|
|
|
|
# core: low-level stuff, non-graphical plumbing
|
|
if ($file =~ m!^(array|astarnode|cavegen|config|filesystem|game_config|game_errors|gettext|global|language|log|map|mapgen|pathfind|pathutils|preferences|race|random|serialization|scoped_resource|terrain|thread|tstring|unit|unit_types|util|variable|wassert|wml_separators|(.*/xcoll))$!) {
|
|
$file='core';
|
|
}
|
|
|
|
# graphics: low-level graphical stuff, not part of the gameplay
|
|
elsif ($file =~ m!^(animated|clipboard|cursor|font|halo|image|sdl_utils|tooltips|video)$!) {
|
|
$file='graphics';
|
|
}
|
|
|
|
# uicore: building blocks for the GUI, not gameplay-related
|
|
elsif ($file =~ m!^(builder|display|events|key|theme|widgets)$!) {
|
|
$file='uicore';
|
|
}
|
|
|
|
# ui: game-related GUI elements (eg. usable in editor)
|
|
elsif ($file =~ m!^(about|hotkeys|leader_list|mapgen_dialog|marked-up_text|menu_events|preferences_display|replay|show_dialog)$!) {
|
|
$file='ui';
|
|
}
|
|
|
|
# gameclient: modules specific to the gameclient (ie. not for server
|
|
# or editor)
|
|
elsif ($file =~ m!^(ai|game|help|intro|mouse_events|multiplayer|playcampaign|playlevel|playturn|titlescreen)$!) {
|
|
$file='gameclient';
|
|
}
|
|
|
|
# those subsystems living in their own directory
|
|
elsif ($file =~ m!^(campaign_server|editor|server|tools)/.*!) {
|
|
$file=$1;
|
|
}
|
|
|
|
|
|
# poor homeless modules
|
|
return $file;
|
|
}
|
|
|
|
sub defaultcolors {
|
|
my @colors;
|
|
$colors[2] = {
|
|
serialization => 'steelblue1',
|
|
mapcreator => 'gold',
|
|
widgets => 'linen',
|
|
multiplayer => 'palegreen',
|
|
replay => 'purple',
|
|
};
|
|
$colors[3] = {
|
|
core => 'steelblue3',
|
|
graphics => 'peachpuff',
|
|
uicore => 'lavenderblush',
|
|
ui => 'pink',
|
|
|
|
gameclient => 'yellow',
|
|
editor => 'cyan',
|
|
server => 'magenta',
|
|
tools => 'lightgrey',
|
|
};
|
|
return @colors;
|
|
}
|
|
|
|
sub ignored_deps {
|
|
return {
|
|
'src/video.cpp' => {'src/font.hpp' => 'split out floating labels from video' },
|
|
};
|
|
}
|
|
|
|
1;
|