Stránka 1 z 3

c# bug(editor map)  Vyřešeno

Napsal: 22 dub 2014 19:03
od agil
Zdravím, dělám v c# editor map. Vytvoříte mapu(obsadíte 2d pole hodnotami) a uložíte do xml. Problém nastává, když načtu mapu z xml . Naprosto to nechápu.
Vypíšu si hodnoty z pole Map.Layer0 - jsou správné, tak jak mají být načtené z xml, jenže v editoru to vypadá jak když je celé pole obsazené pouze poslední hodnotou z mapy. Jako by to pole melo ve stejných buňkách více hodnot - což je nemožné, ale vypadá to tak
Další věc co jsem vypozoroval je, že pokud vytvořím kolizní pole a dám do něj hodnoty z xml, pak nefunguje collision brush. Pokud ho zaplním 0(není kolize) a ne z xml(coz by ho melo taky naplnit nulou), pak fugnuje...zřejmě je problém s tím čtením z xml, ale není mi jasné jaký - poněvadž když přečtu naplněná pole, zdají se v pořádku.

Zasílám program i se zdrojákem.
Pokud chcete vytvořit mapu- stačí dát file-new map a pak musíte ještě dát file- load tileset(ten je přiložen ve slože). Vyberete brush, např. scalable brush, kterým označíte tily v tilesetu a přenesete je na mapu....
Doufám, že mi někdo pomůže, děkuji :D
Ps: Snažím se to debugovat už hodně dlouho, ale stále na nic nepřicházím.

Re: c# bug(editor map)

Napsal: 23 dub 2014 00:45
od CZechBoY
Zdravím,
vidím to na nějakou chybu v metodách DrawLayerXX ve třídě Map.
Když se tam zakomentuje ta podmínka ve 4 zanořených cyklech tak to vykreslí jinej obrázek (ale taky všude stejnej :lol: ) a celkem dost mi z toho pak teče ntb :(
Zkus si to ještě jednou projít, visual studio má celkem dost dobrý debugovací nástroje ;-)

Už se mi v tom moc nechce hrabat, kdyžtak jindy ;-)

Re: c# bug(editor map)

Napsal: 23 dub 2014 14:52
od agil
Hehe, ted sem si uvědomil, že jsem tam nedal ten zdroják. Jak si se dostal k tomu kodu? :D

Re: c# bug(editor map)

Napsal: 23 dub 2014 15:14
od CZechBoY
C# jde převíst zpátky do zdrojáku z exečka.

Re: c# bug(editor map)

Napsal: 23 dub 2014 15:16
od agil
A v těch vykreslovacich metodach podleme chyba nebude.
To pole se obsadi spravne, ale jako by se pak nejak obsadilo znova a to tilem na konci mapy. Ale v kodu nikde nemuzu najit ze by se to melo znovu zaplnovat.

Re: c# bug(editor map)

Napsal: 23 dub 2014 15:17
od CZechBoY
Já nevím jak to vůbec funguje :D ale když jsem dal pryč ten if tak to vykreslovalo jinej obrázek, ale furt stejnej.

Re: c# bug(editor map)

Napsal: 23 dub 2014 15:21
od agil
hmm...no mám tam cyklus, který projíždí tileset...a pokud se hodnota mapy=hodnote v tilesetu, pak se vykresli ten danej obrazek z tilesetu - to je v te podmince..pokud tu podminku zrusis, tak to vykresluje podle toho cyklu, co prochazi tileset, takze ti to asi vykresli az posledni tile =poslední hodnota projetá v cyklu, coz si rikam, ze by teoreticky nemelo? :D zvlastni je, ze normálně to funguje

--- Doplnění předchozího příspěvku (23 Dub 2014 15:32) ---

Takhle, co je pro mě naprosto nepochopitelný je, že Layer0 v Map se zaplní správně, při běhu programu to normálně vypisuju do debug konzole a je to zaplněný správně z xml...jenže když si nechám vypsat na kliknutí Map.Layer0[mousex,mousey], tak to tam vsude hází hodnoty posledního ctverce v mape a ne to co je v layer0. To prostě nemá logiku.
Tak jsem zjistil, že ty hodnoty jsou správné jen chvíli, pak se přepíšou, ještě přijít na to kde a proč ..
Takze - pokud si to vypisu v tom tretim cyklu, ktery projizdi string z xml, tak jsou hodnoty spravne, ale pokud to dam mimo nej, hodnoty uz jsou spatne
http://pastebin.com/gNVGfxzX

Re: c# bug(editor map)

Napsal: 23 dub 2014 17:04
od faraon
Nemáš tu proměnnou uvnitř třetího cyklu jako lokální? Zkus jí deklarovat někde před prvním cyklem nebo úplně na začátku bloku, a zkontroluj že nemáš žádnou další deklaraci nikde jinde, která by jí překryla.

A nezapomeň že Java a C# jsou interpretované jazyky, když vyprodukuješ nějaké EXE, tak svůj zdroják převedeš do bytekódu a přilepíš ho k interpretu, ve skutečnosti se vlastně vůbec nekompiluje...

Re: c# bug(editor map)

Napsal: 23 dub 2014 18:40
od agil
No tak ty pole jsou statický proměnný. Jsem z toho jelen.
Aha, už to asi chápu. Zřejmě je to chyba mojí logiky mechanismu načtení(přiřazení k souřadnicím) hodnot mapy z xml..
Myslel jsem, že to prostě přiřadí postupně ke každý dvojici souřadnic id načtený z xml, ale ono to prostě projede celou mapu a obsadí poslední hodnotou, takže nejspíš pomůže, když upravím ukládání map do xml a to tak, že si uložim i souřadnice pro dané hodnoty.
Myslel jsem že tohle by mohlo fungovat, jak to mam, protože jak ty cykly projíždí pole, projíždí se i hodnoty z xml, ale očividně to asi tak uplne nefunguje :D
Nic jiného mě nenapadá.

Kód: Vybrat vše

 for (int x = 0; x < width / 32; x++)
           {

               for (int y = 0; y < height/ 32; y++)
               {

             
                       for (int c = 0; c < XmlReader.layer0arrayInputParts.Length; c++)
                       {


                           Layer0[x, y] = Convert.ToInt32(XmlReader.layer0arrayInputParts[c])-1;
                     
                         

                       }

Re: c# bug(editor map)

Napsal: 23 dub 2014 20:36
od CZechBoY
Já vůbec nechápu na co tam máš pole s těma číslama od 0 do posledního pole v mapě :D
Takhle to mít uložený můžeš, jen máš asi špatnej výběr. Nebo možná špatnej převod z čísla na texturu :idea:

Re: c# bug(editor map)

Napsal: 23 dub 2014 20:59
od agil
Jaký pole myslis... Layer0 , tam jsou uloženy id v maphe , podle kterých to vykresluje
Špatnej převod z čísla na texturu určité ne, pouzivam to stejný co funguje když vytváří s novou mapu

Re: c# bug(editor map)

Napsal: 24 dub 2014 10:02
od CZechBoY
Nevim, jsou tam asi 4 pole a dělaj jednu věc. Takový trochu zmateční mi to přijde :D