Skip to content

# 类 Range ​

游戏进程类，渲染进程也可以使用

- 实例成员
  - `collection`
  - `cache`
- 实例方法
  - 构造器`constructor`
  - `scan`
  - `inRange`
  - `clearCache`
- 静态成员
  - `rangeType`
- 静态方法
  - `registerRangeType`

## 部分接口说明 ​

ts

    interface RangeCollection {
        list: Partial<Loc>[]
        range: Range
    }

- `list`: 所有可能被这个范围实例扫描到的内容，是一个对象，可选包含 `x` `y` 两个属性
- `range`: 这个内容集所属的范围实例

## collection ​

ts

    declare var range: RangeCollection

- 成员说明

  存储所有可能被这个范围实例扫描到的内容

## cache ​

ts

    declare var cache: Record<string, any>

- 成员说明

  缓存，一般需要你手动操作，内容随意

## constructor() ​

ts

    interface Range {
        new(collection: RangeCollection): Range
    }

## scan() ​

ts

    declare function scan(type: string, data: any): any[]

- 参数说明

  - `type`: 范围类型，系统自带 `square` 和 `manhattan`，表示方形与曼哈顿范围
  - `data`: 传入给扫描函数的数据，例如可以是范围的坐标与大小等

- 方法说明

  扫描 collection 中在范围内的物品

- 返回值

  所有在范围内的物品构成的数组

## inRange() ​

ts

    declare function inRange(type: string, data: any, item: Partial<Loc>): boolean

- 方法说明

  判断一个物品是否在指定范围中，用法与 `scan` 类似

## clearCache() ​

ts

    declare function clearCache(): void

## rangeType ​

ts

    declare var rangeType: Record<string, RangeType>

- 静态成员说明

  存储了所有注册的范围类型

- 接口 `RangeType`

  ts

      interface RangeType {
          scan: RangeScanFn;
          inRange: InRangeFn;
      }

## registerRangeType() ​

ts

    declare function registerRangeType(
        type: string,
        scan: RangeScanFn<Partial<Loc>>,
        inRange: InRangeFn<Partial<Loc>>
    )

- 参考范围处理