Skip to content

Commit

Permalink
立ち絵の位置をパーセンテージに変更
Browse files Browse the repository at this point in the history
  • Loading branch information
VienosNotes committed Aug 15, 2011
1 parent f5fef81 commit 042fbba
Show file tree
Hide file tree
Showing 12 changed files with 47 additions and 29 deletions.
10 changes: 9 additions & 1 deletion lib/OrangeGrove.pm
Expand Up @@ -4,21 +4,29 @@ use 5.12.3;
use Moose;
use Data::Dumper;

our $VERSION = "Beta";

has type => (
is => "ro",
);

has proj => (
is => "ro",
is => "rw",
);

has controller => (
is => "rw",
);



sub BUILD {

say "This is Orange Grove - Movie Builder ver. $VERSION";

my $self = shift;
my $ctrlr_name = "OrangeGrove::" . $self->type . "::Controller";
$self->proj($self->proj . "/") unless ($self->proj =~ m/.*\/$/);

eval {
Class::MOP::load_class($ctrlr_name);
Expand Down
13 changes: 10 additions & 3 deletions lib/OrangeGrove/XML/Controller.pm
Expand Up @@ -44,22 +44,29 @@ sub BUILDARGS {
}

sub BUILD {

my $self = shift;

my $tree = XML::Simple->new->XMLin($self->proj . "/scenario.xml");
$self->config(OrangeGrove::XML::Config->new(XML::Simple->new->XMLin($self->proj . "/config.xml")));
print " => loading scenario.xml ...";
my $tree = XML::Simple->new->XMLin($self->proj . "scenario.xml");
say "done.";

print " => loading config.xml ...";
$self->config(OrangeGrove::XML::Config->new(XML::Simple->new->XMLin($self->proj . "config.xml")));
say "done.";

for (0.. scalar @{$tree->{page}}) {
print ("\r => Building page " . ($_ + 1) . " / " . (scalar(@{$tree->{page}}) + 1) . " ...");
if ($_ == 0) {
$self->add_page(OrangeGrove::XML::Page->new($self)->init($tree->{page}->[0]));
}
else {
$self->add_page(OrangeGrove::XML::Page->new($self)->init($tree->{page}->[$_], $self->pages->[$_-1]));
}
}
say "done.";

$self->renderer(OrangeGrove::XML::Renderer->new($self->proj, @{$self->pages}));
say Dumper $self->renderer;
# $self->renderer->init();
$self->renderer->run();
}
Expand Down
26 changes: 14 additions & 12 deletions lib/OrangeGrove/XML/Renderer.pm
Expand Up @@ -40,38 +40,41 @@ sub init {
sub run {
my $self = shift;


for (@{$self->pages}) {

print "\r";
printf (" => Drawing page %d / %d ...", $self->done + 1, scalar @{$self->pages});

$self->render($_);
}
say "done.";
}

sub render {
my ($self, $page) = @_;

#背景のロード
# die Dumper $page;
my $bg = Imager->new;
$bg->read(file => $self->proj . "/fig/" . $page->bg) or die $bg->errstr;
$bg->read(file => $self->proj . "fig/" . $page->bg) or die $bg->errstr;

#前景のロード

for (0..$page->config->fg_max) {

next if ((!defined $page->fg->[$_]) or ($page->fg->[$_] eq "none"));
my $fg = Imager->new;
$fg->read(file => $self->proj . "/fig/" . $page->fg->[$_]) or die $fg->errstr;
$fg->read(file => $self->proj . "fig/" . $page->fg->[$_]) or die $fg->errstr;

#背景と合成

$bg->rubthrough(src => $fg,
tx => $page->config->fg_pos->[$_]->{xmid} - $fg->getwidth/2,
ty => $page->config->fg_pos->[$_]->{ymid} - $fg->getheight/2
tx => $page->config->size->{x} * ($page->config->fg_pos->[$_]->{xmid} / 100) - $fg->getwidth/2,
ty => $page->config->size->{"y"} * ($page->config->fg_pos->[$_]->{ymid} / 100) - $fg->getheight/2
) or die $bg->errstr;
}

#メッセージボックスのロード
my $msgbox = Imager->new;
$msgbox->read(file => $self->proj . "/fig/" . $page->config->msgbox->{fig}) or die $msgbox->errstr;
$msgbox->read(file => $self->proj . "fig/" . $page->config->msgbox->{fig}) or die $msgbox->errstr;

#合成
$bg->rubthrough(src => $msgbox,
Expand All @@ -80,14 +83,13 @@ sub render {
) or die $bg->errstr;

#フォントのロード
say $self->proj ."/" . $page->config->character->{font};
my $font = Imager::Font->new(file => $self->proj ."/" . $page->config->character->{font},
my $font = Imager::Font->new(file => $self->proj . $page->config->character->{font},
size => $page->config->character->{size},
aa => 1,
color => Imager::Color->new(r => 255, g => 255, b => 255)
);

die "fail!!!!!!11" unless defined $font;
die "フォント見つからないよ" unless defined $font;

#テキストの生成
my $text = " - " . $page->name . " - \n" . $page->msg;
Expand All @@ -111,7 +113,7 @@ sub render {

#PNGとして出力
mkdir $self->proj . "/output" unless -d $self->proj . "/output";
my $num = sprintf("%10d", $self->done);
my $num = sprintf("%010d", $self->done);
$bg->write(file => $self->proj . "/output/" . $num . ".png");
$self->done($self->done + 1);
}
Expand Down
2 changes: 1 addition & 1 deletion t/01-Test.t
Expand Up @@ -7,6 +7,6 @@ use Moose;

my $og = OrangeGrove->new(type => "XML", proj => "./t/proj");
ok $og->type eq "XML";
ok $og->proj eq "./t/proj";
ok $og->proj eq "./t/proj/";

done_testing;
Binary file added t/proj/.DS_Store
Binary file not shown.
22 changes: 11 additions & 11 deletions t/proj/config.xml
Expand Up @@ -3,12 +3,12 @@
<system>
<!-- System settings
*size
x: width of output
y: height of output
x: 出力サイズの幅
y: 出力サイズの高さ
*output
time: time for waiting next page
frame: frame per seconds
format: format of output image (ex: jpg, png, bmp etc...)
time: ページ送りの待ち時間(秒)
frame: 出力フレームレート
format: 出力する画像のフォーマット
-->
<size x="800" y="600" />
<output time="6" frame="1" format="png" />
Expand All @@ -18,16 +18,16 @@
*bg
TBD
*fg
num: number of foreground layer
num: 立ち絵の最大数
*pos%d
xmid: x(horizontal) coordinate of center of figure
ymid: y(vartical) coordinate of center of figure
xmid: 立ち絵の中心の横位置 - 左から0~100(%)
ymid: 立ち絵の中心の縦位置 - 上から0~100(%)
-->
<bg />
<fg num="3">
<pos xmid="250" ymid="250" />
<pos xmid="400" ymid="250" />
<pos xmid="550" ymid="250" />
<pos xmid="25" ymid="50" />
<pos xmid="50" ymid="50" />
<pos xmid="75" ymid="50" />
</fg>
</fig>
<text>
Expand Down
Binary file added t/proj/output/0000000000.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added t/proj/output/0000000001.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added t/proj/output/0000000002.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added t/proj/output/0000000003.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added t/proj/output/0000000004.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion t/proj/scenario.xml
Expand Up @@ -26,7 +26,8 @@
<page>
<text>
<msg>
no change, new line test => aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
no change, new line test => aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</msg>
</text>
</page>
Expand Down

0 comments on commit 042fbba

Please sign in to comment.