/*
* Copyright 2014 The Skfiy Open Association.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.skfiy.typhon.spi.war;
import java.util.List;
import org.skfiy.typhon.domain.FightGroup;
/**
*
* @author Kevin Zou <kevinz@skfiy.org>
*/
public class WarInfo {
private Terrain terrain;
// 回合记数
private int round = 1;
//
private Entity attackerEntity;
private Entity defenderEntity;
private Direction nextDire = Direction.S;
private WarReport warReport;
public Terrain getTerrain() {
return terrain;
}
public void setTerrain(Terrain terrain) {
this.terrain = terrain;
}
public int getRound() {
return round;
}
public void setRound(int round) {
this.round = round;
}
public Entity getAttackerEntity() {
return attackerEntity;
}
public void setAttackerEntity(Entity attackerEntity) {
this.attackerEntity = attackerEntity;
}
public Entity getDefenderEntity() {
return defenderEntity;
}
public void setDefenderEntity(Entity defenderEntity) {
this.defenderEntity = defenderEntity;
}
public Direction getNextDire() {
return nextDire;
}
public void setNextDire(Direction nextDire) {
this.nextDire = nextDire;
}
/**
*
* @return
*/
public WarReport getWarReport() {
return warReport;
}
/**
*
* @param warReport
*/
void setWarReport(WarReport warReport) {
this.warReport = warReport;
}
public static class Entity {
// 攻击组
private List<FightObject> fightObjects;
// 援助
private FightObject succor;
// 方向
private Direction dire;
// 出手次数
private int atkCount;
//
private IFindAttackGoal findAttackGoal;
private int captain = FightGroup.PRIMARY_POS;
private int rid;
private String roleName;
private int level;
private int powerGuess;
private String societyName;
public Entity(Direction dire) {
this.dire = dire;
}
public Entity(Direction dire, List<FightObject> fightObjects) {
this.dire = dire;
this.fightObjects = fightObjects;
}
public List<FightObject> getFightObjects() {
return fightObjects;
}
public FightObject getFightObject(int i) {
return fightObjects.get(i);
}
public void setFightObjects(List<FightObject> fightObjects) {
this.fightObjects = fightObjects;
}
public FightObject getSuccor() {
return succor;
}
public void setSuccor(FightObject succor) {
this.succor = succor;
}
//
public Direction getDire() {
return dire;
}
public int getAtkCount() {
return atkCount;
}
public int incrementAtkCount() {
return (atkCount++);
}
public IFindAttackGoal getFindAttackGoal() {
return findAttackGoal;
}
public void setFindAttackGoal(IFindAttackGoal findAttackGoal) {
this.findAttackGoal = findAttackGoal;
}
/**
*
* @return
*/
public boolean isOver() {
for (FightObject fo : fightObjects) {
if (!fo.isDead()) {
return false;
}
}
return true;
}
public FightObject findFightGoal() {
return findAttackGoal.nextGoal(fightObjects);
}
public FightObject findFightGoal(boolean ran) {
return findAttackGoal.nextGoal(fightObjects, ran);
}
public List<FightObject> findFightGoals(int num) {
return findAttackGoal.nextGoals(fightObjects, num);
}
public int getCaptain() {
return captain;
}
public void setCaptain(int captain) {
this.captain = captain;
}
//
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getPowerGuess() {
return powerGuess;
}
public void setPowerGuess(int powerGuess) {
this.powerGuess = powerGuess;
}
public String getSocietyName() {
return societyName;
}
public void setSocietyName(String societyName) {
this.societyName = societyName;
}
}
public interface IFindAttackGoal {
/**
*
* @param fightObjects
* @return
*/
FightObject nextGoal(List<FightObject> fightObjects);
/**
*
* @param fightObjects
* @param ran
* @return
*/
FightObject nextGoal(List<FightObject> fightObjects, boolean ran);
/**
*
* @param fightObjects
* @param num
* @return
*/
List<FightObject> nextGoals(List<FightObject> fightObjects, int num);
}
}