Progress toward sprite flipping

This commit is contained in:
Ryan Shepherd 2018-10-01 17:07:07 -04:00
parent 61fb64c10a
commit d03c6d2093
2 changed files with 35 additions and 9 deletions

View File

@ -90,10 +90,8 @@ sub ShowSprite {
} elsif($name eq 'max_loops') { } elsif($name eq 'max_loops') {
$a->max_loops($val); $a->max_loops($val);
} elsif($o eq 'flip') { } elsif($o eq 'flip') {
# FIXME - This doesn't work
my $s=$a->surface(); my $s=$a->surface();
$s->flip(); $a->surface( FlipSurface($s) );
$a->surface($s);
} else { } else {
LogData(WARN, "Unknown option in ShowSprite '$o' - '$name'='$val'"); 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; 1;

View File

@ -216,13 +216,13 @@ sub EvalString {
#LogData(DEBUG, "Inserting space before last character"); #LogData(DEBUG, "Inserting space before last character");
} }
LogData(DEBUG, "Val is '$val'"); #LogData(DEBUG, "Val is '$val'");
# Tokenize # Tokenize
my @tokens = split(/\s+/,$val); 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++) { for(my $i=0;$i<@tokens-0;$i++) {
my $t = $tokens[$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) . ';'; my $eval_str = '$eval_res = ' . join(' ', @tokens) . ';';
LogData(DEBUG, "About to eval '$eval_str'"); #LogData(DEBUG, "About to eval '$eval_str'");
my $eval_res; my $eval_res;
eval $eval_str; eval $eval_str;
if($@) { if($@) {
LogData(ERROR, "Error in eval: $@"); LogData(ERROR, "Error in eval '$eval_str': $@");
return 0; return 0;
} }
LogData(DEBUG, "Got result of '$eval_res'"); #LogData(DEBUG, "Got result of '$eval_res'");
return $eval_res; return $eval_res;
} }