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/rogue/world/tile/DroppedItemRenderer.java

46 lines
1.3 KiB

package mightypork.rogue.world.tile;
import java.util.Collection;
import mightypork.dynmath.num.Num;
import mightypork.dynmath.num.proxy.NumProxy;
import mightypork.dynmath.rect.Rect;
import mightypork.dynmath.rect.proxy.RectProxy;
import mightypork.gamecore.util.math.Easing;
import mightypork.gamecore.util.math.timing.animation.Animator;
import mightypork.gamecore.util.math.timing.animation.AnimatorBounce;
import mightypork.rogue.world.item.Item;
import mightypork.rogue.world.level.render.TileRenderContext;
public class DroppedItemRenderer {
private final Animator itemAnim = new AnimatorBounce(2, Easing.SINE_BOTH);
// prepared constraints, to avoid re-building each frame
private final RectProxy tileRectAdapter = new RectProxy();
private final NumProxy offsAdapter = new NumProxy();
private final Rect itemRect = tileRectAdapter.shrink(tileRectAdapter.height().perc(12)).moveY(offsAdapter.neg().mul(tileRectAdapter.height().mul(0.2)));
public void render(Collection<Item> items, TileRenderContext context)
{
tileRectAdapter.setRect(context);
int cnt = 0;
for (final Item i : items) {
offsAdapter.setNum(Num.make((itemAnim.value() + (cnt % 3) * 0.1)));
i.render(itemRect);
cnt++;
}
}
public void update(double delta)
{
itemAnim.update(delta);
}
}