mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-08 14:59:43 +01:00
3.4 KiB
3.4 KiB
Review PR #241 — feat(editor): area fill: Enter finishes an area, Esc drops the outline, a list of filled areas to change later
Autor: @miloszunio · base: feat/gl46-migration · 7 plików, +751/−97
https://github.com/MaSzyna-EU07/maszyna/pull/241
Werdykt: Request changes — test w edytorze, undo przez regenerację, opis formatu
Podsumowanie
Narzędzie wypełniania obszaru dostaje cykl życia: Enter kończy obszar, Esc porzuca kontur, lista wypełnionych obszarów (Zmień / Pokaż / Usuń), undo dla dodania/zmiany/usunięcia, ziarno std::mt19937 przechowywane z obszarem. Trwałość w nowym editor/editorFillStore.{hpp,cpp} jako linie-komentarze w plikach warstw, modele nazwane <id>_<n>.
Co jest dobrze
- Realny problem UX (nie dało się zakończyć konturu) rozwiązany kompletnie, z listą i edycją.
- Format w liniach-komentarzach — symulator je pomija, więc sceneria z tą funkcją dalej czyta się w obecnym wydaniu (zgodnie z
CLAUDE.md). fill_storewzorowany na istniejącymswitch_store— spójna architektura.
Uwagi blokujące
- Nie uruchomione w edytorze („Built with -fsyntax-only… Not run in the editor yet”). Przy tej skali zmian (zapis do pliku, usuwanie modeli po nazwie) proszę o przejście scenariusza z opisu, najlepiej skryptem
EU07_EDITOR_SELFTESTna kopii scenerii: kontur → Enter → Zmień → przesuń punkt → Enter → Usuń → Undo → zapis → wczytanie → Zmień. - Opis i kod mówią o różnych znacznikach. Opis PR:
//$f; kod (kMark,editormarks, komentarz w.hpp)://$w. Proszę ujednolicić opis i upewnić się, że//$wnie koliduje z niczym w Rainsted/StarterNG ani w innych narzędziach piszących do scenerii. - Undo zmiany/usunięcia odtwarza modele z ziarna.
std::uniform_real_distributionjest zależne od implementacji biblioteki standardowej (MSVC ≠ libstdc++), a lista szablonów z banku węzłów może się zmienić między sesjami. W tej samej sesji i tym samym buildzie to zadziała, ale nie jest to „te same obiekty” w ogólności (CLAUDE.md: nie polegać na zachowaniu nieprzenośnym). Bezpieczniej: przed usunięciem zrobić snapshot usuwanych węzłów (export_as_text) i przy undo wstawić dokładnie je. Jeśli zostaje regeneracja — opisać ograniczenie w komentarzu. - Identyfikacja modeli po nazwie
fillN_k.owns()uzna każdy węzeł o nazwiefill1_7za część obszarufill1— także ręcznie nazwany przez autora scenerii. „Zmień”/„Usuń” go skasuje.next_id()sprawdza tylkofillN_0. Rozważyć mniej kolizyjny prefiks (np.$fill1_7) albo zapis listy nazw modeli w//$w.
Uwagi (Sonar / styl)
std::string seed, density, spacing, …w jednej deklaracji — S1659.erase(std::remove_if(...))→std::erase_if(S6165);std::find_if(begin, end, …)→std::ranges::find_if(S6197).g_areas,g_loaded— niestałe zmienne globalne (S5421). Jeśliswitch_storerobi tak samo, to OK dla spójności, ale lepiej trzymać stan w obiekcie należącym doeditor_mode.- Magiczne
100000(limit punktów konturu) → nazwana stała.
Pytanie o gałąź
- Funkcja edytora trafia do
feat/gl46-migration(#216, draft, merge po 26.11). Czy to celowe (narzędzie istnieje tylko na tej gałęzi)? Jeśli kod narzędzia jest też namaster,CLAUDE.mdkaże robić funkcje na własnej gałęzi odmaster.