From d03c6d2093b64cbd59cd6022bba12eb6df339ca9 Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Mon, 1 Oct 2018 17:07:07 -0400 Subject: [PATCH] Progress toward sprite flipping --- PerlRPG/Drawing.pm | 32 +++++++++++++++++++++++++++++--- PerlRPG/Script.pm | 12 ++++++------ 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/PerlRPG/Drawing.pm b/PerlRPG/Drawing.pm index 0094e14..32c36fa 100644 --- a/PerlRPG/Drawing.pm +++ b/PerlRPG/Drawing.pm @@ -90,10 +90,8 @@ sub ShowSprite { } elsif($name eq 'max_loops') { $a->max_loops($val); } elsif($o eq 'flip') { - # FIXME - This doesn't work my $s=$a->surface(); - $s->flip(); - $a->surface($s); + $a->surface( FlipSurface($s) ); } else { LogData(WARN, "Unknown option in ShowSprite '$o' - '$name'='$val'"); } @@ -155,4 +153,32 @@ sub RenderSprites { } } +# Fixme -- Still appears broken, but closer +sub FlipSurface { + my $src=shift(@_); + my $dst = SDLx::Surface->new( width => $src->width(), + height => $src->height(), + format => $src->format(), + flags => $src->flags(), + color => $src->get_pixel( 0, 0 ), + ); + my $w = $src->width(); + + for(my $y = 0; $y < $src->height(); $y++) { + for(my $x = 0; $x < $w; $x++) { + my $pixel = $src->get_pixel( $y, $x ); + $dst->set_pixel($y, $w-($x+1), $pixel); + } + } + + return $dst; + +} + + + + + + + 1; diff --git a/PerlRPG/Script.pm b/PerlRPG/Script.pm index 74e542f..cbea50b 100644 --- a/PerlRPG/Script.pm +++ b/PerlRPG/Script.pm @@ -216,13 +216,13 @@ sub EvalString { #LogData(DEBUG, "Inserting space before last character"); } - LogData(DEBUG, "Val is '$val'"); + #LogData(DEBUG, "Val is '$val'"); # Tokenize my @tokens = split(/\s+/,$val); - for(my $i=0;$i<@tokens-0;$i++) { LogData(DEBUG, "Pass 1 Token [%i], '%s'", $i, $tokens[$i]); } + #for(my $i=0;$i<@tokens-0;$i++) { LogData(DEBUG, "Pass 1 Token [%i], '%s'", $i, $tokens[$i]); } for(my $i=0;$i<@tokens-0;$i++) { my $t = $tokens[$i]; @@ -237,17 +237,17 @@ sub EvalString { } } - for(my $i=0;$i<@tokens-0;$i++) { LogData(DEBUG, "Pass 2 Token [%i], '%s'", $i, $tokens[$i]); } + #for(my $i=0;$i<@tokens-0;$i++) { LogData(DEBUG, "Pass 2 Token [%i], '%s'", $i, $tokens[$i]); } my $eval_str = '$eval_res = ' . join(' ', @tokens) . ';'; - LogData(DEBUG, "About to eval '$eval_str'"); + #LogData(DEBUG, "About to eval '$eval_str'"); my $eval_res; eval $eval_str; if($@) { - LogData(ERROR, "Error in eval: $@"); + LogData(ERROR, "Error in eval '$eval_str': $@"); return 0; } - LogData(DEBUG, "Got result of '$eval_res'"); + #LogData(DEBUG, "Got result of '$eval_res'"); return $eval_res; }