ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra/Deliantra.pm
(Generate patch)

Comparing deliantra/Deliantra/Deliantra.pm (file contents):
Revision 1.90 by root, Sat Mar 3 18:58:25 2007 UTC vs.
Revision 1.93 by root, Sat Mar 3 19:38:06 2007 UTC

157 157
158{ 158{
159 package Crossfire::MoveType; 159 package Crossfire::MoveType;
160 160
161 use overload 161 use overload
162 '=' => sub { bless [@{$_[0]}], ref $_[0] },
162 '""' => \&as_string, 163 '""' => \&as_string,
163 '>=' => sub { $_[0][0] & $MOVE_TYPE{$_[1]} ? $_[0][1] & $MOVE_TYPE{$_[1]} : undef }, 164 '>=' => sub { $_[0][0] & $MOVE_TYPE{$_[1]} ? $_[0][1] & $MOVE_TYPE{$_[1]} : undef },
164 '+=' => sub { $_[0][0] |= $MOVE_TYPE{$_[1]}; $_[0][1] |= $MOVE_TYPE{$_[1]}; &normalise }, 165 '+=' => sub { $_[0][0] |= $MOVE_TYPE{$_[1]}; $_[0][1] |= $MOVE_TYPE{$_[1]}; &normalise },
165 '-=' => sub { $_[0][0] |= $MOVE_TYPE{$_[1]}; $_[0][1] &= ~$MOVE_TYPE{$_[1]}; &normalise }, 166 '-=' => sub { $_[0][0] |= $MOVE_TYPE{$_[1]}; $_[0][1] &= ~$MOVE_TYPE{$_[1]}; &normalise },
166 '/=' => sub { $_[0][0] &= ~$MOVE_TYPE{$_[1]}; &normalise }, 167 '/=' => sub { $_[0][0] &= ~$MOVE_TYPE{$_[1]}; &normalise },
174 $_[0] /= $_[1]; 175 $_[0] /= $_[1];
175 } 176 }
176 177
177 $_[0] 178 $_[0]
178 }, 179 },
180 'eq' => sub { "$_[0]" eq "$_[1]" },
181 'ne' => sub { "$_[0]" ne "$_[1]" },
179 ; 182 ;
180} 183}
181 184
182sub Crossfire::MoveType::new { 185sub Crossfire::MoveType::new {
183 my ($class, $string) = @_; 186 my ($class, $string) = @_;
184 187
185 my $mask; 188 my $mask;
186 my $value; 189 my $value;
187 190
191 if ($string =~ /^\s*\d+\s*$/) {
192 $mask = MOVE_ALL;
193 $value = $string+0;
194 } else {
188 for (split /\s+/, lc $string) { 195 for (split /\s+/, lc $string) {
189 if (s/^-//) { 196 if (s/^-//) {
190 $mask |= $MOVE_TYPE{$_}; 197 $mask |= $MOVE_TYPE{$_};
191 $value &= ~$MOVE_TYPE{$_}; 198 $value &= ~$MOVE_TYPE{$_};
192 } else { 199 } else {
193 $mask |= $MOVE_TYPE{$_}; 200 $mask |= $MOVE_TYPE{$_};
194 $value |= $MOVE_TYPE{$_}; 201 $value |= $MOVE_TYPE{$_};
202 }
195 } 203 }
196 } 204 }
197 205
198 (bless [$mask, $value], $class)->normalise 206 (bless [$mask, $value], $class)->normalise
199} 207}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines