Auch wenn ich das Performance Argument verstehen denke ich es ist Vernachlässgibar solange man keine extrem großen Flotten hat oder aber den Schiffen mehrere Hundert Beams gibt.Auf Fließkomma zu wechseln halte ich für Problematisch. Einerseits wegen der vervielfachten Rechenzeit, andererseits weil man diese nicht einfach vergleichen kann (ich sehe schwer verfolgbare Bugs).
DAMAGE_TO_HULL = 0.1
ist schonmal kein integer. Also sollte,
beamDamage * DAMAGE_TO_HULL,
auch kein integer sein.
Wir können folgendes machen. Wir speichern den Beamschaden für non-piercing Waffen in eine Variable, dann multiplizieren wir alle Beams und die Hülle und Schilde mit 10 (alles bleibt integer und wir haben die 10% vorher gespeichert). Den toHull schaden speichern wir als Eigenschaft des Angreifenden Schiffes.
Kann jemand den Combat Simulator compilen (Windows mit Microsoft Visual Studio)? Und via SVN auf Codeplex ein und Ausschecken? Zum Auschecken braucht man kein passwort. Für den Commit weiss ich es nicht.
EDIT: der Vorgeschlagene Fix mit
Bedeutet das jeder strahl wird gerundet wird. Beams mit Schäden kleiner 5 gehen so nicht auf die Hülle.toHull = (int)(beamDamage * DAMAGE_TO_HULL);
Wir müssen uns eine Funktion definieren die so aussieht:
int round(double d)
{
return (int)(floor(d + 0.5));
}