From 3f1999929dd6662da92c8f1b20c2fcbbce0c0ed7 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Fri, 26 Nov 2021 13:06:07 +0100 Subject: [PATCH] added additional empty space elements (not used yet) --- build-scripts/create_element_defs.pl | 158 +++++++++++++++++++++++++++ graphics/gfx_classic/RocksCE.png | Bin 10762 -> 16754 bytes src/Makefile | 2 + src/conf_gfx.c | 1 + src/main.c | 80 ++++++++++++++ src/main.h | 11 +- 6 files changed, 251 insertions(+), 1 deletion(-) diff --git a/build-scripts/create_element_defs.pl b/build-scripts/create_element_defs.pl index 0966816a..3f5693fe 100755 --- a/build-scripts/create_element_defs.pl +++ b/build-scripts/create_element_defs.pl @@ -42,6 +42,8 @@ my $filename_conf_cus_c = 'conf_cus.c'; my $filename_conf_cus_h = 'conf_cus.h'; my $filename_conf_grp_c = 'conf_grp.c'; my $filename_conf_grp_h = 'conf_grp.h'; +my $filename_conf_emp_c = 'conf_emp.c'; +my $filename_conf_emp_h = 'conf_emp.h'; my $filename_conf_e2g_c = 'conf_e2g.c'; my $filename_conf_esg_c = 'conf_esg.c'; my $filename_conf_e2s_c = 'conf_e2s.c'; @@ -61,6 +63,8 @@ my $text_cus_c = 'values for graphics configuration (custom elements)'; my $text_cus_h = 'values for elements configuration (custom elements)'; my $text_grp_c = 'values for graphics configuration (group elements)'; my $text_grp_h = 'values for elements configuration (group elements)'; +my $text_emp_c = 'values for graphics configuration (empty elements)'; +my $text_emp_h = 'values for elements configuration (empty elements)'; my $text_e2g_c = 'values for element/graphics mapping configuration (normal)'; my $text_esg_c = 'values for element/graphics mapping configuration (special)'; my $text_e2s_c = 'values for element/sounds mapping configuration'; @@ -72,6 +76,7 @@ my $text_act_c = 'values for active states of elements and fonts'; my $num_custom_elements = 256; my $num_group_elements = 32; +my $num_empty_elements = 16; my $char_skip = '---[SKIP]---'; @@ -393,6 +398,28 @@ sub print_graphics_list } } + if (/^\#include "conf_emp.c"/) # dump list of empty elements + { + for (my $nr = 0; $nr < $num_empty_elements; $nr++) + { + my $line = sprintf("#define IMG_EMPTY_SPACE_%d", $nr + 1); + + my $tabs = get_tabs($line, $max_num_tabs); + + print "$line$tabs$i\n"; + + $i++; + + $line = sprintf("#define IMG_EMPTY_SPACE_%d_EDITOR", $nr + 1); + + $tabs = get_tabs($line, $max_num_tabs); + + print "$line$tabs$i\n"; + + $i++; + } + } + if (!contains_image_file($_)) # skip all lines without image file { next; @@ -727,6 +754,24 @@ sub print_group_elements_list print_file_footer($filename_conf_grp_c); } +sub print_empty_elements_list +{ + print_file_header($filename_conf_emp_h, $text_emp_h); + + for (my $i = 0; $i < $num_empty_elements; $i++) + { + my $left = sprintf("#define EL_EMPTY_SPACE_%d", $i + 1); + + my $tabs_left = get_tabs($left, 5); + + my $right = "(EL_EMPTY_SPACE_START + $i)"; + + print "$left$tabs_left$right\n"; + } + + print_file_footer($filename_conf_emp_c); +} + sub print_custom_graphics_list { my @extensions1 = @@ -889,6 +934,89 @@ sub print_group_graphics_list print_file_footer($filename_conf_grp_c); } +sub print_empty_graphics_list +{ + my @extensions1 = + ( + '', + '.xpos', + '.ypos', + '.frames', + ); + my @extensions2 = + ( + '', + '.xpos', + '.ypos', + ); + + my $num_non_empty_elements = $num_custom_elements + $num_group_elements; + + print_file_header($filename_conf_emp_c, $text_emp_c); + + for (my $i = 0; $i < $num_empty_elements; $i++) + { + foreach my $ext (@extensions1) + { + my $left = sprintf(" \{ \"empty_space_%d$ext\",", $i + 1); + + my $tabs_left = get_tabs($left, 6); + + # my $right = ($ext eq '' ? 'RocksDC.png' : + my $right = ($ext eq '' ? 'RocksCE.png' : + $ext eq '.frames' ? '1' : '0'); + + if ($ext eq '.xpos') + { + # $right = 4; + $right = int($i % 16); + } + elsif ($ext eq '.ypos') + { + # $right = 15; + $right = int($i / 16) + int($num_non_empty_elements / 16); + } + + $right = "\"$right\""; + + my $tabs_right = get_tabs($right, 3); + + print "$left$tabs_left$right$tabs_right},\n"; + } + + foreach my $ext (@extensions2) + { + my $left = sprintf(" \{ \"empty_space_%d.EDITOR$ext\",", $i + 1); + + my $tabs_left = get_tabs($left, 6); + + # my $right = ($ext eq '' ? 'RocksDC.png' : '0'); + my $right = ($ext eq '' ? 'RocksCE.png' : '0'); + + if ($ext eq '.xpos') + { + # $right = 14; + $right = int($i % 16) + 16; + } + elsif ($ext eq '.ypos') + { + # $right = 15; + $right = int($i / 16) + int($num_non_empty_elements / 16); + } + + $right = "\"$right\""; + + my $tabs_right = get_tabs($right, 3); + + print "$left$tabs_left$right$tabs_right},\n"; + } + + print "\n"; + } + + print_file_footer($filename_conf_emp_c); +} + sub get_known_element_definitions_ALTERNATIVE { my %known_element = (); @@ -1644,6 +1772,15 @@ sub print_element_to_graphic_list print_element_to_graphic_entry($element, '-1', '-1', '-1', $graphic); } + # dump list of empty elements + for (my $i = 0; $i < $num_empty_elements; $i++) + { + my $element = sprintf("EL_EMPTY_SPACE_%d", $i + 1); + my $graphic = sprintf("IMG_EMPTY_SPACE_%d", $i + 1); + + print_element_to_graphic_entry($element, '-1', '-1', '-1', $graphic); + } + print_element_to_graphic_entry('-1', '-1', '-1', '-1', '-1'); print "};\n"; @@ -1815,6 +1952,17 @@ sub print_element_to_special_graphic_list $graphic); } + # dump list of empty element editor graphics + for (my $i = 0; $i < $num_empty_elements; $i++) + { + my $element = sprintf("EL_EMPTY_SPACE_%d", $i + 1); + my $graphic = sprintf("IMG_EMPTY_SPACE_%d_EDITOR", $i + 1); + + print_element_to_special_graphic_entry($element, + 'GFX_SPECIAL_ARG_EDITOR', + $graphic); + } + # dump other special editor graphics foreach my $token (@elements_with_editor_graphic) { @@ -2557,6 +2705,8 @@ sub main print "- '$filename_conf_cus_h'\n"; print "- '$filename_conf_grp_c'\n"; print "- '$filename_conf_grp_h'\n"; + print "- '$filename_conf_emp_c'\n"; + print "- '$filename_conf_emp_h'\n"; print "- '$filename_conf_e2g_c'\n"; print "- '$filename_conf_esg_c'\n"; print "- '$filename_conf_fnt_c'\n"; @@ -2604,6 +2754,14 @@ sub main { print_group_elements_list(); } + elsif ($ARGV[0] eq $filename_conf_emp_c) + { + print_empty_graphics_list(); + } + elsif ($ARGV[0] eq $filename_conf_emp_h) + { + print_empty_elements_list(); + } elsif ($ARGV[0] eq $filename_conf_e2g_c) { print_element_to_graphic_list(); diff --git a/graphics/gfx_classic/RocksCE.png b/graphics/gfx_classic/RocksCE.png index 72bbb0a45da3616cdb90d1528d17e04838a46f21..5a5f1812253305a6b395ae5b1cf0eb3287c3be8e 100644 GIT binary patch literal 16754 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 QZt4Uqk6RzhGj)mlFOpvCKL7v# diff --git a/src/Makefile b/src/Makefile index 0456b906..f9fb4581 100644 --- a/src/Makefile +++ b/src/Makefile @@ -192,6 +192,8 @@ CNFS = conf_gfx.h \ conf_cus.h \ conf_grp.c \ conf_grp.h \ + conf_emp.c \ + conf_emp.h \ conf_e2g.c \ conf_esg.c \ conf_e2s.c \ diff --git a/src/conf_gfx.c b/src/conf_gfx.c index a5b8aa86..62326d7a 100644 --- a/src/conf_gfx.c +++ b/src/conf_gfx.c @@ -5788,6 +5788,7 @@ struct ConfigInfo image_config[] = #include "conf_chr.c" // include auto-generated data structure definitions #include "conf_cus.c" // include auto-generated data structure definitions #include "conf_grp.c" // include auto-generated data structure definitions +#include "conf_emp.c" // include auto-generated data structure definitions // ========================================================================== diff --git a/src/main.c b/src/main.c index 27d40168..496a86c9 100644 --- a/src/main.c +++ b/src/main.c @@ -6278,6 +6278,86 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "spring", "spring (starts moving right)" }, + { + "empty_space_1", + "empty_space", + "empty space 1" + }, + { + "empty_space_2", + "empty_space", + "empty space 2" + }, + { + "empty_space_3", + "empty_space", + "empty space 3" + }, + { + "empty_space_4", + "empty_space", + "empty space 4" + }, + { + "empty_space_5", + "empty_space", + "empty space 5" + }, + { + "empty_space_6", + "empty_space", + "empty space 6" + }, + { + "empty_space_7", + "empty_space", + "empty space 7" + }, + { + "empty_space_8", + "empty_space", + "empty space 8" + }, + { + "empty_space_9", + "empty_space", + "empty space 9" + }, + { + "empty_space_10", + "empty_space", + "empty space 10" + }, + { + "empty_space_11", + "empty_space", + "empty space 11" + }, + { + "empty_space_12", + "empty_space", + "empty space 12" + }, + { + "empty_space_13", + "empty_space", + "empty space 13" + }, + { + "empty_space_14", + "empty_space", + "empty space 14" + }, + { + "empty_space_15", + "empty_space", + "empty space 15" + }, + { + "empty_space_16", + "empty_space", + "empty space 16" + }, // -------------------------------------------------------------------------- // "real" (and therefore drawable) runtime elements diff --git a/src/main.h b/src/main.h index 14c2e885..3f2389cc 100644 --- a/src/main.h +++ b/src/main.h @@ -1912,7 +1912,16 @@ #define EL_SPRING_LEFT 1215 #define EL_SPRING_RIGHT 1216 -#define NUM_FILE_ELEMENTS 1217 +// ---------- begin of empty space elements section --------------------------- +#define EL_EMPTY_SPACE_START 1217 + +#include "conf_emp.h" // include auto-generated data structure definitions + +#define NUM_EMPTY_SPACE_ELEMENTS 16 +#define EL_EMPTY_SPACE_END 1232 +// ---------- end of empty space elements section ----------------------------- + +#define NUM_FILE_ELEMENTS 1233 // "real" (and therefore drawable) runtime elements -- 2.34.1