42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
|
import map
|
||
|
import utils
|
||
|
|
||
|
class WaterTile(map.Tile):
|
||
|
def __init__(self, pos, source=False, noupdate=False):
|
||
|
self.source = source
|
||
|
self.noupdate = noupdate
|
||
|
if source:
|
||
|
self.waterlevel = 10 # ten is maximum
|
||
|
else:
|
||
|
self.waterlevel = 0
|
||
|
super(WaterTile, self).__init__(pos, "liquid", "water")
|
||
|
def update(self, tiles):
|
||
|
if self.noupdate:
|
||
|
self.noupdate = False
|
||
|
return
|
||
|
if self.waterlevel == 0 or self.waterlevel == 1:
|
||
|
# we can't spread water, so don't update
|
||
|
return
|
||
|
# get a list of all tiles around current tile
|
||
|
surround = utils.BoardUtils.surround(self.getCoords())
|
||
|
dist = False
|
||
|
for i in surround:
|
||
|
tile = utils.BoardUtils.tileAtPosition(tiles, i)
|
||
|
if not tile:
|
||
|
# there's no tile here, so create one
|
||
|
t = WaterTile(i, noupdate=True)
|
||
|
t.waterlevel = 1
|
||
|
tiles.append(t)
|
||
|
dist = True
|
||
|
elif tile.name == "water":
|
||
|
# we can populate into this tile
|
||
|
tile.waterlevel += 1
|
||
|
dist = True
|
||
|
if dist and not self.source:
|
||
|
self.waterlevel -= 1
|
||
|
|
||
|
|
||
|
def render(self):
|
||
|
return "s"
|
||
|
|