diff --git a/src/polygon_ice b/src/polygon_ice new file mode 100644 index 0000000..b429f6f --- /dev/null +++ b/src/polygon_ice @@ -0,0 +1,57 @@ + +import pymunk as pm +from pymunk import Vec2d +import pygame +import math + +class Polygon_ice(): + def __init__(self, pos, length, height, space, mass=5.0): + moment = 1000 + body = pm.Body(mass, moment) + body.position = Vec2d(pos) + shape = pm.Poly.create_box(body, (length, height)) + shape.color = (0, 0, 255) + shape.friction = 0.5 + shape.collision_type = 11 + space.add(body, shape) + self.body = body + self.shape = shape + ice = pygame.image.load("../resources/images/ice.png").convert_alpha() + ice2 = pygame.image.load("../resources/images/ice2.png").convert_alpha() + rect = pygame.Rect(251, 357, 86, 22) + self.beam_image = ice.subsurface(rect).copy() + rect = pygame.Rect(16, 252, 22, 84) + self.column_image = ice2.subsurface(rect).copy() + def to_pygame(self, p): + """Convert pymunk to pygame coor dinates""" + return int(p.x), int(-p.y+600) + + def draw_poly(self, element, screen): + """Draw beams and columns""" + poly = self.shape + ps = poly.get_vertices() + ps.append(ps[0]) + ps = map(self.to_pygame, ps) + ps = list(ps) + color = (255, 0, 0) + pygame.draw.lines(screen, color, False, ps) + if element == 'beams': + p = poly.body.position + p = Vec2d(self.to_pygame(p)) + angle_degrees = math.degrees(poly.body.angle) + 180 + rotated_logo_img = pygame.transform.rotate(self.beam_image, + angle_degrees) + offset = Vec2d(rotated_logo_img.get_size()) / 2. + p = p - offset + np = p + screen.blit(rotated_logo_img, (np.x, np.y)) + if element == 'columns': + p = poly.body.position + p = Vec2d(self.to_pygame(p)) + angle_degrees = math.degrees(poly.body.angle) + 180 + rotated_logo_img = pygame.transform.rotate(self.column_image, + angle_degrees) + offset = Vec2d(rotated_logo_img.get_size()) / 2. + p = p - offset + np = p + screen.blit(rotated_logo_img, (np.x, np.y))