Create basic scaffolding for stackable items

This commit is contained in:
2022-08-25 20:46:28 +02:00
parent 2c1fc56a5f
commit 1a96932bca
5 changed files with 56 additions and 2 deletions

Binary file not shown.

View File

@@ -1,5 +1,6 @@
package com.bartlomiejpluta.demo.gui;
import A.fonts;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.gui.Color;
import com.bartlomiejpluta.base.api.gui.Component;
@@ -11,6 +12,7 @@ import com.bartlomiejpluta.base.api.input.KeyEvent;
import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.lib.gui.IconView;
import com.bartlomiejpluta.demo.world.item.Item;
import com.bartlomiejpluta.demo.world.item.ItemStack;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
@@ -18,11 +20,10 @@ import lombok.Setter;
import java.util.Map;
import java.util.function.Consumer;
import java.util.Map;
public class ItemIconView extends IconView {
private final Color normal;
private final Color hover;
private final Color textColor;
@Getter
private Item item;
@@ -34,9 +35,12 @@ public class ItemIconView extends IconView {
super(context, gui, refs);
this.normal = gui.createColor();
this.hover = gui.createColor();
this.textColor = gui.createColor();
normal.setRGBA(0x444444FF);
hover.setRGBA(0x888888FF);
textColor.setRGBA(0xFFFFFFFF);
super.setScale(2f);
addEventListener(KeyEvent.TYPE, this::handleKeyEvent);
@@ -93,5 +97,15 @@ public class ItemIconView extends IconView {
gui.closePath();
super.draw(screen, gui);
if (item != null && item instanceof ItemStack stack) {
gui.beginPath();
gui.setFontFace(fonts.roboto_regular.uid);
gui.setFontSize(17);
gui.putText(x + 15, y + 5, String.valueOf(stack.count()));
gui.setFillColor(textColor);
gui.fill();
gui.closePath();
}
}
}

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.demo.world.item;
public interface ItemStack extends Item {
int count();
}

View File

@@ -0,0 +1,35 @@
package com.bartlomiejpluta.demo.world.weapon;
import com.bartlomiejpluta.base.api.context.ContextHolder;
import com.bartlomiejpluta.base.api.icon.Icon;
import com.bartlomiejpluta.base.lib.icon.IconDelegate;
import com.bartlomiejpluta.demo.world.item.ItemStack;
import lombok.Getter;
import lombok.NonNull;
public class Ammunition extends IconDelegate implements ItemStack {
private int count;
@Getter
private final String name;
public Ammunition(@NonNull String id, int count) {
this(DB.dao.ammunition.find(id), count);
}
public Ammunition(@NonNull DB.model.AmmunitionModel template, int count) {
super(createIcon(template));
this.name = template.getName();
this.count = count;
}
@Override
public int count() {
return count;
}
private static Icon createIcon(DB.model.AmmunitionModel template) {
var icons = template.getIcon().split(",");
return ContextHolder.INSTANCE.getContext().createIcon(A.iconsets.get(icons[0]).uid, Integer.parseInt(icons[1]), Integer.parseInt(icons[2]));
}
}