Merge pull request 'map_gen_refactor' (#18) from map_gen_refactor into master

Reviewed-on: #18
This commit is contained in:
Bartosz Wieczorek 2022-04-23 19:30:50 +02:00
commit 5691ef09df
27 changed files with 243 additions and 1268 deletions

View File

@ -1,6 +1,6 @@
class BreadthSearchAlgorithm: class BreadthSearchAlgorithm:
def __init__(self, start, target): def __init__(self, start, target, mapArray):
self.graph = self.getData() self.graph = self.getData(mapArray)
self.start = start self.start = start
self.target = target self.target = target
@ -18,20 +18,21 @@ class BreadthSearchAlgorithm:
visited.append(node[0]) visited.append(node[0])
visitedPrint.append(node) visitedPrint.append(node)
if node[0] == self.target: if node[0] == self.target:
print('final') # print('final')
print(visitedPrint) # print(visitedPrint)
return visited return visitedPrint
neighbours = self.graph.get(node[0], []) neighbours = self.graph.get(node[0], [])
for neighbour in neighbours: for neighbour in neighbours:
can_go.append([neighbour, node[0]]) can_go.append([neighbour, node[0]])
# print(visited) # print(visited)
return -1 return -1
def getData(self): def getData(self, mapArray):
with open("data.txt", "r") as f: with open("data.txt", "r") as f:
matrix = [ # matrix = [
[int(x) for x in line.split(",") if x != "\n"] for line in f.readlines() # [int(x) for x in line.split(",") if x != "\n"] for line in f.readlines()
] # ]
matrix = mapArray
adj = {} adj = {}
for yi, yvalue in enumerate(matrix): for yi, yvalue in enumerate(matrix):
for xi, xvalue in enumerate(matrix): for xi, xvalue in enumerate(matrix):

View File

@ -1,43 +0,0 @@
import pygame.image
class trashmaster(pygame.sprite.Sprite):
def __init__(self, x, y, img):
super().__init__()
self.width = x
self.height = y
self.x = 0
self.y = 0
self.image = pygame.image.load(img)
self.image = pygame.transform.scale(self.image, (self.width, self.height))
self.rect = self.image.get_rect()
def movement(self, key, vel):
if key == pygame.K_LEFT:
self.x -= vel
if key == pygame.K_RIGHT:
self.x += vel
if key == pygame.K_UP:
self.y -= vel
if key == pygame.K_DOWN:
self.y += vel
return (self.x, self.y)
def move_up(self):
self.y -= 64
def move_down(self):
self.y += 64
def move_right(self):
self.x += 64
def move_left(self):
self.x -= 64

View File

@ -1,14 +1,10 @@
import pygame.image import pygame as pg
class Dump(pygame.sprite.Sprite): class Dump(pg.sprite.Sprite):
# wysypisko # wysypisko
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.glass = [] self.glass = []
self.paper = [] self.paper = []
self.bio = [] self.bio = []
self.other_trash = [] self.other_trash = []

View File

@ -23,7 +23,4 @@ class House(pygame.sprite.Sprite):
def get_random_house_texture(self): def get_random_house_texture(self):
files = os.listdir(self.base_path) files = os.listdir(self.base_path)
value = randint(0, len(files)-1) value = randint(0, len(files)-1)
return files[value] return files[value]

13
game_objects/obstacle.py Normal file
View File

@ -0,0 +1,13 @@
import pygame as pg
class Obstacle(pg.sprite.Sprite):
def __init__(self, game, x, y, w, h):
self.groups = game.walls
pg.sprite.Sprite.__init__(self, self.groups)
self.game = game
self.rect = pg.Rect(x, y, w, h)
self.hit_rect = self.rect
self.x = x
self.y = y
self.rect.x = x
self.rect.y = y

47
game_objects/player.py Normal file
View File

@ -0,0 +1,47 @@
import pygame as pg
from settings import *
from game_objects import utils
vec = pg.math.Vector2
class Player(pg.sprite.Sprite):
def __init__(self, game, x, y):
self.groups = game.agentSprites
pg.sprite.Sprite.__init__(self, self.groups)
self.game = game
self.image = game.player_img
self.rect = self.image.get_rect()
self.rect.center = (x,y)
self.hit_rect = PLAYER_HIT_RECT
self.hit_rect.center = self.rect.center
self.vel = vec(0, 0)
self.pos = vec(x, y)
self.rot = 0
def get_keys(self):
self.rot_speed = 0
self.vel = vec(0, 0)
keys = pg.key.get_pressed()
if keys[pg.K_LEFT] or keys[pg.K_a]:
self.rot_speed = PLAYER_ROT_SPEED
if keys[pg.K_RIGHT] or keys[pg.K_d]:
self.rot_speed = -PLAYER_ROT_SPEED
if keys[pg.K_UP] or keys[pg.K_w]:
self.vel = vec(PLAYER_SPEED, 0).rotate(-self.rot)
if keys[pg.K_DOWN] or keys[pg.K_s]:
self.vel = vec(-PLAYER_SPEED / 2, 0).rotate(-self.rot)
def update(self):
self.get_keys()
self.rot = (self.rot + self.rot_speed * self.game.dt) % 360
self.image = pg.transform.rotate(self.game.player_img, self.rot)
self.rect = self.image.get_rect()
self.rect.center = self.pos
self.pos += self.vel * self.game.dt
self.hit_rect.centerx = self.pos.x
utils.collide_with_walls(self, self.game.wallTiles, 'x')
self.hit_rect.centery = self.pos.y
utils.collide_with_walls(self, self.game.wallTiles, 'y')
self.rect.center = self.hit_rect.center

18
game_objects/trash.py Normal file
View File

@ -0,0 +1,18 @@
import pygame as pg
class trash(pg.sprite.Sprite):
def __init__(self,x,y,img, type):
super().__init__()
self.width=16
self.height=16
self.type = type
self.x = x
self.y = y
self.image = pg.image.load(img)
self.image = pg.transform.scale(self.image, (self.x,self.y))
self.rect = self.image.get_rect()

View File

@ -1,6 +1,6 @@
import pygame.image import pygame as pg
class trashbin(pygame.sprite.Sprite): class trashbin(pg.sprite.Sprite):
def __init__(self,x,y,img, type): def __init__(self,x,y,img, type):
super().__init__() super().__init__()
@ -24,6 +24,6 @@ class trashbin(pygame.sprite.Sprite):
self.y = y self.y = y
# load trashbin image # load trashbin image
self.image = pygame.image.load(img) self.image = pg.image.load(img)
self.image = pygame.transform.scale(self.image, (self.x,self.y)) self.image = pg.transform.scale(self.image, (self.x,self.y))
self.rect = self.image.get_rect() self.rect = self.image.get_rect()

24
game_objects/utils.py Normal file
View File

@ -0,0 +1,24 @@
import pygame as pg
def collide_hit_rect(one, two):
return one.hit_rect.colliderect(two.rect)
def collide_with_walls(sprite, group, dir):
if dir == 'x':
hits = pg.sprite.spritecollide(sprite, group, False, collide_hit_rect)
if hits:
if hits[0].rect.centerx > sprite.hit_rect.centerx:
sprite.pos.x = hits[0].rect.left - sprite.hit_rect.width / 2
if hits[0].rect.centerx < sprite.hit_rect.centerx:
sprite.pos.x = hits[0].rect.right + sprite.hit_rect.width / 2
sprite.vel.x = 0
sprite.hit_rect.centerx = sprite.pos.x
if dir == 'y':
hits = pg.sprite.spritecollide(sprite, group, False, collide_hit_rect)
if hits:
if hits[0].rect.centery > sprite.hit_rect.centery:
sprite.pos.y = hits[0].rect.top - sprite.hit_rect.height / 2
if hits[0].rect.centery < sprite.hit_rect.centery:
sprite.pos.y = hits[0].rect.bottom + sprite.hit_rect.height / 2
sprite.vel.y = 0
sprite.hit_rect.centery = sprite.pos.y

134
main.py
View File

@ -1,16 +1,15 @@
from calendar import c from calendar import c
from game_objects.player import Player
import pygame as pg import pygame as pg
import sys import sys
from os import path from os import path
import SearchBfs
from map import * from map import *
# from agent import trashmaster # from agent import trashmaster
# from house import House # from house import House
from sprites import *
from settings import * from settings import *
from map_new import map_new from map import map
from map_new import map_utils from map import map_utils
from SearchBfs import * from SearchBfs import *
import math import math
@ -19,48 +18,51 @@ class Game():
def __init__(self): def __init__(self):
pg.init() pg.init()
self.clock = pg.time.Clock()
self.screen = pg.display.set_mode((WIDTH, HEIGHT)) self.screen = pg.display.set_mode((WIDTH, HEIGHT))
pg.display.set_caption("Trashmaster") pg.display.set_caption("Trashmaster")
self.clock = pg.time.Clock()
self.load_data() self.load_data()
self.init_game()
self.init_bfs()
def init_game(self):
# initialize all variables and do all the setup for a new game
# sprite groups and map array for calculations
(self.roadTiles, self.wallTiles), self.mapArray = map.get_tiles()
self.agentSprites = pg.sprite.Group()
# player obj
self.player = Player(self, 32, 100)
# camera obj
self.camera = map_utils.Camera(MAP_WIDTH_PX, MAP_HEIGHT_PX)
# other
self.draw_debug = False
def init_bfs(self):
start_node = (0, 0)
target_node = (18, 18)
find_path = BreadthSearchAlgorithm(start_node, target_node, self.mapArray)
path = find_path.bfs()
# print(path)
realPath = []
nextNode = target_node
for i in range(len(path)-1, 0, -1):
node = path[i]
if node[0] == nextNode:
realPath.insert(0, node[0])
nextNode = node[1]
print(realPath)
def load_data(self): def load_data(self):
game_folder = path.dirname(__file__) game_folder = path.dirname(__file__)
img_folder = path.join(game_folder, 'resources/textures') img_folder = path.join(game_folder, 'resources/textures')
map_folder = path.join(img_folder, 'map')
self.map = TiledMap(path.join(map_folder, 'roads.tmx'))
self.map_img = self.map.make_map()
self.map_rect = self.map_img.get_rect()
self.player_img = pg.image.load(path.join(img_folder, PLAYER_IMG)).convert_alpha() self.player_img = pg.image.load(path.join(img_folder,PLAYER_IMG)).convert_alpha()
self.player_img = pg.transform.scale(self.player_img, (PLAYER_WIDTH, PLAYER_HEIGHT)) self.player_img = pg.transform.scale(self.player_img, (PLAYER_WIDTH,PLAYER_HEIGHT) )
self.wall_img = pg.image.load(path.join(img_folder, WALL_IMG)).convert_alpha()
self.wall_img = pg.transform.scale(self.wall_img, (TILESIZE, TILESIZE))
# self.new_map = map_new.getMap()
def new(self):
# initialize all variables and do all the setup for a new game
# sprite groups and map array
(self.roadTiles, self.wallTiles), self.mapArray = map_new.getTiles()
self.all_sprites = pg.sprite.Group()
self.walls = pg.sprite.Group()
for tile_object in self.map.tmxdata.objects:
if tile_object.name == 'player':
self.player = Player(self, tile_object.x, tile_object.y)
if tile_object.name == 'wall':
Obstacle(self, tile_object.x, tile_object.y, tile_object.width, tile_object.height)
self.camera = Camera(MAP_WIDTH_PX, MAP_HEIGHT_PX)
self.draw_debug = False
# self.screen.blit(self.map_img, self.camera.apply_rect(self.map_rect))
def run(self): def run(self):
# game loop - set self.playing = False to end the game # game loop - set self.playing = False to end the game
self.playing = True self.playing = True
@ -76,27 +78,25 @@ class Game():
def update(self): def update(self):
# update portion of the game loop # update portion of the game loop
self.all_sprites.update() self.agentSprites.update()
self.camera.update(self.player) self.camera.update(self.player)
# pygame.display.update() # pygame.display.update()
def draw_grid(self):
for x in range(0, WIDTH, TILESIZE):
pg.draw.line(self.screen, LIGHTGREY, (x, 0), (x, HEIGHT))
for y in range(0, HEIGHT, TILESIZE):
pg.draw.line(self.screen, LIGHTGREY, (0, y), (WIDTH, y))
def draw(self): def draw(self):
#display fps as window title
pg.display.set_caption("{:.2f}".format(self.clock.get_fps())) pg.display.set_caption("{:.2f}".format(self.clock.get_fps()))
map_new.renderTiles(self.roadTiles, self.screen, self.camera) #rerender map
map_new.renderTiles(self.wallTiles, self.screen, self.camera, self.draw_debug) map.render_tiles(self.roadTiles, self.screen, self.camera)
map.render_tiles(self.wallTiles, self.screen, self.camera, self.draw_debug)
for sprite in self.all_sprites:
#rerender additional sprites
for sprite in self.agentSprites:
self.screen.blit(sprite.image, self.camera.apply(sprite)) self.screen.blit(sprite.image, self.camera.apply(sprite))
if self.draw_debug: if self.draw_debug:
pg.draw.rect(self.screen, CYAN, self.camera.apply_rect(sprite.hit_rect), 1) pg.draw.rect(self.screen, CYAN, self.camera.apply_rect(sprite.hit_rect), 1)
#finally update screen
pg.display.flip() pg.display.flip()
def events(self): def events(self):
@ -108,8 +108,8 @@ class Game():
self.quit() self.quit()
if event.key == pg.K_h: if event.key == pg.K_h:
self.draw_debug = not self.draw_debug self.draw_debug = not self.draw_debug
if event.type == pygame.MOUSEBUTTONUP: if event.type == pg.MOUSEBUTTONUP:
pos = pygame.mouse.get_pos() pos = pg.mouse.get_pos()
clicked_coords = [math.floor(pos[0] / TILESIZE), math.floor(pos[1] / TILESIZE)] clicked_coords = [math.floor(pos[0] / TILESIZE), math.floor(pos[1] / TILESIZE)]
print(clicked_coords) print(clicked_coords)
@ -118,44 +118,10 @@ class Game():
def show_go_screen(self): def show_go_screen(self):
pass pass
# def main():
# game = WalleGame()
# game.update_window()
# smieciara_object = trashmaster(16,16,"./resources/textures/garbagetruck/trashmaster_blu.png")
# game.draw_object(smieciara_object, (100, 100))
# #house_object = House(20, 20)
# # Test draw house object
# #game.draw_object(house_object, (20,20))
# game.update_window()
# running = True
# while running:
# for event in pygame.event.get():
# if event.type == pygame.QUIT:
# running = False
# if event.type == pygame.KEYDOWN:
# game.reloadMap()
# game.draw_object(smieciara_object, smieciara_object.movement(event.key, 16))
# game.update_window()
# pygame.quit()
# if __name__ == '__main__':
# main()
start_node = (0, 0)
target_node = (2, 2)
find_path = BreadthSearchAlgorithm(start_node, target_node)
# create the game object # create the game object
g = Game() g = Game()
g.show_start_screen() g.show_start_screen()
while True: while True:
g.new()
path_found = find_path.bfs()
g.run() g.run()
g.show_go_screen() g.show_go_screen()

67
map.py
View File

@ -1,67 +0,0 @@
import pygame as pg
from settings import *
import pytmx
# config
# TILE_SIZE = 16
# def preparedMap(screenSize):
# tileImage = pg.image.load('tile1.png')
# surface = pg.Surface(screenSize)
# for x in range(0, screenSize[0], TILE_SIZE):
# for y in range(0, screenSize[1], TILE_SIZE):
# surface.blit(tileImage, (x, y))
# return surface
def collide_hit_rect(one, two):
return one.hit_rect.colliderect(two.rect)
class TiledMap:
#loading file
def __init__(self, filename):
tm = pytmx.load_pygame(filename, pixelalpha=True)
self.width = tm.width * tm.tilewidth
self.height = tm.height * tm.tileheight
self.tmxdata = tm
#rendering map
def render(self, surface):
ti = self.tmxdata.get_tile_image_by_gid
for layer in self.tmxdata.visible_layers:
if isinstance(layer, pytmx.TiledTileLayer):
for x, y, gid, in layer:
tile = ti(gid)
if tile:
surface.blit(tile, (x * self.tmxdata.tilewidth, y * self.tmxdata.tilewidth))
def make_map(self):
temp_surface = pg.Surface((self.width, self.height))
self.render(temp_surface)
return temp_surface
class Camera:
def __init__(self,width,height):
self.camera = pg.Rect(0,0, width, height)
self.width = width
self.height = height
def apply(self,entity):
return entity.rect.move(self.camera.topleft)
def apply_rect(self, rect):
return rect.move(self.camera.topleft)
def update(self,target):
x = -target.rect.x + int(WIDTH/2)
y = -target.rect.y + int(HEIGHT / 2)
# limit scrolling to map size
x = min(0, x) # left
y = min(0, y) # top
x = max(-(self.width - WIDTH), x) # right
y = max(-(self.height - HEIGHT), y) # bottom
self.camera = pg.Rect(x, y, self.width, self.height)

24
map/camera.py Normal file
View File

@ -0,0 +1,24 @@
from settings import *
class Camera:
def __init__(self,width,height):
self.camera = pg.Rect(0,0, width, height)
self.width = width
self.height = height
def apply(self,entity):
return entity.rect.move(self.camera.topleft)
def apply_rect(self, rect):
return rect.move(self.camera.topleft)
def update(self,target):
x = -target.rect.x + int(WIDTH/2)
y = -target.rect.y + int(HEIGHT / 2)
# limit scrolling to map size
x = min(0, x) # left
y = min(0, y) # top
x = max(-(self.width - WIDTH), x) # right
y = max(-(self.height - HEIGHT), y) # bottom
self.camera = pg.Rect(x, y, self.width, self.height)

16
map/map.py Normal file
View File

@ -0,0 +1,16 @@
from map import map_utils
from map import map_pattern
import pygame as pg
from settings import *
def get_tiles():
array = map_utils.generate_map()
pattern = map_pattern.get_pattern()
tiles = map_utils.get_sprites(array, pattern)
return tiles, array
def render_tiles(tiles, screen, camera, debug=False):
for tile in tiles:
screen.blit(tile.image, camera.apply_rect(tile.rect))
if debug:
pg.draw.rect(screen, RED, camera.apply_rect(tile.rect), 1)

View File

@ -7,11 +7,11 @@ TEXTURES_DIR = HERE_DIR.rpartition(os.sep)[0]+"\\resources\\textures"
ROAD_DIR = TEXTURES_DIR+"\\road\\" ROAD_DIR = TEXTURES_DIR+"\\road\\"
BUILDING_DIR = TEXTURES_DIR+"\\buliding\\" BUILDING_DIR = TEXTURES_DIR+"\\buliding\\"
def loadImg(path): def load_img(path):
return pg.image.load(path) return pg.image.load(path)
def getPattern(): def get_pattern():
return { return {
0: loadImg(ROAD_DIR+"GTA2_TILE_257.bmp"), 0: load_img(ROAD_DIR+"GTA2_TILE_257.bmp"),
1: loadImg(BUILDING_DIR+"GTA2_TILE_187.bmp"), 1: load_img(BUILDING_DIR+"GTA2_TILE_187.bmp"),
} }

View File

@ -1,16 +1,16 @@
import random import random
import pygame as pg import pygame as pg
from settings import * from settings import *
from map_new.tile import Tile from map.tile import Tile
# tworzenie pustego arraya o podanych wymiarach # tworzenie pustego arraya o podanych wymiarach
def getBlankMapArray(): def get_blank_map_array():
map = [[0 for x in range(0,MAP_WIDTH)] for y in range (0,MAP_HEIGHT)] map = [[0 for x in range(0,MAP_WIDTH)] for y in range (0,MAP_HEIGHT)]
return map return map
# generowanie obiektow na mapie # generowanie obiektow na mapie
def generateMap(): def generate_map():
map = getBlankMapArray() map = get_blank_map_array()
for i in range(0, 20): for i in range(0, 20):
x = random.randint(0, MAP_WIDTH-1) x = random.randint(0, MAP_WIDTH-1)
y = random.randint(0, MAP_HEIGHT-1) y = random.randint(0, MAP_HEIGHT-1)
@ -18,7 +18,7 @@ def generateMap():
return map return map
# tworzenie grup sprite'ow # tworzenie grup sprite'ow
def getSprites(map, pattern): def get_sprites(map, pattern):
roadTiles = pg.sprite.Group() roadTiles = pg.sprite.Group()
wallTiles = pg.sprite.Group() wallTiles = pg.sprite.Group()
@ -36,6 +36,29 @@ def getSprites(map, pattern):
return roadTiles, wallTiles return roadTiles, wallTiles
class Camera:
def __init__(self,width,height):
self.camera = pg.Rect(0,0, width, height)
self.width = width
self.height = height
def apply(self,entity):
return entity.rect.move(self.camera.topleft)
def apply_rect(self, rect):
return rect.move(self.camera.topleft)
def update(self,target):
x = -target.rect.x + int(WIDTH/2)
y = -target.rect.y + int(HEIGHT / 2)
# limit scrolling to map size
x = min(0, x) # left
y = min(0, y) # top
x = max(-(self.width - WIDTH), x) # right
y = max(-(self.height - HEIGHT), y) # bottom
self.camera = pg.Rect(x, y, self.width, self.height)

View File

@ -1,16 +0,0 @@
from map_new import map_utils
from map_new import map_pattern
import pygame as pg
from settings import *
def getTiles():
array = map_utils.generateMap()
pattern = map_pattern.getPattern()
tiles = map_utils.getSprites(array, pattern)
return tiles, array
def renderTiles(tiles, screen, camera, debug=False):
for tile in tiles:
screen.blit(tile.image, camera.apply_rect(tile.rect))
if debug:
pg.draw.rect(screen, RED, camera.apply_rect(tile.rect), 1)

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.8" tiledversion="1.8.2" name="Ground" tilewidth="1" tileheight="1" tilecount="0" columns="0"/>

View File

@ -1,142 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.8" tiledversion="1.8.2" name="Roads" tilewidth="64" tileheight="64" tilecount="46" columns="0">
<grid orientation="orthogonal" width="1" height="1"/>
<tile id="0">
<image width="64" height="64" source="road/GTA2_TILE_257.bmp"/>
</tile>
<tile id="1">
<image width="64" height="64" source="road/GTA2_TILE_262.bmp"/>
</tile>
<tile id="2">
<image width="64" height="64" source="road/GTA2_TILE_263.bmp"/>
</tile>
<tile id="3">
<image width="64" height="64" source="road/GTA2_TILE_268.bmp"/>
</tile>
<tile id="4">
<image width="64" height="64" source="road/GTA2_TILE_270.bmp"/>
</tile>
<tile id="5">
<image width="64" height="64" source="road/GTA2_TILE_272.bmp"/>
</tile>
<tile id="6">
<image width="64" height="64" source="road/GTA2_TILE_273.bmp"/>
</tile>
<tile id="7">
<image width="64" height="64" source="road/GTA2_TILE_275.bmp"/>
</tile>
<tile id="8">
<image width="64" height="64" source="road/GTA2_TILE_278.bmp"/>
</tile>
<tile id="9">
<image width="64" height="64" source="road/GTA2_TILE_279.bmp"/>
</tile>
<tile id="10">
<image width="64" height="64" source="road/GTA2_TILE_673.bmp"/>
</tile>
<tile id="11">
<image width="64" height="64" source="road/GTA2_TILE_681.bmp"/>
</tile>
<tile id="12">
<image width="64" height="64" source="road/GTA2_TILE_682.bmp"/>
</tile>
<tile id="14">
<image width="64" height="64" source="road/GTA2_TILE_684.bmp"/>
</tile>
<tile id="15">
<image width="64" height="64" source="road/GTA2_TILE_687.bmp"/>
</tile>
<tile id="16">
<image width="64" height="64" source="road/GTA2_TILE_689.bmp"/>
</tile>
<tile id="17">
<image width="64" height="64" source="road/GTA2_TILE_695.bmp"/>
</tile>
<tile id="18">
<image width="64" height="64" source="road/GTA2_TILE_697.bmp"/>
</tile>
<tile id="19">
<image width="64" height="64" source="road/GTA2_TILE_698.bmp"/>
</tile>
<tile id="20">
<image width="64" height="64" source="road/GTA2_TILE_699.bmp"/>
</tile>
<tile id="21">
<image width="64" height="64" source="road/GTA2_TILE_700.bmp"/>
</tile>
<tile id="22">
<image width="64" height="64" source="road/GTA2_TILE_703.bmp"/>
</tile>
<tile id="23">
<image width="64" height="64" source="road/GTA2_TILE_803.bmp"/>
</tile>
<tile id="24">
<image width="64" height="64" source="road/GTA2_TILE_806.bmp"/>
</tile>
<tile id="25">
<image width="64" height="64" source="road/GTA2_TILE_807.bmp"/>
</tile>
<tile id="26">
<image width="64" height="64" source="road/GTA2_TILE_810.bmp"/>
</tile>
<tile id="27">
<image width="64" height="64" source="road/GTA2_TILE_812.bmp"/>
</tile>
<tile id="28">
<image width="64" height="64" source="road/GTA2_TILE_814.bmp"/>
</tile>
<tile id="29">
<image width="64" height="64" source="road/GTA2_TILE_815.bmp"/>
</tile>
<tile id="30">
<image width="64" height="64" source="road/GTA2_TILE_816.bmp"/>
</tile>
<tile id="31">
<image width="64" height="64" source="road/GTA2_TILE_817.bmp"/>
</tile>
<tile id="32">
<image width="64" height="64" source="road/GTA2_TILE_821.bmp"/>
</tile>
<tile id="33">
<image width="64" height="64" source="road/GTA2_TILE_829.bmp"/>
</tile>
<tile id="34">
<image width="64" height="64" source="road/GTA2_TILE_830.bmp"/>
</tile>
<tile id="35">
<image width="64" height="64" source="road/GTA2_TILE_967.bmp"/>
</tile>
<tile id="36">
<image width="64" height="64" source="road/GTA2_TILE_969.bmp"/>
</tile>
<tile id="37">
<image width="64" height="64" source="road/GTA2_TILE_972.bmp"/>
</tile>
<tile id="38">
<image width="64" height="64" source="road/GTA2_TILE_975.bmp"/>
</tile>
<tile id="39">
<image width="64" height="64" source="road/GTA2_TILE_976.bmp"/>
</tile>
<tile id="40">
<image width="64" height="64" source="road/GTA2_TILE_977.bmp"/>
</tile>
<tile id="41">
<image width="64" height="64" source="road/GTA2_TILE_988.bmp"/>
</tile>
<tile id="42">
<image width="64" height="64" source="road/GTA2_TILE_991.bmp"/>
</tile>
<tile id="44">
<image width="64" height="64" source="edge/GTA2_TILE_573.bmp"/>
</tile>
<tile id="45">
<image width="64" height="64" source="edge/GTA2_TILE_574.bmp"/>
</tile>
<tile id="46">
<image width="64" height="64" source="edge/GTA2_TILE_688.bmp"/>
</tile>
<tile id="47">
<image width="64" height="64" source="edge/GTA2_TILE_693.bmp"/>
</tile>
</tileset>

View File

@ -1,49 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.8" tiledversion="1.8.2" name="Trash" tilewidth="32" tileheight="30" tilecount="15" columns="0">
<grid orientation="orthogonal" width="1" height="1"/>
<tile id="0">
<image width="16" height="16" source="misc/GTA2_CODE OBJECT_561.bmp"/>
</tile>
<tile id="1">
<image width="32" height="30" source="misc/GTA2_CODE OBJECT_1061.bmp"/>
</tile>
<tile id="2">
<image width="32" height="30" source="misc/GTA2_CODE OBJECT_1062.bmp"/>
</tile>
<tile id="3">
<image width="32" height="30" source="misc/GTA2_CODE OBJECT_1063.bmp"/>
</tile>
<tile id="4">
<image width="32" height="24" source="misc/GTA2_MAP OBJECT_1103.bmp"/>
</tile>
<tile id="5">
<image width="32" height="26" source="misc/GTA2_MAP OBJECT_1104.bmp"/>
</tile>
<tile id="6">
<image width="30" height="28" source="misc/GTA2_MAP OBJECT_1106.bmp"/>
</tile>
<tile id="7">
<image width="16" height="16" source="misc/GTA2_MAP OBJECT_1115.bmp"/>
</tile>
<tile id="8">
<image width="16" height="16" source="misc/GTA2_MAP OBJECT_1127.bmp"/>
</tile>
<tile id="10">
<image width="16" height="14" source="misc/GTA2_MAP OBJECT_1172.bmp"/>
</tile>
<tile id="11">
<image width="16" height="14" source="misc/GTA2_MAP OBJECT_1175.bmp"/>
</tile>
<tile id="9">
<image width="14" height="10" source="misc/GTA2_MAP OBJECT_1131.bmp"/>
</tile>
<tile id="12">
<image width="16" height="16" source="misc/GTA2_MAP OBJECT_1188.bmp"/>
</tile>
<tile id="13">
<image width="20" height="18" source="misc/GTA2_MAP OBJECT_1189.bmp"/>
</tile>
<tile id="14">
<image width="20" height="27" source="misc/GTA2_USER OBJECT_1294.bmp"/>
</tile>
</tileset>

View File

@ -1,139 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.8" tiledversion="1.8.2" name="Walls" tilewidth="64" tileheight="64" tilecount="45" columns="0">
<grid orientation="orthogonal" width="1" height="1"/>
<tile id="0">
<image width="64" height="64" source="edge/GTA2_TILE_473.bmp"/>
</tile>
<tile id="1">
<image width="64" height="64" source="edge/GTA2_TILE_474.bmp"/>
</tile>
<tile id="2">
<image width="64" height="64" source="edge/GTA2_TILE_475.bmp"/>
</tile>
<tile id="3">
<image width="64" height="64" source="edge/GTA2_TILE_561.bmp"/>
</tile>
<tile id="4">
<image width="64" height="64" source="edge/GTA2_TILE_194.bmp"/>
</tile>
<tile id="5">
<image width="64" height="64" source="edge/GTA2_TILE_196.bmp"/>
</tile>
<tile id="6">
<image width="64" height="64" source="edge/GTA2_TILE_216.bmp"/>
</tile>
<tile id="7">
<image width="64" height="64" source="edge/GTA2_TILE_222.bmp"/>
</tile>
<tile id="8">
<image width="64" height="64" source="edge/GTA2_TILE_608.bmp"/>
</tile>
<tile id="9">
<image width="64" height="64" source="edge/GTA2_TILE_612.bmp"/>
</tile>
<tile id="10">
<image width="64" height="64" source="edge/GTA2_TILE_619.bmp"/>
</tile>
<tile id="11">
<image width="64" height="64" source="buliding/GTA2_TILE_25.bmp"/>
</tile>
<tile id="12">
<image width="64" height="64" source="buliding/GTA2_TILE_26.bmp"/>
</tile>
<tile id="13">
<image width="64" height="64" source="buliding/GTA2_TILE_37.bmp"/>
</tile>
<tile id="14">
<image width="64" height="64" source="buliding/GTA2_TILE_112.bmp"/>
</tile>
<tile id="15">
<image width="64" height="64" source="buliding/GTA2_TILE_187.bmp"/>
</tile>
<tile id="16">
<image width="64" height="64" source="buliding/GTA2_TILE_231.bmp"/>
</tile>
<tile id="17">
<image width="64" height="64" source="buliding/GTA2_TILE_271.bmp"/>
</tile>
<tile id="18">
<image width="64" height="64" source="buliding/GTA2_TILE_280.bmp"/>
</tile>
<tile id="19">
<image width="64" height="64" source="buliding/GTA2_TILE_296.bmp"/>
</tile>
<tile id="20">
<image width="64" height="64" source="buliding/GTA2_TILE_307.bmp"/>
</tile>
<tile id="21">
<image width="64" height="64" source="buliding/GTA2_TILE_400.bmp"/>
</tile>
<tile id="22">
<image width="64" height="64" source="buliding/GTA2_TILE_408.bmp"/>
</tile>
<tile id="23">
<image width="64" height="64" source="buliding/GTA2_TILE_416.bmp"/>
</tile>
<tile id="24">
<image width="64" height="64" source="buliding/GTA2_TILE_622.bmp"/>
</tile>
<tile id="25">
<image width="64" height="64" source="buliding/GTA2_TILE_728.bmp"/>
</tile>
<tile id="26">
<image width="64" height="64" source="buliding/GTA2_TILE_729.bmp"/>
</tile>
<tile id="27">
<image width="64" height="64" source="buliding/GTA2_TILE_730.bmp"/>
</tile>
<tile id="28">
<image width="64" height="64" source="buliding/GTA2_TILE_733.bmp"/>
</tile>
<tile id="29">
<image width="64" height="64" source="buliding/GTA2_TILE_742.bmp"/>
</tile>
<tile id="30">
<image width="64" height="64" source="buliding/GTA2_TILE_743.bmp"/>
</tile>
<tile id="31">
<image width="64" height="64" source="buliding/GTA2_TILE_760.bmp"/>
</tile>
<tile id="32">
<image width="64" height="64" source="buliding/GTA2_TILE_761.bmp"/>
</tile>
<tile id="33">
<image width="64" height="64" source="buliding/GTA2_TILE_805.bmp"/>
</tile>
<tile id="34">
<image width="64" height="64" source="buliding/GTA2_TILE_837.bmp"/>
</tile>
<tile id="35">
<image width="64" height="64" source="buliding/GTA2_TILE_842.bmp"/>
</tile>
<tile id="36">
<image width="64" height="64" source="buliding/GTA2_TILE_844.bmp"/>
</tile>
<tile id="37">
<image width="64" height="64" source="buliding/GTA2_TILE_846.bmp"/>
</tile>
<tile id="38">
<image width="64" height="64" source="buliding/GTA2_TILE_855.bmp"/>
</tile>
<tile id="39">
<image width="64" height="64" source="buliding/GTA2_TILE_861.bmp"/>
</tile>
<tile id="40">
<image width="64" height="64" source="buliding/GTA2_TILE_913.bmp"/>
</tile>
<tile id="41">
<image width="64" height="64" source="buliding/GTA2_TILE_915.bmp"/>
</tile>
<tile id="42">
<image width="64" height="64" source="buliding/GTA2_TILE_922.bmp"/>
</tile>
<tile id="43">
<image width="64" height="64" source="buliding/GTA2_TILE_923.bmp"/>
</tile>
<tile id="44">
<image width="64" height="64" source="buliding/GTA2_TILE_983.bmp"/>
</tile>
</tileset>

View File

@ -1,143 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.8" tiledversion="1.8.2" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="64" tileheight="64" infinite="0" nextlayerid="6" nextobjectid="1">
<tileset firstgid="1" source="../Walls.tsx"/>
<tileset firstgid="46" source="../Roads.tsx"/>
<tileset firstgid="94" source="../Trash.tsx"/>
<tileset firstgid="109" source="../player.tsx"/>
<layer id="5" name="Ground" width="30" height="30">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,536870916,1610612829,67,75,1073741900,75,75,75,1073741895,0,3221225543,62,61,3221225528,3221225535,1610612793,61,62,3221225551,0,0,0,0,2684354639,0,0,0,0,0,
0,0,91,2684354626,0,536870987,0,0,0,1610612811,0,1610612811,0,0,1610612799,0,536870975,0,0,0,2684354639,0,0,0,2684354623,0,3221225519,3221225551,0,0,
0,0,90,3758096461,0,536870987,0,0,0,2147483719,1073741900,71,0,0,1610612815,0,1610612799,0,0,0,2684354618,61,62,2684354616,1610612793,0,1610612789,0,0,0,
0,0,3221225543,70,0,2147483719,75,1073741895,0,0,1610612811,0,0,0,0,0,1610612798,0,0,0,2684354623,0,0,2684354617,58,0,2684354607,3221225518,0,0,
0,0,1610612811,0,0,0,0,1610612811,0,0,1610612811,0,3758096442,61,61,1073741887,3221225528,3221225535,1073741885,1073741885,2147483706,58,0,1610612799,0,2684354639,0,1610612791,0,0,
0,0,1610612811,0,536870991,0,0,1610612811,0,0,1610612811,0,1610612800,0,0,0,2684354621,0,0,0,0,2684354622,0,2684354611,3221225524,3221225521,3221225525,1610612787,0,0,
0,0,1610612811,0,1610612814,0,0,2684354636,75,75,536870988,0,1610612804,0,0,0,2684354623,0,2684354639,0,0,3758096445,0,1610612789,0,1610612791,0,2684354612,0,0,
0,0,1610612811,0,1610612803,0,3221225543,536870983,0,0,2684354631,75,1610612809,0,2684354639,0,2684354624,0,2684354633,1610612807,0,1610612815,0,1610612788,0,2684354638,0,2684354613,0,0,
0,0,2684354636,77,76,75,1610612812,0,0,2684354639,0,0,1610612813,0,2684354627,75,71,0,0,2684354635,0,0,0,1610612791,0,1610612815,0,2684354628,0,0,
0,0,3758096459,0,0,0,2684354637,0,0,2684354635,0,0,2684354635,0,2684354635,0,0,0,0,1610612791,0,0,0,2684354638,0,0,0,2684354638,0,0,
0,0,3758096459,0,0,0,3758096460,75,75,3221225545,3221225547,78,1610612809,3221225549,76,3221225518,55,2147483703,3221225523,51,0,3221225519,53,3221225521,53,3221225523,3221225527,3221225518,0,0,
0,0,2147483719,1073741895,0,0,1610612802,0,0,2684354626,0,0,2684354635,0,0,1610612789,0,0,1610612791,0,0,1610612788,0,2684354638,0,1610612789,0,1610612791,0,0,
0,0,0,2684354636,75,75,76,75,75,3221225549,3221225547,3221225547,3221225545,0,0,1610612791,0,79,1610612785,3221225551,0,1610612789,0,1610612815,0,1610612788,0,1610612815,0,0,
0,0,0,1610612811,0,0,0,0,0,0,0,0,1610612811,0,0,1610612790,0,0,1610612791,0,0,1610612791,0,0,0,1610612789,0,0,0,0,
0,0,0,1610612811,0,0,3221225543,3221225547,78,1610612807,0,0,1610612811,0,0,2684354610,3221225521,3221225524,51,3221225527,78,1610612785,54,3221225524,3221225525,1610612785,78,3221225551,0,0,
0,0,0,1610612811,0,0,2684354635,0,0,1610612811,0,0,2684354637,0,0,0,2684354614,0,0,0,0,1610612789,0,0,0,1610612789,0,0,0,0,
0,0,0,1610612811,0,0,2684354635,0,0,2684354635,0,0,1610612811,0,79,3221225537,2684354610,78,3221225551,0,0,1610612815,0,0,0,1610612791,0,0,0,0,
0,0,0,3758096460,3221225547,75,3221225545,64,75,76,3221225548,75,70,0,0,0,2684354638,0,0,0,0,0,0,0,0,1610612813,0,0,0,0,
0,0,0,1610612811,0,0,1610612809,0,0,0,1610612815,0,0,0,3221225544,67,2684354610,3221225548,66,64,3221225548,77,3221225548,75,75,1610612809,3221225551,0,0,0,
0,0,0,1610612811,0,79,76,77,1073741895,0,0,0,0,0,2684354624,0,0,2684354625,0,0,1610612815,0,1610612801,0,0,2684354638,0,0,0,0,
0,0,0,1610612811,0,0,0,0,74,0,3221225543,75,77,3221225545,70,0,0,2684354624,0,0,0,0,1610612815,0,3221225543,76,1610612806,0,0,0,
0,0,0,2684354631,3221225547,3221225548,3221225547,3221225547,1610612812,0,1610612802,0,0,1610612815,0,0,3221225553,85,88,1610612817,0,0,0,0,1610612800,0,2684354628,0,0,0,
0,0,0,0,0,2684354635,0,0,2684354636,77,71,0,0,0,0,0,2684354644,0,0,1610612823,0,0,0,0,2684354625,0,2684354625,0,0,0,
0,0,0,536870991,0,2684354624,0,79,536870992,0,0,3221225553,1073741908,1073741908,3221225557,88,85,1610612817,0,2684354645,84,84,3221225557,88,85,84,1610612821,0,0,0,
0,0,0,3758096462,0,2684354635,0,0,0,0,0,536870996,0,0,536870996,0,0,2684354644,0,2684354646,0,0,2684354644,0,0,0,1610612819,0,0,0,
0,0,0,2147483728,78,76,84,84,84,84,84,81,0,0,1610612815,0,0,2684354641,86,85,87,84,81,0,79,87,82,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<layer id="3" name="Walls" width="30" height="30">
<data encoding="csv">
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,11,
11,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,2684354599,35,17,25,0,24,29,33,7,11,
11,7,0,0,23,0,17,14,12,0,13,0,16,13,0,24,0,42,13,25,0,45,22,29,0,44,0,0,7,11,
11,7,0,0,15,0,45,37,17,0,0,0,24,12,0,45,0,44,24,14,0,0,0,0,0,37,0,23,7,11,
11,7,0,0,13,0,0,0,41,25,0,20,16,41,22,35,0,29,37,21,0,17,42,0,0,25,0,0,7,11,
11,7,0,26,27,28,29,0,21,43,0,29,0,0,0,0,0,0,0,0,0,0,43,0,536870952,0,2684354599,0,7,11,
11,7,0,14,0,24,21,0,15,33,0,21,0,43,21,33,0,45,30,31,16,0,12,0,0,0,0,0,7,11,
11,7,0,42,0,22,20,0,0,0,0,44,0,20,40,16,0,43,0,33,13,0,45,0,17,0,43,0,7,11,
11,7,0,25,0,13,0,0,15,24,0,0,0,41,0,29,0,15,0,0,44,0,37,0,21,0,24,0,7,11,
11,7,0,0,0,0,0,33,29,0,17,12,0,21,0,0,0,17,43,0,13,29,41,0,24,0,13,0,7,11,
11,7,0,15,18,45,0,13,41,0,24,16,0,23,0,13,41,22,16,0,20,32,17,0,29,25,35,0,7,11,
11,7,0,25,35,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,7,11,
11,7,0,0,34,19,0,44,15,0,2684354596,2684354596,0,18,24,0,17,35,0,41,25,0,41,0,13,0,44,0,7,11,
11,7,24,0,0,0,0,0,0,0,0,0,0,42,20,0,16,0,0,0,24,0,21,0,18,0,25,0,7,9,
11,7,22,0,33,13,16,43,21,20,29,15,0,41,24,0,29,13,0,16,43,0,18,24,42,0,42,23,7,9,
11,7,21,0,21,20,0,0,0,0,41,44,0,42,15,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,
11,7,24,0,41,24,0,3221225510,1610612774,0,24,21,0,13,40,20,0,17,32,15,44,0,26,27,28,0,18,25,7,11,
11,7,18,0,44,12,0,2684354598,38,0,17,22,0,41,0,0,0,0,0,24,20,0,21,35,33,0,12,24,7,11,
11,7,13,0,0,0,0,0,0,0,0,0,0,12,15,21,0,13,35,18,41,37,43,39,15,0,22,18,7,11,
11,7,15,0,43,15,0,33,17,41,0,29,18,33,0,0,0,0,0,0,0,0,0,0,0,0,0,24,7,11,
11,7,13,0,25,0,0,0,0,39,21,42,44,14,0,18,45,0,13,14,0,29,0,42,13,0,25,35,7,11,
11,7,24,0,14,18,23,24,0,13,0,0,0,0,0,21,42,0,41,15,2684354599,21,0,15,0,0,0,24,7,11,
11,7,18,0,0,0,0,0,0,3221225508,0,21,15,0,41,29,0,0,0,0,43,14,18,42,0,14,0,18,7,11,
11,7,14,40,43,0,43,14,0,0,0,29,17,18,22,24,0,17,23,0,13,30,31,25,0,33,0,32,7,11,
11,7,14,0,44,0,12,0,0,24,14,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,15,7,11,
11,7,25,0,29,0,14,13,25,14,43,0,15,13,0,44,33,0,25,0,13,44,0,43,15,44,0,42,7,11,
11,7,23,0,0,0,0,0,0,0,0,0,32,45,0,35,25,0,0,0,0,0,0,32,0,0,0,18,7,11,
11,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11
</data>
</layer>
<layer id="4" name="Player" width="30" height="30">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,536871021,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<layer id="2" name="Trash" width="30" height="30">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,3221225579,0,0,0,0,0,0,0,0,106,0,0,0,3221225579,0,0,0,0,3221225579,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,1610612836,0,0,0,0,0,0,1610612836,0,0,0,3221225579,0,0,0,2684354662,0,0,3221225579,0,0,
0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1610612836,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,0,0,0,107,0,0,
0,0,0,0,0,0,0,3221225579,0,0,0,0,0,0,3221225570,0,0,0,106,0,0,0,0,0,0,105,0,0,0,0,
0,0,0,0,101,0,0,0,0,0,107,0,2684354662,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354662,0,0,0,
0,0,2684354658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,101,0,0,0,0,0,0,3221225579,0,0,0,0,0,0,0,0,0,0,0,0,3221225579,0,0,
0,0,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,0,0,3758096482,0,0,0,0,0,105,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,101,0,101,0,0,106,0,0,101,0,536871010,0,105,0,0,0,3221225579,0,0,
0,0,101,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,105,0,105,0,106,0,0,0,536871013,0,0,0,1610612834,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,106,0,105,0,0,0,0,0,0,2684354658,0,0,0,0,0,0,0,0,1073741922,0,0,536871013,0,0,
0,0,0,105,0,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354665,0,0,0,102,0,0,2684354665,0,0,0,107,0,0,0,0,
0,0,0,0,0,0,0,98,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,0,2147483746,0,106,0,0,0,
0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354658,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,1610612834,0,0,0,0,2684354665,0,0,0,105,0,0,0,
0,0,0,0,0,105,0,0,0,0,0,0,0,101,0,0,0,0,3221225579,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,107,0,0,0,3221225574,0,0,0,0,0,536871013,0,107,0,0,0,0,0,3221225570,0,0,0,0,536871013,0,0,0,
0,0,0,0,0,1610612834,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354658,0,0,0,
0,0,0,0,105,0,0,0,101,0,3221225570,0,0,0,101,0,0,536871013,0,0,101,0,107,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
</map>

View File

@ -1,335 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.8" tiledversion="1.8.2" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="64" tileheight="64" infinite="0" nextlayerid="7" nextobjectid="193">
<tileset firstgid="1" source="../Walls.tsx"/>
<tileset firstgid="46" source="../Roads.tsx"/>
<tileset firstgid="94" source="../Trash.tsx"/>
<tileset firstgid="109" source="../player.tsx"/>
<layer id="5" name="Ground" width="30" height="30">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,536870916,1610612829,78,78,78,78,78,78,78,0,78,78,78,78,78,78,78,78,3221225551,0,0,0,0,2684354639,0,0,0,0,0,
0,0,91,50,0,50,0,0,0,50,0,50,0,0,50,0,50,0,0,0,2684354639,0,0,0,50,0,78,3221225551,0,0,
0,0,90,50,0,50,0,0,0,50,50,50,0,0,1610612815,0,50,0,0,0,78,78,78,78,78,0,50,0,0,0,
0,0,50,50,0,78,78,78,0,0,50,0,0,0,0,0,50,0,0,0,50,0,0,78,78,0,78,78,0,0,
0,0,50,0,0,0,0,50,0,0,50,0,78,78,78,78,78,78,78,78,78,78,0,50,0,2684354639,0,50,0,0,
0,0,50,0,536870991,0,0,50,0,0,50,0,50,0,0,0,50,0,0,0,0,50,0,78,78,78,78,78,0,0,
0,0,50,0,50,0,0,78,78,78,78,0,50,0,0,0,50,0,2684354639,0,0,50,0,50,0,50,0,50,0,0,
0,0,50,0,50,0,78,78,0,0,50,50,50,0,2684354639,0,50,0,50,50,0,1610612815,0,50,0,2684354638,0,50,0,0,
0,0,78,78,78,78,78,0,0,2684354639,0,0,50,0,50,50,50,0,0,50,0,0,0,50,0,1610612815,0,50,0,0,
0,0,50,0,0,0,50,0,0,50,0,0,50,0,50,0,0,0,0,50,0,0,0,2684354638,0,0,0,2684354638,0,0,
0,0,50,0,0,0,78,78,78,78,78,78,78,78,78,78,78,78,78,78,0,78,78,78,78,78,78,78,0,0,
0,0,78,78,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,2684354638,0,50,0,50,0,0,
0,0,0,78,78,78,78,78,78,78,78,78,78,0,0,50,0,79,50,3221225551,0,50,0,1610612815,0,50,0,1610612815,0,0,
0,0,0,50,0,0,0,0,0,0,0,0,50,0,0,1610612790,0,0,50,0,0,50,0,0,0,50,0,0,0,0,
0,0,0,50,0,0,50,50,50,50,0,0,50,0,0,78,78,78,78,78,78,78,78,78,78,78,78,3221225551,0,0,
0,0,0,50,0,0,50,0,0,50,0,0,50,0,0,0,50,0,0,0,0,50,0,0,0,50,0,0,0,0,
0,0,0,50,0,0,50,0,0,50,0,0,50,0,79,50,2684354610,78,3221225551,0,0,1610612815,0,0,0,50,0,0,0,0,
0,0,0,78,78,78,78,78,78,78,78,78,78,0,0,0,2684354638,0,0,0,0,0,0,0,0,50,0,0,0,0,
0,0,0,50,0,0,50,0,0,0,1610612815,0,0,0,78,78,78,78,78,78,78,78,78,78,78,78,3221225551,0,0,0,
0,0,0,50,0,79,78,78,78,0,0,0,0,0,50,0,0,50,0,0,1610612815,0,50,0,0,50,0,0,0,0,
0,0,0,50,0,0,0,0,50,0,78,78,78,78,78,0,0,50,0,0,0,0,1610612815,0,78,78,78,0,0,0,
0,0,0,78,78,78,78,78,78,0,50,0,0,1610612815,0,0,50,50,50,50,0,0,0,0,50,0,50,0,0,0,
0,0,0,0,0,50,0,0,50,50,50,0,0,0,0,0,50,0,0,50,0,0,0,0,50,0,50,0,0,0,
0,0,0,536870991,0,50,0,79,50,0,0,78,78,78,78,78,78,78,0,78,78,78,78,78,78,78,78,0,0,0,
0,0,0,50,0,50,0,0,0,0,0,50,0,0,50,0,0,50,0,50,0,0,50,0,0,0,50,0,0,0,
0,0,0,2147483728,78,78,78,78,78,78,78,78,0,0,1610612815,0,0,78,78,78,78,78,78,0,79,78,78,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<layer id="3" name="Walls" width="30" height="30">
<data encoding="csv">
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,11,
11,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,2684354599,35,17,25,0,24,29,33,7,11,
11,7,0,0,23,0,17,14,12,0,13,0,16,13,0,24,0,42,13,25,0,45,22,29,0,44,0,0,7,11,
11,7,0,0,15,0,45,37,17,0,0,0,24,12,0,45,0,44,24,14,0,0,0,0,0,37,0,23,7,11,
11,7,0,0,13,0,0,0,41,25,0,20,16,41,22,35,0,29,37,21,0,17,42,0,0,25,0,0,7,11,
11,7,0,26,27,28,29,0,21,43,0,29,0,0,0,0,0,0,0,0,0,0,43,0,536870952,0,2684354599,0,7,11,
11,7,0,14,0,24,21,0,15,33,0,21,0,43,21,33,0,45,30,31,16,0,12,0,0,0,0,0,7,11,
11,7,0,42,0,22,20,0,0,0,0,44,0,20,40,16,0,43,0,33,13,0,45,0,17,0,43,0,7,11,
11,7,0,25,0,13,0,0,15,24,0,0,0,41,0,29,0,15,0,0,44,0,37,0,21,0,24,0,7,11,
11,7,0,0,0,0,0,33,29,0,17,12,0,21,0,0,0,17,43,0,13,29,41,0,24,0,13,0,7,11,
11,7,0,15,18,45,0,13,41,0,24,16,0,23,0,13,41,22,16,0,20,32,17,0,29,25,35,0,7,11,
11,7,0,25,35,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,7,11,
11,7,0,0,34,19,0,44,15,0,2684354596,2684354596,0,18,24,0,17,35,0,41,25,0,41,0,13,0,44,0,7,11,
11,7,24,0,0,0,0,0,0,0,0,0,0,42,20,0,16,0,0,0,24,0,21,0,18,0,25,0,7,9,
11,7,22,0,33,13,16,43,21,20,29,15,0,41,24,0,29,13,0,16,43,0,18,24,42,0,42,23,7,9,
11,7,21,0,21,20,0,0,0,0,41,44,0,42,15,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,
11,7,24,0,41,24,0,3221225510,1610612774,0,24,21,0,13,40,20,0,17,32,15,44,0,26,27,28,0,18,25,7,11,
11,7,18,0,44,12,0,2684354598,38,0,17,22,0,41,0,0,0,0,0,24,20,0,21,35,33,0,12,24,7,11,
11,7,13,0,0,0,0,0,0,0,0,0,0,12,15,21,0,13,35,18,41,37,43,39,15,0,22,18,7,11,
11,7,15,0,43,15,0,33,17,41,0,29,18,33,0,0,0,0,0,0,0,0,0,0,0,0,0,24,7,11,
11,7,13,0,25,0,0,0,0,39,21,42,44,14,0,18,45,0,13,14,0,29,0,42,13,0,25,35,7,11,
11,7,24,0,14,18,23,24,0,13,0,0,0,0,0,21,42,0,41,15,2684354599,21,0,15,0,0,0,24,7,11,
11,7,18,0,0,0,0,0,0,3221225508,0,21,15,0,41,29,0,0,0,0,43,14,18,42,0,14,0,18,7,11,
11,7,14,40,43,0,43,14,0,0,0,29,17,18,22,24,0,17,23,0,13,30,31,25,0,33,0,32,7,11,
11,7,14,0,44,0,12,0,0,24,14,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,15,7,11,
11,7,25,0,29,0,14,13,25,14,43,0,15,13,0,44,33,0,25,0,13,44,0,43,15,44,0,42,7,11,
11,7,23,0,0,0,0,0,0,0,0,0,32,45,0,35,25,0,0,0,0,0,0,32,0,0,0,18,7,11,
11,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11
</data>
</layer>
<layer id="4" name="Player" width="30" height="30" visible="0">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,536871021,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<layer id="2" name="Trash" width="30" height="30">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,3221225579,0,0,0,0,0,0,0,0,106,0,0,0,3221225579,0,0,0,0,3221225579,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,1610612836,0,0,0,0,0,0,1610612836,0,0,0,3221225579,0,0,0,2684354662,0,0,3221225579,0,0,
0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1610612836,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,0,0,0,107,0,0,
0,0,0,0,0,0,0,3221225579,0,0,0,0,0,0,3221225570,0,0,0,106,0,0,0,0,0,0,105,0,0,0,0,
0,0,0,0,101,0,0,0,0,0,107,0,2684354662,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354662,0,0,0,
0,0,2684354658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,101,0,0,0,0,0,0,3221225579,0,0,0,0,0,0,0,0,0,0,0,0,3221225579,0,0,
0,0,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,0,0,3758096482,0,0,0,0,0,105,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,101,0,101,0,0,106,0,0,101,0,536871010,0,105,0,0,0,3221225579,0,0,
0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,105,0,105,0,106,0,0,0,536871013,0,0,0,1610612834,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,106,0,105,0,0,0,0,0,0,2684354658,0,0,0,0,0,0,0,0,1073741922,0,0,536871013,0,0,
0,0,0,105,0,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354665,0,0,0,102,0,0,2684354665,0,0,0,107,0,0,0,0,
0,0,0,0,0,0,0,98,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,0,2147483746,0,106,0,0,0,
0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354658,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,1610612834,0,0,0,0,2684354665,0,0,0,105,0,0,0,
0,0,0,0,0,105,0,0,0,0,0,0,0,101,0,0,0,0,3221225579,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,107,0,0,0,3221225574,0,0,0,0,0,536871013,0,107,0,0,0,0,0,3221225570,0,0,0,0,536871013,0,0,0,
0,0,0,0,0,1610612834,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354658,0,0,0,
0,0,0,0,105,0,0,0,101,0,3221225570,0,0,0,101,0,0,536871013,0,0,101,0,107,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<objectgroup id="6" name="Obstacles">
<object id="2" name="wall" x="256" y="192" width="64" height="256"/>
<object id="3" name="player" x="80" y="144" width="32" height="32"/>
<object id="4" name="wall" x="0" y="192" width="128" height="1728"/>
<object id="5" name="wall" x="0" y="0" width="64" height="192"/>
<object id="6" name="wall" x="64" y="0" width="1856" height="128"/>
<object id="7" name="wall" x="128" y="1792" width="1792" height="128"/>
<object id="8" name="wall" x="1792" y="128" width="128" height="1664"/>
<object id="9" name="wall" x="192" y="384" width="64" height="256"/>
<object id="10" name="wall" x="320" y="384" width="64" height="256"/>
<object id="11" name="wall" x="384" y="384" width="64" height="192"/>
<object id="12" name="wall" x="512" y="320" width="64" height="192"/>
<object id="13" name="wall" x="576" y="320" width="64" height="192"/>
<object id="14" name="wall" x="384" y="192" width="192" height="128"/>
<object id="15" name="wall" x="640" y="128" width="64" height="128"/>
<object id="16" name="wall" x="768" y="192" width="128" height="192"/>
<object id="17" name="wall" x="704" y="320" width="64" height="256"/>
<object id="18" name="wall" x="960" y="192" width="64" height="192"/>
<object id="19" name="wall" x="896" y="320" width="64" height="64"/>
<object id="20" name="wall" x="832" y="448" width="64" height="320"/>
<object id="21" name="wall" x="960" y="448" width="64" height="192"/>
<object id="22" name="wall" x="896" y="448" width="64" height="128"/>
<object id="23" name="wall" x="1408" y="320" width="64" height="448"/>
<object id="24" name="wall" x="1088" y="192" width="192" height="192"/>
<object id="25" name="wall" x="1280" y="448" width="64" height="576"/>
<object id="26" name="wall" x="1344" y="128" width="192" height="128"/>
<object id="27" name="wall" x="1280" y="128" width="64" height="64"/>
<object id="28" name="wall" x="1344" y="320" width="64" height="64"/>
<object id="29" name="wall" x="1216" y="832" width="64" height="64"/>
<object id="30" name="wall" x="1216" y="960" width="64" height="64"/>
<object id="31" name="wall" x="1600" y="128" width="192" height="64"/>
<object id="32" name="wall" x="1728" y="256" width="64" height="64"/>
<object id="33" name="wall" x="1600" y="192" width="64" height="192"/>
<object id="34" name="wall" x="1536" y="384" width="64" height="64"/>
<object id="35" name="wall" x="1664" y="384" width="64" height="64"/>
<object id="36" name="wall" x="1536" y="512" width="64" height="256"/>
<object id="37" name="wall" x="1664" y="512" width="64" height="256"/>
<object id="38" name="wall" x="1600" y="704" width="64" height="64"/>
<object id="39" name="wall" x="1344" y="640" width="64" height="128"/>
<object id="40" name="wall" x="1088" y="448" width="192" height="64"/>
<object id="41" name="wall" x="1216" y="512" width="64" height="64"/>
<object id="42" name="wall" x="1088" y="512" width="64" height="256"/>
<object id="43" name="wall" x="1152" y="640" width="64" height="128"/>
<object id="44" name="wall" x="960" y="704" width="128" height="64"/>
<object id="45" name="wall" x="192" y="704" width="192" height="128"/>
<object id="46" name="wall" x="256" y="832" width="128" height="64"/>
<object id="47" name="wall" x="512" y="576" width="128" height="64"/>
<object id="48" name="wall" x="448" y="640" width="128" height="128"/>
<object id="49" name="wall" x="640" y="640" width="128" height="128"/>
<object id="50" name="wall" x="448" y="832" width="128" height="64"/>
<object id="51" name="wall" x="640" y="832" width="128" height="64"/>
<object id="52" name="wall" x="832" y="832" width="128" height="320"/>
<object id="53" name="wall" x="1024" y="832" width="128" height="64"/>
<object id="54" name="wall" x="1024" y="896" width="64" height="64"/>
<object id="55" name="wall" x="1024" y="960" width="128" height="64"/>
<object id="56" name="wall" x="1408" y="832" width="64" height="192"/>
<object id="57" name="wall" x="1536" y="832" width="64" height="192"/>
<object id="58" name="wall" x="1472" y="960" width="64" height="64"/>
<object id="59" name="wall" x="1664" y="832" width="64" height="192"/>
<object id="60" name="wall" x="1728" y="960" width="64" height="64"/>
<object id="61" name="wall" x="960" y="1088" width="64" height="64"/>
<object id="62" name="wall" x="832" y="1152" width="64" height="256"/>
<object id="63" name="wall" x="896" y="1216" width="128" height="64"/>
<object id="64" name="wall" x="1088" y="1088" width="256" height="64"/>
<object id="65" name="wall" x="1216" y="1152" width="128" height="64"/>
<object id="66" name="wall" x="1088" y="1216" width="512" height="64"/>
<object id="67" name="wall" x="1408" y="1088" width="192" height="128"/>
<object id="68" name="wall" x="1664" y="1088" width="128" height="192"/>
<object id="69" name="wall" x="1728" y="1280" width="64" height="512"/>
<object id="70" name="wall" x="1664" y="1344" width="64" height="64"/>
<object id="71" name="wall" x="1600" y="1472" width="64" height="128"/>
<object id="72" name="wall" x="1472" y="1664" width="192" height="64"/>
<object id="73" name="wall" x="1472" y="1728" width="64" height="64"/>
<object id="74" name="wall" x="1280" y="1664" width="128" height="64"/>
<object id="75" name="wall" x="1472" y="1344" width="128" height="64"/>
<object id="76" name="wall" x="1472" y="1408" width="64" height="64"/>
<object id="77" name="wall" x="1280" y="1472" width="256" height="128"/>
<object id="78" name="wall" x="1344" y="1344" width="64" height="64"/>
<object id="79" name="wall" x="1152" y="1408" width="256" height="64"/>
<object id="80" name="wall" x="1152" y="1344" width="128" height="64"/>
<object id="81" name="wall" x="960" y="1344" width="128" height="128"/>
<object id="82" name="wall" x="896" y="1472" width="128" height="128"/>
<object id="83" name="wall" x="704" y="1472" width="128" height="128"/>
<object id="84" name="wall" x="832" y="1536" width="64" height="64"/>
<object id="85" name="wall" x="1088" y="1536" width="64" height="64"/>
<object id="86" name="wall" x="1152" y="1536" width="64" height="192"/>
<object id="87" name="wall" x="960" y="1664" width="128" height="128"/>
<object id="88" name="wall" x="768" y="1664" width="128" height="128"/>
<object id="89" name="wall" x="576" y="1600" width="128" height="128"/>
<object id="90" name="wall" x="704" y="1280" width="128" height="128"/>
<object id="91" name="wall" x="448" y="1280" width="192" height="64"/>
<object id="92" name="wall" x="576" y="1344" width="64" height="192"/>
<object id="93" name="wall" x="640" y="1344" width="64" height="64"/>
<object id="94" name="wall" x="448" y="1088" width="128" height="128"/>
<object id="95" name="wall" x="640" y="960" width="128" height="256"/>
<object id="96" name="wall" x="256" y="960" width="128" height="256"/>
<object id="97" name="wall" x="384" y="960" width="256" height="64"/>
<object id="98" name="wall" x="128" y="896" width="64" height="896"/>
<object id="99" name="wall" x="192" y="1536" width="128" height="64"/>
<object id="100" name="wall" x="256" y="1600" width="64" height="128"/>
<object id="101" name="wall" x="384" y="1536" width="128" height="64"/>
<object id="102" name="wall" x="384" y="1600" width="64" height="64"/>
<object id="103" name="wall" x="384" y="1664" width="192" height="64"/>
<object id="104" name="wall" x="256" y="1280" width="128" height="64"/>
<object id="105" name="wall" x="256" y="1408" width="256" height="64"/>
<object id="106" name="wall" x="256" y="1344" width="64" height="64"/>
<object id="107" name="trashbin_small" x="384" y="176" width="16" height="16"/>
<object id="108" name="trashbin_small" x="448" y="432" width="16" height="16"/>
<object id="109" name="trashbin_small" x="640" y="496" width="16" height="16"/>
<object id="110" name="trashbin_small" x="448" y="624" width="16" height="16"/>
<object id="111" name="trashbin_small" x="256" y="496" width="16" height="16"/>
<object id="112" name="trashbin_small" x="576" y="688" width="16" height="16"/>
<object id="113" name="trashbin_small" x="768" y="496" width="16" height="16"/>
<object id="114" name="trashbin_small" x="960" y="176" width="16" height="16"/>
<object id="115" name="trashbin_small" x="1216" y="176" width="16" height="16"/>
<object id="116" name="trashbin_small" x="1280" y="240" width="16" height="16"/>
<object id="117" name="trashbin_small" x="1536" y="240" width="16" height="16"/>
<object id="118" name="trashbin_small" x="1536" y="176" width="16" height="16"/>
<object id="119" name="trashbin_small" x="1472" y="368" width="16" height="16"/>
<object id="120" name="trashbin_small" x="1600" y="432" width="16" height="16"/>
<object id="121" name="trashbin_small" x="1728" y="368" width="16" height="16"/>
<object id="122" name="trashbin_small" x="1728" y="240" width="16" height="16"/>
<object id="123" name="trashbin_small" x="1664" y="496" width="16" height="16"/>
<object id="124" name="trashbin_small" x="1728" y="624" width="16" height="16"/>
<object id="125" name="trashbin_small" x="1600" y="688" width="16" height="16"/>
<object id="126" name="trashbin_small" x="1728" y="816" width="16" height="16"/>
<object id="127" name="trashbin_small" x="1472" y="816" width="16" height="16"/>
<object id="128" name="trashbin_small" x="1472" y="944" width="16" height="16"/>
<object id="129" name="trashbin_small" x="1216" y="944" width="16" height="16"/>
<object id="130" name="trashbin_small" x="1088" y="944" width="16" height="16"/>
<object id="131" name="trashbin_small" x="1216" y="816" width="16" height="16"/>
<object id="132" name="trashbin_small" x="1024" y="816" width="16" height="16"/>
<object id="133" name="trashbin_small" x="960" y="944" width="16" height="16"/>
<object id="134" name="trashbin_small" x="1152" y="560" width="16" height="16"/>
<object id="135" name="trashbin_small" x="896" y="624" width="16" height="16"/>
<object id="136" name="trashbin_small" x="832" y="816" width="16" height="16"/>
<object id="137" name="trashbin_small" x="704" y="816" width="16" height="16"/>
<object id="138" name="trashbin_small" x="128" y="880" width="16" height="16"/>
<object id="139" name="trashbin_small" x="448" y="944" width="16" height="16"/>
<object id="140" name="trashbin_small" x="384" y="1072" width="16" height="16"/>
<object id="141" name="trashbin_small" x="512" y="1072" width="16" height="16"/>
<object id="142" name="trashbin_small" x="768" y="1008" width="16" height="16"/>
<object id="143" name="trashbin_small" x="768" y="1136" width="16" height="16"/>
<object id="144" name="trashbin_small" x="896" y="1200" width="16" height="16"/>
<object id="145" name="trashbin_small" x="704" y="1264" width="16" height="16"/>
<object id="146" name="trashbin_small" x="960" y="1328" width="16" height="16"/>
<object id="147" name="trashbin_small" x="320" y="1392" width="16" height="16"/>
<object id="148" name="trashbin_small" x="192" y="1328" width="16" height="16"/>
<object id="149" name="trashbin_small" x="192" y="1136" width="16" height="16"/>
<object id="150" name="trashbin_small" x="320" y="1520" width="16" height="16"/>
<object id="151" name="trashbin_small" x="192" y="1648" width="16" height="16"/>
<object id="152" name="trashbin_small" x="256" y="1776" width="16" height="16"/>
<object id="153" name="trashbin_small" x="448" y="1648" width="16" height="16"/>
<object id="154" name="trashbin_small" x="512" y="1776" width="16" height="16"/>
<object id="155" name="trashbin_small" x="960" y="1648" width="16" height="16"/>
<object id="156" name="trashbin_small" x="832" y="1648" width="16" height="16"/>
<object id="157" name="trashbin_small" x="896" y="1776" width="16" height="16"/>
<object id="158" name="trashbin_small" x="1088" y="1776" width="16" height="16"/>
<object id="159" name="trashbin_small" x="1280" y="1776" width="16" height="16"/>
<object id="160" name="trashbin_small" x="1408" y="1776" width="16" height="16"/>
<object id="161" name="trashbin_small" x="1152" y="1520" width="16" height="16"/>
<object id="162" name="trashbin_small" x="1408" y="1456" width="16" height="16"/>
<object id="163" name="trashbin_small" x="1664" y="1456" width="16" height="16"/>
<object id="164" name="trashbin_small" x="1664" y="1648" width="16" height="16"/>
<object id="165" name="trashbin_small" x="1664" y="1328" width="16" height="16"/>
<object id="166" name="trashbin_small" x="1600" y="1200" width="16" height="16"/>
<object id="167" name="trashbin_small" x="1344" y="1200" width="16" height="16"/>
<object id="168" name="trashbin_small" x="1728" y="1072" width="16" height="16"/>
<object id="169" name="trashbin_small" x="1152" y="1200" width="16" height="16"/>
<object id="170" name="trashbin_small" x="832" y="1520" width="16" height="16"/>
<object id="171" name="trashbin_big" x="320" y="352" width="32" height="32"/>
<object id="173" name="trashbin_big" x="576" y="224" width="32" height="32"/>
<object id="174" name="trashbin_big" x="128" y="544" width="32" height="32"/>
<object id="175" name="trashbin_small" x="704" y="304" width="16" height="16"/>
<object id="176" name="trashbin_big" x="896" y="416" width="32" height="32"/>
<object id="177" name="trashbin_big" x="1024" y="224" width="32" height="32"/>
<object id="178" name="trashbin_big" x="1216" y="672" width="32" height="32"/>
<object id="179" name="trashbin_big" x="1344" y="800" width="32" height="32"/>
<object id="180" name="trashbin_big" x="1728" y="928" width="32" height="32"/>
<object id="181" name="trashbin_big" x="1536" y="1056" width="32" height="32"/>
<object id="182" name="trashbin_big" x="960" y="1056" width="32" height="32"/>
<object id="183" name="trashbin_big" x="448" y="1248" width="32" height="32"/>
<object id="184" name="trashbin_big" x="768" y="1440" width="32" height="32"/>
<object id="185" name="trashbin_big" x="320" y="1696" width="32" height="32"/>
<object id="186" name="trashbin_big" x="640" y="1760" width="32" height="32"/>
<object id="187" name="trashbin_big" x="1088" y="1440" width="32" height="32"/>
<object id="188" name="trashbin_big" x="1344" y="1632" width="32" height="32"/>
<object id="189" name="trashbin_big" x="1664" y="1696" width="32" height="32"/>
<object id="190" name="trashbin_big" x="1536" y="1312" width="32" height="32"/>
<object id="191" name="trashbin_big" x="1280" y="1376" width="32" height="32"/>
<object id="192" name="drop_off" x="128" y="192" width="64" height="128"/>
</objectgroup>
</map>

View File

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.8" tiledversion="1.8.2" name="player" tilewidth="347" tileheight="145" tilecount="9" columns="0">
<grid orientation="orthogonal" width="1" height="1"/>
<tile id="0">
<image width="52" height="86" source="garbagetruck/GTA2_CAR_18.bmp"/>
</tile>
<tile id="1">
<image width="58" height="88" source="garbagetruck/GTA2_CAR_20.bmp"/>
</tile>
<tile id="2">
<image width="58" height="88" source="garbagetruck/GTA2_CAR_21.bmp"/>
</tile>
<tile id="3">
<image width="347" height="145" source="garbagetruck/trashmaster_blu.png"/>
</tile>
<tile id="4">
<image width="250" height="117" source="garbagetruck/trashmaster_orange.png"/>
</tile>
<tile id="5">
<image width="58" height="58" source="misc/GTA2_USER OBJECT_1219.bmp"/>
</tile>
<tile id="6">
<image width="50" height="60" source="misc/GTA2_USER OBJECT_1222.bmp"/>
</tile>
<tile id="7">
<image width="60" height="60" source="misc/GTA2_USER OBJECT_1225.bmp"/>
</tile>
<tile id="8">
<image width="56" height="64" source="misc/GTA2_USER OBJECT_1229.bmp"/>
</tile>
</tileset>

View File

@ -1,7 +1,5 @@
import pygame as pg import pygame as pg
vec = pg.math.Vector2
#colors #colors
LIGHTGREY = (100, 100, 100) LIGHTGREY = (100, 100, 100)
CYAN = (0, 255, 255) CYAN = (0, 255, 255)

View File

@ -1,163 +0,0 @@
import pygame as pg
import pygame.image
from settings import *
from random import uniform
from map import collide_hit_rect
vec = pg.math.Vector2
def collide_with_walls(sprite, group, dir):
if dir == 'x':
hits = pg.sprite.spritecollide(sprite, group, False, collide_hit_rect)
if hits:
if hits[0].rect.centerx > sprite.hit_rect.centerx:
sprite.pos.x = hits[0].rect.left - sprite.hit_rect.width / 2
if hits[0].rect.centerx < sprite.hit_rect.centerx:
sprite.pos.x = hits[0].rect.right + sprite.hit_rect.width / 2
sprite.vel.x = 0
sprite.hit_rect.centerx = sprite.pos.x
if dir == 'y':
hits = pg.sprite.spritecollide(sprite, group, False, collide_hit_rect)
if hits:
if hits[0].rect.centery > sprite.hit_rect.centery:
sprite.pos.y = hits[0].rect.top - sprite.hit_rect.height / 2
if hits[0].rect.centery < sprite.hit_rect.centery:
sprite.pos.y = hits[0].rect.bottom + sprite.hit_rect.height / 2
sprite.vel.y = 0
sprite.hit_rect.centery = sprite.pos.y
class Player(pg.sprite.Sprite):
def __init__(self, game, x, y):
self.groups = game.all_sprites
pg.sprite.Sprite.__init__(self, self.groups)
self.game = game
self.image = game.player_img
self.rect = self.image.get_rect()
self.rect.center = (x,y)
self.hit_rect = PLAYER_HIT_RECT
self.hit_rect.center = self.rect.center
self.vel = vec(0, 0)
self.pos = vec(x, y)
self.rot = 0
def get_keys(self):
self.rot_speed = 0
self.vel = vec(0, 0)
keys = pg.key.get_pressed()
if keys[pg.K_LEFT] or keys[pg.K_a]:
self.rot_speed = PLAYER_ROT_SPEED
if keys[pg.K_RIGHT] or keys[pg.K_d]:
self.rot_speed = -PLAYER_ROT_SPEED
if keys[pg.K_UP] or keys[pg.K_w]:
self.vel = vec(PLAYER_SPEED, 0).rotate(-self.rot)
if keys[pg.K_DOWN] or keys[pg.K_s]:
self.vel = vec(-PLAYER_SPEED / 2, 0).rotate(-self.rot)
def update(self):
self.get_keys()
self.rot = (self.rot + self.rot_speed * self.game.dt) % 360
self.image = pg.transform.rotate(self.game.player_img, self.rot)
self.rect = self.image.get_rect()
self.rect.center = self.pos
self.pos += self.vel * self.game.dt
self.hit_rect.centerx = self.pos.x
collide_with_walls(self, self.game.wallTiles, 'x')
self.hit_rect.centery = self.pos.y
collide_with_walls(self, self.game.wallTiles, 'y')
self.rect.center = self.hit_rect.center
class Dump(pg.sprite.Sprite):
# wysypisko
def __init__(self):
super().__init__()
self.glass = []
self.paper = []
self.bio = []
self.other_trash = []
class trash(pg.sprite.Sprite):
def __init__(self,x,y,img, type):
super().__init__()
self.width=16
self.height=16
self.type = type
self.x = x
self.y = y
self.image = pygame.image.load(img)
self.image = pygame.transform.scale(self.image, (self.x,self.y))
self.rect = self.image.get_rect()
class trashbin(pg.sprite.Sprite):
def __init__(self,x,y,img, type):
super().__init__()
# trashbin type
self.type = type
# dimensions
if type == "small":
self.width = 4
self.height = 4
elif type == "medium":
self.width = 8
self.height = 8
elif type == "large":
self.width = 16
self.height = 16
# spawn coords
self.x = x
self.y = y
# load trashbin image
self.image = pygame.image.load(img)
self.image = pygame.transform.scale(self.image, (self.x,self.y))
self.rect = self.image.get_rect()
class trashmaster(pg.sprite.Sprite):
def __init__(self,x,y,img):
super().__init__()
self.width=x
self.height=y
self.x = 0
self.y = 0
self.image = pygame.image.load(img)
self.image = pygame.transform.scale(self.image, (self.width,self.height))
self.rect = self.image.get_rect()
def movement(self, key, vel):
if key == pygame.K_LEFT:
self.x -= vel
if key == pygame.K_RIGHT:
self.x += vel
if key == pygame.K_UP:
self.y -= vel
if key == pygame.K_DOWN:
self.y += vel
return (self.x, self.y)
class Obstacle(pg.sprite.Sprite):
def __init__(self, game, x, y, w, h):
self.groups = game.walls
pg.sprite.Sprite.__init__(self, self.groups)
self.game = game
self.rect = pg.Rect(x, y, w, h)
self.hit_rect = self.rect
self.x = x
self.y = y
self.rect.x = x
self.rect.y = y

View File

@ -1,18 +0,0 @@
import pygame.image
class trash(pygame.sprite.Sprite):
def __init__(self,x,y,img, type):
super().__init__()
self.width=16
self.height=16
self.type = type
self.x = x
self.y = y
self.image = pygame.image.load(img)
self.image = pygame.transform.scale(self.image, (self.x,self.y))
self.rect = self.image.get_rect()