Camera[T] = ref object position: Point size: Size tileset: Tileset map*: Tilemap[T] focus: Point
proc newCamera[T](position: Point; size: Size; tileset: Tileset): Camera[T]
proc attach[T](camera: Camera[T]; map: Tilemap[T]; focus: Point = (0, 0))
proc render[T](camera: Camera[T]; display: RendererPtr)
proc move[T](camera: Camera[T]; x, y: int)