def neighborAt(self, pos, dir): pos_x, pos_y = self.tileAt(pos).pos _x = -1 _y = -1 width = self.size[0] height = self.size[1] if (dir == HexDir.UL): _x = (pos_x - 1) % self.size[0] if isEven(pos_x): _y = pos_y else: _y = (pos_y - 1) % self.size[1] elif (dir == HexDir.U): _x = pos_x _y = (pos_y - 1) % self.size[1] elif (dir == HexDir.UR): _x = (pos_x + 1) % self.size[0] if isEven(pos_x): _y = pos_y else: _y = (pos_y - 1) % self.size[1] elif (dir == HexDir.DL): _x = (pos_x - 1) % self.size[0] if isEven(pos_x): _y = (pos_y + 1) % self.size[1] else: _y = pos_y elif (dir == HexDir.D): _x = pos_x _y = (pos_y + 1) % self.size[1] elif (dir == HexDir.DR): _x = (pos_x + 1) % self.size[0] if isEven(pos_x): _y = (pos_y + 1) % self.size[1] else: _y = pos_y return [_x,_y]
def centerCameraOnTile(self, tile): pos = [0,0] pos = tile.getAbsolutePixelPos() pos[0] -= MAP_DISPLAY_WIDTH/2 pos[1] = -pos[1] #adjust for odd columns if not isEven(tile.pos[0]): pos[1] += 36 pos[1] += MAP_DISPLAY_HEIGHT/2 self.cam_pos = pos
def centerCameraOnSprite(self, sprite): pos = [0,0] pos = mapLocToPixelPos(sprite.map_pos) pos[0] -= MAP_DISPLAY_WIDTH/2 pos[1] = -pos[1] #adjust for odd columns if not isEven(sprite.map_pos[0]): pos[1] += 36 pos[1] += MAP_DISPLAY_HEIGHT/2 self.cam_pos = pos
def pixelPosToMapLoc(pix_pos): x_offset = 54 y_offset = 72 y_margin = y_offset/2 col_idx = (pix_pos[0] - 36) / x_offset row_idx = pix_pos[1] if isEven(col_idx): row_idx -= y_margin row_idx = row_idx / y_offset return [int(col_idx), int(row_idx)]