GFGridOccupancy¶
API Reference / Standard / 类索引
- 路径:
addons/gf/standard/foundation/math/gf_grid_occupancy.gd - 模块:
Standard - 继承:
RefCounted - API:
public - 类别:运行时服务 (
runtime_service) - 首次版本:
3.17.0
网格占用与预约数据结构。 适合格子移动、战棋、推箱子和解谜类玩法在 System 中跟踪运行时占用。 它不负责路径查找、碰撞或胜负规则。
成员概览¶
| 类型 | 名称 | 签名 |
|---|---|---|
| 信号 | cell_occupied |
signal cell_occupied(receiver: Variant, cell: Vector2i) |
| 信号 | cell_released |
signal cell_released(receiver: Variant, cell: Vector2i) |
| 信号 | cell_reserved |
signal cell_reserved(receiver: Variant, cell: Vector2i) |
| 信号 | reservation_released |
signal reservation_released(receiver: Variant, cell: Vector2i) |
| 属性 | grid_size |
var grid_size: Vector2i = Vector2i.ZERO |
| 属性 | max_occupants_per_cell |
var max_occupants_per_cell: int = 1 |
| 方法 | configure |
func configure(p_grid_size: Vector2i, p_max_occupants_per_cell: int = 1) -> void: |
| 方法 | is_in_bounds |
func is_in_bounds(cell: Vector2i) -> bool: |
| 方法 | can_occupy |
func can_occupy(receiver: Variant, cell: Vector2i) -> bool: |
| 方法 | occupy |
func occupy(receiver: Variant, cell: Vector2i) -> bool: |
| 方法 | release |
func release(receiver: Variant) -> void: |
| 方法 | release_cell |
func release_cell(cell: Vector2i) -> void: |
| 方法 | reserve_cell |
func reserve_cell(receiver: Variant, cell: Vector2i) -> bool: |
| 方法 | confirm_reservation |
func confirm_reservation(receiver: Variant) -> bool: |
| 方法 | release_reservation |
func release_reservation(receiver: Variant) -> void: |
| 方法 | is_cell_occupied |
func is_cell_occupied(cell: Vector2i) -> bool: |
| 方法 | is_cell_reserved |
func is_cell_reserved(cell: Vector2i) -> bool: |
| 方法 | get_cell_occupants |
func get_cell_occupants(cell: Vector2i) -> Array[Variant]: |
| 方法 | get_cell_occupant |
func get_cell_occupant(cell: Vector2i) -> Variant: |
| 方法 | get_receiver_cell |
func get_receiver_cell(receiver: Variant) -> Vector2i: |
| 方法 | prune_invalid_receivers |
func prune_invalid_receivers() -> void: |
| 方法 | clear |
func clear() -> void: |
信号¶
cell_occupied¶
- API:
public
接收者占用格子时发出。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
cell |
格子坐标。 |
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
cell_released¶
- API:
public
接收者释放格子时发出。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
cell |
格子坐标。 |
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
cell_reserved¶
- API:
public
接收者预约格子时发出。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
cell |
格子坐标。 |
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
reservation_released¶
- API:
public
接收者释放预约时发出。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
cell |
格子坐标。 |
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
属性¶
grid_size¶
- API:
public
网格尺寸。小于等于 0 的维度会让所有格子视为越界。
max_occupants_per_cell¶
- API:
public
单格允许的最大占用数量。
方法¶
configure¶
- API:
public
设置网格参数并清空占用。
参数:
| 名称 | 说明 |
|---|---|
p_grid_size |
网格尺寸。 |
p_max_occupants_per_cell |
单格最大占用数量。 |
is_in_bounds¶
- API:
public
检查格子是否在边界内。
参数:
| 名称 | 说明 |
|---|---|
cell |
格子坐标。 |
返回:在边界内返回 true。
can_occupy¶
- API:
public
检查接收者是否可以占用格子。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
cell |
格子坐标。 |
返回:可占用时返回 true。
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
occupy¶
- API:
public
占用格子。接收者若已占用其他格子,会先释放旧格子。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
cell |
格子坐标。 |
返回:成功时返回 true。
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
release¶
- API:
public
释放接收者当前占用。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
release_cell¶
- API:
public
释放指定格子的所有占用。
参数:
| 名称 | 说明 |
|---|---|
cell |
格子坐标。 |
reserve_cell¶
- API:
public
预约格子,防止其他接收者抢占。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
cell |
格子坐标。 |
返回:成功时返回 true。
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
confirm_reservation¶
- API:
public
将接收者预约确认成占用。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
返回:成功时返回 true。
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
release_reservation¶
- API:
public
释放接收者预约。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
is_cell_occupied¶
- API:
public
检查格子是否有占用。
参数:
| 名称 | 说明 |
|---|---|
cell |
格子坐标。 |
返回:有占用时返回 true。
is_cell_reserved¶
- API:
public
检查格子是否被预约。
参数:
| 名称 | 说明 |
|---|---|
cell |
格子坐标。 |
返回:被预约时返回 true。
get_cell_occupants¶
- API:
public
获取格子中的所有接收者。
参数:
| 名称 | 说明 |
|---|---|
cell |
格子坐标。 |
返回:接收者数组。
结构:
return: Array receiver values restored from occupancy records.
get_cell_occupant¶
- API:
public
获取格子中的第一个接收者。
参数:
| 名称 | 说明 |
|---|---|
cell |
格子坐标。 |
返回:接收者;不存在时返回 null。
结构:
return: Variant receiver value restored from the occupancy record.
get_receiver_cell¶
- API:
public
获取接收者当前占用格。
参数:
| 名称 | 说明 |
|---|---|
receiver |
接收者。 |
返回:格子坐标;未占用时返回 Vector2i(-1, -1)。
结构:
receiver: Variant receiver identity stored by value or weak Object reference.
prune_invalid_receivers¶
- API:
public
清理已释放 Object 接收者。
clear¶
- API:
public
清空占用和预约。