Rogue: Savage Rats, a retro-themed dungeon crawler
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
rogue-savage-rats/src/mightypork/utils/math/rect/RectMutableImpl.java

122 lines
1.9 KiB

package mightypork.utils.math.rect;
import mightypork.utils.math.vect.Vect;
import mightypork.utils.math.vect.VectMutable;
import mightypork.utils.math.vect.VectVal;
class RectMutableImpl extends RectMutable {
final VectMutable pos = VectMutable.zero();
final VectMutable size = VectMutable.zero();
/**
* Create at given origin, with given size.
*
* @param x
* @param y
* @param width
* @param height
*/
public RectMutableImpl(double x, double y, double width, double height) {
this.pos.setTo(x, y);
this.size.setTo(width, height).abs();
}
/**
* Add X and Y to origin
*
* @param x x to add
* @param y y to add
* @return result
*/
@Override
public RectMutable move(double x, double y)
{
pos.add(x, y);
return this;
}
/**
* Shrink the rect
*
* @param left shrink
* @param right shrink
* @param top shrink
* @param bottom shrink
* @return result
*/
@Override
public RectMutable shrink(double left, double right, double top, double bottom)
{
pos.add(left, top);
size.sub(left + right, top + bottom).abs();
return this;
}
/**
* Grow the rect
*
* @param left growth
* @param right growth
* @param top growth
* @param bottom growth
* @return result
*/
@Override
public RectMutable grow(double left, double right, double top, double bottom)
{
pos.sub(left, top);
size.add(left + right, top + bottom).abs();
return this;
}
/**
* Round coords
*
* @return result
*/
@Override
public RectMutable round()
{
pos.round();
size.round();
return this;
}
@Override
public VectVal origin()
{
return pos.getValue();
}
@Override
public VectVal size()
{
return size.getValue();
}
@Override
public RectMutable setOrigin(Vect origin)
{
this.pos.setTo(origin);
return this;
}
@Override
public RectMutable setSize(Vect size)
{
this.size.setTo(size).abs();
return this;
}
}