Hi all ,
ich habe ein Problem : und zwar arbeite ich an einem Spiel (RPG), dort habe ich eine abstrakte Klasse Unit von der die Klassen NPC, Character und Mob (befinden sich im package units) abgeleitet sind. In der Klasse Unit habe ich eine Methode regenerate(), die die HP nach Kämpfen langsam wiederherstellen soll. Ich möchte die Methode für alle von Unit abgeleiteten Klasesn ausführen ohne jede einzeln aufrufen zu müssen, wie kann ich das am besten anstellen? Z.Z. sieht es so aus :
Das führt allerdings dazu, dass die Werte für hpRegen und mpRegen irgendwie als 0 angenommen werden und folglich nichts passiert. Rufe ich die Methode aber z.b. als character.regenerate(isFighting) auf funktioniert alles bestens - woran kann das liegen? Danke schonmal!
ich habe ein Problem : und zwar arbeite ich an einem Spiel (RPG), dort habe ich eine abstrakte Klasse Unit von der die Klassen NPC, Character und Mob (befinden sich im package units) abgeleitet sind. In der Klasse Unit habe ich eine Methode regenerate(), die die HP nach Kämpfen langsam wiederherstellen soll. Ich möchte die Methode für alle von Unit abgeleiteten Klasesn ausführen ohne jede einzeln aufrufen zu müssen, wie kann ich das am besten anstellen? Z.Z. sieht es so aus :
Code:
protected void regen() {
for (Unit u : units) {
u.regenerate(isFighting);
}
}
public void regenerate(boolean isFighting) {
regenCounter++;
if (hpRegenBuffer > 1) {
health++;
hpRegenBuffer--;
}
if (mpRegenBuffer > 1) {
mana++;
mpRegenBuffer--;
}
if (regenCounter > 200) {
if (!isFighting) {
hpRegenBuffer += (double) hpRegen;
mpRegenBuffer += (double) mpRegen;
} else {
hpRegenBuffer += (double) hpRegen / 10;
mpRegenBuffer += (double) mpRegen / 10;
}
regenCounter = 0;
}
if (health > maxHealth) {
health = maxHealth;
}
if (mana > maxMana) {
mana = maxMana;
}
}
Das führt allerdings dazu, dass die Werte für hpRegen und mpRegen irgendwie als 0 angenommen werden und folglich nichts passiert. Rufe ich die Methode aber z.b. als character.regenerate(isFighting) auf funktioniert alles bestens - woran kann das liegen? Danke schonmal!