#pragma once // ----------------------------------------------------------------------------- // Tile2D — размеры, которые нельзя поменять, не пересобрав движок. // // Это НЕ настройки проекта. Настройки живут в project.txt и читаются в рантайме // (engine/project.h); сюда попадает только то, от чего зависят размеры массивов // и что поэтому обязано быть известно компилятору. // // Раньше эти числа лежали в src/tuning.h — то есть движок собирался только // вместе с игрой и знал её имя. Теперь наоборот: tuning.h включает этот файл, // а движок про игру не знает ничего. // ----------------------------------------------------------------------------- // --- кадр -------------------------------------------------------------------- // Внутреннее разрешение софтверного фреймбуфера. Апскейл до окна — ЦЕЛЫМ // множителем, поэтому окно кратно кадру. constexpr int INTERNAL_W = 480; constexpr int INTERNAL_H = 270; constexpr int WINDOW_SCALE = 3; constexpr int WINDOW_W = INTERNAL_W * WINDOW_SCALE; constexpr int WINDOW_H = INTERNAL_H * WINDOW_SCALE; // --- геометрия тайла --------------------------------------------------------- // Размер тайла в ИЗОМЕТРИИ: ромб 32x16 (наклон 2:1) и стена 32x32. // // Проекция может взять другой размер (engine/projection.h): вид сверху рисует // квадрат 32x32. Эти константы — размер по умолчанию и верхняя оценка для // отсечения по краю кадра, а не единственно возможный тайл. constexpr int TILE_W = 32; constexpr int TILE_H = 16; constexpr int TILE_HALF_W = TILE_W / 2; constexpr int TILE_HALF_H = TILE_H / 2; constexpr int WALL_H = 32; // Самый большой тайл, который может выдать любая проекция. По нему считается // запас отсечения: спрайт, торчащий в кадр краем, обязан дорисоваться. constexpr int TILE_MAX_W = 32; constexpr int TILE_MAX_H = 32; // --- шаг симуляции ----------------------------------------------------------- // Fixed timestep: шаг постоянный, кадр интерполируется. MAX_STEPS_PER_FRAME — // защита от спирали смерти (долгий кадр не должен догоняться вечно). constexpr float FIXED_DT = 1.0f / 60.0f; constexpr int MAX_STEPS_PER_FRAME = 5; // --- карта ------------------------------------------------------------------- // Тайлмап — плоский массив фиксированного размера, поэтому размер карты // компилтаймовый. Проект меньше этого предела занимает часть карты; больше — // не соберётся, и это честнее, чем молча обрезать уровень. constexpr int MAP_W = 48; constexpr int MAP_H = 48;