-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLevelGenerator.h
More file actions
46 lines (37 loc) · 2 KB
/
Copy pathLevelGenerator.h
File metadata and controls
46 lines (37 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#pragma once
class GameLevel;
class LevelLoader;
class GamePhysics;
/**
* LevelGenerator
*
* Генератор трасс. Поддерживает как предзаданные участки,
* так и бесконечную процедурную генерацию для дзен-режима.
*/
class LevelGenerator {
public:
LevelGenerator();
// Загрузка уровня (дзен или статический)
void loadLevel(LevelLoader* loader, int mode, int levelId);
// Обновление дзен-режима (вызывать каждый кадр)
void updateZen(LevelLoader* loader, int cameraX_LogicUnit);
// Сдвиг координат генерации (для бесконечного мира)
void shiftGeneration(int shiftX);
private:
int lastX; // Координата X конца последнего сегмента
int lastY; // Координата Y конца последнего сегмента
// Параметры для физически-корректной генерации (прыжки и т.д.)
double currentVelocity;
double currentAngle;
const double GRAVITY = 25.0;
// Примитивы генерации
void generateZenChunk(GameLevel* level); // Процедурный кусок
void generateStaticHills(GameLevel* level); // Фиксированные холмы
void addFlat(GameLevel* level, int len); // Прямой участок
void addSlope(GameLevel* level, int len, int dy); // Склон (линейный)
void addCosineInterpolation(GameLevel* level, int len, int dy); // Плавный холм
// Специальные препятствия
void addBallisticJump(GameLevel* level, double vx, double vy); // Прыжок по баллистической траектории
void addCliff(GameLevel* level, int height); // Обрыв
void addWhoops(GameLevel* level); // Серия мелких кочек
};