```ts
/**
 * Calculates the mean of every run of consecutive readings within a given window size.
 * @param readings - Array of number readings.
 * @param size - Size of the window to calculate the mean for.
 * @returns An array of means, rounded down, for each window. Returns an empty array if the window size is zero or larger than the readings array.
 */
export function meanWindow(readings: number[], size: number): number[] {
  if (size <= 0 || size > readings.length) return [];

  const means: number[] = [];
  for (let i = 0; i <= readings.length - size; i++) {
    const windowSum = readings.slice(i, i + size).reduce((acc, val) => acc + val, 0);
    means.push(Math.floor(windowSum / size));
  }

  return means;
}
```