# DoorNroll Project Guidelines & Rules ## 1. Mandatory Git Protocol (CRITICAL) - **Always Commit**: Any modifications, features, refactors, or bugfixes must be committed to Git as soon as they are implemented and verified. - **Always Push**: Every commit must be pushed immediately to the remote repository: ```bash git push origin main # Remote: https://git.silverstone.crazedns.ru/iker_ad/DoorNroll.git ``` - **Working Tree**: Keep the Git working tree clean after every task. ## 2. Visual & Geometric Design Rules (Zero-Rounding) - **Zero Rounding**: Absolutely NO circles, rounded corners, or smooth curved UI primitives (`DrawCircle`, `DrawCircleLines`, `DrawSphere`, `DrawRing`, `DrawRectangleRounded`). - **Tactical Industrial Aesthetic**: All shapes must be angular, faceted, rectangular, or polygon-based (hard-surface, military electronics, cyber-noir). - **Color Palette**: High-contrast monochrome, gunmetal, dark slate graphite, and smoked wood base, with saturated functional accents: - Kinetic: `KIN` Titanium White - EMP: `EMP` Cobalt Blue - Overheat: `THM` Amber - Corrosive: `ACD` Acid Green - Glitch: `GLT` Neon Violet - Nanite: `NAN` Carmine / Crimson - Active Firing Pin / Critical HUD: Pure White & Crimson ## 3. 3D Rendering Architecture - **Pipeline Order in Rooms**: 1. Opaque geometry rendered first (floor, walls, ceiling, furniture). 2. Flush opaque batch (`rlDrawRenderBatchActive()`). 3. Translucent pass with `BeginBlendMode(BLEND_ALPHA)`, `rlDisableDepthMask()`, `rlDisableBackfaceCulling()` (godrays, glass, light pools, energy fields). 4. Flush translucent batch (`rlDrawRenderBatchActive()`), restore depth mask & blend mode. 5. Post-process shader pass (`beginPostProcess` / `endPostProcess`). ## 4. Build & Environment - **Platform**: Windows, MSVC C++20, CMake 3.20+, Raylib 5.5. - **Verification**: Always run CMake build in Release mode before concluding work: ```powershell & "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" --build build --config Release ```