-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmaptile.py
More file actions
91 lines (75 loc) · 3.13 KB
/
Copy pathmaptile.py
File metadata and controls
91 lines (75 loc) · 3.13 KB
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import os
import pygame
import maingame
#for some reason I have to specify the directory with respect to root....
tile_raised = pygame.image.load(os.getcwd()+"/res/tile_raised.png")
tile_ground = pygame.image.load(os.getcwd()+"/res/tile.png")
mask_down = pygame.mask.from_surface(
pygame.image.load(os.getcwd()+"/res/tile_down_mask.png"))
mask_up_front = pygame.mask.from_surface(
pygame.image.load(os.getcwd()+"/res/tile_raised_mask_front.png"))
mask_up_left = pygame.mask.from_surface(
pygame.image.load(os.getcwd()+"/res/tile_raised_mask_left.png"))
mask_up_right = pygame.mask.from_surface(
pygame.image.load(os.getcwd()+"/res/tile_raised_mask_right.png"))
class MapTile(object):
def __init__(self, x, y, parent, raised=False):
self.paint_color = None
self.raised = raised
self.parent = parent
self.gridx = x
self.gridy = y
self.neighbor_left = None
self.neighbor_right = None
self.neighbor_up = None
self.neighbor_down = None
self.score = 0#for pathfinding
self.player_number = 0
def get_neighbor(self, facing):
if(facing == 0):
return self.neighbor_down
elif(facing == 1):
return self.neighbor_right
elif(facing == 2):
return self.neighbor_up
else:
return self.neighbor_left
def get_rect(self):
return pygame.rect.Rect(self.gridx*maingame.GRID_RESOLUTION,
(self.gridy)*maingame.GRID_RESOLUTION,
maingame.GRID_RESOLUTION,
maingame.GRID_RESOLUTION)
def get_surrounding(self, noWalls = False):
surr = [self.neighbor_down, self.neighbor_right,
self.neighbor_up, self.neighbor_left]
while None in surr:
surr.remove(None)
if(noWalls):
surr=filter(lambda t: t.raised==False, surr)
return surr
def manhattan(self, other):
return abs(self.gridx-other.gridx)+abs(self.gridy-other.gridy)
def render(self, canvas):
image = tile_ground
if(self.raised):
image = tile_raised
#TODO painted surfaces
canvas.blit(image,
(self.gridx * maingame.GRID_RESOLUTION -
self.parent.camerax ,
(self.gridy + 1) * maingame.GRID_RESOLUTION -
self.parent.cameray - image.get_size()[1])
)
if(self.paint_color is not None):
#TODO: masking images instead of tile tinting
x = image.convert_alpha()
self.paint_color.a = 80;
x.fill(self.paint_color)
canvas.blit(x,
(self.gridx * maingame.GRID_RESOLUTION -
self.parent.camerax ,
(self.gridy + 1) * maingame.GRID_RESOLUTION -
self.parent.cameray - image.get_size()[1])
)
def __repr__(self):
return "[Tile %s,%s %s]"%(self.gridx, self.gridy, self.score)