Login Register
Frontpage Code library Pastebin

PositionObjectToTile() ja PositionObjectToMap()

Author: Hedge
Added: 17. kesäkuuta 2012 kello 23.34
Edited: 17. kesäkuuta 2012 kello 23.36
Category: Objektit

Description

PositionObjectToMap() sijoittaa objektin kartalle annetun datanumeron kohdalle. Jos kartalla on useita samoja numeroita, objekti sijoitetaan ylhäältä vasemmalta katsoen ensimmäisen numeron kohdalle. Mikäli pyydettyä numeroa ei löytynyt, palauttaa False. Muutoin palauttaa True. PositionObjectToTile() sijoittaa objektin annettuihin tilekoordinaatteihin. Mikäli koordinaatit ovat kartan ulkopuolella, palauttaa False. Muutoin palauttaa True.

Code

Select all
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Kartassa käytettävä tilekoko
Const TILE_SIZE = 32
// Puolet tilen koosta
Const HALF_TILE = 16
// Voidaan myös korvata muuttujilla:
'Dim TILE_SIZE, HALF_TILE As Integer
'TILE_SIZE = ObjectSizeX( map ) / MapWidth()
'HALF_TILE = TILE_SIZE / 2
// Tilekoko on kuitenkin usein vakio

// Kartan tulee olla tässä muuttujassa. Funktioita voi kuitenkin muokata helposti niin, että ne ottavat parametreiksi karttamuuttujan.
Global gMap As Integer

// By Hedge
// http://www.cbrepository.com/codes/code/74/
// obj = sijoitettava objekti, data_ = etsittävä datanumero
Function PositionObjectToMap( obj As Integer, data_ As Integer )
	Dim x, y As Integer

	For x = 0 To MapWidth()
		For y = 0 To MapHeight()
			If GetMap2( 3, x, y ) = data_ Then
					PositionObject obj, - ( ObjectSizeX( gMap ) / 2 ) + ( x * TILE_SIZE ) - HALF_TILE, - ( - ( ObjectSizeY( gMap ) / 2 ) + ( y * TILE_SIZE ) ) + HALF_TILE
				Return True
			EndIf
		Next y
	Next x
	Return False
EndFunction

// By Hedge
// http://www.cbrepository.com/codes/code/74/
// obj = sijoitettava objekti, x&y = kohdetilen koordinaatit
Function PositionObjectToTile( obj As Integer, x As Integer, y As Integer )
	If x > 0 And x < MapWidth() And y > 0 And y < MapHeight() Then
		PositionObject obj, - ( ObjectSizeX( gMap ) / 2 ) + ( x * TILE_SIZE ) - HALF_TILE, - ( - ( ObjectSizeY( gMap ) / 2 ) + ( y * TILE_SIZE ) ) + HALF_TILE
		Return True
	Else
		Return False
	EndIf
EndFunction

Comments

No comments. You can be first!

Leave a comment

You must be logged in to comment.