69 lines
1.4 KiB
Java
69 lines
1.4 KiB
Java
package com.zombie.game.model;
|
||
|
||
import lombok.Getter;
|
||
|
||
/**
|
||
* 墙体抽象基类
|
||
*
|
||
* 地图中的障碍物,分为:
|
||
* - StaticWall:静态墙体,不可破坏
|
||
* - NutWall:坚果墙体,可被僵尸攻击破坏,有血量
|
||
*/
|
||
public abstract class Wall {
|
||
/** 格子X坐标 */
|
||
@Getter
|
||
protected final int gridX;
|
||
/** 格子Y坐标 */
|
||
@Getter
|
||
protected final int gridY;
|
||
|
||
public Wall(int gridX, int gridY) {
|
||
this.gridX = gridX;
|
||
this.gridY = gridY;
|
||
}
|
||
|
||
/**
|
||
* 是否可破坏
|
||
*
|
||
* @return true 表示可以被破坏
|
||
*/
|
||
public abstract boolean isDestructible();
|
||
|
||
/**
|
||
* 是否已被破坏(仅对可破坏墙体有效)
|
||
*
|
||
* @return true 表示已破坏
|
||
*/
|
||
public abstract boolean isDestroyed();
|
||
|
||
/**
|
||
* 获取当前血量(仅对可破坏墙体有效)
|
||
*
|
||
* @return 当前血量
|
||
*/
|
||
public abstract float getHealth();
|
||
|
||
/**
|
||
* 受到伤害
|
||
*
|
||
* @param damage 伤害值
|
||
*/
|
||
public abstract void takeDamage(float damage);
|
||
|
||
/**
|
||
* 获取移动代价(用于流场计算)
|
||
*
|
||
* @return 移动代价,不可通行返回 Float.MAX_VALUE
|
||
*/
|
||
public abstract float getMovementCost();
|
||
|
||
/**
|
||
* 是否阻挡移动
|
||
*
|
||
* @return true 表示阻挡
|
||
*/
|
||
public boolean blocksMovement() {
|
||
return !isDestroyed();
|
||
}
|
||
}
|