def set_pos(self, pos): self.pos = pos #bounding box is in pixels because it can only have ints if self.img is None: self.bounding_box = pygame.Rect(Convert.world_to_pixel(pos[0]), Convert.world_to_pixel(pos[1]), Game.BLOCK_SIZE * Game.SCALE, Game.BLOCK_SIZE * Game.SCALE) self.width = 1 self.height = 1 else: self.bounding_box = pygame.Rect(Convert.world_to_pixel(pos[0]), Convert.world_to_pixel(pos[1]), self.img.get_width(), self.img.get_height()) self.width = Convert.pixel_to_world(self.img.get_width()) + 1 self.height = Convert.pixel_to_world(self.img.get_height()) + 1
def __init__(self, pos, imageurl, scale=()): self.pos = pos self.imageurl = imageurl self.scale = scale self.load_image() #bounding box is in pixels because it can only have ints self.bounding_box = pygame.Rect(Convert.world_to_pixel(pos[0]), Convert.world_to_pixel(pos[1]), self.img.get_width(), self.img.get_height()) self.width = Convert.pixel_to_world(self.img.get_width()) + 1 self.height = Convert.pixel_to_world(self.img.get_height()) + 1 self.dir = [0, 0] #direction: -1, 0, 1 self.vel = [0, 0] #speeds: any numbers
def render_blocks(self, screen, viewport, background): top = max(Convert.pixel_to_world(viewport.y), 0) bottom = min(Convert.pixel_to_world(viewport.y + viewport.height) + 1, World.HEIGHT - 1) for blocky in range(top, bottom): leftData = Convert.pixel_to_chunk(viewport.x) rightData = Convert.pixel_to_chunk(viewport.x + viewport.width) if leftData[1] == self.x: for blockx in range(leftData[0], WIDTH): self.render_block(blockx, blocky, screen, viewport, background) elif leftData[1] < self.x < rightData[1]: for blockx in range(WIDTH): self.render_block(blockx, blocky, screen, viewport, background) elif self.x == rightData[1]: for blockx in range(0, rightData[0] + 1): self.render_block(blockx, blocky, screen, viewport, background)
def render(self, screen, viewport): top = max(Convert.pixel_to_world(viewport.y), 0) bottom = min(Convert.pixel_to_world(viewport.y + viewport.height) + 1, World.HEIGHT) for blocky in range(top, bottom): leftData = Convert.pixel_to_chunk(viewport.x) rightData = Convert.pixel_to_chunk(viewport.x + viewport.width) if leftData[1] == self.x: for blockx in range(leftData[0], WIDTH): self.render_block(self.blocks[blocky][blockx], (blockx, blocky), screen, viewport) elif leftData[1] < self.x < rightData[1]: for blockx in range(WIDTH): self.render_block(self.blocks[blocky][blockx], (blockx, blocky), screen, viewport) elif self.x == rightData[1]: for blockx in range(0, rightData[0] + 1): self.render_block(self.blocks[blocky][blockx], (blockx, blocky), screen, viewport) for entity in self.entities: entity.render(screen, Convert.world_to_viewport(entity.pos, viewport))