package Blacknote::Message; use base 'Class::Accessor'; use Carp qw(croak confess); use strict; use Curses; use warnings FATAL => qw(all); use Blacknote::Logging; #Blacknote::Message->follow_best_practice; Blacknote::Message->mk_accessors(qw(x y w h)); my @msgstack = (); sub push { shift; my @msgs = @_; croak "Need at least one message to push" unless @msgs > 0; DEBUG "Pushed message on stack"; push @msgstack, @msgs; } sub get_all_messages { return \@msgstack; } sub DBG { my $msg = "[DEBUG]: " . join " ",@_; DEBUG join " ",@_; shift; Blacknote::Message->push($msg); } CHECK { # Sets itself up into the global state package my $height = 7; my $log = Blacknote::Message->new({x => 0, y => $LINES-$height, w=> $COLS-2, h=> $height}); # Overwrite 'new' in the package so that it doesnt get created multiple times *Blacknote::Message::new = sub { croak "Message log already defined!" }; $Blacknote::System::State::MSGLOG = $log; DEBUG "Message log set up"; } 1; .