package com.aionemu.gameserver.services.toypet;
/**
* @author Rolandas
*/
public final class PetFeedProgress {
private int totalPoints = 0;
private short regularConsumed = 0;
private short lovedConsumed = 0;
private PetHungryLevel hungryLevel = PetHungryLevel.HUNGRY;
private short lovedFoodMax = 0;
private boolean lovedFeeded = false;
public PetFeedProgress(short lovedFoodLimit) {
lovedFoodMax = (short) (lovedFoodLimit & 0x3F);
}
/**
* @return the totalPoints
*/
public int getTotalPoints() {
return totalPoints;
}
public void setTotalPoints(int points) {
totalPoints = points & 0x3FFF;
}
/**
* @return the hungryLevel
*/
public PetHungryLevel getHungryLevel() {
return hungryLevel;
}
public void setHungryLevel(PetHungryLevel level) {
hungryLevel = level;
}
/**
* @return the consumed
*/
public int getRegularCount() {
return regularConsumed & 0xFF;
}
public void setRegularCount(short count) {
regularConsumed = count;
}
public int getLovedFoodRemaining() {
return lovedFoodMax - lovedConsumed;
}
public boolean isLovedFeeded() {
return lovedFeeded;
}
public void setIsLovedFeeded() {
lovedFeeded = true;
}
public void incrementCount(boolean lovedFood) {
if (lovedFood) {
lovedConsumed++;
} else {
regularConsumed++;
}
}
public void reset() {
if (lovedFeeded)
lovedFeeded = false;
else {
totalPoints = 0;
regularConsumed = 0;
}
}
public int getDataForPacket() {
int value = getRegularCount() & 0xFF;
value <<= 14;
value |= totalPoints >> 2;
value <<= 6;
value |= lovedConsumed & 0x3F;
value <<= 4; // unk
return value;
}
public void setData(int savedData) {
savedData >>= 4; // drop unk
lovedConsumed = (short) (savedData & 0x3F);
savedData >>= 6;
totalPoints = (savedData & 0x3FFF) << 2;
savedData >>= 14;
regularConsumed = (short) (savedData & 0xFF);
}
}