Support for left sided sprite for sayers, ticks_per_frame for sprites
This commit is contained in:
parent
e41161a4b0
commit
39be8fdfd6
|
|
@ -25,9 +25,20 @@ sub DrawSpeech {
|
||||||
my $speech_border = 3;
|
my $speech_border = 3;
|
||||||
|
|
||||||
my $sprite = GetAsset($sayer->{'Sprite'});
|
my $sprite = GetAsset($sayer->{'Sprite'});
|
||||||
my $sprite_x = $app->width() - $sprite->clip()->w();
|
my $sprite_x = 0;
|
||||||
my $sprite_y = $app->height() - $sprite->clip()->h();
|
my $speech_x = 0;
|
||||||
|
|
||||||
|
my $sprite_w = $sprite->clip()->w();
|
||||||
my $sprite_h = $sprite->clip()->h();
|
my $sprite_h = $sprite->clip()->h();
|
||||||
|
|
||||||
|
my $sprite_y = $app->height() - $sprite_h;
|
||||||
|
my $speech_y = $sprite_y;
|
||||||
|
|
||||||
|
if($sayer->{'DrawLeft'}) {
|
||||||
|
$speech_x = $sprite_w;
|
||||||
|
} else {
|
||||||
|
$sprite_x = $app->width() - $sprite_w;
|
||||||
|
}
|
||||||
$sprite = undef; # ShowSprite may unload this, we don't want to keep a handle to it
|
$sprite = undef; # ShowSprite may unload this, we don't want to keep a handle to it
|
||||||
ShowSprite('_SayerSprite', $sayer->{'Sprite'}, $sprite_x, $sprite_y, 254, @{ $sayer->{'SpriteOpts'} });
|
ShowSprite('_SayerSprite', $sayer->{'Sprite'}, $sprite_x, $sprite_y, 254, @{ $sayer->{'SpriteOpts'} });
|
||||||
|
|
||||||
|
|
@ -35,7 +46,7 @@ sub DrawSpeech {
|
||||||
$text_obj->color( $sayer->{'TextColor'} );
|
$text_obj->color( $sayer->{'TextColor'} );
|
||||||
$text_obj->text( $text );
|
$text_obj->text( $text );
|
||||||
|
|
||||||
my $surface = SDLx::Surface->new( width => $sprite_x,
|
my $surface = SDLx::Surface->new( width => $app->width() - $sprite_w,
|
||||||
height => $sprite_h,
|
height => $sprite_h,
|
||||||
color => [0, 0, 0, 255],
|
color => [0, 0, 0, 255],
|
||||||
);
|
);
|
||||||
|
|
@ -50,12 +61,11 @@ sub DrawSpeech {
|
||||||
my $text_y = ($surface->height() - $text_obj->h())/2;
|
my $text_y = ($surface->height() - $text_obj->h())/2;
|
||||||
$text_obj->write_xy( $surface, $text_x, $text_y );
|
$text_obj->write_xy( $surface, $text_x, $text_y );
|
||||||
|
|
||||||
$sprite = SDLx::Sprite->new( surface => $surface );
|
|
||||||
$VisibleSprites{'_SayerText'} = {
|
$VisibleSprites{'_SayerText'} = {
|
||||||
'Depth' => 255,
|
'Depth' => 255,
|
||||||
'X' => 0,
|
'X' => $speech_x,
|
||||||
'Y' => $app->height() - $surface->height(),
|
'Y' => $speech_y,
|
||||||
'Sprite' => $sprite,
|
'Sprite' => SDLx::Sprite->new( surface => $surface ),
|
||||||
};
|
};
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -83,15 +93,25 @@ sub ShowSprite {
|
||||||
foreach my $o (@opt) {
|
foreach my $o (@opt) {
|
||||||
my($name, $val)=$o=~/^\s*(\S+?)=(\S*)/;
|
my($name, $val)=$o=~/^\s*(\S+?)=(\S*)/;
|
||||||
$name = $o unless($name);
|
$name = $o unless($name);
|
||||||
if($o eq 'Reverse' || $o eq 'Circular') {
|
$name = lc($name);
|
||||||
$a->type($o);
|
if($name eq 'reverse') {
|
||||||
|
$a->type('Reverse');
|
||||||
|
} elsif($name eq 'circular') {
|
||||||
|
$a->type('Circular');
|
||||||
} elsif($name eq 'max_loops') {
|
} elsif($name eq 'max_loops') {
|
||||||
$a->max_loops($val);
|
$a->max_loops($val);
|
||||||
} elsif($o eq 'flip') {
|
} elsif($name eq 'flip') {
|
||||||
# Don't want to flip back and forth every time
|
# Don't want to flip back and forth every time
|
||||||
UnloadAsset($file);
|
UnloadAsset($file);
|
||||||
my $s=$a->surface();
|
my $s=$a->surface();
|
||||||
$a->surface( FlipSurface($s) );
|
$a->surface( FlipSurface($s) );
|
||||||
|
} elsif($name eq 'ticks') {
|
||||||
|
$val = 1 unless($val);
|
||||||
|
if($val != 1) {
|
||||||
|
# Keep a personal copy to support sprites at different speeds from the same asset
|
||||||
|
UnloadAsset($file);
|
||||||
|
}
|
||||||
|
$a->ticks_per_frame($val);
|
||||||
} else {
|
} else {
|
||||||
LogData(WARN, "Unknown option in ShowSprite '$o' - '$name'='$val'");
|
LogData(WARN, "Unknown option in ShowSprite '$o' - '$name'='$val'");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -186,12 +186,25 @@ sub AddSayer {
|
||||||
my @textcolor=($r, $g, $b, $a);
|
my @textcolor=($r, $g, $b, $a);
|
||||||
$textcolor[3] = 255 unless(defined $a);
|
$textcolor[3] = 255 unless(defined $a);
|
||||||
|
|
||||||
|
my $drawleft = 0;
|
||||||
|
my @sprite_opts;
|
||||||
|
|
||||||
|
foreach my $opt (@opts) {
|
||||||
|
if(lc($opt) eq 'left') {
|
||||||
|
$drawleft = 1;
|
||||||
|
} else {
|
||||||
|
push @sprite_opts, $opt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$sayers{$name} = {
|
$sayers{$name} = {
|
||||||
'Name' => $name,
|
'Name' => $name,
|
||||||
'DisplayName' => StringSubst($displayname),
|
'DisplayName' => StringSubst($displayname),
|
||||||
'Sprite' => $sprite,
|
'Sprite' => $sprite,
|
||||||
'TextColor' => \@textcolor,
|
'TextColor' => \@textcolor,
|
||||||
'SpriteOpts' => \@opts,
|
'DrawLeft' => $drawleft,
|
||||||
|
'SpriteOpts' => \@sprite_opts,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ __init__:
|
||||||
SetBackground 128 128 128 255
|
SetBackground 128 128 128 255
|
||||||
SetAssetOption spritesheet.png Animated
|
SetAssetOption spritesheet.png Animated
|
||||||
AddSayer h "Hermione" aka01.png 200 200 200 255
|
AddSayer h "Hermione" aka01.png 200 200 200 255
|
||||||
|
AddSayer h2 "Hermione2" aka05.png 200 200 200 255 left flip
|
||||||
|
|
||||||
TargetFPS = 20
|
TargetFPS = 20
|
||||||
ResourceDir = "Resources"
|
ResourceDir = "Resources"
|
||||||
|
|
@ -14,15 +15,20 @@ drawroom:
|
||||||
Show fireplace fireplace.png 600 150 11
|
Show fireplace fireplace.png 600 150 11
|
||||||
Show candler candle.png 400 100 11 flip
|
Show candler candle.png 400 100 11 flip
|
||||||
Show candlel candle.png 240 100 11
|
Show candlel candle.png 240 100 11
|
||||||
Show desk 11_genie_00.png 230 220 13
|
|
||||||
|
|
||||||
Show fireplacea fireplace_fire.vs 575 147 12
|
Show fireplacea fireplace_fire.vs 575 147 12
|
||||||
Show candlera fire.vs 400 95 12 flip
|
Show candlera fire.vs 400 95 12 flip
|
||||||
Show candlela fire.vs 240 95 12
|
Show candlela fire.vs 240 95 12
|
||||||
|
|
||||||
|
|
||||||
|
Show desk 11_genie_00.png 230 220 13
|
||||||
|
Show hermione spritesheet.png 450 310 14 reverse ticks=3
|
||||||
|
|
||||||
convo:
|
convo:
|
||||||
Wait
|
Wait
|
||||||
h "Continue..."
|
h "Continue..."
|
||||||
|
Wait
|
||||||
|
h2 "Continue2..."
|
||||||
|
|
||||||
#RecompileScripts drawroom
|
RecompileScripts drawroom
|
||||||
Jump convo
|
Jump convo
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue