def draw_unit(self, u: Unit): if u.draw_stuff: rays = u.intersected if u.intersected else u.get_rays_world() for p1, p2 in rays: self.pygame.draw.aaline(self.screen_main, (220, 220, 220), self.to_pixels(p1), self.to_pixels(p2)) if u.vis_line: self.pygame.draw.aaline(self.screen_main, (255, 50, 50), self.to_pixels(u.pos), self.to_pixels(u.vis_line + u.pos)) self.pygame.draw.polygon( self.screen_main, u.color, [self.to_pixels(p) for p in u.polygon_world.vecs]) hp_w = 30 hp_h = 5 t = u.hp / u.hp0 x, y = self.to_pixels(u.pos) rr = self.pygame.Rect(x - 15, y - 20, hp_w, hp_h) rg = self.pygame.Rect(x - 15, y - 20, int(hp_w * t), hp_h) self.pygame.draw.rect(self.screen_main, (255, 0, 0), rr) self.pygame.draw.rect(self.screen_main, (0, 255, 0), rg) if not u.can_shoot: t2 = (u.time - u.time_last_shot) / u.shot_delta rr = self.pygame.Rect(x - 15, y - 15, int(hp_w * t2), 2) self.pygame.draw.rect(self.screen_main, (150, 150, 150), rr)
def add_ray_signals(self, unit: Unit, signals: dict): rays = unit.get_rays_world() unit.intersected = [ self.scene.intersected_segment(p1, p2) for p1, p2 in rays ] # signals['rays_max'] = [(p1-p2).len() for p1, p2 in rays], signals['rays_intersected'] = [(p1 - p2).len() for p1, p2 in unit.intersected]