From e3251fcfbe857110b49b62f025ca66da4a375335 Mon Sep 17 00:00:00 2001 From: Darin McBride Date: Wed, 7 Oct 2015 19:59:49 -0600 Subject: [PATCH] Max uni for trades. --- bin/post_lec_trade.pl | 4 +++- lib/Lacuna/DB/Result/Building/Transporter.pm | 3 ++- lib/Lacuna/DB/Result/Market.pm | 1 + lib/Lacuna/Role/Trader.pm | 5 +++-- var/upgrades/3.0914.sql | 1 + 5 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 var/upgrades/3.0914.sql diff --git a/bin/post_lec_trade.pl b/bin/post_lec_trade.pl index de4b5c30..db40a207 100755 --- a/bin/post_lec_trade.pl +++ b/bin/post_lec_trade.pl @@ -20,6 +20,7 @@ GetOptions( 'plan|p=s@' => \my @plans, 'glyph|g=s@' => \my @glyphs, 'ship|s=s@' => \my @ships, + 'maxuniversity|u=i' => \my $maxuni, ); if (not defined $cost or @@ -265,7 +266,8 @@ eval { $trade->add_to_market( \@offer, $cost, - @opts + @opts, + { max_university => $maxuni }, ); 1; } or die dump($@); diff --git a/lib/Lacuna/DB/Result/Building/Transporter.pm b/lib/Lacuna/DB/Result/Building/Transporter.pm index 15402a55..8c539ef9 100644 --- a/lib/Lacuna/DB/Result/Building/Transporter.pm +++ b/lib/Lacuna/DB/Result/Building/Transporter.pm @@ -48,7 +48,7 @@ use constant waste_production => 1; sub add_to_market { - my ($self, $offer, $ask) = @_; + my ($self, $offer, $ask, $internal_options) = @_; $ask = sprintf("%0.1f", $ask); unless(Lacuna::Role::Trader::OVERLOAD_ALLOWED()) { unless ($ask >= 0.1 && $ask <= 100 ) { @@ -68,6 +68,7 @@ sub add_to_market { body_id => $self->body_id, transfer_type => $self->transfer_type, ); + $trade{max_university} = $internal_options->{max_university} if $internal_options; return Lacuna->db->resultset('Lacuna::DB::Result::Market')->new(\%trade)->insert; } diff --git a/lib/Lacuna/DB/Result/Market.pm b/lib/Lacuna/DB/Result/Market.pm index 29d9d40b..cafc13a1 100644 --- a/lib/Lacuna/DB/Result/Market.pm +++ b/lib/Lacuna/DB/Result/Market.pm @@ -29,6 +29,7 @@ __PACKAGE__->add_columns( y => { data_type => 'int', default_value => 0 }, speed => { data_type => 'int', default_value => 0 }, trade_range => { data_type => 'int', default_value => 0 }, + max_university => { data_type => 'int', is_nullable => 1 }, ); __PACKAGE__->belongs_to('body', 'Lacuna::DB::Result::Map::Body', 'body_id'); diff --git a/lib/Lacuna/Role/Trader.pm b/lib/Lacuna/Role/Trader.pm index d41a4470..479fd7ac 100644 --- a/lib/Lacuna/Role/Trader.pm +++ b/lib/Lacuna/Role/Trader.pm @@ -18,12 +18,13 @@ use constant OVERLOAD_ALLOWED => $overload_allowed; my $fractional_offer_exception = [1013, 'You cannot offer a fraction of something.']; sub market { - return Lacuna->db->resultset('Lacuna::DB::Result::Market'); + my $self = shift; + return Lacuna->db->resultset('Lacuna::DB::Result::Market')->search({max_university => [ undef, { '>=', $self->body->empire->university_level } ]}); } sub my_market { my $self = shift; - return $self->market->search({body_id => $self->body_id, transfer_type => $self->transfer_type }); + return $self->market->search({body_id => $self->body_id, transfer_type => $self->transfer_type}); } sub check_payload { diff --git a/var/upgrades/3.0914.sql b/var/upgrades/3.0914.sql new file mode 100644 index 00000000..e9398ec3 --- /dev/null +++ b/var/upgrades/3.0914.sql @@ -0,0 +1 @@ +alter table market add column max_university int; -- 2.51.2