Page 1 of 1

Tilejen lisääminen karttaan

Posted: Thu Apr 11, 2013 7:20 pm
by Ize
Yksi pienoinen peli olisi tekeillä jossa tilekarttaan pitäisi lisätä tilejä. Siis ei mitään objekteilla pelailua, vaan tilejen lisäilyjä. En löytänyt haulla, joten vastauksia viisaammilta, kiitos. :D

Re: Tilejen lisääminen karttaan

Posted: Thu Apr 11, 2013 8:11 pm
by Character
Editmap? Vai tarkoitatko että pitäisi kentän kokoa suurentaa?

Tilejen lisääminen karttaan

Posted: Thu Apr 11, 2013 9:01 pm
by Ize
Character wrote:Editmap? Vai tarkoitatko että pitäisi kentän kokoa suurentaa?
Editmap muuttaa kartaa lennossa? Kyse on yhden tilen lisäämisestä kerrallaan valmiiseen karttaan, eikä uuden satunnaisen kartan luomisesta.

Re: Tilejen lisääminen karttaan

Posted: Fri Apr 12, 2013 3:28 pm
by Jonez
Editmap muuttaa tilekartan tietyn tilen id:tä. MakeMap() luo uuden kartan.

Eli jos sinulla on kartta joka on 10*10 tilen kokoinen, niin Editmap map, 0, 1, 1, 100 asettaa taustakerrokseen datan 100 (tilekartan tile-id 100), vasempaan yläkulmaan.

Edit: jos tosiaan haluat muuttaa kartan kokoa niin sano, niin yritetään ratkaista.

Tilejen lisääminen karttaan

Posted: Fri Apr 12, 2013 4:04 pm
by Ize
Ensin en tullut ajatelleeksi, että kartan kokoa pitäisi muuttaa, mutta nyt tarkemmin ajatellen, se on välttämätöntä. Komentoa ei moiseen varmaankaan ole, joten se pitää toteuttaa toisella tapaa?

Toi editmap, my bad, luin komennon ohjeen nopeasti ja koodausskillssit muutenki ruosteessa. :)

Re: Tilejen lisääminen karttaan

Posted: Fri Apr 12, 2013 4:17 pm
by Jonez
Muistaakseni cb kykenee pitämään muistissa vain yhtä karttaa kerrallaan, eli jos et halua käyttää jotain tehtyä karttakirjastoa (tietääkseni ainakin yksi on tehty), niin paras mieleeni tuleva tapa jolla saat kasvatettua kartan koko lennosta on seuraavanlainen:

Pidät kartan dataa muistissa omassa moniulotteisessa taulukossasi.

Code: Select all

Dim MapData(mWidth, mHeight, layerAmount)
Aina kun muokkaat karttaa, muokkaatkin MapData-taulukkoa. Jos muutat kokoa joudut muuttamaan myös MapData-taulukon kokoa ja luomaan itse kartan (MakeMap) uudestaan.

Code: Select all

Dim MapData(mWidth, mHeight, layerAmount)

//Jos kartan kokoa muutetaan, mWidth ja mHeight saavat uuden arvon
If mWidth <> oldWidth Or mHeight <> oldHeight Then
	ClearArray OFF
	ReDim MapData(mWidth, mHeight, layerAmount)
	
	oldWidth = mWidth
	oldHeight = mHeight

	MapData(muokattavaX, muokattavaY, muokattavaLayer) = muokkausId
		
	map = MakeMap(mWidth, mHeight, 32, 32)
	PaintObject map, set

	UpdateMap()
EndIf

//tätä kutsutaan aina kun kartan kokoa on muokattu jollain tapaa
Function updateMap()
	//käydään kartta läpi ja piirretään se uudestaan
	For i = 0 To layerAmount
		For x = 0 To mWidth
			For y = 0 To mHeight
				EditMap map, i, x, y, MapData(x, y, i)
			Next y
		Next x	
	Next i
EndFunction
Huomaa että jos karttaa (omaa kartta-dataa) muokataan muuttamatta kartan kokoa, on turha kutsua updateMap()-funktiota (käytä mieluummin erillistä EditMappia).