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 all1 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.