Problem z Kreatorem Map (SFML)

0

Cześć!
Mam w planach stworzenie gry, zacząłem jednak od tworzenia narzędzia które ułatwi mi generowanie map.
Chodzi o pewnego rodzaju painta do mapy czyli takie rysowanie tekstur. Zamysł działania jest taki :

  1. Narysuj mapę w kreatorze
  2. Zgraj do pliku rozmiar mapy i pozycje każdej tekstury
  3. Gra wczytuje plik
  4. Ustawia tekstury na podstawie wczytanej tablicy 2d

Na tą porę wygląda to mniej więcej tak.

Bez tytułu.png

Na podstawie screena pewnie widzicie już jaki jest problem :/
Na siatce miały rysować się tekstury, tak jak pędzel w paincie, tak tekstury miały być nakładane na siatkę i tak miała powstawać mapa. Zamiast tego rysuję puste pola.

Generalnie to działa tak:
Tworzę sobie bazę tekstur w mainie i ją uzupełniam, przekazuje ją do klasy cMenuTekstur, żeby uzupełnić kwadraty, które stworzyłem w w konstruktorze, teksturami.
Jeżeli najadę myszką i kliknę to wybiorę kwadrat to tworzę nowy _wybranePole i zapisuje do niego wybrany kwadrat, przekazuję go do maina i potem do funkcji cSiatka. Tam
zastępuję ten na który najechałem myszką na ten, który przekazałem i jak pędzelkiem rysuje już na mapie.

Próbowałem stworzyć klasę rodzic cBazaTekstur dla dzieci cSiatka, cMenuTekstur ale nadal nie działało. Chciałem w ten sposób uniknąć przekazywania tych tekstur ale nic z tego nie wyszło.

Cały projekt na git hub -> https://github.com/quetahi/KreatorMap
Proszę o pomoc, męczę się nad tym już tydzień :/

5

A nie lepiej uzyc https://www.mapeditor.org/ i skupic sie na grze zamiast wymyslac kolo od nowa? :)

1

Na podstawie screena widzicie już jaki jest problem :/

Ja nie widzę. Nie umiem czytać w myślach i nie wiem jaki miałby być porządany efekt.

0

_wybranePole jest kwadratem czyli sf::RectangleShape i jak przypisuje mu kwadrat na który jest nałożona tekstura to On też tą teksturę otrzymuje, dowód:
Bez tytuł123u.png

Narysowałem wybrane pole gdzieś indziej i tam to działa, jeżeli przekazuje do maina on już gubi tą teksturę, przy debugowaniu widać że tekstura jest wczytana:
B123123123z tytułu.png

1

Znalazłem problem !!! <3
Chodziło o to, że ja przekazywałem cały kwadrat, który miał wskaźnik na teksturę, nie wgrywałem tak naprawdę tekstury do kwadratu, myślałem że to właśnie tak działa, że wgrywam wartość tej tekstury a nie wskaźnik na nią.
Jak go przekazywałem to wskaźnik zmieniał swoją wartość, nie widział już tekstury, wskazywał na coś innego, tak ja to rozumiem.
Użyłem returnTexture(), zwraca to wskaźnik na teksturę która ma tylko jeden adres po wczytywaniu jej do programu i ma wartość const, przekazałem wskaźnik i ustawiam go na kwadraty na siatce i działa !

0

To ja może z innej beczki zapytam.

Ten edytorek nie wydaje się skomplikowany i raczej nie będzie posiadał zaawansowanych algorytmów renderowania poglądowej mapy. Nie wolałbyś go stworzyć jako zwykłej, okienkowej aplikacji? Łatwiej by było to wszystko ogarnąć, dzięki gotowym kontrolkom, a i opcji mógłbyś zrobić sobie więcej, niewielkim kosztem. Chyba że koniecznie chcesz go w ten sposób wykonać, np. w ramach ćwiczenia.

0

Tak, trochę nie rozumiałem tych tekstur, kiedyś miałem już taki problem z przekazywaniem tych tekstur, jakoś go po omacku ominąłem ale teraz dopiero wiem jak to działa. Dużo czytałem o przechowywaniu tekstur w sfml, ten problem otworzył mi oczy. Do tego przypomnę sobie jak wczytuje się/zapisuje do pliku. Podszkoliłem trochę wskaźniki :D Ten program jest wyłącznie dla mojego użytku, będzie mi tylko pomagał, masz racje, nie będzie tam nic trudnego. Za Qt zabiorę się po napisaniu gierki ;)

EDIT:
Wszystko śmiga jak powinno, wrzucam efekt końcowy :D

Kreato123rMap.png

Dzięki za zainteresowanie ;)
TEMAT MOŻNA ZAMKNĄĆ!

1 użytkowników online, w tym zalogowanych: 0, gości: 1