implement persist energy

This commit is contained in:
logictc 2022-05-24 16:29:28 -04:00 committed by Melledy
parent 8c45c25da5
commit 8f6f30c813
2 changed files with 31 additions and 14 deletions

View File

@ -81,6 +81,7 @@ public class Avatar {
private int satiation; // ?
private int satiationPenalty; // ?
private float currentHp;
private float currentEnergy;
@Transient private final Int2ObjectMap<GameItem> equips;
@Transient private final Int2FloatOpenHashMap fightProp;
@ -149,7 +150,7 @@ public class Avatar {
this.recalcStats();
this.currentHp = getFightProperty(FightProperty.FIGHT_PROP_MAX_HP);
setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, this.currentHp);
this.currentEnergy = 0f;
// Load handler
this.onLoad();
}
@ -358,6 +359,30 @@ public class Avatar {
this.currentHp = currentHp;
}
public void setCurrentEnergy() {
this.setCurrentEnergy(this.currentEnergy);
}
public void setCurrentEnergy(float currentEnergy) {
if (this.getSkillDepot() != null && this.getSkillDepot().getEnergySkillData() != null) {
ElementType element = this.getSkillDepot().getElementType();
this.setFightProperty(element.getMaxEnergyProp(), this.getSkillDepot().getEnergySkillData().getCostElemVal());
if (GAME_OPTIONS.energyUsage) {
this.setFightProperty(element.getCurEnergyProp(), currentEnergy);
}
else {
this.setFightProperty(element.getCurEnergyProp(), this.getSkillDepot().getEnergySkillData().getCostElemVal());
}
}
}
public void setCurrentEnergy(FightProperty curEnergyProp, float currentEnergy) {
this.setFightProperty(curEnergyProp, currentEnergy);
this.currentEnergy = currentEnergy;
this.save();
}
public Int2FloatOpenHashMap getFightProperties() {
return fightProp;
}
@ -516,17 +541,7 @@ public class Avatar {
}
// Set energy usage
if (this.getSkillDepot() != null && this.getSkillDepot().getEnergySkillData() != null) {
ElementType element = this.getSkillDepot().getElementType();
this.setFightProperty(element.getMaxEnergyProp(), this.getSkillDepot().getEnergySkillData().getCostElemVal());
if (GAME_OPTIONS.energyUsage) {
this.setFightProperty(element.getCurEnergyProp(), currentEnergy);
}
else {
this.setFightProperty(element.getCurEnergyProp(), this.getSkillDepot().getEnergySkillData().getCostElemVal());
}
}
setCurrentEnergy(currentEnergy);
// Artifacts
for (int slotId = 1; slotId <= 5; slotId++) {

View File

@ -46,6 +46,7 @@ public class EntityAvatar extends GameEntity {
public EntityAvatar(Scene scene, Avatar avatar) {
super(scene);
this.avatar = avatar;
this.avatar.setCurrentEnergy();
this.id = getScene().getWorld().getNextEntityId(EntityIdType.AVATAR);
GameItem weapon = this.getAvatar().getWeapon();
@ -57,6 +58,7 @@ public class EntityAvatar extends GameEntity {
public EntityAvatar(Avatar avatar) {
super(null);
this.avatar = avatar;
this.avatar.setCurrentEnergy();
}
public Player getPlayer() {
@ -128,7 +130,7 @@ public class EntityAvatar extends GameEntity {
public void clearEnergy(PropChangeReason reason) {
FightProperty curEnergyProp = this.getAvatar().getSkillDepot().getElementType().getCurEnergyProp();
this.setFightProperty(curEnergyProp, 0);
this.avatar.setCurrentEnergy(curEnergyProp, 0);
this.getScene().broadcastPacket(new PacketAvatarFightPropUpdateNotify(this.getAvatar(), curEnergyProp));
this.getScene().broadcastPacket(new PacketEntityFightPropChangeReasonNotify(this, curEnergyProp, 0f, reason));
@ -158,7 +160,7 @@ public class EntityAvatar extends GameEntity {
// Set energy and notify.
if (newEnergy != curEnergy) {
this.setFightProperty(curEnergyProp, newEnergy);
this.avatar.setCurrentEnergy(curEnergyProp, newEnergy);
this.getScene().broadcastPacket(new PacketAvatarFightPropUpdateNotify(this.getAvatar(), curEnergyProp));
this.getScene().broadcastPacket(new PacketEntityFightPropChangeReasonNotify(this, curEnergyProp, newEnergy, reason));