package gamelogic;
import gui.simpleUI.ModifierGroup;
import gui.simpleUI.modifiers.InfoText;
import gui.simpleUI.modifiers.PlusMinusModifier;
import worldData.Updateable;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import de.rwth.R;
public class Stat extends GameElement {
// just some examples:
public static final String MAX_HP = "Max. HP";
public static final String HP = "HP";
public static final String MAX_MANA = "Max. Mana";
public static final String MANA = "Mana";
public static final String GOLD = "Gold";
public static final String STRENGTH = "Strength";
public static final String AGILITY = "Agility";
public static final String INTELLIGENCE = "Intelligence";
public static final String MIN_DAMAGE = "Min. Damage";
public static final String MAX_DAMAGE = "Max. Damage";
public static final String FIRE_RESISTANCE = "Fire resistance";
private float myValue;
private BoosterList myBoosterList;
public Stat(String uniqueName, int iconId, float value) {
super(uniqueName, iconId);
myValue = value;
}
public BoosterList getMyBoosterList() {
return myBoosterList;
}
@Override
public View getMyListItemView(View viewToUseIfNotNull, ViewGroup parentView) {
if (viewToUseIfNotNull instanceof StatListItemView) {
((StatListItemView) viewToUseIfNotNull).updateContent();
return viewToUseIfNotNull;
}
return new StatListItemView(parentView.getContext());
}
public float getValue() {
if (myBoosterList != null)
return myBoosterList.getValue(myValue);
return myValue;
}
private class StatListItemView extends LinearLayout {
private ImageView myIconView;
private TextView myDescriptionView;
private TextView myValueView;
public StatListItemView(Context context) {
super(context);
myIconView = new ImageView(context);
myDescriptionView = new TextView(context);
addView(myIconView);
LinearLayout l2 = new LinearLayout(context);
l2.setOrientation(LinearLayout.VERTICAL);
l2.addView(myDescriptionView);
l2.addView(myValueView);
addView(l2);
updateContent();
}
public void updateContent() {
myDescriptionView.setText(myName);
myValueView.setText("" + myValue);
if (myIconid != 0)
myIconView.setBackgroundResource(myIconid);
}
}
public boolean addBooster(Booster booster) {
if (myBoosterList == null)
myBoosterList = new BoosterList();
return myBoosterList.add(booster);
}
public void setValue(float newValue) {
if (myBoosterList != null) {
float boostValue = myBoosterList.getValue(0);
myValue = newValue - boostValue;
// TODO redesign this, too risky this way
} else {
myValue = newValue;
}
}
@Override
public void generateEditGUI(ModifierGroup s) {
s.addModifier(new PlusMinusModifier(R.drawable.minuscirclegray,
R.drawable.pluscirclegray) {
@Override
public boolean save(double currentValue) {
myValue = (float) currentValue;
return true;
}
@Override
public double plusEvent(double currentValue) {
return currentValue + 1;
}
@Override
public double minusEvent(double currentValue) {
if (currentValue - 1 <= myValue)
return myValue;
return currentValue - 1;
}
@Override
public double load() {
return myValue;
}
@Override
public String getVarName() {
return myName;
}
});
}
@Override
public void generateViewGUI(ModifierGroup s) {
if (myValue >= 0)
s.addModifier(new InfoText(myName + ":", "+" + myValue));
else
s.addModifier(new InfoText(myName + ":", "" + myValue));
}
/**
* if you want to decrease the stat by -10.5 just pass -10.5f here
*
* @param incrValue
*/
public void incValue(float incrValue) {
setValue(getValue() + incrValue);
}
@Override
public boolean update(float timeDelta, Updateable parent) {
super.update(timeDelta, parent);
if (myBoosterList != null)
myBoosterList.update(timeDelta, parent);
return true;
}
}