parent
c67ab0cd4a
commit
c13a624520
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 519 B After Width: | Height: | Size: 2.1 KiB |
Binary file not shown.
@ -0,0 +1,62 @@ |
|||||||
|
package mightypork.rogue.screens.game; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.Collection; |
||||||
|
|
||||||
|
import mightypork.gamecore.gui.AlignX; |
||||||
|
import mightypork.gamecore.gui.components.BaseComponent; |
||||||
|
import mightypork.gamecore.gui.components.painters.TextPainter; |
||||||
|
import mightypork.gamecore.resources.fonts.FontRenderer; |
||||||
|
import mightypork.gamecore.util.math.color.Color; |
||||||
|
import mightypork.gamecore.util.math.color.pal.RGB; |
||||||
|
import mightypork.gamecore.util.math.constraints.num.Num; |
||||||
|
import mightypork.gamecore.util.math.constraints.num.mutable.NumVar; |
||||||
|
import mightypork.gamecore.util.math.constraints.rect.Rect; |
||||||
|
import mightypork.rogue.Res; |
||||||
|
import mightypork.rogue.world.WorldConsole; |
||||||
|
import mightypork.rogue.world.WorldConsole.Entry; |
||||||
|
import mightypork.rogue.world.WorldProvider; |
||||||
|
|
||||||
|
|
||||||
|
public class WorldConsoleRenderer extends BaseComponent { |
||||||
|
|
||||||
|
private final Num rowHeight; |
||||||
|
private final FontRenderer fr; |
||||||
|
|
||||||
|
|
||||||
|
public WorldConsoleRenderer(Num rowHeight) { |
||||||
|
this.rowHeight = rowHeight; |
||||||
|
this.fr = new FontRenderer(Res.getFont("tiny")); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
protected void renderComponent() |
||||||
|
{ |
||||||
|
double rh = rowHeight.value(); |
||||||
|
|
||||||
|
Rect lowRow = bottomEdge().growUp(rowHeight); |
||||||
|
|
||||||
|
Collection<Entry> entries = WorldProvider.get().getWorld().getConsole().getEntries(); |
||||||
|
int cnt = 0; |
||||||
|
|
||||||
|
NumVar alph = Num.makeVar(); |
||||||
|
|
||||||
|
Color.pushAlpha(alph); |
||||||
|
|
||||||
|
for (WorldConsole.Entry entry : entries) { |
||||||
|
|
||||||
|
alph.setTo(entry.getAlpha()); |
||||||
|
|
||||||
|
Rect rrr = lowRow.moveY(-rh * cnt); |
||||||
|
|
||||||
|
fr.draw(entry.getMessage(), rrr.move(rh / 12, rh / 12), AlignX.LEFT, RGB.BLACK_60); |
||||||
|
fr.draw(entry.getMessage(), rrr, AlignX.LEFT, RGB.WHITE); |
||||||
|
|
||||||
|
cnt++; |
||||||
|
} |
||||||
|
|
||||||
|
Color.popAlpha(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,103 @@ |
|||||||
|
package mightypork.rogue.world; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.*; |
||||||
|
|
||||||
|
import mightypork.gamecore.eventbus.events.Updateable; |
||||||
|
import mightypork.gamecore.util.math.Easing; |
||||||
|
import mightypork.gamecore.util.math.constraints.num.mutable.NumAnimated; |
||||||
|
|
||||||
|
|
||||||
|
public class WorldConsole implements Updateable { |
||||||
|
|
||||||
|
private static final double DURATION = 5; |
||||||
|
|
||||||
|
public class Entry implements Updateable { |
||||||
|
|
||||||
|
private final String text; |
||||||
|
private final NumAnimated fadeout; |
||||||
|
private boolean fading = false; |
||||||
|
private double elapsed = 0; |
||||||
|
|
||||||
|
|
||||||
|
private Entry(String text) { |
||||||
|
this.text = text; |
||||||
|
this.fadeout = new NumAnimated(1, Easing.LINEAR); |
||||||
|
this.fadeout.setDefaultDuration(0.5); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(double delta) |
||||||
|
{ |
||||||
|
elapsed += delta; |
||||||
|
|
||||||
|
if (fading) { |
||||||
|
fadeout.update(delta); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if (elapsed > DURATION) { |
||||||
|
fading = true; |
||||||
|
fadeout.fadeOut(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private boolean canRemove() |
||||||
|
{ |
||||||
|
return fading && fadeout.isFinished(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public double getAlpha() |
||||||
|
{ |
||||||
|
return !fading ? 1 : fadeout.value(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public String getMessage() |
||||||
|
{ |
||||||
|
return text; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public double getAge() |
||||||
|
{ |
||||||
|
return elapsed; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private final Deque<Entry> entries = new LinkedList<>(); |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(double delta) |
||||||
|
{ |
||||||
|
for (Iterator<Entry> iter = entries.iterator(); iter.hasNext();) { |
||||||
|
Entry e = iter.next(); |
||||||
|
|
||||||
|
e.update(delta); |
||||||
|
|
||||||
|
if (e.canRemove()) { |
||||||
|
iter.remove(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public void addMessage(String message) |
||||||
|
{ |
||||||
|
entries.addFirst(new Entry(message)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public Collection<Entry> getEntries() |
||||||
|
{ |
||||||
|
return entries; |
||||||
|
} |
||||||
|
|
||||||
|
public void clear() { |
||||||
|
entries.clear(); |
||||||
|
} |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package mightypork.rogue.world.entity.render; |
package mightypork.rogue.world.entity; |
||||||
|
|
||||||
|
|
||||||
import mightypork.rogue.world.level.render.MapRenderContext; |
import mightypork.rogue.world.level.render.MapRenderContext; |
@ -0,0 +1,38 @@ |
|||||||
|
package mightypork.rogue.world.item.items.food; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.rogue.Res; |
||||||
|
import mightypork.rogue.world.item.ItemModel; |
||||||
|
import mightypork.rogue.world.item.ItemRenderer; |
||||||
|
import mightypork.rogue.world.item.items.ItemBaseFood; |
||||||
|
import mightypork.rogue.world.item.render.QuadItemRenderer; |
||||||
|
|
||||||
|
|
||||||
|
public class ItemCheese extends ItemBaseFood { |
||||||
|
|
||||||
|
public ItemCheese(ItemModel model) |
||||||
|
{ |
||||||
|
super(model); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
protected ItemRenderer makeRenderer() |
||||||
|
{ |
||||||
|
return new QuadItemRenderer(this, Res.txq("item.cheese")); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public int getFoodPoints() |
||||||
|
{ |
||||||
|
return 2; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public String getVisualName() |
||||||
|
{ |
||||||
|
return "Cheese"; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
package mightypork.rogue.world.item.items.food; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.rogue.Res; |
||||||
|
import mightypork.rogue.world.item.ItemModel; |
||||||
|
import mightypork.rogue.world.item.ItemRenderer; |
||||||
|
import mightypork.rogue.world.item.items.ItemBaseFood; |
||||||
|
import mightypork.rogue.world.item.render.QuadItemRenderer; |
||||||
|
|
||||||
|
|
||||||
|
public class ItemSandwich extends ItemBaseFood { |
||||||
|
|
||||||
|
public ItemSandwich(ItemModel model) |
||||||
|
{ |
||||||
|
super(model); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
protected ItemRenderer makeRenderer() |
||||||
|
{ |
||||||
|
return new QuadItemRenderer(this, Res.txq("item.sandwich")); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public int getFoodPoints() |
||||||
|
{ |
||||||
|
return 6; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public String getVisualName() |
||||||
|
{ |
||||||
|
return "Sandwich"; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
package mightypork.rogue.world.item.items.weapons; |
||||||
|
|
||||||
|
import mightypork.rogue.Res; |
||||||
|
import mightypork.rogue.world.item.ItemModel; |
||||||
|
import mightypork.rogue.world.item.ItemRenderer; |
||||||
|
import mightypork.rogue.world.item.items.ItemBaseWeapon; |
||||||
|
import mightypork.rogue.world.item.render.QuadItemRenderer; |
||||||
|
|
||||||
|
|
||||||
|
public class ItemBone extends ItemBaseWeapon { |
||||||
|
|
||||||
|
public ItemBone(ItemModel model) { |
||||||
|
super(model); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected ItemRenderer makeRenderer() |
||||||
|
{ |
||||||
|
return new QuadItemRenderer(this, Res.txq("item.bone")); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getAttackPoints() |
||||||
|
{ |
||||||
|
return 1; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getMaxUses() |
||||||
|
{ |
||||||
|
return 15; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getVisualName() |
||||||
|
{ |
||||||
|
return "Bone"; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
package mightypork.rogue.world.item.items.weapons; |
||||||
|
|
||||||
|
import mightypork.rogue.Res; |
||||||
|
import mightypork.rogue.world.item.ItemModel; |
||||||
|
import mightypork.rogue.world.item.ItemRenderer; |
||||||
|
import mightypork.rogue.world.item.items.ItemBaseWeapon; |
||||||
|
import mightypork.rogue.world.item.render.QuadItemRenderer; |
||||||
|
|
||||||
|
|
||||||
|
public class ItemClub extends ItemBaseWeapon { |
||||||
|
|
||||||
|
public ItemClub(ItemModel model) { |
||||||
|
super(model); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected ItemRenderer makeRenderer() |
||||||
|
{ |
||||||
|
return new QuadItemRenderer(this, Res.txq("item.club")); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getAttackPoints() |
||||||
|
{ |
||||||
|
return 3; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getMaxUses() |
||||||
|
{ |
||||||
|
return 25; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getVisualName() |
||||||
|
{ |
||||||
|
return "Wooden Club"; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
package mightypork.rogue.world.item.items.weapons; |
||||||
|
|
||||||
|
import mightypork.rogue.Res; |
||||||
|
import mightypork.rogue.world.item.ItemModel; |
||||||
|
import mightypork.rogue.world.item.ItemRenderer; |
||||||
|
import mightypork.rogue.world.item.items.ItemBaseWeapon; |
||||||
|
import mightypork.rogue.world.item.render.QuadItemRenderer; |
||||||
|
|
||||||
|
|
||||||
|
public class ItemHammer extends ItemBaseWeapon { |
||||||
|
|
||||||
|
public ItemHammer(ItemModel model) { |
||||||
|
super(model); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected ItemRenderer makeRenderer() |
||||||
|
{ |
||||||
|
return new QuadItemRenderer(this, Res.txq("item.hammer")); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getAttackPoints() |
||||||
|
{ |
||||||
|
return 4; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getMaxUses() |
||||||
|
{ |
||||||
|
return 50; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getVisualName() |
||||||
|
{ |
||||||
|
return "Hammer"; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
package mightypork.rogue.world.item.items.weapons; |
||||||
|
|
||||||
|
import mightypork.rogue.Res; |
||||||
|
import mightypork.rogue.world.item.ItemModel; |
||||||
|
import mightypork.rogue.world.item.ItemRenderer; |
||||||
|
import mightypork.rogue.world.item.items.ItemBaseWeapon; |
||||||
|
import mightypork.rogue.world.item.render.QuadItemRenderer; |
||||||
|
|
||||||
|
|
||||||
|
public class ItemStone extends ItemBaseWeapon { |
||||||
|
|
||||||
|
public ItemStone(ItemModel model) { |
||||||
|
super(model); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected ItemRenderer makeRenderer() |
||||||
|
{ |
||||||
|
return new QuadItemRenderer(this, Res.txq("item.stone")); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getAttackPoints() |
||||||
|
{ |
||||||
|
return 2; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getMaxUses() |
||||||
|
{ |
||||||
|
return 20; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getVisualName() |
||||||
|
{ |
||||||
|
return "Rock"; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
package mightypork.rogue.world.item.items.weapons; |
||||||
|
|
||||||
|
import mightypork.rogue.Res; |
||||||
|
import mightypork.rogue.world.item.ItemModel; |
||||||
|
import mightypork.rogue.world.item.ItemRenderer; |
||||||
|
import mightypork.rogue.world.item.items.ItemBaseWeapon; |
||||||
|
import mightypork.rogue.world.item.render.QuadItemRenderer; |
||||||
|
|
||||||
|
|
||||||
|
public class ItemSword extends ItemBaseWeapon { |
||||||
|
|
||||||
|
public ItemSword(ItemModel model) { |
||||||
|
super(model); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected ItemRenderer makeRenderer() |
||||||
|
{ |
||||||
|
return new QuadItemRenderer(this, Res.txq("item.sword")); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getAttackPoints() |
||||||
|
{ |
||||||
|
return 6; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getMaxUses() |
||||||
|
{ |
||||||
|
return 100; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getVisualName() |
||||||
|
{ |
||||||
|
return "Wooden Club"; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue