/**
*
*/
package logbook.dto;
import logbook.data.DataType;
/**
* @author Nekopanda
*
*/
public enum BattlePhaseKind {
/** 通常の昼戦 */
BATTLE(false, false, BattlePatternConstants.NON_COMBINED_PTTERN, DataType.BATTLE),
/** 通常の夜戦 */
MIDNIGHT(true, false, BattlePatternConstants.NON_COMBINED_PTTERN, DataType.BATTLE_MIDNIGHT),
/** 演習の昼戦 */
PRACTICE_BATTLE(false, true, BattlePatternConstants.NON_COMBINED_PTTERN, DataType.PRACTICE_BATTLE),
/** 演習の夜戦 */
PRACTICE_MIDNIGHT(true, true, BattlePatternConstants.NON_COMBINED_PTTERN, DataType.PRACTICE_BATTLE_MIDNIGHT),
/** 夜戦マスの戦闘 */
SP_MIDNIGHT(true, false, BattlePatternConstants.NON_COMBINED_PTTERN, DataType.BATTLE_SP_MIDNIGHT),
/** 夜戦→昼戦マスの昼戦 */
NIGHT_TO_DAY(false, false, BattlePatternConstants.NON_COMBINED_PTTERN, DataType.BATTLE_NIGHT_TO_DAY),
/** 夜戦→昼戦マスの昼戦 */
AIR_BATTLE(false, false, BattlePatternConstants.NON_COMBINED_PTTERN, DataType.AIR_BATTLE),
/** 連合艦隊空母機動部隊の昼戦 */
COMBINED_BATTLE(false, false, BattlePatternConstants.BATTLE_PATTERN, DataType.COMBINED_BATTLE),
/** 連合艦隊航空戦マス */
COMBINED_AIR(false, false, BattlePatternConstants.BATTLE_PATTERN, DataType.COMBINED_AIR_BATTLE),
/** 連合艦隊の夜戦 */
COMBINED_MIDNIGHT(true, false, BattlePatternConstants.BATTLE_PATTERN, DataType.COMBINED_BATTLE_MIDNIGHT),
/** 連合艦隊での夜戦マスの戦闘 */
COMBINED_SP_MIDNIGHT(true, false, BattlePatternConstants.BATTLE_PATTERN, DataType.COMBINED_BATTLE_SP_MIDNIGHT),
/** 連合艦隊水上打撃部隊の昼戦 */
COMBINED_BATTLE_WATER(false, false, BattlePatternConstants.WATER_PATTERN, DataType.COMBINED_BATTLE_WATER),
/** 長距離空襲戦 */
LD_AIRBATTLE(false, false, BattlePatternConstants.NON_COMBINED_PTTERN, DataType.LD_AIRBATTLE),
/** 連合艦隊長距離空襲戦 */
COMBINED_LD_AIR(false, false, BattlePatternConstants.BATTLE_PATTERN, DataType.COMBINED_LD_AIRBATTLE),
/** 通常艦隊敵連合艦隊の昼戦*/
COMBINED_EC_BATTLE(false, false, BattlePatternConstants.NON_COMBINED_PTTERN, DataType.COMBINED_EC_BATTLE),
/** 通常艦隊敵連合艦隊の夜戦 */
COMBINED_EC_BATTLE_MIDNIGHT(true, false, BattlePatternConstants.NON_COMBINED_PTTERN,
DataType.COMBINED_EC_BATTLE_MIDNIGHT);
private final boolean night;
private final boolean practice;
private final boolean[] pattern;
private final DataType api;
private BattlePhaseKind(boolean night, boolean practice, boolean[] pattern, DataType api) {
this.night = night;
this.practice = practice;
this.pattern = pattern;
this.api = api;
}
/**
* 夜戦か?
* @return night
*/
public boolean isNight() {
return this.night;
}
/**
* 開幕戦は第二艦隊が行うか?
* @return
*/
public boolean isOpeningSecond() {
return this.pattern[0];
}
/**
* 夜戦は第二艦隊が行うか?
* @return
*/
public boolean isHougekiSecond() {
return this.pattern[1];
}
/**
* 砲撃戦1は第二艦隊が行うか?
* @return
*/
public boolean isHougeki1Second() {
return this.pattern[2];
}
/**
* 砲撃戦2は第二艦隊が行うか?
* @return
*/
public boolean isHougeki2Second() {
return this.pattern[3];
}
/**
* 砲撃戦3は第二艦隊が行うか?
* @return
*/
public boolean isHougeki3Second() {
return this.pattern[4];
}
/**
* 雷撃戦は第二艦隊が行うか?
* @return
*/
public boolean isRaigekiSecond() {
return this.pattern[5];
}
/**
* この戦闘のAPIリクエスト先
* @return api
*/
public DataType getApi() {
return this.api;
}
/**
* @return practice
*/
public boolean isPractice() {
return this.practice;
}
}
class BattlePatternConstants {
// 第一->false, 第二->true
// opening, hougeki, hougeki1, hougeki2, hougeki3, raigeki
// 通常戦闘
public static boolean[] NON_COMBINED_PTTERN = new boolean[] {
false, false, false, false, false, false
};
// 連合艦隊の通常
public static boolean[] BATTLE_PATTERN = new boolean[] {
true, true, true, false, false, true
};
// 連合艦隊の水雷戦
public static boolean[] WATER_PATTERN = new boolean[] {
true, true, false, false, true, true
};
}