From 47da0e400ecd0a37f4a6c9d57b3a7ec3c2c7d9f5 Mon Sep 17 00:00:00 2001 From: "theo@manjaro" Date: Mon, 13 Sep 2021 07:41:32 +0200 Subject: [PATCH] Added spawnpoints --- gamedata/objects/ingame/lemmings.py | 6 ++++++ gamedata/objects/ingame/tiles.py | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/gamedata/objects/ingame/lemmings.py b/gamedata/objects/ingame/lemmings.py index 77896dc..2ae68b4 100644 --- a/gamedata/objects/ingame/lemmings.py +++ b/gamedata/objects/ingame/lemmings.py @@ -9,6 +9,7 @@ class Lemming(BaseObject): self.holdradius = 65 self.holdrect = self.holdrect.inflate(self.holdradius,self.holdradius) self.basespeed = 40+random.randint(-speedmargin,speedmargin) # Speed that he normally walks by + self.holdtimer = game.lib.Timer(2.5) # Max seconds of holding self.normalspeed = self.basespeed # Speed "objective" self.speed = 0 # Current speed, leaning towards objective speed @@ -57,6 +58,11 @@ class Lemming(BaseObject): # Releasing it if mouse["click"]==0 or not self.holdrect.collidepoint(mouse["campos"]): self.launch() + else: + if self.holdtimer.tick(self.game.dt): + self.selected = False + self.holdtimer.reset() + self.normalspeed = self.basespeed if self.game.inputs["mouse"]["click"]==1: if self.rect.collidepoint(mouse["campos"]): self.selected = True diff --git a/gamedata/objects/ingame/tiles.py b/gamedata/objects/ingame/tiles.py index 306e0e8..23e83ba 100644 --- a/gamedata/objects/ingame/tiles.py +++ b/gamedata/objects/ingame/tiles.py @@ -14,6 +14,7 @@ class Tiles(BaseObject): self.cellsize = cellsize self.grid = self.gengrid(nbcells,nbcells) + self.spawns = self.getspawnpoints(self.grid) def gengrid(self,w,h): # Generating various rectangles on a map @@ -33,9 +34,29 @@ class Tiles(BaseObject): return grid + def getspawnpoints(self,grid,saferadius=2): + spawns = [] + for y in range(saferadius,len(grid)-saferadius): + for x in range(saferadius,len(grid[y])-saferadius): + canspawn = True + for safey in range(-saferadius,saferadius+1): + for safex in range(-saferadius,saferadius+1): + if grid[y+safey][x+safex]==0: # If a pit is inside the radius, can't spawn here + canspawn = False + if canspawn: + spawns.append([x,y]) + return spawns + def draw(self): # Drawing the grid for y in range(len(self.grid)): for x in range(len(self.grid[y])): if self.grid[y][x]==1: self.game.pygame.draw.rect(self.game.window,[255]*3,[self.rect[0]+x*self.cellsize,self.rect[1]+y*self.cellsize,self.cellsize,self.cellsize]) + # Draw spawn points + if self.game.globals["debug"]: + for x,y in self.spawns: + screenx = self.rect[0]+(x+0.5)*self.cellsize + screeny = self.rect[1]+(y+0.5)*self.cellsize + point = (screenx,screeny) + self.game.pygame.draw.circle(self.game.window,[100,100,0],point,radius=3)