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(); } }