1
This commit is contained in:
68
backend/src/main/java/com/zombie/game/model/Wall.java
Normal file
68
backend/src/main/java/com/zombie/game/model/Wall.java
Normal file
@@ -0,0 +1,68 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user