/**
*
*/
package logbook.gui.logic;
import logbook.constants.AppConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
/**
* @author Nekopanda
*
*/
public enum DamageRate {
MUKIZU("無傷", 0, ColorManager.getColor(AppConstants.MUKIZU_SHIP_COLOR), null),
KENZAI("健在", 1, null, null),
SYOHA("小破", 2, ColorManager.getColor(AppConstants.SYOHA_SHIP_COLOR), null),
TYUHA("中破", 3,
ColorManager.getColor(AppConstants.TYUHA_SHIP_COLOR),
ColorManager.getColor(AppConstants.TYUHA_FORGROUNG_COLOR)),
TAIHA("大破", 4,
ColorManager.getColor(AppConstants.TAIHA_SHIP_COLOR),
ColorManager.getColor(SWT.COLOR_WHITE)),
GOTIN("轟沈", 5,
ColorManager.getColor(AppConstants.SUNK_SHIP_COLOR),
ColorManager.getColor(SWT.COLOR_WHITE)),
ESCAPED("退避", -1,
ColorManager.getColor(AppConstants.ESCAPED_SHIP_COLOR), null);
private final String str;
private final int level;
private final Color background;
private final Color foreground;
private DamageRate(String str, int level, Color fb, Color ff) {
this.str = str;
this.level = level;
this.background = fb;
this.foreground = ff;
}
public static DamageRate fromHP(int nowhp, int maxhp) {
double rate = (double) nowhp / (double) maxhp;
if (rate == 0.0) {
return GOTIN;
}
else if (rate <= AppConstants.BADLY_DAMAGE) {
return TAIHA;
}
else if (rate <= AppConstants.HALF_DAMAGE) {
return TYUHA;
}
else if (rate <= AppConstants.SLIGHT_DAMAGE) {
return SYOHA;
}
else if (rate < 1.0) {
return KENZAI;
}
return MUKIZU;
}
@Override
public String toString() {
return this.str;
}
public String toString(boolean friend) {
if ((friend == false) && (this.level == 5)) {
return "撃沈";
}
return this.str;
}
public int getLevel() {
return this.level;
}
/**
* @return friendBackground
*/
public Color getBackground() {
return this.background;
}
/**
* @return friendForeground
*/
public Color getForeground() {
return this.foreground;
}
}