Add support for medicaments
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
package com.bartlomiejpluta.demo.world.item;
|
||||
|
||||
import com.bartlomiejpluta.base.lib.icon.IconDelegate;
|
||||
import com.bartlomiejpluta.demo.util.IconUtil;
|
||||
import lombok.NonNull;
|
||||
|
||||
public abstract class BaseItem extends IconDelegate implements Item {
|
||||
protected BaseItem(@NonNull String icon) {
|
||||
super(IconUtil.parseIcon(icon));
|
||||
setZIndex(-1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.bartlomiejpluta.demo.world.item;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
|
||||
public abstract class StackableItem extends BaseItem implements ItemStack {
|
||||
@Getter
|
||||
@Setter
|
||||
protected int count;
|
||||
|
||||
protected StackableItem(@NonNull String id, int count) {
|
||||
super(id);
|
||||
this.count = Math.max(0, count);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decrease() {
|
||||
if (count > 0) {
|
||||
--count;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void increase() {
|
||||
++count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void increase(int count) {
|
||||
this.count += count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decrease(int count) {
|
||||
this.count = Math.max(0, count);
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,10 @@
|
||||
package com.bartlomiejpluta.demo.world.junk;
|
||||
|
||||
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.Item;
|
||||
import com.bartlomiejpluta.demo.world.item.BaseItem;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
public class Junk extends IconDelegate implements Item {
|
||||
public class Junk extends BaseItem {
|
||||
|
||||
@Getter
|
||||
private final String name;
|
||||
@@ -17,12 +14,7 @@ public class Junk extends IconDelegate implements Item {
|
||||
}
|
||||
|
||||
public Junk(@NonNull DB.model.JunkModel template) {
|
||||
super(createIcon(template));
|
||||
super(template.getIcon());
|
||||
this.name = template.getName();
|
||||
}
|
||||
|
||||
private static Icon createIcon(DB.model.JunkModel 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]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.bartlomiejpluta.demo.world.potion;
|
||||
|
||||
import DB.dao;
|
||||
import com.bartlomiejpluta.base.util.random.DiceRoller;
|
||||
import com.bartlomiejpluta.demo.entity.Creature;
|
||||
import com.bartlomiejpluta.demo.world.item.StackableItem;
|
||||
import com.bartlomiejpluta.demo.world.item.Useable;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
public class Medicament extends StackableItem implements Useable {
|
||||
|
||||
@Getter
|
||||
private final String name;
|
||||
|
||||
@Getter
|
||||
private final DiceRoller roller;
|
||||
|
||||
public Medicament(@NonNull String id, int count) {
|
||||
this(dao.medicaments.find(id), count);
|
||||
}
|
||||
|
||||
public Medicament(@NonNull DB.model.MedicamentsModel template, int count) {
|
||||
super(template.getIcon(), count);
|
||||
this.name = template.getName();
|
||||
this.roller = DiceRoller.of(template.getHp());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void use(Creature creature) {
|
||||
if(--count == 0) {
|
||||
creature.removeItemFromEquipment(this);
|
||||
}
|
||||
|
||||
creature.heal(roller.roll());
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,18 @@
|
||||
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.entity.Creature;
|
||||
import com.bartlomiejpluta.demo.world.item.ItemStack;
|
||||
import com.bartlomiejpluta.demo.world.item.StackableItem;
|
||||
import com.bartlomiejpluta.demo.world.item.Useable;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
public class Ammunition extends IconDelegate implements ItemStack, Useable {
|
||||
public class Ammunition extends StackableItem implements Useable {
|
||||
|
||||
@Getter
|
||||
private final String id;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private int count;
|
||||
|
||||
@Getter
|
||||
private final String name;
|
||||
|
||||
@@ -32,39 +24,13 @@ public class Ammunition extends IconDelegate implements ItemStack, Useable {
|
||||
}
|
||||
|
||||
public Ammunition(@NonNull DB.model.AmmunitionModel template, int count) {
|
||||
super(createIcon(template));
|
||||
super(template.getIcon(), count);
|
||||
|
||||
this.id = template.getId();
|
||||
this.name = template.getName();
|
||||
this.count = count;
|
||||
this.appliesTo = template.getAppliesTo();
|
||||
}
|
||||
|
||||
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]));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decrease() {
|
||||
if (count > 0) {
|
||||
--count;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void increase() {
|
||||
++count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void increase(int count) {
|
||||
this.count += count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decrease(int count) {
|
||||
this.count = Math.max(0, count);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void use(Creature creature) {
|
||||
|
||||
@@ -2,18 +2,17 @@ package com.bartlomiejpluta.demo.world.weapon;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.context.ContextHolder;
|
||||
import com.bartlomiejpluta.base.api.icon.Icon;
|
||||
import com.bartlomiejpluta.base.lib.animation.AnimationRunner;
|
||||
import com.bartlomiejpluta.base.lib.animation.RandomAnimationsRunner;
|
||||
import com.bartlomiejpluta.base.lib.icon.IconDelegate;
|
||||
import com.bartlomiejpluta.base.util.random.DiceRoller;
|
||||
import com.bartlomiejpluta.demo.entity.Creature;
|
||||
import com.bartlomiejpluta.demo.event.HitEvent;
|
||||
import com.bartlomiejpluta.demo.world.item.BaseItem;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import org.joml.Vector2i;
|
||||
|
||||
public class MeleeWeapon extends IconDelegate implements Weapon {
|
||||
public class MeleeWeapon extends BaseItem implements Weapon {
|
||||
private final Context context;
|
||||
private final AnimationRunner animation;
|
||||
private final String sound;
|
||||
@@ -32,7 +31,7 @@ public class MeleeWeapon extends IconDelegate implements Weapon {
|
||||
}
|
||||
|
||||
public MeleeWeapon(@NonNull DB.model.MeleeWeaponModel template) {
|
||||
super(createIcon(template));
|
||||
super(template.getIcon());
|
||||
|
||||
this.context = ContextHolder.INSTANCE.getContext();
|
||||
this.name = template.getName();
|
||||
@@ -68,9 +67,4 @@ public class MeleeWeapon extends IconDelegate implements Weapon {
|
||||
public String usageName() {
|
||||
return "Equip";
|
||||
}
|
||||
|
||||
private static Icon createIcon(DB.model.MeleeWeaponModel 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]));
|
||||
}
|
||||
}
|
||||
@@ -4,19 +4,18 @@ import com.bartlomiejpluta.base.api.animation.Animation;
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.context.ContextHolder;
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.icon.Icon;
|
||||
import com.bartlomiejpluta.base.api.move.Movable;
|
||||
import com.bartlomiejpluta.base.lib.animation.AnimationRunner;
|
||||
import com.bartlomiejpluta.base.lib.animation.BulletAnimationRunner;
|
||||
import com.bartlomiejpluta.base.lib.animation.SimpleAnimationRunner;
|
||||
import com.bartlomiejpluta.base.lib.icon.IconDelegate;
|
||||
import com.bartlomiejpluta.base.util.random.DiceRoller;
|
||||
import com.bartlomiejpluta.demo.entity.Creature;
|
||||
import com.bartlomiejpluta.demo.event.HitEvent;
|
||||
import com.bartlomiejpluta.demo.world.item.BaseItem;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
public class RangedWeapon extends IconDelegate implements Weapon {
|
||||
public class RangedWeapon extends BaseItem implements Weapon {
|
||||
private final Context context;
|
||||
private final BulletAnimationRunner animation;
|
||||
private final String sound;
|
||||
@@ -45,7 +44,7 @@ public class RangedWeapon extends IconDelegate implements Weapon {
|
||||
}
|
||||
|
||||
public RangedWeapon(@NonNull DB.model.RangedWeaponModel template) {
|
||||
super(createIcon(template));
|
||||
super(template.getIcon());
|
||||
|
||||
this.context = ContextHolder.INSTANCE.getContext();
|
||||
this.name = template.getName();
|
||||
@@ -81,7 +80,7 @@ public class RangedWeapon extends IconDelegate implements Weapon {
|
||||
public boolean attack(Creature attacker) {
|
||||
var ammunition = attacker.getAmmunition();
|
||||
|
||||
if(ammunition == null || !ammunition.getAppliesTo().equals(type)) {
|
||||
if (ammunition == null || !ammunition.getAppliesTo().equals(type)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -100,9 +99,4 @@ public class RangedWeapon extends IconDelegate implements Weapon {
|
||||
public String usageName() {
|
||||
return "Equip";
|
||||
}
|
||||
|
||||
private static Icon createIcon(DB.model.RangedWeaponModel 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]));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user