81 lines
2.2 KiB
Perl
Executable file
81 lines
2.2 KiB
Perl
Executable file
#!/usr/bin/env perl
|
|
# this 'check_all_tomls.pl' is licensed under the GPL3, see LICENSE file for more details.
|
|
# if LICENSE isn't available, see < https://www.gnu.org/licenses/gpl-3.0.en.html >
|
|
#
|
|
# this just evals every toml file and reports non-compile-able/non-runtime-able/invalid toml files.
|
|
# not a perfect solution but will make sure you're shit isn't totally broken
|
|
|
|
use strict;
|
|
use warnings;
|
|
use v5.12; # readdir in while-loop
|
|
|
|
use TOML;
|
|
use File::Slurper qw(read_text write_text);
|
|
#use Carp::Always;
|
|
|
|
my ($game_config, $game_items, $battlers, $err);
|
|
|
|
($game_config, $err) = from_toml(read_text('./game.pl.toml'));
|
|
if ($err) {
|
|
die $err;
|
|
}
|
|
($game_items, $err) = from_toml(read_text('./assets/GAME_ITEMS.toml'));
|
|
if ($err) {
|
|
die $err;
|
|
}
|
|
($battlers, $err) = from_toml(read_text('./assets/BATTLERS.toml'));
|
|
if ($err) {
|
|
die $err;
|
|
}
|
|
|
|
# try to load global values by default; some toml scripts might touch them
|
|
my $player = $game_config->{newgame_player};
|
|
my $f_y = $game_config->{newgame_y};
|
|
my $f_x = $game_config->{newgame_x};
|
|
my $dialog_mode = 0;
|
|
my $menu_mode = 0;
|
|
my $battle_mode = 0;
|
|
my $hp = $game_config->{newgame_hp};
|
|
my $max_hp = $game_config->{newgame_max_hp};
|
|
my $atk = $game_config->{newgame_atk};
|
|
my $def = $game_config->{newgame_def};
|
|
my $lvl = $game_config->{newgame_lvl};
|
|
my $class = $game_config->{newgame_class};
|
|
my $hands = $game_config->{newgame_hands};
|
|
my $armor = $game_config->{newgame_armor};
|
|
|
|
my $curr_map = $game_config->{newgame_map};
|
|
my @inventory = @{ $game_config->{newgame_inventory} };
|
|
|
|
my %game_vars;
|
|
my %npcs;
|
|
my %journal;
|
|
|
|
opendir my $dh, './assets' or die 'lol lmao fucking dumbass';
|
|
while (my $file = readdir $dh) {
|
|
next if (substr ($file, -4, 4) ne 'toml');
|
|
my ($toml, $err) = from_toml(read_text("./assets/$file"));
|
|
if ($err) {
|
|
say "toml $file error:\n$err";
|
|
}
|
|
## no critic (eval)
|
|
eval $toml->{map_script} if $toml->{map_script};
|
|
if ($@) {
|
|
say "$file (map_script)\n$@";
|
|
}
|
|
|
|
for (sort keys %{ $toml->{objects} }) {
|
|
eval $toml->{objects}->{$_};
|
|
if ($@) {
|
|
say "$file $_ (object)\n$@";
|
|
}
|
|
}
|
|
}
|
|
closedir $dh;
|
|
|
|
# don't report subroutines that game.pl has
|
|
sub teleport {};
|
|
sub dialog {};
|
|
sub item {};
|
|
sub addch {}; # Curses specific subroutine
|
|
sub quest {};
|